Compare commits

...

3060 Commits

Author SHA1 Message Date
Franck Nijhof
df88335370 Bump version to 2024.2.0b8 2024-02-05 20:27:40 +01:00
Joost Lekkerkerker
4c6c5ee63d Handle startup error in Analytics insights (#109755) 2024-02-05 20:27:29 +01:00
Vilppu Vuorinen
65476914ed Reduce MELCloud poll frequency to avoid throttling (#109750) 2024-02-05 20:27:26 +01:00
Bouwe Westerdijk
d30a2e3611 Fix incorrectly assigning supported features for plugwise climates (#109749) 2024-02-05 20:27:23 +01:00
G Johansson
eb510e3630 Add missing new climate feature flags to Mill (#109748) 2024-02-05 20:27:20 +01:00
Michael
532df5b5f1 Use tracked entity friendly name for proximity sensors (#109744)
user tracked entity friendly name
2024-02-05 20:27:17 +01:00
Jan Bouwhuis
1534f99c80 Fix generic camera error when template renders to an invalid URL (#109737) 2024-02-05 20:27:14 +01:00
Cyrill Raccaud
a19aa9595a Bump python-bring-api to 3.0.0 (#109720) 2024-02-05 20:27:11 +01:00
Joost Lekkerkerker
e3191d098f Add strings to Ruuvitag BLE (#109717) 2024-02-05 20:27:08 +01:00
Bram Kragten
cc36071612 Update frontend to 20240205.0 (#109716) 2024-02-05 20:27:04 +01:00
Joakim Sørensen
2d90ee8237 Fix log string in Traccar Server Coordinator (#109709) 2024-02-05 20:27:01 +01:00
Simone Chemelli
16266703df Queue climate calls for Comelit SimpleHome (#109707) 2024-02-05 20:26:58 +01:00
Joost Lekkerkerker
dd2cc52119 Set Analytics Insights as diagnostic (#109702)
* Set Analytics Insights as diagnostic

* Set Analytics Insights as diagnostic
2024-02-05 20:26:54 +01:00
Joost Lekkerkerker
c48c8c25fa Remove obsolete check from Proximity (#109701) 2024-02-05 20:26:51 +01:00
Joost Lekkerkerker
83a5659d57 Set shorthand attribute in Epion (#109695) 2024-02-05 20:26:48 +01:00
Joost Lekkerkerker
3183cd346d Add data descriptions to analytics insights (#109694) 2024-02-05 20:26:45 +01:00
Marcel van der Veldt
5930c841d7 Bump python matter server to 5.4.1 (#109692) 2024-02-05 20:26:42 +01:00
Myles Eftos
f05ba22b5c Show site state in Amberelectric config flow (#104702) 2024-02-05 20:26:38 +01:00
Franck Nijhof
ecc6cc280a Bump version to 2024.2.0b7 2024-02-05 09:41:55 +01:00
David F. Mulcahey
f50afd6004 Buffer TImeoutError in Flo (#109675) 2024-02-05 09:41:45 +01:00
Michael
44ecaa740b Add missing translation string to Home Assistant Analytics Insights (#109666)
add missing string
2024-02-05 09:41:42 +01:00
Michael
91b1a8e962 Add icon translation to proximity (#109664)
add icon translations
2024-02-05 09:41:39 +01:00
Malte Franken
74f1b18b73 Bump georss-generic-client to 0.8 (#109658) 2024-02-05 09:41:36 +01:00
Michael
8ab1c044bd Add zone related sensors in proximity (#109630)
* move legacy needed convertions into legacy entity

* add zone related sensors

* fix test coverage

* fix typing

* fix entity name translations

* rename placeholder to tracked_entity
2024-02-05 09:41:33 +01:00
Leah Oswald
66d8856033 Fix home connect remaining progress time (#109525)
* fix remaining progress time for home connect component

The home connect API is sending some default values (on dishwashers) for
the remaining progress time after the program finished. This is a problem
because this value is stored and on every API event, for example opening
the door of a dishwasher, the value for remaining progress time is
updated with this wrong value. So I see a wrong value the whole time the
dishwasher is not running and therefore has no remaining progress time.
This coming fixes this problem and adds a check if the appliance is in
running, pause or finished state, because there we have valid data. In
the other states the new code just returns none like on other edge
cases. Now there is no value if there is no program running.

* fix some formating according to the ruff rules

* fix some formating according to the ruff rules again

* fix alphabetic order of imports

* add check if keys exist in dict before accessing them

check if BSH_OPERATION_STATE and ATTR_VALUE key values exist before
accessing them later in the elif statement

* fix formating because forgotten local ruff run
2024-02-05 09:41:30 +01:00
Kevin Worrel
5c1e4379a9 Screenlogic service refactor (#109041) 2024-02-05 09:41:27 +01:00
ollo69
bca9826e18 Don't create AsusWRT loadavg sensors when unavailable (#106790) 2024-02-05 09:41:23 +01:00
Franck Nijhof
3a067d445d Bump version to 2024.2.0b6 2024-02-04 23:25:49 +01:00
Franck Nijhof
4d7c96205d Fix Tuya reauth_successful translation string (#109659) 2024-02-04 23:25:41 +01:00
Jan-Philipp Benecke
3934524d4a Add icon translations to Utility meter helper (#109656) 2024-02-04 23:25:37 +01:00
Franck Nijhof
5747f8ce9d Improve Tuya token/reauth handling (#109653) 2024-02-04 23:25:34 +01:00
Joost Lekkerkerker
02ebf1d7f8 Add icon translations to Random (#109652) 2024-02-04 23:25:31 +01:00
Joost Lekkerkerker
d789e83879 Add icon translations to Counter (#109651) 2024-02-04 23:25:28 +01:00
Joost Lekkerkerker
ce29b4a7e3 Add icon translations to derivative (#109650) 2024-02-04 23:25:25 +01:00
Joost Lekkerkerker
e2695ba88f Allow the helper integrations to omit icon translation field (#109648) 2024-02-04 23:25:22 +01:00
G Johansson
7ca83a7648 Add debug logger for cpu temp in System Monitor (#109627) 2024-02-04 23:25:19 +01:00
G Johansson
c0efec4a84 Fix repairs for remove dates in Workday (#109626) 2024-02-04 23:25:16 +01:00
Franck Nijhof
f766fbfb98 Fix Tuya QR code expiry, use native QR selector (#109615)
* Fix Tuya QR code expiry, use native QR selector

* Adjust tests
2024-02-04 23:25:14 +01:00
Franck Nijhof
bd78c44ac5 Update orjson to 3.9.13 (#109614) 2024-02-04 23:25:11 +01:00
Jan Bouwhuis
fd2469e2a7 Fix imap message part decoding (#109523) 2024-02-04 23:25:08 +01:00
Cody C
a7010e3e80 Handle GeoJSON int to str conversion when the name is an int (#108937)
Co-authored-by: Chris Roberts <NasaGeek@users.noreply.github.com>
2024-02-04 23:25:04 +01:00
Franck Nijhof
d379a9aaae Bump version to 2024.2.0b5 2024-02-04 15:59:46 +01:00
Michael
2dc630a4af Redact location names in proximity diagnostics (#109600) 2024-02-04 15:59:34 +01:00
Josef Zweck
ba0c065750 Bugfix lamarzocco issue (#109596) 2024-02-04 15:59:31 +01:00
tronikos
4fca06256b Fix Google generative AI service example (#109594)
Update strings.json
2024-02-04 15:59:28 +01:00
J. Nick Koston
0a25788822 Bump yalexs-ble to 2.4.1 (#109585)
changelog: https://github.com/bdraco/yalexs-ble/compare/v2.4.0...v2.4.1
2024-02-04 15:59:25 +01:00
G Johansson
94e1eaa15d Fix overkiz climate feature flags for valve heating (#109582)
* Fix overkiz climate feature flags for valve heating

* Update homeassistant/components/overkiz/climate_entities/valve_heating_temperature_interface.py
2024-02-04 15:59:22 +01:00
G Johansson
dfc26e4509 Fix group sensor uom's in not convertable device classes (#109580) 2024-02-04 15:59:20 +01:00
Matrix
b14add5914 Fix yolink abnormal status when LeakSensor detection mode changes to "no water detect" (#109575)
Add no water detect support
2024-02-04 15:59:17 +01:00
G Johansson
7be6aa455e Add back logging for core for feature flags in climate (#109572) 2024-02-04 15:59:14 +01:00
G Johansson
40636f2273 Add new climate feature flags to lyric (#109571) 2024-02-04 15:59:11 +01:00
G Johansson
f91f98e309 Add new climate feature flags to lookin (#109570) 2024-02-04 15:59:08 +01:00
G Johansson
838b1338b8 Add migrated climate feature flags to livisi (#109569) 2024-02-04 15:59:05 +01:00
G Johansson
d3aa7375f0 Add new climate feature flags to lightwave (#109568) 2024-02-04 15:59:02 +01:00
G Johansson
514ce59a8f Add new climate feature flags to lcn (#109566) 2024-02-04 15:58:59 +01:00
G Johansson
25063821e1 Add new climate feature flags to izone (#109565) 2024-02-04 15:58:56 +01:00
G Johansson
b3c257fb79 Add new climate feature flags to isy994 (#109564) 2024-02-04 15:58:53 +01:00
G Johansson
cb02c2e6d0 Fix new climate feature flags in intesishome (#109563) 2024-02-04 15:58:50 +01:00
G Johansson
1000fae905 Add new climate feature flags to intellifire (#109562) 2024-02-04 15:58:47 +01:00
G Johansson
30b9a28502 Add new climate feature flags to insteon (#109560) 2024-02-04 15:58:44 +01:00
G Johansson
42bf086c97 Add migrated climate feature flags to incomfort (#109559) 2024-02-04 15:58:41 +01:00
G Johansson
064f412da4 Add new climate feature flags to iaqualink (#109558) 2024-02-04 15:58:38 +01:00
G Johansson
122652b396 Add new climate feature flags to huum (#109557)
Adds new climate feature flags to huum
2024-02-04 15:58:36 +01:00
G Johansson
32b25c7e53 Add new climate feature flags to honeywell (#109556)
Adds new climate feature flags to honeywell
2024-02-04 15:58:33 +01:00
G Johansson
83c487a319 Add migrated climate feature flags to homematicip_cloud (#109555)
Adds migrated climate feature flags to homematicip_cloud
2024-02-04 15:58:30 +01:00
G Johansson
75c0c7bda0 Add new climate feature flags to homematic (#109554)
Adds new climate feature flags to homematic
2024-02-04 15:58:27 +01:00
G Johansson
4d7abbf8c5 Add new climate feature flags to hive (#109553)
Adds new climate feature flags to hive
2024-02-04 15:58:24 +01:00
G Johansson
bf4bc9d935 Add new climate feature flags to hisense (#109552)
Adds new climate feature flags to hisense
2024-02-04 15:58:21 +01:00
G Johansson
e1699b4d65 Add new climate feature flags to heatmiser (#109551)
Adds new climate feature flags to heatmiser
2024-02-04 15:58:18 +01:00
G Johansson
67362db547 Add new climate feature flags to gree (#109550)
Adds new climate feature flags to gree
2024-02-04 15:58:15 +01:00
G Johansson
dafdcd369c Add new climate feature flags to geniushub (#109549)
Adds new climate feature flags to geniushub
2024-02-04 15:58:12 +01:00
G Johansson
384070c158 Add new climate feature flags to generic_thermostat (#109548)
Adds new climate feature flags to generic_thermostat
2024-02-04 15:58:09 +01:00
G Johansson
46016004fa Add migrated climate feature flags to fritzbox (#109547)
Adds migrated climate feature flags to fritzbox
2024-02-04 15:58:07 +01:00
G Johansson
38fcc88c57 Add new climate feature flags to freedompro (#109546)
Adds new climate feature flags to freedompro
2024-02-04 15:58:04 +01:00
G Johansson
9cde864224 Add new climate feature flags to escea (#109545)
Adds new climate feature flags to escea
2024-02-04 15:58:01 +01:00
G Johansson
439f1766a0 Add new climate feature flags to ephember (#109544)
Adds new climate feature flags to ephember
2024-02-04 15:57:58 +01:00
G Johansson
12e32fb799 Adds new climate feature flags to elkm1 (#109543) 2024-02-04 15:57:55 +01:00
G Johansson
14ad2e91f3 Add new climate feature flags to electrasmart (#109542)
Adds new climate feature flags to electrasmart
2024-02-04 15:57:52 +01:00
G Johansson
8c0cd6bbab Add new climate feature flags to econet (#109541)
Adds new climate feature flags to econet
2024-02-04 15:57:49 +01:00
G Johansson
c02e96c5c0 Add new climate feature flags to ecobee (#109540)
Adds new climate feature flags to ecobee
2024-02-04 15:57:46 +01:00
G Johansson
3a08e3bec6 Add new climate feature flags to duotecno (#109539)
Adds new climate feature flags to duotecno
2024-02-04 15:57:43 +01:00
G Johansson
a62c05b983 Add migrated climate feature flags to devolo home control (#109538)
Adds migrated climate feature flags to devolo home control
2024-02-04 15:57:40 +01:00
G Johansson
79846d5668 Add migrated climate feature flags to daikin (#109537)
Adds migrated climate feature flags to daikin
2024-02-04 15:57:38 +01:00
G Johansson
482032cb87 Add migrated climate feature flags to coolmaster (#109536)
Adds migrated climate feature flags to coolmaster
2024-02-04 15:57:35 +01:00
G Johansson
9ebf985010 Add new climate feature flags to comelit (#109535)
Adds new climate feature flags to comelit
2024-02-04 15:57:32 +01:00
G Johansson
f16c0bd559 Add new climate feature flags to ccm15 (#109534)
Adds new climate feature flags to ccm15
2024-02-04 15:57:29 +01:00
Cody C
1df5ad23ef Fix empty error modal when adding duplicate Thread integration (#109530) 2024-02-04 15:57:26 +01:00
David F. Mulcahey
d99ba75ed8 Prevent Flo devices and entities from going unavailable when a single refresh fails (#109522)
* Prevent Flo devices and entities from going unavailable when a single refresh fails

* review comment
2024-02-04 15:57:23 +01:00
TheJulianJES
ceeef1eacc Move climate feature flags to child classes for airzone_cloud (#109515) 2024-02-04 15:57:20 +01:00
Klaas Schoute
856780ed30 Bump easyenergy lib to v2.1.1 (#109510) 2024-02-04 15:57:17 +01:00
Joakim Plate
500b0a9b52 Correct flow rate conversion review after merge (#109501) 2024-02-04 15:57:14 +01:00
G Johansson
855edba3a2 Add new climate feature flags for plugwise (#109464) 2024-02-04 15:57:11 +01:00
G Johansson
e7203d6015 Add new climate feature flags to switcher_kis (#109459) 2024-02-04 15:57:08 +01:00
G Johansson
97446a5af3 Add migrated climate feature flag to switchbee (#109458) 2024-02-04 15:57:05 +01:00
G Johansson
ac2e05b5c0 Add climate feature flags to spider (#109456) 2024-02-04 15:57:02 +01:00
G Johansson
af07ac120e Add new climate feature flags to tuya (#109434) 2024-02-04 15:57:00 +01:00
G Johansson
f2de666c54 Add new climate feature flags to esphome (#109428) 2024-02-04 15:56:57 +01:00
G Johansson
38288dd68e Add new climate feature flags for airtouch5 (#109422)
* Add new climate feature flags for airtouch5

* adapt
2024-02-04 15:56:54 +01:00
G Johansson
3e2f97d105 Add ClimateEntityFeatures to airtouch4 (#109421)
* Add ClimateEntityFeatures to airtouch4

* adapt
2024-02-04 15:56:51 +01:00
Michael
5f014f42ac Avoid duplicate entity names in proximity (#109413)
* avoid duplicate config entry title

* consecutive range 2..10

* use existing logic
2024-02-04 15:56:48 +01:00
Josef Zweck
4b2adab24d Revert "Add webhook support to tedee integration (#106846)" (#109408) 2024-02-04 15:56:45 +01:00
Franck Nijhof
ef6fed5067 Bump version to 2024.2.0b4 2024-02-03 14:42:00 +01:00
Jan-Philipp Benecke
0a627aed6d Fix Tankerkoenig diagnostics file to use right format (#109494)
Fix tankerkoenig diagnostics file
2024-02-03 14:40:26 +01:00
Joakim Sørensen
cb03a6e29b Change IoT class for Traccar Client (#109493) 2024-02-03 14:40:23 +01:00
Joakim Sørensen
e630027455 Extend the history of Elvia history to 3 years (#109490)
Extend the history of Elvia data to 3 years
2024-02-03 14:40:21 +01:00
G Johansson
280d7ef4ec Add new climate feature flags to deconz (#109482) 2024-02-03 14:40:18 +01:00
G Johansson
93b7ffa807 Add new climate feature flags to demo (#109481) 2024-02-03 14:40:15 +01:00
G Johansson
cc8e9ac141 Adds new climate feature flags to bsblan (#109480) 2024-02-03 14:40:12 +01:00
G Johansson
2724b115da Adds new climate feature flags to broadlink (#109479) 2024-02-03 14:40:09 +01:00
G Johansson
150fb151fa Add new climate feature flags to blebox (#109478) 2024-02-03 14:40:06 +01:00
G Johansson
4b8cb35ba0 Adds migrated climate feature flags in balboa (#109477) 2024-02-03 14:40:03 +01:00
G Johansson
5cce878b85 Adds new climate feature flags in baf (#109476) 2024-02-03 14:40:00 +01:00
G Johansson
92ebc5b436 Adds new climate feature flags to ambiclimate (#109475) 2024-02-03 14:39:57 +01:00
G Johansson
463320c8ee Adds migrated climate feature flags in nuheat (#109474) 2024-02-03 14:39:54 +01:00
G Johansson
3bf5fa9302 Adds migrated climate feature flags to nobo_hub (#109473) 2024-02-03 14:39:51 +01:00
G Johansson
650ab70444 Add migrated climate feature flags to nexia (#109472) 2024-02-03 14:39:48 +01:00
G Johansson
bb8a74a3f4 Add new climate feature flags to mysensors (#109471)
Adds new climate feature flags to mysensors
2024-02-03 14:39:45 +01:00
G Johansson
49445c46a0 Add migrated climate feature flags to moehlenhoff (#109470) 2024-02-03 14:39:42 +01:00
G Johansson
490101fa92 Adds new climate feature flags to melissa (#109469) 2024-02-03 14:39:39 +01:00
G Johansson
2ac4bb8e9f Add new feature flags to melcloud (#109468) 2024-02-03 14:39:36 +01:00
G Johansson
1c0a6970e2 Adds new climate feature flags to maxcube (#109467) 2024-02-03 14:39:33 +01:00
G Johansson
f3f69a8107 Add new climate feature flags to radiotherm (#109466) 2024-02-03 14:39:30 +01:00
G Johansson
a77bcccbbb Adds migrated climate feature flags for proliphix (#109465) 2024-02-03 14:39:28 +01:00
G Johansson
e98da8596a Add migrated climate feature flags to overkiz (#109463) 2024-02-03 14:39:25 +01:00
G Johansson
5843c93371 Add migrated climate feature flags to opentherm_gw (#109462) 2024-02-03 14:39:22 +01:00
G Johansson
5991b06574 Add new climate feature flags to oem (#109461) 2024-02-03 14:39:19 +01:00
G Johansson
fecdfbfb9f Add new climate feature flags to stiebel_eltron (#109457) 2024-02-03 14:39:16 +01:00
G Johansson
8cfe3821da Add migrated climate feature flags to senz (#109455) 2024-02-03 14:39:13 +01:00
G Johansson
cba67d1525 Add new climate feature flags to screenlogic (#109454) 2024-02-03 14:39:10 +01:00
G Johansson
39df394414 Add migrated climate feature flags to schluter (#109452) 2024-02-03 14:39:07 +01:00
G Johansson
db91a40b55 Add migrated climate feature flags to touchline (#109451) 2024-02-03 14:39:04 +01:00
G Johansson
3181358484 Add migrated climate feature flags to toon (#109450) 2024-02-03 14:39:01 +01:00
G Johansson
776e2da4e6 Add migrated climate feature flags to tolo (#109449) 2024-02-03 14:38:58 +01:00
G Johansson
72ffdf4f4b Add new climate feature flags to tfiac (#109448) 2024-02-03 14:38:55 +01:00
G Johansson
36bba95fd0 Add migrated climate feature flags for tessie (#109447) 2024-02-03 14:38:52 +01:00
G Johansson
13fc69d8a8 Add migrated climate feature flags to teslemetry (#109446) 2024-02-03 14:38:49 +01:00
G Johansson
94464f220c Add migrated climate feature flags to zwave_me (#109445) 2024-02-03 14:38:46 +01:00
G Johansson
13decb9b10 Add new climate feature flags to zhong_hong (#109444) 2024-02-03 14:38:44 +01:00
G Johansson
b6226acd2b Add migrated climate feature flags to zha (#109443) 2024-02-03 14:38:41 +01:00
G Johansson
d04282a41c Add new climate feature flags to yolink (#109442) 2024-02-03 14:38:38 +01:00
G Johansson
a671d0bc6c Add migrated climate feature flags to xs1 (#109441) 2024-02-03 14:38:35 +01:00
G Johansson
6c84e8dff0 Add new climate feature flags to whirlpool (#109440) 2024-02-03 14:38:32 +01:00
G Johansson
57279b1c7b Add migrated climate feature flags to vicare (#109439) 2024-02-03 14:38:29 +01:00
G Johansson
a5646e0df2 Add migrated feature flags to vera (#109438) 2024-02-03 14:38:26 +01:00
Teemu R
63ad3ebdf4 Add new OUIs for tplink (#109437) 2024-02-03 14:38:23 +01:00
G Johansson
f2a9ef6591 Add new climate feature flags to venstar (#109436) 2024-02-03 14:38:21 +01:00
G Johansson
2a5bb66c06 Adds migrated climate entity feature for velbus (#109435) 2024-02-03 14:38:18 +01:00
G Johansson
0c0be6d6a1 Add migrated climate feature flags to homekit_controller (#109433) 2024-02-03 14:38:15 +01:00
G Johansson
e99a58ad53 Add new climate feature flags to flexit_bacnet (#109431) 2024-02-03 14:38:12 +01:00
G Johansson
6c4b773bc1 Add migrated climate entity features to flexit (#109430) 2024-02-03 14:38:09 +01:00
G Johansson
c571f36c6c Add new climate feature flags to evohome (#109429) 2024-02-03 14:38:06 +01:00
G Johansson
f1b041afbe Add migrated climate feature flags to smarttub (#109427) 2024-02-03 14:38:03 +01:00
G Johansson
183af92658 Add migrated climate feature flags to smartthings (#109426) 2024-02-03 14:38:00 +01:00
G Johansson
d71dd12263 Add migrated climate feature flags to shelly (#109425) 2024-02-03 14:37:57 +01:00
G Johansson
18a7aa20b4 Adds new climate feature flags for airzone_cloud (#109424) 2024-02-03 14:37:54 +01:00
G Johansson
f8fde71ef3 Add new climate feature flags to airzone (#109423) 2024-02-03 14:37:51 +01:00
G Johansson
966798b588 Add migrated ClimateEntityFeatures to advantage_air (#109420)
* Add migrated ClimateEntityFeatures to advantage_air

* AdvantageAirZone
2024-02-03 14:37:48 +01:00
G Johansson
66b6f81996 Add migrated ClimateEntityFeature to MQTT (#109419) 2024-02-03 14:37:45 +01:00
G Johansson
4a1a5b9e87 Adds migrated ClimateEntityFeature to Netatmo (#109418) 2024-02-03 14:37:42 +01:00
G Johansson
f01f033b3f Add ClimateEntityFeatures to Nest (#109417) 2024-02-03 14:37:39 +01:00
G Johansson
cd884de79e Add new ClimateEntityFeature for Tado (#109416) 2024-02-03 14:37:36 +01:00
G Johansson
14be7e4a72 Add Mill migrated ClimateEntityFeatures (#109415) 2024-02-03 14:37:32 +01:00
Jc2k
2be71d53c5 Bump aiohomekit to 3.1.4 (#109414) 2024-02-03 14:37:25 +01:00
Michael Hansen
1c960d300d Bump intents to 2024.2.2 (#109412)
Bump intents to 2024.2.2
2024-02-03 14:35:31 +01:00
Michael Hansen
87a1482e4d Pass slots to error messages instead of IDs [rework] (#109410)
Co-authored-by: tetele <tm.sandu@gmail.com>
2024-02-03 14:33:14 +01:00
Jan-Philipp Benecke
24b8e60978 Bump aiotankerkoenig to 0.3.0 (#109404) 2024-02-03 14:23:42 +01:00
Jurriaan Pruis
404e30911b Bump matrix-nio to 0.24.0 (#109403)
Update matrix-nio to 0.24.0
2024-02-03 14:23:38 +01:00
wilburCforce
9c599f7513 Fix device type in Lutron (#109401)
remove testing code
2024-02-03 14:23:35 +01:00
Jan-Philipp Benecke
f3e8360949 Bump aioelectricitymaps to 0.3.0 (#109399)
* Bump aioelectricitymaps to 0.3.0

* Fix tests
2024-02-03 14:23:32 +01:00
Teemu R
43f8731f8a Bump python-kasa to 0.6.2.1 (#109397) 2024-02-03 14:23:29 +01:00
Michael Hansen
4a60d36216 More thorough checks in ESPHome voice assistant UDP server (#109394)
* More thorough checks in UDP server

* Simplify and change to stop_requested

* Check transport
2024-02-03 14:23:26 +01:00
Michael
07a1ee0baa Add diagnostics to proximity (#109393) 2024-02-03 14:23:23 +01:00
Franck Nijhof
a57c30be88 Update elgato to 5.1.2 (#109391) 2024-02-03 14:23:20 +01:00
jjlawren
b1bf69689e Do not suggest area for portable Sonos speakers (#109350)
* Do not suggest area for portable speakers

* Update tests

* Improve readability, update tests
2024-02-03 14:23:17 +01:00
Christopher Fenner
4735aadaa8 Ignore gateway devices in ViCare integration (#106477)
* filter unsupported devices

* Update __init__.py

* use debug

* remove dead code
2024-02-03 14:23:13 +01:00
Franck Nijhof
f18f161efa Bump version to 2024.2.0b3 2024-02-02 17:36:51 +01:00
Bram Kragten
3c90e3d83f Update frontend to 20240202.0 (#109388) 2024-02-02 17:36:43 +01:00
Robert Resch
57a43ef151 Improve Ecovacs naming (#109372) 2024-02-02 17:36:40 +01:00
Franck Nijhof
6afc6ca126 Remove suggested area from Verisure (#109364) 2024-02-02 17:36:37 +01:00
Joakim Sørensen
92a3edc536 Specify end_time when importing Elvia data to deal with drift (#109361) 2024-02-02 17:36:34 +01:00
Robert Resch
e91e67b400 Bump deebot_client to 5.1.0 (#109360) 2024-02-02 17:36:31 +01:00
Franck Nijhof
7a7bcf1a92 Update cryptography to 42.0.2 (#109359) 2024-02-02 17:36:28 +01:00
karwosts
1383a0c13a Missing template helper translation keys (#109347) 2024-02-02 17:36:24 +01:00
J. Nick Koston
12e3077895 Ensure the purge entities service cleans up the states_meta table (#109344) 2024-02-02 17:36:21 +01:00
G Johansson
05c0973937 Add Adax migrated ClimateEntityFeatures (#109341) 2024-02-02 17:36:18 +01:00
G Johansson
7467d588c8 Add sensibo migrated ClimateEntityFeatures (#109340)
Adds sensibo migrated ClimateEntityFeatures
2024-02-02 17:36:15 +01:00
jan iversen
0c82e0a618 Correct modbus commit validation, too strict on integers (#109338) 2024-02-02 17:36:12 +01:00
J. Nick Koston
5a4f88349a Fix stale camera error message in img_util (#109325) 2024-02-02 17:36:09 +01:00
G Johansson
e720e82fd6 Add migrated ClimateEntityFeature for Nibe Heat Pump (#109140) 2024-02-02 17:36:05 +01:00
G Johansson
8ed0af2fb7 Add TURN_ON/OFF ClimateEntityFeature for KNX (#109138) 2024-02-02 17:36:02 +01:00
G Johansson
550c0bf3c3 Add migrated ClimateEntityFeature for SwitchBot Cloud (#109136) 2024-02-02 17:35:59 +01:00
G Johansson
8bb98b4146 Add TURN_ON/OFF ClimateEntityFeature for Modbus (#109133) 2024-02-02 17:35:56 +01:00
G Johansson
bd5bc6b83d Add TURN_ON/OFF ClimateEntityFeature for Matter (#108974)
* Add TURN_ON/OFF ClimateEntityFeature for Matter

* Adjust matter
2024-02-02 17:35:53 +01:00
G Johansson
a2b6b0a0bc Add TURN_ON/OFF ClimateEntityFeature for Fibaro (#108963) 2024-02-02 17:35:50 +01:00
G Johansson
41ad3d8987 Add migrated ClimateEntityFeature for Atag (#108961) 2024-02-02 17:35:45 +01:00
mkmer
3e7dc3588d Add independent session in honeywell (#108435) 2024-02-02 17:35:42 +01:00
Cyrill Raccaud
66d802b5e5 Follow up swiss_public_transport migration fix of unique ids (#107873)
improve migration fix of unique ids
- follow up to #107087
2024-02-02 17:35:38 +01:00
Franck Nijhof
f77bd13cc0 Bump version to 2024.2.0b2 2024-02-01 22:29:58 +01:00
Paul Bottein
fe4ad30ade Add device class to tesla wall connector session energy (#109333) 2024-02-01 22:29:49 +01:00
Joakim Sørensen
15a1a4bfdf Fix custom attribute lookup in Traccar Server (#109331) 2024-02-01 22:29:46 +01:00
Franck Nijhof
3d80c4f7f6 Update Home Assistant base image to 2024.02.0 (#109329) 2024-02-01 22:29:42 +01:00
Michael Hansen
0015af0b3c Move default response out of sentence trigger registration and into agent (#109317)
* Move default response out of trigger and into agent

* Add test
2024-02-01 22:29:39 +01:00
J. Nick Koston
a535bda821 Fix race in loading service descriptions (#109316) 2024-02-01 22:29:36 +01:00
Maciej Bieniek
ca539630a6 Do not use a battery device class for Shelly analog input sensor (#109311)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-01 22:29:32 +01:00
Josef Zweck
faf2a90cd1 Bump pytedee_async to 0.2.13 (#109307)
bump
2024-02-01 22:29:30 +01:00
Robert Resch
6aba79d7b9 Verify Ecovacs mqtt config (#109306) 2024-02-01 22:29:26 +01:00
Ståle Storø Hauknes
b464e77112 Bump airthings-ble to 0.6.1 (#109302)
Bump airthings-ble
2024-02-01 22:29:23 +01:00
Josh Pettersen
a8b39ce332 Remove battery charge sensor from powerwall (#109271) 2024-02-01 22:29:19 +01:00
Michael Hansen
77b25553e3 Migrate to new intent error response keys (#109269) 2024-02-01 22:29:16 +01:00
G Johansson
c31dfd6d00 Don't log warning for core integrations on new feature flags in Climate (#109250)
* Don't log for core integration on Climate new feature flags

* Add test

* Fix test
2024-02-01 22:29:12 +01:00
Brett Adams
647ac10dd9 Add climate turn on/off feature to Teslemetry (#109241) 2024-02-01 22:29:06 +01:00
Brett Adams
50dfe4dec0 Add climate on/off feature to Tessie (#109239) 2024-02-01 22:29:03 +01:00
Raman Gupta
52a8216150 Add translations for zwave_js entities and services (#109188) 2024-02-01 22:28:59 +01:00
Franck Nijhof
c98228110a Bump version to 2024.2.0b1 2024-02-01 12:19:53 +01:00
Joakim Sørensen
403c2d8440 Bump hass-nabucasa from 0.75.1 to 0.76.0 (#109296) 2024-02-01 12:19:43 +01:00
Franck Nijhof
e4fc35c563 Fix device class repairs issues UOM placeholders in Group (#109294) 2024-02-01 12:19:41 +01:00
Jan Bouwhuis
e2bbdda016 Remove quality scale platinum from daikin integration (#109292) 2024-02-01 12:19:37 +01:00
Josef Zweck
0070d2171f Fix two icon translations for La Marzocco (#109284) 2024-02-01 12:19:34 +01:00
Luis Andrade
74ce778691 bugfix: name missing in getLogger (#109282) 2024-02-01 12:19:31 +01:00
Jan Bouwhuis
fc6cc45ee2 Fix dalkin climate warnings (#109279) 2024-02-01 12:19:28 +01:00
Jan-Philipp Benecke
1353c1d24c Address late review of Tankerkoenig package move (#109277) 2024-02-01 12:19:25 +01:00
J. Nick Koston
0b6df23ee5 Fix app name sorting in apple_tv (#109274) 2024-02-01 12:19:22 +01:00
J. Nick Koston
e34ebcb195 Restore support for packages being installed from urls with fragments (#109267) 2024-02-01 12:19:19 +01:00
TheJulianJES
29f4c2d513 Fix ZHA update entity not updating installed version (#109260) 2024-02-01 12:19:16 +01:00
Ernst Klamer
70f0d77ba5 Fix Xiaomi-ble automations for multiple button devices (#109251) 2024-02-01 12:19:13 +01:00
Michael
133b68a68d Apply review comments on proximity (#109249)
use a named tuple as TrackedEntityDescriptor
2024-02-01 12:19:10 +01:00
Raman Gupta
3f619a8022 Remove deprecation warnings for zwave_js climate TURN_ON/TURN_OFF features (#109242) 2024-02-01 12:19:07 +01:00
J. Nick Koston
ada37f558c Bump govee-ble to 0.31.0 (#109235) 2024-02-01 12:19:02 +01:00
Joost Lekkerkerker
f76689fb75 Pass verify_ssl to created session in Omada (#109212)
* Pass verify_ssl to created session in Omada

* Fix tests

* Fix tests
2024-02-01 12:18:59 +01:00
Raman Gupta
16ad2728a6 Make zwave_js last seen sensor enabled by default (#109191)
* Make zwave_js last seen sensor enabled by default

* Add test

* Fix test

* improve tests
2024-02-01 12:18:56 +01:00
Brett Adams
ddc1c4bb27 Fix time to arrival to timestamp in Tessie (#109172)
* Fix time to arrival

* Update snapshot

* Freeze time for snapshot

* Fix docstring

* Add available_fn

* Update snapshot

* Dont use variance for full charge

* Remove unrelated changes

* Revert snapshot

* Rename hours_to_datetime
2024-02-01 12:18:53 +01:00
Chris Talkington
bbe4483b4a Update rokuecp to 0.19 (#109100) 2024-02-01 12:18:49 +01:00
Franck Nijhof
69416e7b76 Bump version to 2024.2.0b0 2024-01-31 20:45:31 +01:00
Jan Rieger
45f0e08395 Add translations to GPSd (#108600)
* Add config flow to GPSD

* Add translations to GPSd

* Add device class

* Apply feedback for unique_id and translation_key
2024-01-31 20:42:14 +01:00
Erik Montnemery
3ce4e53b32 Sort script actions (#108247) 2024-01-31 20:41:53 +01:00
Erik Montnemery
cf6bcd63dd Add reauth flow to kitchen sink (#109202) 2024-01-31 20:40:26 +01:00
Tucker Kern
340df38bd0 Suppress log warnings when a sensor group has non numeric members (#102828) 2024-01-31 20:02:21 +01:00
G Johansson
c59345338e Add test for integration migrated in climate (#109224) 2024-01-31 19:57:59 +01:00
Bram Kragten
3cbfae5cc7 Update frontend to 20240131.0 (#109231) 2024-01-31 19:49:50 +01:00
Steven B
605b7312a4 Fix ring chimes data update (#109220)
* Fix bug with chimes data update

* Trigger update in test with time change

* Fix test to use freezer

* Make test less fragile
2024-01-31 19:39:18 +01:00
Bram Kragten
d361d47516 Add qr code selector (#109214) 2024-01-31 19:27:03 +01:00
Jan Rieger
bbdb9b61c4 Add config flow to GPSD (#106196) 2024-01-31 18:38:14 +01:00
Joakim Sørensen
cd96fb381f Import Traccar YAML configuration to Traccar Server (#109226)
* Import Traccar YAML configuration to Traccar Server

* Remove import
2024-01-31 18:16:23 +01:00
Joakim Sørensen
0b0bf73780 Add brands definition for Traccar (#109219) 2024-01-31 18:15:40 +01:00
Paul Strawder
f4a2d7c612 Add ZHA support for Bosch Twinguard and siren install QR codes (#107460)
* Enable Bosch Outdoor Siren and Bosch Twinguard QR Codes

These devices contain inside their QR code device specific link keys instead of installation codes. Normally, the link key is generated from the installation code, but in this case we can directly pass the provided link key from QR code to zigpy application controller.

* Replace ZHA deprecated permit_with_key by permit_with_link_key

Convert installation code directly to link key

* Update tests

* formatting
2024-01-31 12:02:34 -05:00
Caius-Bonus
3b7ec8ed2c Use EnumSensor instead of custom formatter() in ZHA Sensor entities (#109218)
use EnumSensor for SonofPresenceSensorIlluminationStatus and AqaraPetFeederLastFeedingSource
2024-01-31 11:53:10 -05:00
Joakim Sørensen
a45d26c2bd Rename Traccar to Traccar Client (#109217) 2024-01-31 17:23:03 +01:00
Paul Bottein
c8bfb288a3 Add readable state for tesla wall connector (#107909)
* Add readable state for tesla wall connector

* Add test

* Display raw sensor by default

* Use none instead of unknown

* Remove old state from tests

* Rename raw state to status code

* Test unknown

* Update homeassistant/components/tesla_wall_connector/strings.json

Co-authored-by: Franck Nijhof <git@frenck.dev>

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-31 17:22:45 +01:00
G Johansson
ddb56fe20d Modify climate turn_on/off backwards compatibility check (#109195)
* Modify climate turn_on/off backwards compatibility check

* Fix logger message

* Comments

* Fix demo

* devolo

* ecobee

* Some more

* Fix missing feature flag

* some more

* and some more

* Remove demo change

* Add back demo change

* Fix demo

* Update comments
2024-01-31 16:29:36 +01:00
Erik Montnemery
816c2e9500 Improve enabling of Google local fulfillment (#109192)
* Improve enabling of Google local fulfillment

* Add test

* Improve test coverage
2024-01-31 16:28:27 +01:00
Robert Resch
6fc5804818 Add Ecovacs switch entities (#109216) 2024-01-31 16:05:41 +01:00
Robert Svensson
7b9dbc2187 Support alternative modelid for LIDL doorbell in deCONZ device triggers (#107937)
Add support alternative modelid for LIDL doorbell
2024-01-31 16:03:12 +01:00
Jeroen van Ingen Schenau
3bd1162650 Fix Huisbaasje negative periodic gas readings (#103457) (#108090) 2024-01-31 15:13:48 +01:00
Erik Montnemery
ffdcdaf43b Create issues for reauth flows (#109105) 2024-01-31 15:05:52 +01:00
Jan-Philipp Benecke
71c2460161 Move tankerkoenig to new aiotankerkoenig package (#108913)
* Move tankerkoenig to new aiotankerkoenig package

* Fix config flow coverage

* Process code review suggestions

* Process code review suggestions
2024-01-31 14:57:08 +01:00
Joakim Sørensen
640463c559 Add Traccar server integration (#109002)
* Add Traccar server integration

* Add explination

* Update homeassistant/components/traccar_server/coordinator.py

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

* Add data_description

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 14:50:18 +01:00
Joakim Sørensen
52a692df3e Add Elvia integration (#107405) 2024-01-31 14:47:37 +01:00
Robert Resch
4f4d79137e Add Ecovacs number entities (#109209) 2024-01-31 14:43:35 +01:00
Marcel van der Veldt
68c633c317 Add Matter Websocket commands for node actions and diagnostics (#109127)
* bump python-matter-server to version 5.3.0

* Add all node related websocket services

* remove open_commissioning_window service

as it wasnt working anyways

* use device id instead of node id

* tests

* add decorator to get node

* add some tests for invalid device id

* add test for unknown node

* add explicit exception

* adjust test

* move exceptions

* remove the additional config entry check for now

to be picked up in follow up pR
2024-01-31 14:15:56 +01:00
Jan Rieger
fb04451c08 Set entity category for QNAP sensors (#109207) 2024-01-31 13:34:52 +01:00
Christopher Fenner
2f312f56f6 Add fuelcell gas consumption sensors to ViCare integration (#105461)
* add fuel cell gas consumption sensors

* add total gas consumption sensors

* add uom

* Update strings.json

* reorder

* Revert "reorder"

This reverts commit 0bcaa3b4e6.

* Revert "add uom"

This reverts commit b3c0dc4756.

* Update sensor.py
2024-01-31 13:23:51 +01:00
Jonas Fors Lellky
a61b18155b Make flexit bacnet switch more generic and prepare for more switches (#109154)
Make switch more generic and prepare for more switches
2024-01-31 13:19:23 +01:00
Robert Resch
4bad88b42c Update Ecovacs config_flow to support self-hosted instances (#108944)
* Update Ecovacs config_flow to support  self-hosted instances

* Selfhosted should add their instance urls

* Improve config flow

* Improve and adapt to version bump

* Add test for self-hosted

* Make ruff happy

* Update homeassistant/components/ecovacs/strings.json

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

* Implement suggestions

* Apply suggestions from code review

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

* Implement suggestions

* Remove ,

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-31 13:17:00 +01:00
Simone Chemelli
f77e4b24e6 Code quality for Vodafone tests (#109078)
vodafone pylance fixes
2024-01-31 13:15:26 +01:00
Jan Rieger
0bca728395 Add Qnap icon translations (#108484)
* Add Qnap icon translations

* Update homeassistant/components/qnap/icons.json

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 13:14:26 +01:00
Simone Chemelli
18a6ae081a Apply late review comments for Comelit climate (#109114)
* Apply late review comments for Comelit climate

* remove logging
2024-01-31 13:13:25 +01:00
Jan Bouwhuis
dcd677fea8 Make google_assistant report_state test timezone aware (#109200) 2024-01-31 13:12:26 +01:00
Christopher Fenner
2dbc59fbea Use home/sleep preset in ViCare climate entity (#105636)
* use home/sleep preset

* avoid setting reduced
2024-01-31 13:01:28 +01:00
Michael
30c5baf522 Add configflow to Proximity integration (#103894)
* add config flow

* fix tests

* adjust and fix tests

* fix tests

* config_zones as fixture

* add config flow tests

* use coordinator.async_config_entry_first_refresh

* use entry.entry_id for hass.data

* fix doc string

* remove unused unit_of_measurement string key

* don't store friendly_name, just use self.name

* abort on matching entiry

* break out legacy setup into seperate function

* make tracked entites required

* move _asnyc_setup_legacy to module level

* use zone name as config entry title

* add entity_used_in helper

* check entry source if imported

* create repair issue for removed tracked entities

* separate state change from registry change event handling

* migrate unique ids after tracked entity renamed

* use full words for the variable names

* use defaultdict

* add test

* remove unnecessary if not in check

* use unique_id of tracked entity

* use the entity registry entry id

* Apply suggestions from code review

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-31 12:47:23 +01:00
Jan Rieger
c587c69915 Migrate QNAP to has entity name (#107232)
* Migrate QNAP to has entity name

* Update homeassistant/components/qnap/strings.json

Co-authored-by: disforw <github@benzona.net>

* Apply suggestions from code review

Co-authored-by: disforw <github@benzona.net>

---------

Co-authored-by: disforw <github@benzona.net>
2024-01-31 11:40:23 +01:00
Brandon Rothweiler
a3352ce457 Minor fixes to A. O. Smith integration (#107421) 2024-01-31 11:22:25 +01:00
Mandar Patil
60fbb8b698 Add session energy sensor for Tesla Wall Connector (#102635)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 11:00:04 +01:00
Manuel Dipolt
0c83fd0897 Add romy vacuum integration (#93750)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2024-01-31 10:48:44 +01:00
Steven B
f725258ea9 Add coordinator to ring integration (#107088) 2024-01-31 10:37:55 +01:00
stegm
7fe4a343f9 Add state_class to Kostal plenticore sensors (#108096) 2024-01-31 10:37:23 +01:00
Franck Nijhof
559f1d77f7 Merge branch 'master' into dev 2024-01-31 09:40:09 +01:00
Christopher Fenner
7e3a459c2f Add test case for binary sensors in ViCare (#108769)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-31 09:30:51 +01:00
Noah Groß
db0486c5e1 Use constants in Picnic service functions (#109170)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-31 09:01:17 +01:00
Robert Resch
01df5f9cab Add Ecovacs button entities (#109189) 2024-01-31 09:00:43 +01:00
Robert Svensson
30fdb2a8b3 Add log to show last received UniFi websocket message (#109167) 2024-01-31 08:46:47 +01:00
Raman Gupta
9ed50d8b0c Add last seen sensor for zwave_js devices (#107345) 2024-01-31 01:17:43 -05:00
Josh Pettersen
b629ad9c3d Add individual battery banks as devices (#108339) 2024-01-30 19:03:01 -10:00
julienfreche
5fd6028d97 Intellifire: fix incorrect name attribute in debug log when setting flame height (#109168) 2024-01-30 23:52:02 -05:00
Jan-Philipp Benecke
7e99ddcac9 Bump aioelectricitymaps to 0.2.0 (#109150) 2024-01-30 23:48:56 -05:00
Jan Rieger
54b08ea675 Remove unused constants from QNAP (#109152) 2024-01-30 23:48:22 -05:00
J. Nick Koston
9c22226fed Ensure bluetooth auto recovery does not run in tests (#109163)
If time was moved forward too much the scanner would try to auto recover
2024-01-30 23:48:05 -05:00
Barry Williams
4c6ac74313 allow songcast source to be stopped and played (#109180) 2024-01-30 23:41:20 -05:00
Josh Pettersen
961a1c4d00 Change the suggested energy units to kWh (#109184)
* Change the suggested energy units to kWh since the practical value is pretty large.

* Fix unit tests
2024-01-30 23:40:05 -05:00
Raman Gupta
b8c9da4705 Add icon and state translations for zwave_js sensors (#109186) 2024-01-30 23:38:27 -05:00
David F. Mulcahey
ac8f555a70 Add additional entities for the Aqara E1 curtain motor to ZHA (#108243)
* aqara curtain motor opened by hand binary sensor

add icon and translation key for identify button

remove previous inversion entity

add window covering type sensor and aqara curtain motor sensors

add aqara curtain motor hook lock switch

add aqara curtain motor attributes zcl_init_attrs

add aqara curtain motor zcl_init_attrs

translations

* update translation string

* review comments

* use enum sensor after rebase

* remove button change
2024-01-30 22:40:33 -05:00
David F. Mulcahey
3115af1041 Add update platform to ZHA (bumps zigpy to 0.61.0) (#107612)
* stub out zha update entity

* update matcher

* updates based on assumptions / conversation

* hook into current installed version

* post rebase cleanup

* incorporate zigpy changes

* fix async_setup_entry

* fix sw_version

* make ota work with config diagnostic match

* fix version format

* sync up with latest Zigpy changes

* fix name attribute

* disable ota providers for tests

* update device list

* review comment

* add current_file_version to Ota ZCL_INIT_ATTRS

* updates to update and start tests

* get installed version from restore data

* better version handling

* remove done todo notes

* reorganize test

* move image notify to cluster handler

* add test for manual update check

* firmware update success test

* coverage

* use zigpy defs

* clean up after rebase

* bump Zigpy

* cleanup from review comments

* fix busted F string

* fix empty error

* move inside check

* guard zigbee network from bulk check for updates
2024-01-30 22:34:48 -05:00
Josh Pettersen
2f9f0bae46 Add generic typing for powerwall sensors (#109008) 2024-01-30 16:28:27 -10:00
Jan Bouwhuis
320bf53f75 Add OnOff trait for climate entities in google_assistant (#109160) 2024-01-30 21:27:36 -05:00
Caius-Bonus
a7a41e54f6 Add ZHA ZCL thermostat entities (#106563) 2024-01-31 03:26:19 +01:00
Franck Nijhof
82e1ed43f8 Migrate Tuya integration to new sharing SDK (#109155)
* Scan QR code to log in And Migrate Tuya integration to new sharing SDK (#104767)

* Remove non-opt-in/out reporting

* Improve setup, fix unload

* Cleanup token listner, remove logging of sensitive data

* Collection of fixes after extensive testing

* Tests happy user config flow path

* Test unhappy paths

* Add reauth

* Fix translation key

* Prettier manifest

* Ruff format

* Cleanup of const

* Process review comments

* Adjust update token handling

---------

Co-authored-by: melo <411787243@qq.com>
2024-01-30 21:22:22 -05:00
Jan Bouwhuis
712ba2fdca Add alexa PowerController on enabled features for climate entities (#109174)
Depend alexa PowerController on enabled features for climate entities
2024-01-30 20:38:32 -05:00
Duco Sebel
41fdcce226 Bumb python-homewizard-energy to 4.3.0 (#109131) 2024-01-31 01:50:00 +01:00
Noah Groß
95fca44e6d Fix schema validation for product_id in picnic integration (#109083) 2024-01-31 01:44:31 +01:00
Marcel van der Veldt
182d00be66 Bump python-matter-server to 5.4.0 (#109178) 2024-01-31 01:39:00 +01:00
Erik Montnemery
fcfacaaabd Store preferred border agent extended address for each thread dataset (#109065) 2024-01-31 00:57:46 +01:00
Robert Resch
09a89cd3e9 Fix Ecovacs duration sensors (#108868) 2024-01-31 00:43:39 +01:00
TheJulianJES
1aa9807e26 Fix "deprecated" typo in ZHA smartenergy comment (#109173)
* Fix "deprecated" typo in ZHA smartenergy comment

* Fix in both places
2024-01-31 00:07:59 +01:00
Josh Pettersen
b6126e7821 Convert gather calls into TaskGroups (#109010) 2024-01-30 12:38:45 -10:00
J. Nick Koston
bea7dd756a Bump regenmaschine to 2024.01.0 (#109157) 2024-01-30 12:34:48 -10:00
Jack
2909e1c4fe Fix ZHA handling of power factor ElectricalMeasurement attribute sensor (#107641)
* Correct handling of power_factor ElectricalMeasurement attribute

The Zigbee Cluster Library defines PowerFactor as an int8 with value supported from -100 to 100.

Currently the zha sensor handler attempts to apply the ac_power_divisor and ac_power_multiplier formatters against the attribute value, the spec outlines that this should not be the case.

The impact of the current code is that quirks not using the default values of 1 are multiplying/dividing
power and power factor values prior to updating the cluster attribute.

This results in either a non-conformant power_factor e.g. the value was multiplied by 10 so that an ac_power_divider of 10 could be used, or the power readings sacrificing a point of measurement for lower readings.

Two quirks currently use this workaround:
 * ts0601_din_power.py
 * ts0601_rcbo.py

* Update ZHA Metering formatter to perform None check on _div_mul_prefix

To address feedback:
https://github.com/home-assistant/core/pull/107641#discussion_r1447547054

* _div_mul_prefix needs self reference

* Simplify None check for _div_mul_prefix

Co-authored-by: Joakim Plate <elupus@ecce.se>

* Updates to formatting and CI test typing fix

* Use ' | ' in place of Union

* Add tests for power_factor sensor

---------

Co-authored-by: Joakim Plate <elupus@ecce.se>
2024-01-30 23:11:18 +01:00
Robert Resch
b409933d19 Add DurationConverter (#108865)
* Add DurationConverter

* Update withings snapshots

* Add sensor test

* Fix tests

* Update snapshots after #108902 was merged
2024-01-30 23:08:12 +01:00
escoand
e7d5ae7ef6 Add Nextcloud update entity (#106690)
* add nextcloud update entity

* don't init update entity on older nextcloud versions

* ruff

* pass skipUpdate to module

* bump deps

* bump requirements

* Update homeassistant/components/nextcloud/update.py

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

* Update homeassistant/components/nextcloud/update.py

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

* bump requirements

* Update homeassistant/components/nextcloud/update.py

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

* Update homeassistant/components/nextcloud/update.py

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

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2024-01-30 23:01:26 +01:00
TheJulianJES
0b09ffbcde Bump zha-quirks to 0.0.110 (#109161)
* Bump zha-quirks to 0.0.110

* Reflect removal of `IasWd` cluster for Heiman sensor in tests
2024-01-30 16:39:59 -05:00
Simone Chemelli
d4c91bd0b7 Add a repair issue for Shelly devices with unsupported firmware (#109076)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-30 10:59:33 -10:00
Martin Hjelmare
e1576d5998 Handle deprecated cloud tts voice (#109124)
* Handle deprecated cloud tts voice

* Add test

* Fix test logic

* Add breaks in ha version

* Adjust translation string
2024-01-30 21:58:16 +01:00
puddly
758e7489f1 Fix ZHA cover inversion handling missing attributes (#109151)
* Allow `window_covering_type` to be `None`

* Create a `window_covering_mode` attribute and simplify inversion switch

* Revert "Create a `window_covering_mode` attribute and simplify inversion switch"

This reverts commit 048d649b4d.

* check both config status and mode

* coverage

---------

Co-authored-by: David Mulcahey <david.mulcahey@icloud.com>
2024-01-30 15:51:38 -05:00
karwosts
ef4e72f218 Fix precipitation typo in icons (#109156) 2024-01-30 10:32:53 -10:00
J. Nick Koston
a22244707b Create an issue when database backups fail because the system runs out of resources (#109020) 2024-01-30 10:23:58 -10:00
Simone Chemelli
6174aa4e59 Remove Shelly RSSI sensor if Wi-FI is not configured (#108390)
* Remove Shelly RSSI sensor if Wi-FI is not configured

* fix tests
2024-01-30 21:18:54 +01:00
puddly
7fbfd44636 Filter ZHA light group color modes (#108861)
Ensure ZHA light color modes have proper defaults and are filtered
2024-01-30 15:14:03 -05:00
Jack
4ec3a17ed0 Add missing ZHA metering device types (#109126)
* Update smartenergy.py metering_device_type enums

* Added missing enum 127

* Enum 127 is also electric metering type

* Meter type constants and status enums in smartenergy cluster handler

Addresses 
https://github.com/home-assistant/core/pull/109126#discussion_r1471383887

Whilst I have the code open I've also added status handlers for the non-electrical meter types.

* New tests for different metering device type statuses
2024-01-30 15:09:15 -05:00
J. Nick Koston
bcb9a10d5a Speed up listing issues via the repairs websocket api (#109149) 2024-01-30 09:57:08 -10:00
Jan Bouwhuis
04f0128a1c Simplify MQTT device triggers in automations (#108309)
* Simplify MQTT device trigger

* Add test non unique trigger_id

* Adjust deprecation warning

* Make discovery_id optional

* refactor double if

* Improve validation, add tests and deprecation comments

* Avoid breaking change

* Inmprove error message

* Match on discovery_id instead of discovery_info

* Revert an unrelated change

* follow up comments

* Add comment and test on device update with non unique trigger

* Update homeassistant/components/mqtt/device_trigger.py

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

* Update homeassistant/components/mqtt/device_trigger.py

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

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-30 20:50:39 +01:00
G Johansson
066a0ccc6d Add TURN_ON/OFF ClimateEntityFeature for HomeKit Device (#109137) 2024-01-30 08:57:41 -10:00
Ernst Klamer
70ee6a16ee Add event entity to Xiaomi-BLE integration (#108811) 2024-01-30 08:42:56 -10:00
Franck Nijhof
1f7bf7c2a9 2024.1.6 (#109129) 2024-01-30 19:38:38 +01:00
Paul Bottein
2b534af960 Update reload icons for automation and person service (#109147) 2024-01-30 19:36:57 +01:00
Jan Bouwhuis
6023980c2e Set TURN_ON and TURN_OFF feature on MQTT climate entities (#109146) 2024-01-30 19:35:46 +01:00
Robert Resch
7d2c6a1bb6 Add check for valid initial_suggested_unit (#108902)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-30 18:55:59 +01:00
Robert Resch
c363edad4a Update Ecovacs binary sensor keys (#109145) 2024-01-30 18:55:37 +01:00
G Johansson
2b1d1340b7 Add TURN_ON/OFF ClimateEntityFeature for Mill (#108977) 2024-01-30 18:16:51 +01:00
G Johansson
36e3ba4834 Add TURN_ON/OFF ClimateEntityFeature for Netatmo (#108973) 2024-01-30 18:15:11 +01:00
G Johansson
6d43a5627a Add TURN_ON/OFF ClimateEntityFeature for CoolMasterNet (#108972) 2024-01-30 18:14:16 +01:00
G Johansson
8395992dbe Add TURN_ON/OFF ClimateEntityFeature for Advantage Air (#108971) 2024-01-30 18:13:30 +01:00
G Johansson
8f9969131b Add TURN_ON/OFF ClimateEntityFeature for Nexia (#108970)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 18:13:08 +01:00
G Johansson
822d5b3ce8 Add TURN_ON/OFF ClimateEntityFeature for Vera (#108969) 2024-01-30 18:12:15 +01:00
G Johansson
1acc9007d4 Add TURN_ON/OFF ClimateEntityFeature for Adax (#108966) 2024-01-30 18:11:42 +01:00
G Johansson
96ee8ba9a8 Add TURN_ON/OFF ClimateEntityFeature for Fritzbox (#108964) 2024-01-30 18:11:08 +01:00
G Johansson
63594bac89 Add TURN_ON/OFF ClimateEntityFeature for IntesisHome (#109134) 2024-01-30 18:05:03 +01:00
G Johansson
9d664c0fdd Add TURN_ON/OFF ClimateEntityFeature for Sensibo (#108962) 2024-01-30 18:03:46 +01:00
G Johansson
c51a675893 Add TURN_ON/OFF ClimateEntityFeature for Overkiz (#109132) 2024-01-30 18:01:53 +01:00
G Johansson
cf1adfbf24 Add TURN_ON/OFF ClimateEntityFeature for TOLO Sauna (#108965) 2024-01-30 18:01:06 +01:00
G Johansson
73f670e793 Add TURN_ON/OFF ClimateEntityFeature for Vicare (#109135) 2024-01-30 17:59:58 +01:00
G Johansson
7827f7bbaa Add TURN_ON/OFF ClimateEntityFeature for Balboa (#109139) 2024-01-30 17:58:46 +01:00
G Johansson
b4c0e52ebd Add TURN_ON/OFF ClimateEntityFeature for ZHA (#108978) 2024-01-30 17:57:11 +01:00
G Johansson
cac0d07549 Add TURN_ON/OFF ClimateEntityFeature for smartthings (#108979) 2024-01-30 17:56:52 +01:00
Joost Lekkerkerker
360697836f Add support for custom integrations in Analytics Insights (#109110) 2024-01-30 17:52:28 +01:00
Robert Resch
d752ab3aa4 Update climate snapshots to fix CI (#109141) 2024-01-30 16:54:41 +01:00
G Johansson
f768dd8761 Add TURN_ON/OFF ClimateEntityFeature for Shelly (#108967) 2024-01-30 15:44:31 +01:00
Franck Nijhof
1dff998a25 Bump version to 2024.1.6 2024-01-30 15:22:32 +01:00
Joost Lekkerkerker
1c6c925a2b Add missing abort message for Spotify (#109102)
* Shield for unregistered Spotify users

* Shield for unregistered Spotify users
2024-01-30 15:21:47 +01:00
puddly
b7410fecb8 Bump ZHA dependency zigpy to 0.60.7 (#109082) 2024-01-30 15:21:43 +01:00
J. Nick Koston
8429a79796 Bump aiohttp to 3.9.3 (#109025)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-30 15:21:07 +01:00
Christopher Fenner
923259a8c6 Fix entity naming for heatpump heatings in ViCare (#109013)
Update strings.json
2024-01-30 15:19:55 +01:00
Joost Lekkerkerker
5903ec084b Add strings to Sensirion BLE (#109001) 2024-01-30 15:19:52 +01:00
Yuxin Wang
0532c4343a Fix stalls in config flow of APCUPSD (#108931)
Fix deadlock in config flow of APCUPSD
2024-01-30 15:19:49 +01:00
TheJulianJES
b66339dbfe Reduce log level for creating ZHA cluster handler (#108809) 2024-01-30 15:19:45 +01:00
Jan Bouwhuis
d697fd23b7 Fix processing supported color modes for emulated_hue (#108803) 2024-01-30 15:19:43 +01:00
Jan Bouwhuis
d220cb5102 Fix unhandled exception on humidifier intent when available_modes is None (#108802) 2024-01-30 15:19:39 +01:00
Jan Bouwhuis
12126ebfda Fix google_assistant climate modes might be None (#108793) 2024-01-30 15:19:35 +01:00
puddly
eeafb61b8f Reduce log level of ZHA endpoint handler init (#108749)
* Reduce the log level of endpoint handler init failure to debug

* Reduce log level in unit test
2024-01-30 15:19:32 +01:00
Jan Bouwhuis
58c96ff796 Fix alexa fails reporting the state in specific cases (#108743)
* Fix alexa fails reporting the state in specific cases

* More cases
2024-01-30 15:19:28 +01:00
Ståle Storø Hauknes
1b8c91dcb7 Bump airthings-ble to 0.6.0 (#108612) 2024-01-30 15:19:25 +01:00
Simone Chemelli
b17b4c3350 Bump aiovodafone to 0.5.4 (#108592) 2024-01-30 15:19:22 +01:00
Michal Ziemski
bbe80c6049 Update openerz-api to 0.3.0 (#108575) 2024-01-30 15:19:19 +01:00
Matrix
4db6f7ce59 Bump yolink-api to 0.3.6 fix aiomqtt breaking changes (#108555)
* bump yolink-api to 0.3.5

* bump yolink-api to 0.3.6
2024-01-30 15:19:16 +01:00
Florian Kisser
279f7264e7 Fix zha illuminance measured value mapping (#108547) 2024-01-30 15:19:12 +01:00
jmwaldrip
3a510f84a7 Fix SleepIQ setting FootWarmer timer (#108433)
* Fixing foot warmer timer bug

* Fixing bug where temperature wasnt assigned to number entity causing tests to fail
2024-01-30 15:19:05 +01:00
Allen Porter
18f663d498 Reduce overhead for google calendar state updates (#108133) 2024-01-30 15:16:35 +01:00
vexofp
8c6547f1b6 Pass default SSLContext instances to Octoprint custom HTTP sessions (#105351) 2024-01-30 15:16:30 +01:00
G Johansson
bc720b48b4 Add TURN_OFF and TURN_ON to ClimateEntityFeature (#101673)
* Add ClimateEntityFeature.TURN_OFF

* Fixes

* Fixes

* wording

* Change to services

* Fixing

* Fixing

* Last bits

* Review comments

* Add hvac_modes checks

* Fixes

* Add tests

* Review comments

* Update snapshots

* balboa

* coolmaster

* ecobee

* mqtt

* nest

* plugwise

* smarttub

* whirlpool

* zwave_js

* fix test climate

* test climate

* zwave

* nexia

* nuheat

* venstar

* tado

* smartthings

* self.hvac_modes not None

* more tests

* homekit_controller

* homekit controller snapshot
2024-01-30 15:07:47 +01:00
Joakim Plate
cece117c93 Flow rate unit conversions and device class (#106077)
* Add volume flow rate conversions

* Add missing translations

* Adjust liter unit and add gallons per minute

* Adjust to min instead of m for minutes

* Add matching class for number

* Add some tests for number and sensor platform

* Add deprecated constants

* Add explicit list of flow rate for check

This reverts commit 105171af31.
2024-01-30 15:01:08 +01:00
Mohamed
a8e3df7e50 Fix readme images (#108767) 2024-01-30 15:00:57 +01:00
David F. Mulcahey
92795fecf5 Clean up ZHA cover entity and add support for inverting cover entities derived from the window covering cluster (#108238) 2024-01-30 13:59:00 +01:00
Marc Mueller
14766b6992 Update coverage to 7.4.1 (#109116) 2024-01-30 13:30:22 +01:00
cbrherms
6d09788673 Add missing status's to Nut (#109085) 2024-01-30 13:23:33 +01:00
Paul Bottein
694059837d Add input boolean icon translations (#109108)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 13:22:55 +01:00
Paul Bottein
72a28d68d3 Add script icon translations (#109107)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 13:22:27 +01:00
Marcel van der Veldt
4576fea511 Bump python-matter-server to 5.3.1 (#109118) 2024-01-30 13:19:51 +01:00
Simone Chemelli
f7909ee34a Clean up Fritz options flow (#109111)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-30 13:19:40 +01:00
Christophe Gagnier
a8915b85a4 Bump pytechnove to 1.2.1 (#109098)
* Bump TechnoVE library to 1.2.0

* Bump TechnoVE library to 1.2.1

* Exclude unknown status from the options

* Regenerate test_sensor.ambr for TechnoVE snapshot test

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-30 12:40:35 +01:00
Michael Hansen
9752e70675 Intents package combines sentences/responses per language (#109079) 2024-01-30 12:38:29 +01:00
Cody C
a1f36c25d4 Remove erroneous reference to Google from Calendar integration (#109089) 2024-01-30 12:34:01 +01:00
Paul Bottein
30dec53b07 Add device tracker icon translations (#109109) 2024-01-30 12:32:02 +01:00
Robert Resch
6fdad44941 Improve invalid error messages in the config flows (#108075) 2024-01-30 12:24:19 +01:00
Marc Mueller
8ad0226241 Update attrs to 23.2.0 (#109115) 2024-01-30 12:22:41 +01:00
Paul Bottein
bea3e63871 Add person icon translations (#109106) 2024-01-30 11:49:23 +01:00
Brett Adams
128700d41b Fix tessie tests (#109113)
* Fix device tracker test

* Snapshot cleanup
2024-01-30 11:34:30 +01:00
Simone Chemelli
09fb043f65 Add configure option to Vodafone Station for consider home (#108594)
* Add configure option to Vodafone Station for consider home

* add test

* improve tests

* reload on option change
2024-01-30 10:28:01 +01:00
Raman Gupta
821d273e4d Add support for ignoring zwave_js device config file changes (#108990)
* Add support for ignoring zwave_js device config file changes

* mistake

* fixes

* Small tweaks and add/update tests
2024-01-30 10:16:08 +01:00
Joost Lekkerkerker
dcb5c0d439 Add missing abort message for Spotify (#109102)
* Shield for unregistered Spotify users

* Shield for unregistered Spotify users
2024-01-30 10:07:23 +01:00
Simone Chemelli
7359449636 Code quality for Shelly integration (#109061) 2024-01-30 09:47:52 +01:00
peebles
b3c1e165db Bump simplisafe-python to 2024.01.0 (#109091) 2024-01-30 08:58:02 +01:00
Franck Nijhof
7268e9aa56 Bump/flush mypy cache (#109101) 2024-01-30 08:57:24 +01:00
Allen Porter
1069693292 Update calendar tests to use mock entities instead of demo platform (#105317)
* Update calendar tests to use mock entities instead of demo platform

* Add Generator type to fixture

* Fix generator syntax

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-30 06:36:14 +01:00
Raman Gupta
18d395821d Don't remove zwave_js devices automatically (#98145) 2024-01-29 21:36:41 -05:00
Simone Chemelli
03df4fde97 Code quality for Comelit tests (#109077) 2024-01-30 00:17:55 +01:00
puddly
b9f48f62de Bump ZHA dependency zigpy to 0.60.7 (#109082) 2024-01-29 23:59:56 +01:00
Cody C
c4fbf59e16 Fix duplicate Windy values showing in automations state selector (#108062) 2024-01-29 23:34:06 +01:00
Marcel van der Veldt
769da1ee23 Bump python-matter-server to version 5.3.0 (#109068) 2024-01-29 23:26:37 +01:00
Franck Nijhof
6ce16286d5 Update colorlog to 6.8.2 (#109072) 2024-01-29 23:24:17 +01:00
Franck Nijhof
3dec206421 Update apprise to 1.7.2 (#109071) 2024-01-29 23:17:44 +01:00
J. Nick Koston
825fed8319 Bump aiohttp to 3.9.3 (#109025)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-29 23:15:18 +01:00
Kristof Mariën
0013f184b3 Extract foscam base entity for reuse (#108893)
* Extract foscam base entity for reuse

* Cleanup

* More cleanup

* Cleanup constructor

* Use more constants
2024-01-29 23:02:19 +01:00
J. Nick Koston
b5c1d3feeb Bump tesla-powerwall to 0.5.1 (#109069) 2024-01-29 22:50:06 +01:00
Brett Adams
b711c491d5 Add doors and charge cable binary sensors to Tessie (#107172)
* Add doors

* Update homeassistant/components/tessie/strings.json

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

* Add charge cable

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-29 22:00:26 +01:00
Paul Bottein
02ac985120 Use right initial attribute value for demo climate (#108719) 2024-01-29 21:46:04 +01:00
Robert Resch
872a59f405 Bump deebot-client to 5.0.0 (#109066) 2024-01-29 21:45:10 +01:00
Erik Montnemery
7ef3ed6107 Fix light color mode in govee_light_local (#108762) 2024-01-29 21:40:21 +01:00
Robert Svensson
f1392f8519 Try to reconnect to UniFi on 403 (#109067) 2024-01-29 21:39:15 +01:00
Teemu R
6f88cd3273 Bump python-kasa to 0.6.2 (#109064) 2024-01-29 10:19:44 -10:00
wilburCforce
39d263599e Add lutron fan entity (#107402)
* add support for fan entity

* removed unused variables

* removed preset leftovers - not needed

* added deprecation for fans

* Update __init__.py

* fix typing

* initial updates based on review

* updated to search on unique ID instead of entity ID.

* updates for nits

* nits updates

* updates for new callback

* removed async per nits

* wrapped comments into shorter lines

* Add comment comma

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 20:58:12 +01:00
Ellis Michael
a289ab9044 Don't check SSL certificate retrieving webos image (#104014)
I didn't test this in HA, but I did test this in a Python REPL, manually
querying my TV. The old method for ignoring SSL certificate validation
doesn't work at all. This method does and is supported by the aiohttp
documentation.

https://docs.aiohttp.org/en/stable/client_reference.html

Fixes #102109
2024-01-29 21:41:53 +02:00
Stephen Eisenhauer
a9fe63ed90 Reject unifi uptime sensor updates if time delta is small (#108464)
* Reject unifi uptime sensor updates if time delta is small

* Revise uptime change threshold tuning

* Use StateType helper

* Treat missing or zero uptime as None (unknown)
2024-01-29 20:30:07 +01:00
Jan-Philipp Benecke
80bfd4cef7 Raise ValueError when last_reset set and not total state class (#108391)
* Raise ValueError when last_reset set and not total state class

* Fix test

* Break long string into smaller ones
2024-01-29 20:21:35 +01:00
Joost Lekkerkerker
aefae5bdae Prepare Analytics insights for more sensors (#108976) 2024-01-29 19:34:53 +01:00
J. Nick Koston
a6b426ca3e Add discovery support for the 2023 pro check model to mopkea (#109033) 2024-01-29 19:33:10 +01:00
Paul Bottein
4170a447fc Allow system and helper integrations to provide entity_component icons (#109045) 2024-01-29 19:26:55 +01:00
Marc Mueller
be4631cbf8 Use unique artifact names for db jobs [ci] (#108653) 2024-01-29 19:15:36 +01:00
Jan-Philipp Benecke
0a0d4c37a9 Use constants instead of literals for api (#105955) 2024-01-29 18:09:00 +01:00
Martijn van der Pol
b386960661 Add default parameter to as_datetime template function/filter (#107229)
* improve as_datetime

* Improve `as_datetime` Jinja filter/function

* review

* resolve more review items

* change test for datetime input

* Update docstring

* update docstrings for tests

* remove whitespace

* only_default

* Update do string and comment

* improve comment

* Adjust comment

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 18:05:44 +01:00
kpine
be8af7bea3 Fix zwave_js set_config_parameter WS api regression (#109042) 2024-01-29 18:04:05 +01:00
karwosts
f456e3a071 Allow delete_all_refresh_tokens to delete a specific token_type (#106119)
* Allow delete_all_refresh_tokens to delete a specific token_type

* add a test

* minor string change

* test updates

* more test updates

* more test updates

* fix tests

* do not delete current token

* Update tests/components/auth/test_init.py

* Update tests/components/auth/test_init.py

* Option to not delete the current token

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-29 17:09:23 +01:00
Simone Chemelli
075dab250e Code quality for Shelly tests (#109054)
* Code quality for Shelly tests

* clean-up
2024-01-29 16:02:51 +01:00
Malte Franken
6cf48068b5 Bump aio-geojson-nsw-rfs-incidents to 0.7 (#108885) 2024-01-29 15:52:20 +01:00
Cyrill Raccaud
f82fb63dce Add bring integration (#108027)
* add bring integration

* fix typings and remove from strictly typed
- wait for python-bring-api to be ready for strictly typed

* make entity unique to user and list
- before it was only list, therefore the same list imported by two users would have failed

* simplify bring attribute

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

* cleanup and code simplification

* remove empty fields in manifest

* __init__.py aktualisieren

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

* __init__.py aktualisieren

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

* strings.json aktualisieren

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

* streamline async calls

* use coordinator refresh

* fix order in update call and simplify bring list

* simplify the config_flow

* Update homeassistant/components/bring/manifest.json

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

* add unit testing for __init__.py

* cleanup comments

* use dict instead of list

* Update homeassistant/components/bring/todo.py

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

* clean up

* update attribute name

* update more attribute name

* improve unit tests

- remove patch and use mock in conftest

* clean up tests even more

* more unit test inprovements

* remove optional type

* minor unit test cleanup

* Update .coveragerc

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-29 15:08:11 +01:00
Duco Sebel
d631cad07f Add new sensors exposed by HomeWizard kWh meter (#108850)
* Add new sensors exposed by kWh meter

* Add entity translation placeholders

* Fix Mypy issue

* Adjusts tests

* Remove suggested display precision for disabled-by-default sensors

* Update test-snapshots

* Update snapshots
2024-01-29 14:42:16 +01:00
J. Nick Koston
e9e289286e Set hassio api json encoding to avoid looking it up every request (#109032) 2024-01-29 14:32:53 +01:00
J. Nick Koston
5183eed0bc Avoid re-encoding the hassio command URL each request (#109031)
* Avoid reconstructing the hassio command URL each request

The host had to be re-encoded every time which creates an ip_address object

By doing a join we avoid this. It was actually happening twice since
we passed constructed the URL for testing and than passed it as a string
so aiohttp did it as well

* make url the same
2024-01-29 14:25:27 +01:00
Marc Mueller
030727b078 Remove deprecated event_loop fixtures in tests (#109048) 2024-01-29 14:24:58 +01:00
Duco Sebel
dbc568cd53 Simplify HomeWizard sensor names (#108854)
* Simplify HomeWizard sensor names

* Simplify translations even more by using default device_class names
2024-01-29 13:24:00 +01:00
Isak Nyberg
789055fd68 Fix Permobil eula error (#107290)
* bump mypermobil to 0.1.8

* add eula check in config flow

* Update strings.json

* add test for email code with signed eula

* fix docstring character limit

* add placeholder description for MyPermobil
2024-01-29 12:48:55 +01:00
dependabot[bot]
0517e6049b Bump github/codeql-action from 3.23.1 to 3.23.2 (#109039)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.1 to 3.23.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.23.1...v3.23.2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 12:02:53 +01:00
Christophe Gagnier
91e7e5e01a Add binary sensors to TechnoVE integration (#108938)
* Add binary sensors to TechnoVE integration

* Add unit tests for TechnoVE binary sensors

* Implement PR feedback for TechnoVE

* Limit to appropriate sensors in TechnoVE tests

* Removed leftover code

* Implement feedback in TechnoVE PR #108938
2024-01-29 11:56:57 +01:00
Brett Adams
d45227adbb Move asyncio lock in Teslemetry (#109044)
Use single wakelock per vehicle
2024-01-29 11:00:18 +01:00
Erik Montnemery
fd87fd9559 Update attributes in Entity.__init__ in matter (#108877) 2024-01-29 10:32:15 +01:00
Jan-Philipp Benecke
95aea1488d Add pylint plugin to check if coordinator is placed in its own module (#108174)
* Add pylint plugin to check if coordinator is placed in its own module

* Remove unintended changes

* Remove pylint disable and let CI only fail on W,E,F

* Make check conventional

* Apply review suggestion

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

* Use option instead

* Remove pylint arguments from pre-commit

* Partially revert "Remove pylint disable and let CI only fail on W,E,F"

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 10:30:19 +01:00
Joost Lekkerkerker
57622acabf Bump python-homewizard-energy to v4.2.2 (#109038) 2024-01-29 08:42:24 +01:00
Joost Lekkerkerker
b50f7041a3 Bump pytest-asyncio to 0.23.4 (#109027) 2024-01-29 07:10:17 +01:00
Arie Catsman
2b33feb341 Add phase entities to Enphase Envoy (#108725)
* add phase entities to Enphase Envoy

* Implement review feedback for translation strings

* Enphase Envoy multiphase review changes

Move device name logic to separate function.
Refactor native value for phases
Use dataclasses.replace for phase entities, add on-phase to base class as well, no need for phase entity descriptions anymore

* Enphase Envoy reviewe feedback

Move model determination to library.
Revert states test for future split to sensor test.

* Enphase_Envoy use model description from pyenphase library

* Enphase_Envoy refactor Phase Sensors

* Enphase_Envoy use walrus in phase sensor

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-28 22:46:47 +01:00
G Johansson
e13a34df0f Separate fixture in Sensibo (#109000) 2024-01-28 22:43:22 +01:00
J. Nick Koston
b54e282801 Remove follow symlinks support from CachingStaticResource (#109015) 2024-01-28 10:07:12 -10:00
Brett Adams
b28e8a3cf0 Add tests to Teslemetry (#108884)
* Add tests

* Add partial sleep test

* Remove useless AsyncMock

* Review feedback

* Patch imports

* Fix mock_test
2024-01-28 21:04:44 +01:00
Joost Lekkerkerker
a01e73a575 Add translation placeholder to Hue (#108848) 2024-01-28 20:40:21 +01:00
dependabot[bot]
7c59b0b43c Bump dorny/paths-filter from 2.12.0 to 3.0.0 (#108894)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-28 20:35:52 +01:00
J. Nick Koston
7667024a2f Remove extra confirmation step in tplink authenticated discovery flow (#109016)
Remove extra confirmation step in tplink discovery flow

After discovery, and manually entering credentials, we would ask
the user if they still wanted to set up the device. Instead we
now set create the config entry as soon as they enter correct
credentials as its clear that they want to proceed.
2024-01-28 20:23:07 +01:00
Tomer Shemesh
6de8304256 Update pylutron-caseta to 0.19.0 (#108987) 2024-01-28 09:18:28 -10:00
max2697
843c84a325 Add new virtual integration for opower City of Austin Utilities provider (#108337) 2024-01-28 19:54:16 +01:00
David F. Mulcahey
c3222ef733 Fix statuses for ZHA attribute reporting configuration event (#108532)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-01-28 19:28:06 +01:00
Erik Montnemery
8abb4e5f52 Improve display of errors with no message in script trace (#108735) 2024-01-28 19:27:14 +01:00
suaveolent
5818b6141a Added type information to lupusec (#109004)
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-01-28 19:26:05 +01:00
Brett Adams
6ef0b9bf97 Bump tesla-fleet-api to 0.2.3 (#108992) 2024-01-28 19:25:17 +01:00
Joost Lekkerkerker
17b543513c Add strings to Sensirion BLE (#109001) 2024-01-28 19:18:22 +01:00
Christopher Fenner
19988b456c Fix entity naming for heatpump heatings in ViCare (#109013)
Update strings.json
2024-01-28 19:07:14 +01:00
Simone Chemelli
f413ff2837 Add clima support to Comelit integration (#108858)
* Add clima support to Comelit integration

* address first part of review comments

* applied more review comments

* remove old multiplier

* removed preset modes (not always configured)

* small tweak

* apply StrEnum class
2024-01-28 18:50:38 +01:00
suaveolent
f2100f80c4 Add device info to lupusec (#108910)
* added device info and unique id

* removed wrong attribute

* added base entity

* rename domain

* added entity.py to coveragerc

* added base entity for sensors and alarm panel

* add generic type translation

* rename functions

* rename device name to device model

* set _attr_name = None

* pass in only the entry_id instead of the full config_entry

* set unique id to device_id or entry id

* use deviceinfo class

* moved     _attr_name = None to entities

* Update homeassistant/components/lupusec/alarm_control_panel.py

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

* Update homeassistant/components/lupusec/entity.py

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

* Update homeassistant/components/lupusec/entity.py

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

* remove DOMAIN from unique id

* removed redundant function

* Update homeassistant/components/lupusec/alarm_control_panel.py

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

* Update homeassistant/components/lupusec/entity.py

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

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-28 16:06:57 +01:00
RJPoelstra
9413d15c25 Add enum sensor to Vogel's MotionMount integration (#108643)
Add enum sensor entity
2024-01-28 15:02:39 +01:00
karwosts
a2d707442a Fix error when passing a whole number to location selector (#108952)
* Fix error when passing an integer to location selector

* fix tests

* more fix tests

* don't mutate original dict

* remove string testcase
2024-01-28 14:13:00 +01:00
G Johansson
c6ffd453d2 Bump pytrafikverket to 0.3.10 (#108984) 2024-01-28 11:26:02 +01:00
myztillx
ba5d10be73 Separate ecobee start and end date/times for create_vacation service (#107255)
Separate start and end time msg and update service string
2024-01-28 11:21:52 +01:00
Matrix
40010620dd Bump yolink-api to 0.3.6 fix aiomqtt breaking changes (#108555)
* bump yolink-api to 0.3.5

* bump yolink-api to 0.3.6
2024-01-28 00:38:42 -05:00
Joost Lekkerkerker
a793a5445f Add options flow to Analytics Insights (#108716)
* Add options flow to Analytics Insights

* Fix options flow function
2024-01-27 22:24:35 +01:00
J. Nick Koston
601988ecf2 Bump cryptography to 42.0.1 and pyOpenSSL to 24.0.0 (#108956)
* Bump cryptography to 42.0.1

changes: https://github.com/pyca/cryptography/compare/41.0.7...42.0.1

Note that more of the non-rust backend code has been removed
I had to handle that in
https://github.com/bdraco/chacha20poly1305-reuseable/releases/tag/v0.12.1

So there may be other downstream consumers that have a problem

* need pyOpenSSL as well

* too early before coffee
2024-01-27 21:30:00 +01:00
Arie Catsman
49667a26b2 Bump pyenphase to 1.19.0 (#108951) 2024-01-27 10:10:03 -10:00
mkmer
019e80b204 Use version property in Blink (#108911) 2024-01-27 19:45:13 +01:00
David F. Mulcahey
7069fb9508 Add model check to ZHA Sonoff manufacturer specific cluster handler (#108947) 2024-01-27 10:40:23 -05:00
jan iversen
3cc5ffaa4b Replace modbus number_validator by HA standard (#108939) 2024-01-27 16:39:33 +01:00
Brett Adams
858fb1fa37 Add snapshot testing to Tessie (#108346)
* Redo Binary Sensors

* Redo Button

* Redo Climate

* Stage unfixed platforms

* Redo Cover

* Redo device tracker

* Redo lock

* Redo Media Player

* Redo Number

* Redo Select

* Redo Sensor

* Redo Switch

* Redo Update

* Fix setup_platform

* Add mixing snapshot

* Fix config flow

* Centralise entity testing

* Update snapshot

* Rename test_entities

* Fix assert_entities
2024-01-27 13:43:55 +01:00
David F. Mulcahey
950660b953 Reorganize ZHA device availability code (#108856)
* Correct ZHA device availability at startup

* don't set available property from gateway

* cleanup
2024-01-27 07:17:05 -05:00
Jan Bouwhuis
677b06f502 Add comment to explain not using the core API in MQTT client (#108942) 2024-01-27 02:05:31 -10:00
matt7aylor
dec9eb9ae4 Matter sensors for air quality measurements (#108173)
* Matter sensors for air quality measurements
Add sensors for CO2, PM1, PM2.5, PM10 and TVOC

* Add initial tests for matter air quality sensor

* Remove VOC data as requires unit extraction from cluster
2024-01-27 08:46:24 +01:00
Stefan Agner
f35e0d8a55 Add more Thread vendor to brand mappings (#108899)
Thread: Add additional vendor to brand mappings

Add additional vendor to brand mappings for known Thread border
router vendors.
2024-01-27 08:43:08 +01:00
Yuxin Wang
16a90f8f19 Fix stalls in config flow of APCUPSD (#108931)
Fix deadlock in config flow of APCUPSD
2024-01-27 08:34:29 +01:00
J. Nick Koston
5dac5d5c7e Refactor logbook helpers to reduce splits and lookups (#108933)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-26 20:07:24 -10:00
Michael Hansen
61c6c70a7d Improved Assist debug (#108889)
* Differentiate builtin/custom sentences and triggers in debug

* Refactor so async_process runs triggers

* Report relative path of custom sentences file

* Add sentence trigger test
2024-01-26 23:04:45 -05:00
J. Nick Koston
f96f4d31f7 Convert referenced registry functions to use cached_property (#108895)
* Convert referenced registry functions to use cached_property

These already implemented caching, but now that we can use cached_property
because the lock problem is solved, we can make the code simplier and faster

* missed one

* make them the same
2024-01-26 23:02:42 -05:00
J. Nick Koston
0120d00081 Switch unifiprotect to use async_update_reload_and_abort helper (#108934) 2024-01-26 22:55:58 -05:00
J. Nick Koston
5177d022e8 Switch imap to use async_update_reload_and_abort helper (#108935) 2024-01-26 22:55:26 -05:00
Robert Resch
b1b53ac893 Add Ecovacs image entities (#108924)
* Add Ecovacs image entities

* Fix
2024-01-26 20:33:21 +01:00
Michael
d007327cf5 Deprecate legacy Proximity entity (#108730)
* deprecate proximity entity

* add test

* extend tests

* adjust strings

* make issue fixable

* use default repairflow
2024-01-26 19:04:48 +01:00
Erik Montnemery
b074334c07 Fix light color mode in advantage_air (#108875) 2024-01-26 07:22:49 -10:00
Jan Bouwhuis
7bec5ef6bc Use unknown color_mode for MQTT json lights if color mode is not set (#108909) 2024-01-26 14:42:47 +01:00
Josef Zweck
00c2ba69f7 Add webhook support to tedee integration (#106846)
* start work on webhooks

* start work on webhooks

* use background task

* websocket improvement

* add test

* add webhook id to mock_config_entry

* some changes

* add webhook to manifest

* fix test

* reset poll timer on webhook update

* reset poll timer on webhook update

* code cleanup

* generate webhook id in config flow

* fix merge

* undo var rename

* remove

* ruff

* ruff

* only delete specific webhook

* clarify warning

* version bump

* minor improvements

* requested changes

* unregister function

* move more of unregistration logic

* test pushed data

* add comment

* Update config_flow.py

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

* ruff

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-26 10:48:16 +01:00
Joost Lekkerkerker
d4ac5e492b Add entity registry test to Withings (#108900) 2024-01-26 09:33:56 +01:00
Christophe Gagnier
b91e9edd16 Remove "max_current" from TechnoVE sensors (#108898) 2024-01-26 09:05:36 +01:00
J. Nick Koston
dff5e45761 Small speed up to listing config entries in the websocket api (#108892) 2024-01-25 20:20:19 -10:00
J. Nick Koston
9de8409f48 Speed up security filter middleware (#108703)
* Speed up security filter middleware

Check the path and query string with the filter expression once instead
of checking the path and query string seperately. If we get a hit than
we check the query string to ensure we give a more verbose error about
where the filter hit.

Additionally since we see the same urls over and over, cache the unquote

* request.url is to expensive, cheaper to join

* aiohttp has a path_qs fast path

* construct the string outselves so it functions exactly as before
2024-01-26 00:17:18 -05:00
J. Nick Koston
617e8dd8a5 Small cleanup to entity platform translation fetching (#108890)
* Small cleanup to entity platform translation fetching

While I could not realize the performance improvemnet I had
hoped in #108800, I pulled this out since its a nice cleanup to avoid
constructing the inner function over and over.

* stale docstring
2024-01-26 00:14:44 -05:00
David F. Mulcahey
3f31a76692 Apply consistent naming to ZHA cluster handler implementations (#108851)
* Apply consistent naming to ZHA cluster handler implentations

* remove import alias

* remove if statement around assert in test
2024-01-25 20:09:38 -05:00
Massimo Savazzi
eb85f469e9 Add binary sensor platform to JVC Projector (#108668)
* JVC Projector Binary Sensor

* Fixed PR as per request, removed Name, removed Read_Only.

* Fixed as per Joostlek suggestions

* Update homeassistant/components/jvc_projector/coordinator.py

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

* Update homeassistant/components/jvc_projector/binary_sensor.py

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

* Added changes as per requests

* fixed docstring

* Update homeassistant/components/jvc_projector/strings.json

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

* Update homeassistant/components/jvc_projector/binary_sensor.py

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

* Added icon property to binary sensor. Removed icons.json file as not used anymore

* Fixed tests

* Added icons file

* Update homeassistant/components/jvc_projector/icons.json

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

* Update test_binary_sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 22:49:03 +01:00
Simone Chemelli
e1b1bb070d Bump aiocomelit to 0.8.2 (#108862)
* bump aicomelit to 0.8.1

* bump to 0.8.2
2024-01-25 21:40:06 +01:00
J. Nick Koston
3447e7fddb Fix ESPHome color modes for older firmwares (#108870) 2024-01-25 10:18:53 -10:00
Jonas Fors Lellky
2b799830db Add switch to flexit bacnet integration (#108866)
* Add platform switch to flecit_bacnet integration

* Move testing of the switch to it’s own test

* Assert correct method is called one time

* Test switch on/off error recovery

* Review comment
2024-01-25 20:59:36 +01:00
Diogo Gomes
12289f172d Filter only utility_meter select entities in reset service (#108855)
filter reset service to only utility_meters
2024-01-25 20:46:45 +01:00
dougiteixeira
7713cf377d Add utility meter option for the sensor to always be available (#103481)
* Adds option for the sensor to always be available

* Remove logger debug

* Add migration config entry version

* Update homeassistant/components/utility_meter/config_flow.py

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

* Update homeassistant/components/utility_meter/sensor.py

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

* Remove migration config entry version

* Change CONF_SENSOR_ALWAYS_AVAILABLE optional in CONFIG_SCHEMA

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Add option in yaml

* Update homeassistant/components/utility_meter/strings.json

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

* Update homeassistant/components/utility_meter/strings.json

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

* Changes tests

* Add test_always_available

* Use freezegun

* Update homeassistant/components/utility_meter/strings.json

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-25 20:46:33 +01:00
suaveolent
faad9a7584 Add ConfigFlow for Lupusec (#108740)
* init support for config flow for lupusec

* correctly iterate over BinarySensorDeviceClass values for device class

* bump lupupy to 0.3.2

* Updated device info for lupusec

* revert bump lupupy for separate pr

* fixed lupusec test-cases

* Change setup to async_setup

* remove redundant check for hass.data.setdefault

* init support for config flow for lupusec

* correctly iterate over BinarySensorDeviceClass values for device class

* bump lupupy to 0.3.2

* Updated device info for lupusec

* revert bump lupupy for separate pr

* fixed lupusec test-cases

* Change setup to async_setup

* remove redundant check for hass.data.setdefault

* resolve merge error lupupy

* connection check when setting up config entry

* removed unique_id and device_info for separate pr

* changed name to friendly name

* renamed LUPUSEC_PLATFORMS to PLATFORMS

* preparation for code review

* necessary changes for pr

* changed config access

* duplicate entry check

* types added for setup_entry and test_host_connection

* removed name for lupusec system

* removed config entry from LupusecDevice

* fixes for sensors

* added else block for try

* added integration warning

* pass config to config_flow

* fix test cases for new config flow

* added error strings

* changed async_create_entry invocation

* added tests for exception handling

* use parametrize

* use parametrize for tests

* recover test

* test unique id

* import from yaml tests

* import error test cases

* Update tests/components/lupusec/test_config_flow.py

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

* fixed test case

* removed superfluous test cases

* self._async_abort_entries_match added

* lib patching call

* _async_abort_entries_match

* patch lupupy lib instead of test connection

* removed statements

* test_flow_source_import_already_configured

* Update homeassistant/components/lupusec/config_flow.py

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

* removed unique_id from mockentry

* added __init__.py to .coveragerc

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 18:52:30 +01:00
Michael
bb8828c86f Address late review on auth (#108852) 2024-01-25 18:15:35 +01:00
Frank Wickström
1b7109fb95 Bump pyhuum to 0.7.10 (#108853)
* Upgrade pyhuum 0.7.9 -> 0.7.10

This fixes dependency issues with Black and ruff

* Update requirements_all.txt

* Update requirements_test_all.txt

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 17:52:03 +01:00
mkmer
24c9bddae0 Bump blinkpy to 0.22.6 (#108727)
Remove update after snap - now handled in library
2024-01-25 15:23:37 +01:00
David F. Mulcahey
74a60929e4 Use Zigpy definition objects in ZHA cluster handlers (#108383)
* use zigpy def objects in ZHA cluster handlers

* shorten with direct imports

* shorten with rename due to clash
2024-01-25 08:47:26 -05:00
TheJulianJES
4138b5c308 Reduce log level for creating ZHA cluster handler (#108809) 2024-01-25 08:45:11 -05:00
Martin Hjelmare
53b73bd0bd Make device tracker latitude and longitude optional (#108838)
* Make device tracker latitude and longitude optional

* Update test
2024-01-25 13:25:17 +01:00
Duco Sebel
1fa7ceede3 Use entity translations placeholders in HomeWizard (#108741)
* Adopt Entity placeholders

* Undo some snapshot changes
2024-01-25 13:15:20 +01:00
Cody C
6e59568ba3 Use feed name as entity name in GeoJSON (#108753)
* Add support for entity name in GeoJSON

Previously GeoJSON names were just the config entry ID. This is not very user friendly. Particularly so when there are many config entries and many, many entities from those same many config entries.

* Update GeoJSON tests to support entity names
2024-01-25 13:05:07 +01:00
Frank Wickström
6f81d21a35 Add Huum integration (#106420)
* Add Huum integration

* Use DeviceInfo instead of name property for huum climate

* Simplify entry setup for huum climate entry

* Don’t take status as attribute for huum climate init

* Remove unused import

* Set unique id as entity id in huum init

* Remove unused import for huum climate

* Use entry ID as unique ID for device entity

* Remove extra newline in huum climate

* Upgrade pyhuum to 0.7.4

This version no longer users Pydantic

* Parameterize error huum tests

* Update all requirements after pyhuum upgrade

* Use Huum specific naming for ConfigFlow

* Use constants for username and password in huum config flow

* Use constants for temperature units

* Fix typing and pylint issues

* Update pyhuum to 0.7.5

* Use correct enums for data entry flow in Huum tests

* Remove test for non-thrown CannotConnect in huum flow tests

* Refactor failure config test to also test a successful flow after failure

* Fix ruff-format issues

* Move _status outside of __init__ and type it

* Type temperature argument for _turn_on in huum climate

* Use constants for auth in huum config flow test

* Refactor validate_into into a inline call in huum config flow

* Refactor current and target temperature to be able to return None values

* Remove unused huum exceptions

* Flip if-statment in async_step_user flow setup to simplify code

* Change current and target temperature to be more future proof

* Log exception instead of error

* Use custom pyhuum exceptions

* Add checks for duplicate entries

* Use min temp if no target temp has been fetched yet when heating huum

* Fix tests so that mock config entry also include username and password

* Fix ruff styling issues

I don’t know why it keeps doing this. I run `ruff` locally, and then it does not complain, but CI must be doing something else here.

* Remove unneded setting of unique id

* Update requirements

* Refactor temperature setting to support settings target temparature properly
2024-01-25 12:55:55 +01:00
Brett Adams
909cdc2e5c Add Teslemetry Integration (#108147)
* Copy Paste Find Replace

* Small progress

* wip

* more wip

* Add SSE listen and close

* More rework

* Fix coordinator

* Get working

* Bump to 0.1.3

* Push to 0.1.4

* Lots of fixes

* Remove stream

* Add wakeup

* Improve set temp

* Be consistent with self

* Increase polling until streaming

* Work in progress

* Move to single climate

* bump to 0.2.0

* Update entity

* Data handling

* fixes

* WIP tests

* Tests

* Delete other tests

* Update comment

* Fix init

* Update homeassistant/components/teslemetry/entity.py

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

* Add Codeowner

* Update coverage

* requirements

* Add failure for subscription required

* Add VIN to model

* Add wake

* Add context manager

* Rename to wake_up_if_asleep

* Remove context from coverage

* change lock to context

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

* Improving Logger

* Add url to subscription error

* Errors cannot markdown

* Fix logger

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

* rename logger

* Fix error logging

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 12:54:47 +01:00
Joost Lekkerkerker
114bf0da34 Update Lutron in callback (#108779)
* Update Lutron in callback

* Update Lutron in callback

* Remove abstractmethod

* Don't do IO in constructor

* Split fetching and setting
2024-01-25 12:54:31 +01:00
Duco Sebel
0c9a30ab69 Add support for externally connected utility devices in HomeWizard (#100684)
* Backport code from #86386

* Add tests

* Remove local dev change

* Implement device class validation based on unit

* Swap sensor and externalsensor classes (based on importance)

* Use translations for external sensor entities

* Re-add meter identifier as sensor for external devices

* Add migration for Gas identifier

* Rename HomeWizardExternalIdentifierSensorEntity class

* Fix all existing tests

* Reimplement tests for extenal devices with smapshots

* Remove non-used 'None' type in unit

* Add migration test

* Clean up parameterize

* Add test to fix last coverage issue

* Fix non-frozen mypy issue

* Set device name via added EntityDescription field

* Remove device key translations for external sensors,

* Bring back translation keys

* Set device unique_id as serial number

* Remove meter identifier sensor

* Simplify external device initialization

* Adjust tests

* Remove unused gas_meter_id migration

* Remove external_devices redaction

* Remove old gas meter id sensor after migration
2024-01-25 12:51:50 +01:00
RoboMagus
c54b65fdf0 Add 'last_reset' for 'total' state_class template sensor (#100806)
* Add last_reset to trigger based template sensors

* Add last_reset to state based template sensors

* CI check fixes

* Add pytests

* Add test cases for last_reset datetime parsing

* Add test for static last_reset value

* Fix ruff-format
2024-01-25 11:12:03 +01:00
Teemu R
3965f20526 Bump python-kasa to 0.6.1 (#108831) 2024-01-25 10:50:01 +01:00
dependabot[bot]
7efc82b14c Bump dorny/paths-filter from 2.11.1 to 2.12.0 (#108826)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-25 10:36:13 +01:00
J. Nick Koston
82d21136bd Do not try to cleanup invalid config entries without an AccessoryPairingID (#108830) 2024-01-24 22:49:27 -10:00
Erik Montnemery
da7d2ef228 Fix light color mode in zwave_js (#108783) 2024-01-25 09:46:22 +01:00
Martin Hjelmare
fabf8802f5 Fix matter color modes (#108804)
* Fix matter light color modes

* Make onoff light fixture only onoff

* Make dimmable light only a dimmable light

* Make color temp light fixture only a color temp light
2024-01-25 09:15:38 +01:00
Josef Zweck
c9bef39c9a Update pytedee_async to 0.2.12 (#108800) 2024-01-25 08:47:05 +01:00
Robert Svensson
195ef6d769 Fix lights reporting unsupported colormodes in deCONZ (#108812) 2024-01-25 08:38:57 +01:00
J. Nick Koston
0628546a0e Add basic tests for powerview scenes (#108818) 2024-01-24 17:50:06 -10:00
J. Nick Koston
c01e8288c1 Convert http auth internals to normal functions (#108815)
Nothing was being awaited here anymore, these can be normal functions
2024-01-24 22:34:52 -05:00
J. Nick Koston
d588ec8202 Fix ESPHome not fully removing entities when entity info changes (#108823) 2024-01-24 17:29:11 -10:00
John Hess
7f56330e3b Bump thermopro-ble to 0.9.0 (#108820) 2024-01-24 17:26:58 -10:00
Michael
f5d439799b Add expiration of unused refresh tokens (#108428)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 13:24:22 -10:00
Robert Resch
0d22822ed0 Add Ecovacs diagnostics (#108791)
* Add Ecovacs diagnostics

* Fix test
2024-01-24 23:30:14 +01:00
Kevin Worrel
02f7165ca5 Add super chlorination services to screenlogic (#108048)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 12:28:27 -10:00
Jan Bouwhuis
134cc78400 Fix processing supported color modes for emulated_hue (#108803) 2024-01-24 22:15:00 +01:00
Jan Bouwhuis
066692506c Fix unhandled exception on humidifier intent when available_modes is None (#108802) 2024-01-24 22:14:15 +01:00
J. Nick Koston
de38e7a367 Bump aioshelly to 8.0.1 (#108805) 2024-01-24 10:56:26 -10:00
CR-Tech
df9faeae6f Add write_registers support for Fan Mode in modbus (#108053) 2024-01-24 20:48:55 +01:00
Paul Bottein
0d633f33fa Set right icon for set_humidity climate service (#108801) 2024-01-24 20:40:48 +01:00
Jan-Philipp Benecke
ddf02959f4 Bump area registry storage minor version to 4 (#108798) 2024-01-24 20:31:43 +01:00
J. Nick Koston
f883f721c8 Avoid copying translations for single components (#108645) 2024-01-24 19:52:34 +01:00
Martin Hjelmare
852e4c21c6 Complete device tracker entity tests (#108768) 2024-01-24 19:50:55 +01:00
Jan Bouwhuis
30c9a70dbf Fix google_assistant climate modes might be None (#108793) 2024-01-24 19:47:07 +01:00
Erik Montnemery
909e58066d Fix changed_variables in automation and script traces (#108788) 2024-01-24 19:12:45 +01:00
Luke Lashley
aa86d87a31 Bump python-roborock to 39.1 (#108751) 2024-01-24 19:11:39 +01:00
Erik Montnemery
9c727e5ea8 Add icon to areas (#108650) 2024-01-24 19:11:03 +01:00
Simone Chemelli
c6a1ec96f4 Add Shelly CoAP port to default container port (#108016)
* Add Shelly CoAP port to default container port

* Update devcontainer.json
2024-01-24 19:00:57 +01:00
Jan Bouwhuis
a90d8b6a0c Stabilize alexa discovery (#108787) 2024-01-24 18:56:21 +01:00
Robert Resch
5467fe8ff1 Add Ecovacs select entities (#108766)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-24 17:17:43 +01:00
Erik Montnemery
aaf1cc818a Fix light color mode in tradfri (#108761) 2024-01-24 16:55:18 +01:00
Erik Montnemery
4b2b4ae36b Add invert option to switch_as_x (#107535)
* Add invert option to switch_as_x

* Store invert flag in entity options

* Add options flow

* Update strings

* Add tests

* Address review comment

* Update homeassistant/components/switch_as_x/strings.json

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

* Address review comments

* Inline get_suggested which was only used once in tests

* Address review comments

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-24 16:35:08 +01:00
Erik Montnemery
c3de193e2e Adjust color_mode checks when lights render effects (#108737)
* Adjust color_mode checks when lights render effects

* Improve comment

* Avoid calling effect property if light does not support effects

* Fix test
2024-01-24 15:44:45 +01:00
Erik Montnemery
431e4b38ac Improve tests of script trace (#108733) 2024-01-24 15:29:35 +01:00
Erik Montnemery
97e038eb2e Fix light color mode in netatmo (#108759) 2024-01-24 15:29:16 +01:00
Erik Montnemery
afbd71514f Fix light color mode in advantage_air (#108757) 2024-01-24 15:28:59 +01:00
Erik Montnemery
4a2a7872fb Fix light color mode in tplink (#108760) 2024-01-24 15:28:40 +01:00
Erik Montnemery
dc672ff62c Fix light color mode in fritzbox (#108758) 2024-01-24 15:28:14 +01:00
Erik Montnemery
fcf72ae0c2 Fix race when deleting an automation (#108772) 2024-01-24 15:27:09 +01:00
Jack
af1ba4b22f Add ZHA metering summation received sensor (#107576)
* Add sensor for exposing Summation Received from Metering cluster

* Ruff format

* Test updates for new sensor

* Update test_sensor.py to support summation_received

* Correct report_count for smart meterning and some pylint warning fixes
2024-01-24 07:56:49 -05:00
Erik Montnemery
8fa93f6fe5 Bump comments in light indicating backwards compatibility plan (#108770) 2024-01-24 13:49:26 +01:00
Jan Klausa
f828b1ce85 Bump py-switchbot-api to 2.0.0 (#108721)
* Update switchbot-api to 2.0.0

* bump requirements
2024-01-24 12:36:41 +01:00
Daniel
a67113a95a Parse template result in async_render_with_possible_json_value (#99670)
* Optionally parse templates rendered with possible json

* Remove duplicate strip

* Add tests for parsing template result
2024-01-24 12:12:28 +01:00
Markus Jacobsen
1d7e0e7fe4 Add bang_olufsen integration (#93462)
* Add bangolufsen integration

* add untested files to .coveragerc

* Simplify integration to media_player platform

* Remove missing files from .coveragerc

* Add beolink_set_relative_volume custom service
Tweaks

* Remove custom services
Remove grouping as it was dependent on custom services

* Update API to 3.2.1.150.0
Reduce and optimize code with feedback from joostlek
Tweaks

* Updated testing

* Remove unused options schema

* Fix bugfix setting wrong state

* Fix wrong initial state

* Bump API

* Fix Beosound Level not reconnecting properly

* Remove unused constant

* Fix wrong variable checked to determine source

* Update integration with feedback from emontnemery

* Update integration with feedback from emontnemery

* Remove unused code

* Move API client into dataclass
Fix not all config_flow exceptions caught
Tweaks

* Add Bang & Olufsen brand

* Revert "Add Bang & Olufsen brand"

This reverts commit 57b2722078.

* Remove volume options from setup
Simplify device checks
rename integration to bang_olufsen
update tests to pass
Update API

* Remove _device from base
Add _device to websocket

* Move SW version device update to websocket
Sort websocket variables

* Add WebSocket connection test

* Remove unused constants

* Remove confirmation form
Make discovered devices get added to Home Assistant immediately
Fix device not being available on mdns discovery
Change config flow aborts to forms with error

* Update tests for new config_flow
Add missing api_exception test

* Restrict manual and discovered IP addresses to IPv4

* Re-add confirmation step for zeroconf discovery
Improve error messages
Move exception mapping dict to module level

* Enable remote control WebSocket listener

* Update tests
2024-01-24 12:00:51 +01:00
Steven B
393dee1524 Handle IP address changes properly for tplink (#108731)
* Update device config for SETUP_RETRY and use CONF_HOST on startup

* Make entry state checks use a constant

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

* Update tests

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 11:24:44 +01:00
Kristof Mariën
1cb15a398c Add more device info to foscam camera (#108177) 2024-01-24 11:13:45 +01:00
suaveolent
07449659a5 Bump lupupy to 0.3.2 (#108756)
bump lupupy to 0.3.2

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-01-24 09:20:54 +01:00
J. Nick Koston
21f646c5a7 Add LeaOne integration (#108617) 2024-01-23 22:08:20 -10:00
Paul Bottein
80e66c12b8 Add humidifier attributes icon translations (#108718) 2024-01-24 08:45:30 +01:00
Paul Bottein
00c4913401 Add fan attributes icon translations (#108722) 2024-01-24 08:44:45 +01:00
Paul Bottein
8d1665df16 Use fixed state icon for climate domain (#108723) 2024-01-24 08:44:10 +01:00
Duco Sebel
f7b0a15aa5 Bumb python-homewizard-energy to 4.2.1 (#108738) 2024-01-24 08:31:23 +01:00
Joost Lekkerkerker
c7db8a0bee Add translation placeholders for TPLink power strip (#108710) 2024-01-24 08:23:39 +01:00
puddly
22eed5419e Reduce log level of ZHA endpoint handler init (#108749)
* Reduce the log level of endpoint handler init failure to debug

* Reduce log level in unit test
2024-01-23 21:04:59 -05:00
J. Nick Koston
87898b7487 Add 3C52A1 oui to tplink for tapo l5 devices (#108750) 2024-01-23 21:04:43 -05:00
Michael Hansen
cffd95a015 Pause Wyoming satellite on mute (#108322)
Pause satellite on mute
2024-01-23 20:37:25 -05:00
Michael Hansen
d8a1c58b12 Fix intent loading and incorporate unmatched entities more (#108423)
* Incorporate unmatched entities more

* Don't list targets when match is incomplete

* Add test for out of range
2024-01-23 20:31:57 -05:00
Jan Bouwhuis
c725238c20 Fix alexa fails reporting the state in specific cases (#108743)
* Fix alexa fails reporting the state in specific cases

* More cases
2024-01-23 23:36:44 +01:00
Erik Montnemery
823f268054 Randomize thread network names (#108302)
* Randomize thread network names

* Use PAN ID as network name suffix

* Apply suggestions from code review

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

* Update tests

* Format code

* Change format of network name again

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-01-23 22:58:28 +01:00
jan iversen
d8f16c14ab Get modbus coverage back to 100% (#108734)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-23 21:50:25 +01:00
Marc Mueller
a6807b8a7f Improve vizio typing (#108042) 2024-01-23 21:20:15 +01:00
Robert Resch
37f5c75752 Add sensors to Ecovacs (#108686)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-23 21:17:18 +01:00
jan iversen
bfd9bd3ff2 Bump pymodbus to v2.6.3 (#108736) 2024-01-23 21:12:07 +01:00
Erik Montnemery
069c2b7e38 Improve tests of script trace (#108717)
* Improve tests of script trace

* Update tests after rebase

* Apply suggestions from code review

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

* Apply suggestions from code review

* Adjust

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-23 19:53:09 +01:00
mkmer
ad14ebe7e9 Use new config entry update/abort handler in Honeywell (#108726)
Use update_reload helper in Honeywell
2024-01-23 17:15:37 +01:00
mkmer
592794566e Bump AIOSomecomort to 0.0.25 (#107815) 2024-01-23 16:27:41 +01:00
Jan-Philipp Benecke
13887793a7 Remove home_plus_control and mark as virtual integration supported by Netatmo (#107587)
* Mark home_plus_control a virtual integration using Netatmo

* Apply code review suggestion

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

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 16:18:03 +01:00
mkmer
f3b1f47d34 Return PRESET_NONE in Honeywell (#108599)
* Return PRESET_NONE

* format preset_hold

* Address Hold in tests

* Add translations
2024-01-23 15:57:55 +01:00
Michal Ziemski
074d59f849 Update openerz-api to 0.3.0 (#108575) 2024-01-23 15:14:41 +01:00
Erik Montnemery
9bff039d17 Add set_conversation_response script action (#108233)
* Add set_conversation_response script action

* Update homeassistant/components/conversation/trigger.py

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

* Revert accidental change

* Add test

* Ignore mypy

* Remove incorrect callback decorator

* Update homeassistant/helpers/script.py

* Add test with templated set_conversation_response

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-23 09:13:42 -05:00
Dave Leaver
e3a73c12bc Add airtouch5 (#98136)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 14:49:47 +01:00
Peter Hall
701404fa0b Add ZHA entities for snzb06p (#107379)
* Updating zha component to add entities for snzb06p

Sonoff snzb06p presence detector needs some custom entities.

* Updating ZCL_INIT_ATTRS for sonoff specific attrs

* updating cluster name due to change in quirk
2024-01-23 08:31:32 -05:00
Joost Lekkerkerker
5dbcdfc6fb Bump python-homeassistant-analytics to 0.6.0 (#108713) 2024-01-23 13:05:40 +01:00
Jan-Philipp Benecke
2e19829d88 Use new config entry update/abort handler in co2signal (#108715) 2024-01-23 13:03:16 +01:00
G Johansson
65581e94ea Add config flow for Time & Date (#104183)
Co-authored-by: Erik <erik@montnemery.com>
2024-01-23 12:18:31 +01:00
Michael
eaa32146a6 Add sensor platform to Proximity (#101497)
* add sensor platform

* transl. of distance already covered by dev.class

* add untested files to .coveragerc

* add missing state translations

* remove translation key for distance sensor

* proximity entity do not use HA number system

* fix

* extend tests

* make const final to be usable as key for TypedDict

* remove proximity from .coveragerc

* replace typeddict by simple dict definition

* make black happy

* rework to create proximity sensor for each tracked entity and always recalculate all entites

* apply review comments

* move direction of travel calc out of the loop

* make direction of travel an enum sensor

* remove unique_id from sensors

* don't set distance=0 when in monitored zone

* set None when direction is unknown

* keep distance 0 in case arrived for legacy entity

* exclude from nearest when in ignored zone

* keep distance=0 when arrived

* use description name for entity name

* remove uneeded typing

* uses consistent variable name

* fix debug messages

* use entity_id as loop var

* rename device_state to tracked_entity_state

* correct MRO for sensor entity classes
2024-01-23 10:56:02 +01:00
Allen Porter
fa63719161 Reduce overhead for google calendar state updates (#108133) 2024-01-23 10:50:00 +01:00
Joost Lekkerkerker
d9f1450ee6 Add Homeassistant Analytics Insights integration (#107634)
* Add Homeassistant Analytics integration

* Add Homeassistant Analytics integration

* Add Homeassistant Analytics integration

* Fix feedback

* Fix test

* Update conftest.py

* Add some testcases

* Make code clear

* log exception

* Bump python-homeassistant-analytics to 0.2.1

* Bump python-homeassistant-analytics to 0.3.0

* Change domain to homeassistant_analytics_consumer

* Add integration name to config flow selector

* Update homeassistant/components/homeassistant_analytics_consumer/manifest.json

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

* Fix hassfest

* Apply suggestions from code review

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

* Bump python-homeassistant-analytics to 0.4.0

* Rename to Home Assistant Analytics Insights

* Update homeassistant/components/analytics_insights/config_flow.py

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

* Update homeassistant/components/analytics_insights/manifest.json

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

* Rename to Home Assistant Analytics Insights

* add test

* Fallback to 0 when there is no data found

* Allow to select any integration

* Fix tests

* Fix tests

* Update tests/components/analytics_insights/conftest.py

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

* Update tests/components/analytics_insights/test_sensor.py

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

* Fix format

* Fix tests

---------

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 10:32:31 +01:00
Teemu R
52ede95c4f Scrub internal data for newer tplink devices (#108704) 2024-01-23 09:08:03 +01:00
Koen van Zuijlen
acd07b4826 Fix for justnimbus integration (#99212)
* Fix for justnimbus integration

* Fixed tests and moved const

* fix: added reauth flow

* fix: fixed reauth config flow

* chore: added config_flow reauth test

* chore: Processed PR feedback

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-23 08:56:11 +01:00
G Johansson
f9a4840ce2 Group sensor calculate attributes (#106972)
* Group sensor calculate attributes

* Use entity helpers

* Fix sensor tests

* Test change of uom

* Add tests and fix UoM issue

* Fix test

* Fix state class

* repair and logs

* delete issues

* pass through hass

* Update descriotion text to be more descriptive

* Comments

* Add pr to comment

* fix if in updating

* Fix test valid units

* Fix strings

* Fix issues
2024-01-23 08:16:51 +01:00
Erik Montnemery
329eca4918 Store area registry entries in a UserDict (#108656)
* Store area registry entries in a UserDict

* Address review comments
2024-01-23 08:14:28 +01:00
J. Nick Koston
2eea658fd8 Convert getting and removing access tokens to normal functions (#108670) 2024-01-22 20:51:33 -10:00
J. Nick Koston
904032e944 Bump habluetooth to 2.4.0 (#108695)
changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.3.1...v2.4.0
2024-01-23 07:46:47 +01:00
J. Nick Koston
60149e9b9e Add OUI 5C628B to tplink (#108699)
Seen on 530E(US)
2024-01-23 07:21:44 +01:00
Christophe Gagnier
4358c24edd Add zeroconf to TechnoVE integration (#108340)
* Add zeroconf to TechnoVE integration

* Update homeassistant/components/technove/config_flow.py

Co-authored-by: Teemu R. <tpr@iki.fi>

* Update zeroconf test to test if update is called.

When a station is already configured and it is re-discovered through zeroconf, make sure we don't call its API for nothing.
2024-01-23 06:32:42 +01:00
J. Nick Koston
6fb86f179a Use new config entry update/abort helper in bond (#108690)
Use new config entry update/abort helper in bond

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-23 06:09:33 +01:00
J. Nick Koston
7c86ab14c3 Refactor service enumeration methods to better match existing use cases (#108671) 2024-01-22 14:21:17 -10:00
J. Nick Koston
f6bc5c98b3 Handle tplink credential change at run time (#108692) 2024-01-22 13:30:21 -10:00
J. Nick Koston
12b41c35ec Use new config entry update/abort helper in sense (#108691) 2024-01-22 13:24:15 -10:00
J. Nick Koston
426fce93aa Use new config entry update/abort helper in apple_tv (#108688) 2024-01-22 13:24:03 -10:00
J. Nick Koston
def42c6da0 Use new config entry update/abort helper in enphase-envoy (part 2) (#108689)
Use new config entry update/abort helper in enphase_envoy

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 17:19:55 -05:00
Jan-Philipp Benecke
0b79504cf0 Extend config entry update/abort helper to also update unique id (#108681)
* Extend config entry update/abort helper to also update unique id

* Move kwarg to end

* Make additionals kwargs only
2024-01-22 23:01:55 +01:00
J. Nick Koston
9ee8832367 Use new config entry update/abort helper in onvif (#108680)
Use new config entry update/abort helper in onvif

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 23:01:08 +01:00
J. Nick Koston
17202e21f3 Use new config entry update/abort helper in samsungtv (#108683)
Use new config entry update/abort helper in samsungtv

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:59:50 +01:00
J. Nick Koston
faf52aa2ed Use new config entry update/abort helper in shelly (#108684)
Use new config entry update/abort helper in shelly

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:59:17 +01:00
J. Nick Koston
d825c85351 Use new config entry update/abort helper in enphase_envoy (#108679)
Use new config entry update/abort helper in enphase_envoy

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:43:12 +01:00
J. Nick Koston
4bf4bc7e9b Use new config entry update/abort helper in synology_dsm (#108682) 2024-01-22 11:39:57 -10:00
J. Nick Koston
07926660bc Use new config entry update/abort helper in isy994 (#108678)
Use new config entry update/abort helper in isy994

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:33:49 +01:00
J. Nick Koston
4378a171b2 Use new config entry update/abort helper in yalexs_ble (#108675)
Use new config entry update/abort helper in yalexs_ble

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:25:48 +01:00
J. Nick Koston
bd7eb01546 Use new config entry update/abort helper in xiaomi_ble (#108677)
Use new config entry update/abort helper in xiaomi_ble

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:16:27 +01:00
J. Nick Koston
d7273d66ab Use new config entry update/abort helper in bthome (#108676)
Use new config entry update/abort helper in bthome

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:14:00 +01:00
J. Nick Koston
e7be9cb447 Use new config entry update/abort helper in powerwall (#108674)
Use new config entry update/abort helper in powerwall

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:12:56 +01:00
J. Nick Koston
3b6c85b904 Use new config entry update/abort helper in august (#108673)
Use new config entry update/abort helper in august

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:12:18 +01:00
J. Nick Koston
9811930470 Use new config entry update/abort helper in esphome (#108672) 2024-01-22 22:11:38 +01:00
Jan-Philipp Benecke
4760114408 Fix flaky sensibo test (#108669) 2024-01-22 21:47:28 +01:00
Brett Adams
e1fd5e83a7 Add time to charge sensor to Tessie (#108342)
* Add time to charge and type checking

* Revert drive_state_shift_state change

* Use original name

* Use function instead of lambda

* Update homeassistant/components/tessie/sensor.py

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

* Fix callback

* Avoid having to test None

* Go back to if

* Use minutes instead of hours

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-22 21:45:08 +01:00
jmwaldrip
d75dd0973f Fix SleepIQ setting FootWarmer timer (#108433)
* Fixing foot warmer timer bug

* Fixing bug where temperature wasnt assigned to number entity causing tests to fail
2024-01-22 21:22:54 +01:00
Joost Lekkerkerker
21009bef02 Add icon translations to Airly (#108404)
* Add icon translations to Airly

* Fix test

* Fix tests
2024-01-22 21:17:04 +01:00
Joost Lekkerkerker
e47ed16980 Use snapshot testing in Airly sensor (#108608)
* Use snapshot testing in Airly sensor

* Apply suggestions from code review

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

* Fix tests

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-22 20:59:24 +01:00
Michael
3d1751bdfa Prevent runtime issue during entity registration in coordinator of AVM Fritz!Tools (#108667)
prevent dictionary changed size during iteration
2024-01-22 14:26:46 -05:00
Franck Nijhof
80207835d7 Move core fundamental components into bootstrap (#105560)
Co-authored-by: Erik <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-22 20:09:48 +01:00
Bruno Pantaleão Gonçalves
31ef034c3f Update iOS configuration adding Action toggles to show in CarPlay and Watch (#108355) 2024-01-22 09:22:08 -08:00
Jan-Philipp Benecke
4d85f78b32 Cleanup Discovergy config flow (#108381)
* Cleanup Discovergy config flow

* Make use of the helper function
2024-01-22 18:20:20 +01:00
Jan-Philipp Benecke
988d72b8b6 Add helper function to update and reload config entry to config flow (#108034)
* Add helper function to update and reload config entry to config flow

* Use async_create_task

* Remove await

* Reload only when update & add task name

* Rename function
2024-01-22 17:40:20 +01:00
Martin Hjelmare
e086cd9fef Add cloud tts entity (#108293)
* Add cloud tts entity

* Test test_login_view_missing_entity

* Fix pipeline iteration for migration

* Update tests

* Make migration more strict

* Fix docstring
2024-01-22 17:24:15 +01:00
Joost Lekkerkerker
d0da457a04 Add device to Lutron (#107467)
* Add typing to Lutron platforms

* Add devices to Lutron

* Add devices to Lutron

* Fix typing

* Fix

* Add name

* Fix lights

* Comment out ESA

* Fix domain

* Fix domain

* Fix

* Make generic keypad base class
2024-01-22 15:52:59 +01:00
jmwaldrip
43daf20be3 Bump asyncsleepiq to 1.5.2 (#108431)
Upgrading asyncsleepiq to version 1.5.2
2024-01-22 15:27:47 +01:00
Erik Montnemery
ef5d46c79c Convert AreaEntry to dataclass (#108648)
* Convert AreaEntry to dataclass

* Correct typing of AreaEntry.id

* Move responsibility for generating area id to AreaRegistry
2024-01-22 14:45:27 +01:00
Simone Chemelli
8c31e67dbc Bump aiovodafone to 0.5.4 (#108592) 2024-01-22 13:51:17 +01:00
Franck Nijhof
516fa64da5 Update Pillow to 10.2.0 (#108422) 2024-01-22 13:43:06 +01:00
Robert Resch
881872fdb4 Add binary_sensor to Ecovacs (#108544) 2024-01-22 13:36:26 +01:00
Marc Mueller
0d8afc72c2 Update python-slugify to 8.0.1 (#108373) 2024-01-22 10:10:02 +01:00
J. Nick Koston
4a34cd25b2 Reduce lock contention when all translations are already cached (#108634) 2024-01-21 22:29:03 -10:00
Joost Lekkerkerker
62fe9144f1 Add icon translations to Adguard (#108406) 2024-01-22 09:10:26 +01:00
Joost Lekkerkerker
9d380cea21 Use default icon in Agent DVR (#108405) 2024-01-22 09:08:01 +01:00
Teemu R
fd1c9237a8 Bump songpal dependency to 0.16.1 (#108637) 2024-01-22 09:07:06 +01:00
Joost Lekkerkerker
ef7e2cfc08 Add icon translations to Abode (#108407) 2024-01-22 09:06:25 +01:00
Jan-Philipp Benecke
09be3ffc29 Add icon translations to WLED (#108604) 2024-01-22 09:04:37 +01:00
Jan-Philipp Benecke
2a24af14ff Remove obsolete services.yaml and translations from WLED (#108605) 2024-01-22 09:03:30 +01:00
Joakim Sørensen
94f1f3e40c Remove numbering from GitHub progress step to not deal with styling of list entries (#108639) 2024-01-22 08:57:48 +01:00
J. Nick Koston
fb62b6f01e Fix unifi test_tracked_clients test (#108638)
Fix unifi test_tracked_clients client

This test relied on the sensor platform getting set up and creating
the device before the device_tracker platform was setup since the
device_tracker platform will disable the entity because there is
not matching device entry for it via

4ee6735cbb/homeassistant/components/device_tracker/config_entry.py (L336)

There is no guarantee the sensor platform will get set up before
the device tracker platform so the test was subject to a race
where it would fail if the device tracker platform was setup first
2024-01-22 08:35:24 +01:00
J. Nick Koston
4ee6735cbb Small cleanup to zone async_active_zone (#108629) 2024-01-21 19:33:05 -10:00
J. Nick Koston
8d4a1f475e Bump habluetooth to 2.3.1 (#108628) 2024-01-21 18:39:17 -10:00
J. Nick Koston
e9a7870080 Small cleanups to async_get_all_descriptions (#108633) 2024-01-21 18:09:33 -10:00
J. Nick Koston
0b3bcca49b Avoid string decode/encode round trip in websocket_api get_services (#108632)
The cache was converting from bytes to str and when we read
the cache we converted it back to bytes again
2024-01-21 22:53:45 -05:00
J. Nick Koston
a3f9fc45e3 Refactor async_listen_once to remove nonlocal (#108627) 2024-01-21 22:52:47 -05:00
J. Nick Koston
740209912c Small performance improvements to handing revoke token callbacks (#108625)
- Use a set to avoid linear search for remove
- Avoid recreating the unregister function each time
2024-01-21 22:49:06 -05:00
J. Nick Koston
3d3f4ac293 Avoid recreating persistent notification update function when subscribing (#108624)
I recently came up with an idea to look for callback functions
that get created over and over frequently by adding logging to
homeassistant.core.callback when its called to decorate
a function. This one happens a lot at runtime.
2024-01-21 22:45:45 -05:00
J. Nick Koston
573de95f21 Speed up run time of admin services by using HassJob (#108623) 2024-01-21 22:41:41 -05:00
J. Nick Koston
dbb5645e63 Significantly reduce websocket api connection auth phase latency (#108564)
* Significantly reduce websocket api connection auth phase latancy

Since the auth phase has exclusive control over the websocket
until ActiveConnection is created, we can bypass the queue and
send messages right away. This reduces the latancy and reconnect
time since we do not have to wait for the background processing
of the queue to send the auth ok message.

* only start the writer queue after auth is successful
2024-01-21 22:33:31 -05:00
Cody C
da1d530889 Update August diagnostics.py to redact contentToken (#108626) 2024-01-21 14:05:10 -10:00
Aaron Godfrey
71e636572f Send recurrence data when updating a task in todoist (#108269)
* Send recurrence data when updating a task in todoist

* Update tests/components/todoist/test_todo.py

Co-authored-by: Allen Porter <allen.porter@gmail.com>

* Move logic into _task_api_data.

* Add comment about sending potentinally stale data.

---------

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2024-01-21 15:09:08 -08:00
Erik Montnemery
e90b42d3d0 Fix FlowHandler show progress (#108586) 2024-01-21 22:40:48 +01:00
David Bonnes
0566ceca0f Tweak evohome code quality (#107596)
* initial commit

* lint

* initial commit
2024-01-21 22:22:04 +01:00
Ståle Storø Hauknes
fbe1f238d4 Bump airthings-ble to 0.6.0 (#108612) 2024-01-21 11:20:07 -10:00
Joost Lekkerkerker
883711fb35 Add icon translations to Withings (#108385)
* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings
2024-01-21 21:34:44 +01:00
J. Nick Koston
e94493f83d Use more shorthand attributes in tplink (#108284)
* Use more shorthand attributes in tplink

* naming

* unused
2024-01-21 21:34:06 +01:00
Jan-Philipp Benecke
4d5a511001 Add icon translations to co2signal (#108611) 2024-01-21 21:23:11 +01:00
Jonas Fors Lellky
702529627e Add missing property in flexit bacnet test (#108606)
Add missing property on mocked device

Also update the snapshot
2024-01-21 20:56:16 +01:00
J. Nick Koston
6525dad57a Add bthome event platform (#108268)
Co-authored-by: Ernst Klamer <e.klamer@gmail.com>
2024-01-21 08:17:55 -10:00
Erik Montnemery
b4ab1bac56 Fix numbered list in github config flow (#108587) 2024-01-21 18:02:31 +01:00
Steven B
9b3d3b3b2d Add authentication to tplink integration for newer devices (#105143)
* Add authentication flows to tplink integration to enable newer device protocol support

* Add websession passing to tplink integration discover methods

* Use SmartDevice.connect()

* Update to use DeviceConfig

* Use credential hashes

* Bump python-kasa to 0.6.0.dev0

* Fix tests and address review comments

* Add autodetection for L530, P110, and L900

This adds mac address prefixes for the devices I have.
The wildcards are left quite lax assuming different series may share the same prefix.

* Bump tplink to 0.6.0.dev1

* Add config flow tests

* Use short_mac if alias is None and try legacy connect on discovery timeout

* Add config_flow tests

* Add init tests

* Migrate to aiohttp

* add some more ouis

* final

* ip change fix

* add fixmes

* fix O(n) searching

* fix O(n) searching

* move code that cannot fail outside of try block

* fix missing reauth_successful string

* add doc strings, cleanups

* error message by password

* dry

* adjust discovery timeout

* integration discovery already formats mac

* tweaks

* cleanups

* cleanups

* Update post review and fix broken tests

* Fix TODOs and FIXMEs in test_config_flow

* Add pragma no cover

* bump, apply suggestions

* remove no cover

* use iden check

* Apply suggestions from code review

* Fix branched test and update integration title

* legacy typing

* Update homeassistant/components/tplink/__init__.py

* lint

* Remove more unused consts

* Update test docstrings

* Add sdb9696 to tplink codeowners

* Update docstring on test for invalid DeviceConfig

* Update test stored credentials test

---------

Co-authored-by: Teemu Rytilahti <tpr@iki.fi>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-21 16:25:12 +01:00
Jan Bouwhuis
c3da51db4e Icon translation for imap mail count sensor (#108576) 2024-01-21 14:57:00 +01:00
Malte Franken
a7c94dda73 Add unique id to geonetnz_volcano sensors (#108556)
add unique id to each sensor
2024-01-21 14:03:28 +01:00
Jan-Philipp Benecke
fcaa2fcf03 Make remaining WLED entities translatable (#108534) 2024-01-21 13:44:32 +01:00
Jan Rieger
48c434da86 Add icon translations to DWD Weather Warnings (#108501) 2024-01-21 13:34:26 +01:00
Jan Rieger
6a197e93aa Add icon translations to Roborock (#108508) 2024-01-21 13:32:56 +01:00
Jan Rieger
969ee5dd9f Add icon translation to Jellyfin (#108559) 2024-01-21 13:30:03 +01:00
Josef Zweck
5c0a67a3d2 Add icon translations for lamarzocco (#108569)
icon translations
2024-01-21 13:26:28 +01:00
Jonas Fors Lellky
ed270f558a Add binary sensors to flexit_bacnet integration (#108571)
* Adds binary sensors to flexit_bacnet integration

* Review comments

* Removes binary sensor for electric heater

Will add switch or service later
2024-01-21 12:35:21 +01:00
Jonas Fors Lellky
7c86ea7e16 Add sensors to the flexit_bacnet integration (#108297)
* Adds sensors to the flexit_bacnet integration

* Add one platform at a time

* Removes commented out code

And restores attributes that are needed

* Review changes

* More review fixes

* Adds translations for the flexit_bacnet sensors

* Review comments

* Adds test for flexit_bacnet sensor

* Refactors the sensor test

* Review comment

* Review comment

* Review comments
2024-01-21 12:04:46 +01:00
J. Nick Koston
d885bf886a Ensure button platform does not restore unavailable state (#108316) 2024-01-21 01:04:13 -10:00
Franck Nijhof
fa485513d5 Ensure icon translations aren't the same as the default (#108568) 2024-01-21 12:02:15 +01:00
J. Nick Koston
ec15b0def2 Always load auth storage at startup (#108543) 2024-01-20 16:16:43 -10:00
Michael
4d46f5ec07 Add icon translations for Pegelonline (#108554)
add icon translations
2024-01-20 20:37:39 -05:00
Florian Kisser
b5bb97c856 Fix zha illuminance measured value mapping (#108547) 2024-01-20 20:37:13 -05:00
J. Nick Koston
3c6e7b188e Remove OrderedDict from auth_store (#108546)
normal dicts keep track of insert order now so this should
no longer be needed
2024-01-20 20:36:43 -05:00
Jan Rieger
a042073d2f Add nut icon translations (#108471) 2024-01-20 15:17:28 -05:00
Jan Rieger
d81682e02a Add sun icon translations (#108462) 2024-01-20 15:16:32 -05:00
Jan Rieger
1d35665107 Change calendar icon based on state (#108451) 2024-01-20 15:04:29 -05:00
Franck Nijhof
8a5071ff82 Add time icon translations (#108458) 2024-01-20 14:42:28 -05:00
Erik Montnemery
88dfe8d33b Remove unused TypeVar from config.py (#108495) 2024-01-20 14:39:12 -05:00
Franck Nijhof
2b90d968b4 Fix hassfest icon schema for service only (#108494) 2024-01-20 14:39:05 -05:00
Franck Nijhof
6374ee9378 Add cover icon translations (#108460)
* Add cover icon translations

* States -> state
2024-01-20 14:38:53 -05:00
Franck Nijhof
1804141b27 Add lawn mower icon translations (#108466) 2024-01-20 14:34:10 -05:00
Franck Nijhof
360ca9de34 Add remote icon translations (#108469) 2024-01-20 14:33:47 -05:00
Franck Nijhof
a06308e6e6 Add stt icon translations (#108474) 2024-01-20 14:33:27 -05:00
Franck Nijhof
222e2c19f3 Add select icon translations (#108472) 2024-01-20 14:33:08 -05:00
Franck Nijhof
942636ffd6 Add todo icon translations (#108477) 2024-01-20 14:32:47 -05:00
Franck Nijhof
74ae79204a Add tts icon translations (#108476) 2024-01-20 14:32:24 -05:00
Ernst Klamer
0042a2fef2 Bump bthome-ble to 3.5.0 (#108475) 2024-01-20 14:31:57 -05:00
Franck Nijhof
70084dcefa Add vacuum icon translations (#108479) 2024-01-20 14:29:31 -05:00
Franck Nijhof
a0d9a1e507 Add valve icon translations (#108480) 2024-01-20 14:28:57 -05:00
Franck Nijhof
bb225e4b38 Add update icon translations (#108481)
* Add update icon translations

* Oops
2024-01-20 14:28:07 -05:00
Franck Nijhof
8a3b9000aa Add wake word icon translations (#108482) 2024-01-20 14:27:32 -05:00
Franck Nijhof
858b380e6b Add media player icon translations (#108486) 2024-01-20 14:22:55 -05:00
Franck Nijhof
06d748cee7 Add weather icon translations (#108488) 2024-01-20 14:21:28 -05:00
Franck Nijhof
408ba4d850 Add water heater icon translations (#108491) 2024-01-20 14:20:48 -05:00
Franck Nijhof
19bf8970d2 Add icon translations to Plugwise (#108498) 2024-01-20 14:15:53 -05:00
Franck Nijhof
e71efa0e2b Add icon translations to HomeWizard Energy (#108506)
* Add icon translations to HomeWizard Energy

* Update snapshots
2024-01-20 14:14:48 -05:00
Joakim Plate
d24636b179 Upgrade nibe to 2.7.0 (#108507) 2024-01-20 14:13:52 -05:00
Matthias Alphart
aa6d058c10 Update knx-frontend to 2024.1.20.105944 (#108511) 2024-01-20 20:12:15 +01:00
Franck Nijhof
0f3fb2eb85 2024.1.5 (#108502) 2024-01-20 19:58:13 +01:00
Franck Nijhof
4c4dc6a086 Pin pandas to 2.1.4 (#108509) 2024-01-20 18:09:33 +01:00
Franck Nijhof
6cf8a3e5d1 Pin pandas to 2.1.4 (#108509) 2024-01-20 18:08:35 +01:00
Jan Rieger
f40c8ce403 Add icon translations to Tankerkoenig (#108499) 2024-01-20 16:18:32 +01:00
Franck Nijhof
6901a80a70 Add siren icon translations (#108473) 2024-01-20 16:12:44 +01:00
Jan-Philipp Benecke
c2820e3cde Use right state class for volume and timestamp sensor in bthome (#107675) 2024-01-20 16:03:46 +01:00
Franck Nijhof
71370f65d5 Bump version to 2024.1.5 2024-01-20 15:51:05 +01:00
Erik Montnemery
ea8fc64dd6 Fix empty files included by !include_dir_named (#108489)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-20 15:50:50 +01:00
Steven Looman
fb700cc847 Bump async-upnp-client to 0.38.1 (#108382) 2024-01-20 15:50:45 +01:00
Erik Montnemery
1cb5bbf865 Fix empty files included by !include_dir_named (#108489)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-20 15:12:32 +01:00
Franck Nijhof
a3619e544e Add fan icon translations (#108461) 2024-01-20 13:29:43 +01:00
Franck Nijhof
16a85ab910 Add geo_location icon translations (#108463) 2024-01-20 13:29:08 +01:00
Franck Nijhof
5afbd34c64 Add humidifier icon translations (#108465) 2024-01-20 13:28:41 +01:00
Franck Nijhof
2c8981e100 Add text icon translations (#108457) 2024-01-20 13:28:23 +01:00
Franck Nijhof
618cfe587a Ensure pre-commit runs hassfest when icons change (#108470) 2024-01-20 13:28:11 +01:00
Franck Nijhof
8c55f8e7f5 Add lock icon translations (#108467) 2024-01-20 13:27:36 +01:00
Franck Nijhof
b2ba808779 Add camera icon translations (#108419)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-20 11:39:13 +01:00
Jan Rieger
8dacb4f9ea Add icon translations to AVM FRITZ!Box Call Monitor (#108417)
* Add icon translations to AVM FRITZ!Box Call Monitor

* Update homeassistant/components/fritzbox_callmonitor/icons.json

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Update homeassistant/components/fritzbox_callmonitor/icons.json

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-20 11:16:56 +01:00
Franck Nijhof
b3017c0f4e Add scene icon translations (#108456) 2024-01-20 11:07:29 +01:00
Franck Nijhof
dbaa02a5a8 Add event icon translations (#108453) 2024-01-20 11:06:41 +01:00
Franck Nijhof
576230da40 Add number icon translations (#108452) 2024-01-20 11:06:29 +01:00
Franck Nijhof
a9723df96c Add image icon translations (#108455) 2024-01-20 11:05:53 +01:00
Franck Nijhof
206e6dfd62 Add sensor icon translations (#108450)
* Add sensor icon translations

* Add missing moisture
2024-01-20 11:05:16 +01:00
Franck Nijhof
5a56cf3922 Add datetime icon translations (#108449) 2024-01-20 11:04:14 +01:00
Franck Nijhof
4f7ce28cb8 Add date icon translations (#108448) 2024-01-20 11:03:57 +01:00
Franck Nijhof
d3bb33bd50 Add climate icon translations (#108418) 2024-01-20 09:10:22 +01:00
Franck Nijhof
4a824284d6 Mark flaky fritz update test as xfail (#108447) 2024-01-20 08:51:23 +01:00
Franck Nijhof
2a58b6e56b Add light icon translations (#108414) 2024-01-20 08:35:49 +01:00
J. Nick Koston
52b5d2e370 Avoid json encoder default fallback when serializing config (#108360)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-19 19:22:17 -10:00
J. Nick Koston
3184d3b168 Bump thermopro-ble to 0.8.0 (#108319) 2024-01-19 17:56:35 -10:00
Franck Nijhof
89570a73a7 Add air_quality icon translations (#108420) 2024-01-19 22:50:11 -05:00
Franck Nijhof
16f6854f64 Update psutil to 5.9.8 (#108421) 2024-01-19 22:09:39 -05:00
Franck Nijhof
0f1cb8fa5c Add calendar icon translations (#108416) 2024-01-19 22:07:14 -05:00
Franck Nijhof
1e32f96b0c Add button icon translations (#108415) 2024-01-19 22:06:15 -05:00
Franck Nijhof
fb17b451c7 Add alarm_control_panel icon translations (#108413)
* Add alarm_control_panel icon translations

* Nest services correctly
2024-01-19 22:05:00 -05:00
Sid
b612fafb9b Use async_create_clientsession for enigma2 (#108395)
Use async_creeate_clientsession for enigma2
2024-01-19 22:04:03 -05:00
Steven Looman
2b389739d3 Bump async-upnp-client to 0.38.1 (#108382) 2024-01-19 16:48:08 -10:00
Joost Lekkerkerker
5d5a2d1381 Add icon translations to Aseko (#108398) 2024-01-19 20:29:52 +01:00
Joost Lekkerkerker
4f998acb78 Add icon translations to Ambient station (#108400) 2024-01-19 20:28:36 +01:00
Franck Nijhof
6e6a5ff52c 2024.1.4 (#108379) 2024-01-19 20:21:12 +01:00
Joost Lekkerkerker
94b39941e2 Add icon translations to Airthings BLE (#108401) 2024-01-19 20:11:19 +01:00
Joost Lekkerkerker
51dca66908 Add icon translations to AsusWRT (#108397) 2024-01-19 20:10:31 +01:00
Joost Lekkerkerker
3a6e640c73 Add icon translations to Airnow (#108403) 2024-01-19 20:09:12 +01:00
Joost Lekkerkerker
2f227677b6 Add icon translations to awair (#108408) 2024-01-19 20:08:34 +01:00
Joost Lekkerkerker
300b4f161c Add icon translations to Aussie Broadband (#108409) 2024-01-19 20:07:20 +01:00
Joost Lekkerkerker
fff1fc8d19 Add icon translations to August (#108396) 2024-01-19 20:07:04 +01:00
Joost Lekkerkerker
4f4f22ba36 Add icon translations to Aurora (#108410) 2024-01-19 20:06:14 +01:00
Joost Lekkerkerker
5a1d447730 Add icon translations to AirQ (#108402) 2024-01-19 20:06:06 +01:00
Joost Lekkerkerker
86f34f8216 Add icon translations to Anova (#108399) 2024-01-19 20:05:56 +01:00
Marc Mueller
4e11001a08 Update boto3 to 1.33.13 and aiobotocore to 2.9.1 (#108384) 2024-01-19 19:39:59 +01:00
Franck Nijhof
43f1c0927f Revert "Add debugging to assist in debugging already configured error (#108134)"
This reverts commit d2feee86b7.
2024-01-19 19:26:37 +01:00
Marc Mueller
7e60979abe Improve tplink_lte typing (#108393) 2024-01-19 19:06:52 +01:00
Marc Mueller
f0077ac27e Update coverage to 7.4.0 (#108370) 2024-01-19 17:09:51 +01:00
Franck Nijhof
01372024f5 Add icon translations support (#103294)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
2024-01-19 16:56:56 +01:00
Robert Resch
ed449a5abd Add support for MQTT based ecovacs vacuums (#108167)
* Add support for MQTT based ecovacs vacuums

* renames

* Add init import test

* bump deebot-client

* Translate continent options

* Apply suggestions from code review

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

* Remove continent

* use ServiceValidationError

* Small refactoring

* Simplify

* Fix tests

* Enable strict typing for ecovacs

* Apply suggestions from code review

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

* Implement suggestions

* improve test_async_setup_import

* Implement suggestions

* Update homeassistant/components/ecovacs/config_flow.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-19 16:52:30 +01:00
Marc Mueller
c1d6f740af Update types packages (#108371) 2024-01-19 16:36:44 +01:00
RJPoelstra
298b0d1105 Add binary sensor to MotionMount integration (#107659)
* Add binary sensor for `isMoving`

* Sort platforms alphabetically

* Update doc strings
2024-01-19 16:01:20 +01:00
Marc Mueller
4a0b6af8c1 Update dwdwfsapi to 1.0.7 (#108377) 2024-01-19 15:56:54 +01:00
Franck Nijhof
916e5de9d1 Bump version to 2024.1.4 2024-01-19 15:44:20 +01:00
puddly
e2a6097141 Bump ZHA dependency zigpy to 0.60.6 (#108266)
Bump zigpy to 0.60.6
2024-01-19 15:43:02 +01:00
Robert Svensson
005af2eb4c Bump aiounifi to v69 to improve websocket logging (#108265) 2024-01-19 15:42:57 +01:00
Erwin Douna
59e12ad0c1 Bump PyTado to 0.17.4 (#108255)
Bump to 17.4
2024-01-19 15:42:54 +01:00
starkillerOG
6ecb562a80 Bump reolink_aio to 0.8.7 (#108248) 2024-01-19 15:42:50 +01:00
starkillerOG
da5d4fe4ae Use cache update for WIFI blinds (#108224) 2024-01-19 15:42:47 +01:00
John Allen
901b7b6278 Send target temp to Shelly TRV in F when needed (#108188) 2024-01-19 15:42:44 +01:00
Allen Porter
d2feee86b7 Add debugging to assist in debugging already configured error (#108134) 2024-01-19 15:42:41 +01:00
cnico
5521ab0b35 Bump flipr-api to 1.5.1 (#108130)
Flipr-api version update for resolution of issue https://github.com/home-assistant/core/issues/105778
2024-01-19 15:42:38 +01:00
Aaron Bach
7fb2a8a3cd Bump aioridwell to 2024.01.0 (#108126) 2024-01-19 15:42:34 +01:00
puddly
304b950f1a Speed up ZHA initialization and improve startup responsiveness (#108103)
* Limit concurrency of startup traffic to allow for interactive usage

* Drop `retryable_req`, we already have request retrying

* Oops, `min` -> `max`

* Add a comment describing why `async_initialize` is not concurrent

* Fix existing unit tests

* Break out fetching mains state into its own function to unit test
2024-01-19 15:41:45 +01:00
Kevin Stillhammer
384b22c777 Expose TimeoutError during google_travel_time config_flow (#108179)
Expose TimeoutError during config_flow
2024-01-19 15:26:26 +01:00
Joost Lekkerkerker
99f9f0205a Use compat for supported features in media player (#108102) 2024-01-19 15:15:09 +01:00
Robert Resch
497d2f5677 Bump Jinja2 to 3.1.3 (#108082) 2024-01-19 15:15:06 +01:00
Marcel van der Veldt
7fee6c5279 Fix turning on the light with a specific color (#108080) 2024-01-19 15:15:03 +01:00
Cody C
70492a80cc Fix malformed user input error on MJPEG config flow (#108058) 2024-01-19 15:14:59 +01:00
Shay Levy
ed31adc6db Fix Shelly Gen1 entity description restore (#108052)
* Fix Shelly Gen1 entity description restore

* Update tests/components/shelly/test_sensor.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-19 15:14:56 +01:00
Brett Adams
9c6f87dd11 Improve coordinator logic in Tessie to allow sleep (#107988)
* Poll status before state

* Tests
2024-01-19 15:14:52 +01:00
G Johansson
507cccdd53 Don't load entities for docker virtual ethernet interfaces in System Monitor (#107966) 2024-01-19 15:14:07 +01:00
puddly
8a3eb149b7 Reload ZHA only a single time when the connection is lost multiple times (#107963)
* Reload only a single time when the connection is lost multiple times

* Ignore when reset task finishes, allow only one reset per `ZHAGateway`
2024-01-19 15:14:04 +01:00
Simone Chemelli
20b88e30f5 Update sleep period for Shelly devices with buggy fw (#107961)
* update sleep period for Shelly devices with buggy fw

* code quality

* update model list

* add test

* Apply review comments

* fix test

* use costant
2024-01-19 15:14:01 +01:00
Arie Catsman
9551ff31ec Bump pyenphase to 1.17.0 (#107950) 2024-01-19 15:13:58 +01:00
G Johansson
488acc3252 Fix duplicate unique id in System Monitor (again) (#107947)
Fix duplicate unique id in System Monitor
2024-01-19 15:13:55 +01:00
G Johansson
80387be061 Skip disk types in System Monitor (#107943)
* Skip disk types in System Monitor

* change back
2024-01-19 15:13:52 +01:00
J. Nick Koston
c0c9fb0f00 Bump aiohomekit to 3.1.3 (#107929)
changelog: https://github.com/Jc2k/aiohomekit/compare/3.1.2...3.1.3

fixes maybe #97888
2024-01-19 15:13:49 +01:00
Sid
e2ef889687 Bump openwebifpy to 4.2.1 (#107894) 2024-01-19 15:13:45 +01:00
Pedro Lamas
5c99c6e823 Fix loading empty yaml files with include_dir_named (#107853) 2024-01-19 15:13:42 +01:00
Arie Catsman
a8be7c27ad Bump Pyenphase to 1.16.0 (#107719) 2024-01-19 15:13:39 +01:00
Paarth Shah
596f19055e Fix MatrixBot not resolving room aliases per-command (#106347) 2024-01-19 15:13:32 +01:00
Franck Nijhof
cdf3c07488 Add icon to entity registry list for display (#108313) 2024-01-19 15:11:27 +01:00
Sid
2e56d7d048 Bump openwebifpy to 4.2.1 (#107894) 2024-01-19 15:10:54 +01:00
J. Nick Koston
4d69515849 Use shorthand attributes for mobile_app sensor platforms (#108353) 2024-01-19 14:41:32 +01:00
Marc Mueller
42154bd684 Improve ifttt typing (#108308) 2024-01-19 13:45:59 +01:00
J. Nick Koston
8c71abe421 Avoid json encoder default fallback for APIComponentsView (#108359) 2024-01-19 13:44:29 +01:00
Marc Mueller
b07b952ae6 Enable strict typing for intent_script (#108367) 2024-01-19 13:37:33 +01:00
Marc Mueller
d7a9b7a4ab Enable strict typing for map (#108368) 2024-01-19 13:36:44 +01:00
Marc Mueller
e785b2f5bb Enable strict typing for my (#108369) 2024-01-19 13:35:12 +01:00
Marc Mueller
c6f1c4f550 Enable strict typing for default_config (#108366) 2024-01-19 13:34:40 +01:00
Marc Mueller
15bd31e8d8 Enable strict typing for api (#108363) 2024-01-19 13:33:20 +01:00
Marc Mueller
7e0e306c1f Enable strict typing for bluetooth_adapters (#108365) 2024-01-19 13:18:05 +01:00
J. Nick Koston
78d7562b41 Avoid json default fallback for area registry (#108358) 2024-01-19 13:16:05 +01:00
Erik Montnemery
3f5f1bc2f6 Fix homekit_controller test (#108375) 2024-01-19 13:05:55 +01:00
J. Nick Koston
6d979d21a6 Bump orjson to 3.9.12 (#108350) 2024-01-19 11:36:48 +01:00
Maikel Punie
4abf286a96 Bump pyDuotecno to 2024.1.2 (#108314) 2024-01-19 11:25:51 +01:00
Bouwe Westerdijk
54f23ff143 Bump plugwise to v0.36.3 (#108347) 2024-01-19 11:23:04 +01:00
Marc Mueller
bc2acb3c0e Improve ffmpeg* typing (#108092) 2024-01-19 08:46:34 +01:00
Marc Mueller
25b7bb4a4f Adjust require_admin decorator typing (#108306)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-18 14:12:14 -10:00
Marc Mueller
a21d5b5858 Improve person typing (#108218) 2024-01-18 14:11:55 -10:00
Marc Mueller
94c8c71ffb Improve august typing (5) (#108332) 2024-01-19 01:09:52 +01:00
Marc Mueller
0206833cfd Improve august typing (4) (#108331) 2024-01-19 00:59:26 +01:00
Marc Mueller
6e8e14fbe2 Improve august typing (3) (#108329) 2024-01-19 00:14:49 +01:00
Kostas Chatzikokolakis
6e8d491dae Add iBeacon UUID allowlist (#104790) 2024-01-18 13:06:11 -10:00
Marc Mueller
7c6fe31505 Improve api typing (#108307) 2024-01-18 12:45:15 -10:00
Steve Easley
a670ac25fd Fix remote control codes for jvc_projector (#108253)
Update dependency to add/fix remote codes
2024-01-18 23:36:57 +01:00
Marc Mueller
72667adeba Improve august typing (2) (#108327) 2024-01-18 23:24:41 +01:00
Marc Mueller
5f08e2a2d1 Improve august typing (1) (#108325) 2024-01-18 23:13:08 +01:00
Robert Resch
edd7feaf10 Add task to install all requirements of an integration (#108262)
* Add task to install the requirements of an integration

* Gather recursive requirements

* Move valid_integration to util

* Apply suggestions from code review

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

* Implement suggestions

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-18 22:11:02 +01:00
J. Nick Koston
c399cab427 Small speed up to checking core state (#107845) 2024-01-18 08:41:32 -10:00
Brett Adams
32b0bf6b4e Improve coordinator logic in Tessie to allow sleep (#107988)
* Poll status before state

* Tests
2024-01-18 17:40:36 +01:00
Erik Montnemery
cdb798bec0 Don't always set first thread dataset as preferred (#108278)
* Don't always set first thread dataset as preferred

* Update tests

* Make clarifying comments clearer

* Call asyncio.wait with return_when=ALL_COMPLETED

* Update otbr test

* Update homeassistant/components/thread/dataset_store.py

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

* Update homeassistant/components/thread/dataset_store.py

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-01-18 16:32:29 +01:00
Jonas Fors Lellky
bfe21b33f0 Add coordinator to Flexit bacnet (#108295)
* Adds coordinator and base entity class

* Patch the coordinator

* Adds device property to base class

And refactors accordingly

* Use const instead of string

* Moves _attr_has_entity_name to base entity

* Argument as positional

* Use device_id from init
2024-01-18 15:45:56 +01:00
Joost Lekkerkerker
c4f033e61c Add test for failed initialization in Flexit BACnet (#108294) 2024-01-18 14:55:44 +01:00
Jonas Fors Lellky
7d5a672ed1 Add tests to flexit_bacnet integration (#108291)
* Add fixture for update method

* Mock flexit_bacnet

* Adds test for climate

* Adds snapshot testing

* Adds test for init, refactor test for config flow
2024-01-18 14:37:43 +01:00
Josef Zweck
65abbe5369 Bump lmcloud to 0.4.35 (#108288)
bump lmcloud
2024-01-18 13:08:24 +01:00
Josef Zweck
83e0a7528d Add diagnostics to La Marzocco (#108240)
* add diagnostics

* make firmware section easier to read
2024-01-18 10:57:41 +01:00
Marc Mueller
3761d13915 Improve daikin typing (#108039) 2024-01-18 09:24:48 +01:00
Marc Mueller
afcb7a26cd Enable strict typing for config (#108023) 2024-01-18 09:20:19 +01:00
J. Nick Koston
26cc6a5bb4 Add state caching to button entities (#108272) 2024-01-18 08:53:55 +01:00
J. Nick Koston
52e90b32df Avoid many replace calls in find_next_time_expression_time (#108273) 2024-01-18 08:44:40 +01:00
J. Nick Koston
b4b041d4bf Small cleanups to the websocket api handler (#108274) 2024-01-18 08:39:49 +01:00
dependabot[bot]
c656024365 Bump github/codeql-action from 3.23.0 to 3.23.1 (#108275) 2024-01-18 08:15:17 +01:00
J. Nick Koston
19258cb3df Fix benign typo in entity registry (#108270) 2024-01-18 07:45:44 +01:00
J. Nick Koston
cfbfdf7949 Fix apple_tv IP Address not being updated from discovery (#107611) 2024-01-17 17:43:14 -10:00
mkmer
2d1c5d84f3 Remove unused variables in honeywell (#108252)
Remove unused configuration keys
2024-01-17 21:37:21 -05:00
mkmer
484584084a Allow multiple config entries in Honeywell (#108263)
* Address popping all entires when unloading

* optimize hass data
2024-01-17 21:35:53 -05:00
starkillerOG
154fe8631a Use cache update for WIFI blinds (#108224) 2024-01-17 21:34:18 -05:00
Robert Svensson
274d501bca Bump aiounifi to v69 to improve websocket logging (#108265) 2024-01-17 21:33:31 -05:00
puddly
867caab70a Speed up ZHA initialization and improve startup responsiveness (#108103)
* Limit concurrency of startup traffic to allow for interactive usage

* Drop `retryable_req`, we already have request retrying

* Oops, `min` -> `max`

* Add a comment describing why `async_initialize` is not concurrent

* Fix existing unit tests

* Break out fetching mains state into its own function to unit test
2024-01-17 18:36:28 -05:00
puddly
3ae858e3bf Bump ZHA dependency zigpy to 0.60.6 (#108266)
Bump zigpy to 0.60.6
2024-01-17 18:34:10 -05:00
Jan Bouwhuis
f704a1a05a Remove legacy VacuumEntity base class support (#108189) 2024-01-17 23:19:49 +01:00
starkillerOG
a27eea9b9f Bump reolink_aio to 0.8.7 (#108248) 2024-01-17 16:28:15 -05:00
Joakim Plate
c827bba780 Let zigpy decide on default manufacturer id (#108257)
* zha: let cluster set default manufacturer id

* zha: allow forcing manufacturer id off
2024-01-17 15:42:20 -05:00
John Allen
a385ca93bd Send target temp to Shelly TRV in F when needed (#108188) 2024-01-17 22:06:11 +02:00
Erwin Douna
97956702c9 Bump PyTado to 0.17.4 (#108255)
Bump to 17.4
2024-01-17 20:54:13 +01:00
Cyrill Raccaud
802f0da493 Switch for swiss_public_transport to unique_id instead of unique_entry (#107910)
* use unique_id instead of unique_entry

* move entry mock out of patch context
2024-01-17 19:08:33 +01:00
Marc Mueller
3d410a1d6e Improve systemmonitor generic typing (#108220) 2024-01-17 18:19:10 +01:00
Josef Zweck
64496b802a Fix state after La Marzocco update (#108244)
request a refresh from coordinator after update
2024-01-17 17:26:15 +01:00
Martin Hjelmare
9d5f714e29 Decrease fitbit logging verbosity on connection error (#108228)
* Add test for connection error

* Decrease fitbit connection error log verbosity
2024-01-17 07:07:02 -08:00
Jan Bouwhuis
c47fb5d161 Remove deprecated redundant dry and fan modes from zwave_js climates (#108124)
Remove deprecated redundant dry and fan modes from zwave_js climates
2024-01-17 15:55:46 +01:00
Erik Montnemery
91815ed5f9 Assert default response from conversation trigger (#108231) 2024-01-17 15:47:06 +01:00
Josef Zweck
90f4900f2c Add button platform to La Marzocco (#108236)
* add button

* Update homeassistant/components/lamarzocco/button.py

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

* Update homeassistant/components/lamarzocco/strings.json

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

* update snapshot

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-17 15:20:24 +01:00
Josef Zweck
ee44e9d4d6 Add update platform to La Marzocco (#108235)
* add update

* requested changes

* improve

* docstring

* docstring
2024-01-17 14:49:08 +01:00
Franck Nijhof
3eb1283fa5 Disable Python 3.12 incompatible integrations (#108163) 2024-01-17 14:47:03 +01:00
J. Nick Koston
15384f4661 Remove unused entity_sources argument from shared_attrs_bytes_from_event (#108210) 2024-01-17 08:45:04 -05:00
Josef Zweck
2cd828b2d0 Add number platform to La Marzocco (#108229)
* add number

* remove key entities

* remove key numbers

* rename entities

* rename sensors
2024-01-17 14:15:48 +01:00
Josef Zweck
74d53a4231 Add select platform to La Marzocco integration (#108222)
* add select

* change check, icons

* fix docstrings, use []
2024-01-17 13:21:33 +01:00
Marc Mueller
1b2a4d2bf3 Improve aurora typing (#108217) 2024-01-17 12:11:34 +01:00
G Johansson
bdda38f274 Allow selecting camera in Trafikverket Camera (#105927)
* Allow selecting camera in Trafikverket Camera

* Final config flow

* Add tests

* Fix load_int

* naming
2024-01-17 11:54:13 +01:00
Josef Zweck
e811cf1ae8 Add binary sensor platforms to La Marzocco (#108212)
* add sensor

* remove switch

* requested changes

* property instead of function

* add missing snapshot

* rename var, fixture

* add binary sensors

* reorder strings

* rename sensor

* switch to supported_fn
2024-01-17 11:42:22 +01:00
Josef Zweck
a25653e167 Change the way an entity is supported in La Marzocco (#108216)
* refactor supported

* refactor supported
2024-01-17 11:07:43 +01:00
Christophe Gagnier
44f2b8e6a3 Implement TechnoVE integration (#106029)
* Implement TechnoVE integration

Only the basic sensors for now.

* Add technoVE to strict typing

* Implement TechnoVE PR suggestions

* Remove Diagnostic from TechnoVE initial PR

* Switch status sensor to Enum device class

* Revert zeroconf for adding it back in subsequent PR

* Implement changes from feedback in TechnoVE PR

* Update homeassistant/components/technove/models.py

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

* Update homeassistant/components/technove/sensor.py

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

* Update homeassistant/components/technove/models.py

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

* Remove unnecessary translation keys

* Fix existing technoVE tests

* Use snapshot testing for TechnoVE sensors

* Improve unit tests for TechnoVE

* Add missing coverage for technoVE config flow

* Add TechnoVE coordinator tests

* Modify device_fixture for TechnoVE from PR Feedback

* Change CONF_IP_ADDRESS to CONF_HOST for TechnoVE

* Update homeassistant/components/technove/config_flow.py

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

* Update homeassistant/components/technove/models.py

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

* Update homeassistant/components/technove/models.py

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

* Implement feedback from TechnoVE PR

* Add test_sensor_update_failure to TechnoVE sensor tests

* Add test for error recovery during config flow of TechnoVE

* Remove test_coordinator.py from TechnoVE

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-17 11:04:35 +01:00
Josef Zweck
a8b67d5a0a Add sensor platform to La Marzocco integration (#108157)
* add sensor

* remove switch

* requested changes

* property instead of function

* add missing snapshot

* rename var, fixture
2024-01-17 09:12:49 +01:00
Brett Adams
3a26bc3ee0 Fix translation keys in Tessie (#108203) 2024-01-17 08:25:25 +01:00
dependabot[bot]
db9312cf9c Bump actions/cache from 3.3.3 to 4.0.0 (#108209)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-17 08:23:35 +01:00
G Johansson
d4f9ad9dd3 Create update coordinator for Systemmonitor (#106693) 2024-01-16 15:07:55 -10:00
Aaron Bach
d5c1049bfe Remove unnecessary RainMachine entity description mixins (#108190) 2024-01-16 15:04:32 -10:00
Aaron Bach
9bbf098901 Remove unnecessary Ambient PWS entity description mixins (#108191) 2024-01-16 15:01:07 -10:00
Aaron Bach
e553cf2241 Remove unnecessary AirVisual Pro entity description mixins (#108192) 2024-01-16 15:00:55 -10:00
Aaron Bach
70aff728fd Remove unnecessary Notion entity description mixins (#108194) 2024-01-16 15:00:45 -10:00
Aaron Bach
0a9ec1a351 Remove unnecessary PurpleAir entity description mixins (#108196) 2024-01-16 15:00:26 -10:00
Aaron Bach
cc9b874be3 Remove unnecessary SimpliSafe entity description mixins (#108197) 2024-01-16 15:00:14 -10:00
Aaron Bach
858004628e Remove unnecessary OpenUV entity description mixins (#108195) 2024-01-16 15:00:00 -10:00
Jan-Philipp Benecke
10014838ef Dynamically map state class, device class and UoM in ZHA smart energy metering sensor (#107685)
* Dynamically map state class, device class and UoM in ZHA smart energy metering sensor

* Fix some state & device classes and add scaling

* Fix added imperial gallons tests

* Use entity description instead of custom class & add one entity to tests

* Apply code review suggestion

* Scale only when needed

* Revert "Scale only when needed"

This reverts commit a9e0403402.

* Avoid second lookup of entity description

* Change test to not mix sensor types
2024-01-17 00:40:00 +01:00
Aaron Bach
f0a63f7189 Move Guardian coordinator to suggested location (#108182)
* Move Guardian coordinator to suggested location

* Fix coverage
2024-01-16 15:38:20 -07:00
Marc Mueller
bee53f6004 Add decorator typing [yeelight] (#107598) 2024-01-16 23:18:30 +01:00
Aaron Bach
25f4fe4a85 Bump aiokafka to 0.10.0 (#108165) 2024-01-16 23:16:31 +01:00
J. Nick Koston
d82abd93fb Bump dbus-fast to 2.21.1 (#108176) 2024-01-16 23:15:19 +01:00
Cyrille
030b1bc0e8 Upgrade python-mpd2 to v3.1.1 (#108143) 2024-01-16 23:01:01 +01:00
Klaas Schoute
0f185a9a09 Set minimal value for modules power - Forecast.solar (#108166) 2024-01-16 22:46:00 +01:00
Michael Hansen
db81f4d046 Wyoming satellite ping and bugfix for local wake word (#108164)
* Refactor with ping

* Fix tests

* Increase test coverage
2024-01-16 15:43:30 -06:00
G Johansson
7dffc9f515 Remove config import from netatmo (#107972)
* Remove config import from netatmo

* Fix tests
2024-01-16 22:17:18 +01:00
Franck Nijhof
0a758882e1 Deprecate Python 3.11 (#108160) 2024-01-16 22:07:22 +01:00
G Johansson
0ba0f57439 Add entity name translations to System Monitor (#107952) 2024-01-16 21:39:03 +01:00
J. Nick Koston
60ab360fe7 Avoid bytes to string to bytes conversion in websocket api (#108139) 2024-01-16 21:37:34 +01:00
G Johansson
ad35113e86 Remove config import in Neato (#107967)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 21:08:05 +01:00
Joost Lekkerkerker
bc9a85405e Delete removed channel devices in Youtube (#107907) 2024-01-16 21:06:58 +01:00
J. Nick Koston
6173bfe873 Cache commonly called Integration manifest properties (#108141) 2024-01-16 21:05:44 +01:00
Luke Lashley
fa5af8f187 Add Translation for Roborock exceptions (#105427)
* add translations to exceptions

* Make errors more user understandable

* make command not ternary operator

* removed non-user facing exceptions

* Add user facing exceptions and code coverage

* add match

* fix linting

* Apply suggestions from code review

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-16 21:00:20 +01:00
G Johansson
639f06843b Remove config import from surepetcare (#107971)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 20:57:23 +01:00
Galorhallen
ddaf194f91 Add Govee local light integration (#106697)
* Added govee_local_api

* Code cleanup

* Fix discovery

* Add missing supported device

* Fix autodiscovery

* Add missing quality scale in manifest.json

* QA

* QA: Moved coordinator creation to __init__.py

* QA

* Fix typo and update test

* QA

* Removed unecessary code

* Fix typo

* Fix typo

* QA, typing and strings

* Removed unsed logger in __init__.py

* QA, using ColorMode for lights capabilities

* Bump govee_local_api to 1.4.0

Moved capabilities to library.

* Update requirements

* Update library to 1.4.1 with unsupported dvice warning

* Fix tests after library update

* QA

* Add test for retry config

* Update integration name and domain

* Update homeassistant/components/govee_light_local/light.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-16 20:00:29 +01:00
Josef Zweck
95ed1ada50 Add late PR improvements to La Marzocco (#108162)
* add Martin's suggestions

* use password description

* fix for reauth + test

* fix invalid_auth test

* Update homeassistant/components/lamarzocco/config_flow.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-16 19:35:50 +01:00
Allen Porter
b24222bd1d Add debugging to assist in debugging already configured error (#108134) 2024-01-16 17:05:35 +01:00
Sebastian Lövdahl
d0f4780300 Bump vallox_websocket_api to 4.0.3 (#108109) 2024-01-16 17:04:44 +01:00
Jan Bouwhuis
3ff74fe20f Refactor demo vacuum's to only use StateVacuum base class and features (#108150)
* Demo cleanup

* Refactor vacuum demo to only use state vacuum base class

* Remove unneeded feature checks

* Remove exclusion issue for mqtt an demo
2024-01-16 16:44:12 +01:00
Josef Zweck
6bc36666b1 Add integration lamarzocco (#102291)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: tronikos <tronikos@users.noreply.github.com>
Co-authored-by: Luke Lashley <conway220@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: dupondje <jean-louis@dupond.be>
2024-01-16 15:24:16 +01:00
Bouwe Westerdijk
a874895a81 Add gateway_mode Select to Plugwise (#108019) 2024-01-16 14:35:09 +01:00
J. Nick Koston
3d595fff13 Avoid duplicate timestamp conversions for websocket api and recorder (#108144)
* Avoid duplicate timestamp conversions for websocket api and recorder

We convert the time from datetime to timestamps one per
open websocket connection and the recorder for every
state update. Only do the conversion once since its
~30% of the cost of building the state diff

* more

* two more

* two more in live history
2024-01-16 14:05:01 +01:00
Jan Bouwhuis
26058bf922 Add serial_number attribute to MQTT device properties (#108105) 2024-01-16 14:02:34 +01:00
David Bonnes
7deebf8817 Handle renaming of evohome zones (#108089) 2024-01-16 13:45:24 +01:00
max2697
d4739cfa5c Bump opower to 0.2.0 (#108067) 2024-01-16 13:43:19 +01:00
DellanX
04bc8e09a5 Default tuya climate temperature unit to system unit (#108050) 2024-01-16 13:40:11 +01:00
Joakim Plate
523352c97e Avoid keeping config dir in path (#107760) 2024-01-16 13:38:47 +01:00
Robert Resch
7fe6fc987b Add config flow for Ecovacs (#108111)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-16 13:31:42 +01:00
Jan Bouwhuis
3e72c346b7 Remove MELCloud YAML import support (#108113) 2024-01-16 13:29:26 +01:00
G Johansson
fa2f9eac1a Remove config import in meteo_france (#107970)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 13:27:49 +01:00
Jan Bouwhuis
b46d0fb07c Remove YAML import support for plum_lightpad (#108114) 2024-01-16 13:13:33 +01:00
Aaron Bach
ef7ebcffd6 Bump aioridwell to 2024.01.0 (#108126) 2024-01-16 13:10:09 +01:00
J. Nick Koston
549ff6ddc6 Enable compression on frontend index page (#108148) 2024-01-16 13:06:21 +01:00
Willem-Jan van Rootselaar
09234ca3af Update python-bsblan version to 0.5.18 (#108145) 2024-01-16 13:05:58 +01:00
G Johansson
ef49e8a82f Bump holidays to 0.41 (#108132) 2024-01-16 12:13:41 +01:00
Michael
7942e9e3fe bump pyfritzhome to 0.6.10 (#108128) 2024-01-16 11:10:03 +01:00
Pedro Lamas
6cab4486f7 Fix loading empty yaml files with include_dir_named (#107853) 2024-01-16 10:23:04 +01:00
Paarth Shah
5afe155cd9 Fix MatrixBot not resolving room aliases per-command (#106347) 2024-01-16 10:07:51 +01:00
Jan-Philipp Benecke
28281523ec Add pylint plugin to check for sorted platforms list (#108115) 2024-01-16 09:47:53 +01:00
Erik Montnemery
fb24e086b2 Hide FlowResultType.SHOW_PROGRESS_DONE from frontend (#107799)
* Hide FlowResultType.SHOW_PROGRESS_DONE from frontend

* Update tests
2024-01-16 09:04:27 +01:00
Jan-Philipp Benecke
af6ad6be41 Remove deprecated vacuum services from tuya (#107896) 2024-01-16 08:51:57 +01:00
cnico
562798f037 Bump flipr-api to 1.5.1 (#108130)
Flipr-api version update for resolution of issue https://github.com/home-assistant/core/issues/105778
2024-01-16 06:56:54 +01:00
Leendert Gravendeel
5011a25ea6 Add Epion integration (#107570)
* Adding initial Epion Air integration logic

* Skipping sensors with missing data

* Patching Epion integration

* Adding additional Epion measurement types

* Cleaning up logging

* Cleaning up code

* Fixing error handling for invalid Epion keys

* Adding tests and improving error handling

* Patching Epion tests

* Cleaning up Epion integration code

* Bumping Epion package and including missing files

* Moving data updates to coordinator and addressing feedback

* Improve exception handling

* Exposing model name and firmware version

* Cleaning up code according to review

* Cleaning up code according to review

* Adding check to prevent duplicate account setup

* Refactoring tests and checking for duplicates

* Cleaning up test code according to review

* Cleaning up test code

* Removing entity name overrides

* Fix code format for tests

* Adding missing newlines in JSON files

* Fixing formatting

* Updating device method to always return a device

* Updating coordinator
2024-01-16 06:39:50 +01:00
Marc Mueller
e8b962ea89 Improve risco typing (#108041) 2024-01-15 23:32:58 +01:00
Marc Mueller
369ed5b701 Improve typing for the generic integration (#108094) 2024-01-15 23:11:46 +01:00
Marc Mueller
f28f2e4ed4 Improve google_translate typing (#108093) 2024-01-15 23:11:03 +01:00
Marc Mueller
c2dec8f84f Improve electric_kiwi generic typing (#108084) 2024-01-15 23:09:09 +01:00
Joost Lekkerkerker
b9e532cbb3 Use compat for supported features in media player (#108102) 2024-01-15 20:33:30 +01:00
Jan Bouwhuis
1a4d1907c9 Make ATTR_SERIAL_NUMBER a generic homeassistant constant (#108106) 2024-01-15 20:33:15 +01:00
Shay Levy
28e18ce7bf Fix Shelly Gen1 entity description restore (#108052)
* Fix Shelly Gen1 entity description restore

* Update tests/components/shelly/test_sensor.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-15 20:53:56 +02:00
G Johansson
3bc20a072a Fix test_sensor_process_fails test in System Monitor (#108110) 2024-01-15 19:46:28 +01:00
G Johansson
5b3e1306f8 Add tests for System Monitor (#107891)
* Add tests

* no coordinator

* Coverage

* processes

* test init

* util

* test icon

* Add tests

* Mod tests

* Add tests

* Test attributes

* snapshots

* icon

* test disk mounts

* fixes

* svmem

* cache_clear

* test icon

* reset icon test

* test_processor_temperature

* fix tests on macos

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-15 18:26:49 +01:00
G Johansson
749ef45727 Add availability to command_line (#105300)
* Add availability to command_line

* Add tests

* freezer
2024-01-15 18:20:34 +01:00
Marc Mueller
6a9fdaae7a Enable strict typing for onboarding (#108097) 2024-01-15 16:53:24 +01:00
Grant
5dde45e01f Fix comment for SmartThings fan capability (#108086)
* Fix the fan to support preset modes

* Add more tests and fix some comments

* Don't override inherited member

* Don't check for supported feature as the check is already performed before here

* Do not check for feature on properties

* Update homeassistant/components/smartthings/fan.py

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

* Fix tests

* Fix comment

* Break line

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-15 13:53:16 +01:00
Robert Resch
ede6e01808 Bump Jinja2 to 3.1.3 (#108082) 2024-01-15 12:10:17 +01:00
David Bonnes
7f619579fa Harden zone schedule processing for evohome (#108079) 2024-01-15 11:24:55 +01:00
Marc Mueller
4d7186b6e6 Improve ffmpeg and freebox typing (#108026) 2024-01-15 11:23:26 +01:00
Jan-Philipp Benecke
bd37d3776b Set webhook local_only to True by default (#107670) 2024-01-15 11:09:40 +01:00
Marcel van der Veldt
52acc4bbab Fix turning on the light with a specific color (#108080) 2024-01-15 11:08:38 +01:00
Cody C
5cc1a761dd Fix malformed user input error on MJPEG config flow (#108058) 2024-01-15 09:41:44 +01:00
David Bonnes
dd2527db5b Bump evohome client to 0.4.17 (#108051) 2024-01-15 09:40:01 +01:00
Erik Montnemery
c3e8e931e6 Deprecate passing step_id to FlowHandler methods (#107944) 2024-01-15 09:37:57 +01:00
Marc Mueller
f968b43f6a Improve gdacs typing (#108040) 2024-01-15 09:32:30 +01:00
Marc Mueller
84038fb119 Enable strict typing for generic_thermostat (#108024) 2024-01-15 09:19:50 +01:00
Michael
9bca09a513 Remove obsolete .txt extension from diagnostics download (#108028) 2024-01-15 09:17:05 +01:00
Erik Montnemery
aa3e172a65 Bump pychromecast to 13.1.0 (#108073) 2024-01-15 09:10:09 +01:00
Marc Mueller
16f110658c Enable strict typing for duckdns (#108022) 2024-01-15 09:09:57 +01:00
Marc Mueller
5bde007048 Enable strict typing for prometheus (#108025) 2024-01-15 09:07:12 +01:00
Jan Bouwhuis
45acd56861 Remove YAML auth setup support from home_connect (#108072) 2024-01-15 09:00:59 +01:00
Keilin Bickar
9d47e1983e Update asyncsleepiq to 1.4.2 (#108054) 2024-01-14 20:55:02 -10:00
Ståle Storø Hauknes
76a1e97947 Update framework for Airthings cloud (#107653)
* Upgrade framework

* Improve code for model name
2024-01-14 21:22:27 +01:00
J. Nick Koston
b47861d973 Update shelly bluetooth scanner to version 2.0 (#107917) 2024-01-14 09:44:42 -10:00
jjlawren
c4fd45ef97 Bump SoCo to 0.30.2 (#108033) 2024-01-14 14:19:36 -05:00
Erik Montnemery
00165fef5b Improve the test class used for testing FlowManager.async_show_progress (#107786)
* Improve the test class used for testing FlowManager.async_show_progress

* Address review comments
2024-01-14 18:39:45 +01:00
G Johansson
7a6dca0987 Sensibo include mac in diagnostics redact filter (#107986)
* Add mac to redaction in Sensibo diagnostics

* Add full snapshot

* use constant
2024-01-14 15:34:14 +01:00
wittypluck
d94421e1a4 Reset UniFi bandwidth sensor when client misses heartbeat (#104522)
* Reset UniFi bandwidth sensor when client misses heartbeat

* Fix initialization sequence

* Code simplification: remove heartbeat_timedelta, unique_id and tracker logic

* Add unit tests

* Remove unused _is_connected attribute

* Remove redundant async_initiate_state

* Make is_connected_fn optional, heartbeat detection will only happen if not None

* Add checks on is_connected_fn
2024-01-14 15:19:43 +01:00
J. Nick Koston
1cdfb06d77 Add cached_property to State.name (#108011) 2024-01-14 11:50:40 +01:00
Jan-Philipp Benecke
7c848d78ab Remove deprecated services from Litterrobot (#107882) 2024-01-14 11:50:12 +01:00
Tobias Sauerwein
f808c2ff14 Add Netatmo fan platform (#107989)
* Add fan platform

to support NLLF centralized ventilation devices

* Update tests/components/netatmo/test_fan.py

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

* Update tests/components/netatmo/test_fan.py

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

* Update tests/components/netatmo/test_fan.py

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

* Update tests/components/netatmo/test_fan.py

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

* add snapshots

* update snapshot

* fix docstring

* address comment

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-14 11:47:20 +01:00
Franck Nijhof
acbc2350d0 Update sentry-sdk to 1.39.2 (#108010) 2024-01-14 11:45:31 +01:00
Numa Perez
5d8bf86279 Fix lyric TCC set temperature when in Auto mode (#106853) 2024-01-14 11:29:03 +01:00
Numa Perez
75ba879c34 Fix autoChangeoverActive for lyric LCC devices (#106925) 2024-01-14 11:27:48 +01:00
Bouwe Westerdijk
b034d6d0a1 Bump plugwise to v0.36.2 (#108012) 2024-01-14 11:25:45 +01:00
Tobias Sauerwein
10d5382ae6 Dynamically adjust Netatmo polling frequency (#106742) 2024-01-14 11:22:02 +01:00
Joost Lekkerkerker
965499dd90 Add entity translations to Glances (#107189) 2024-01-14 11:12:30 +01:00
Erik Montnemery
5e79cd8715 Remove file/line annotations after config has been validated (#107139) 2024-01-14 11:07:39 +01:00
Erik Montnemery
7fc3f8e473 Improve calls to async_show_progress in octoprint (#107792) 2024-01-14 11:06:35 +01:00
Erik Montnemery
1c9764bc44 Improve calls to async_show_progress in snooz (#107793) 2024-01-14 11:00:10 +01:00
mkmer
e12dcfc1b4 Fix wifi sensor units in Blink (#107539) 2024-01-14 10:59:04 +01:00
Franck Nijhof
51cdb4ce36 Update pipdeptree to 2.13.2 (#108009) 2024-01-14 10:58:17 +01:00
J. Nick Koston
99b6c7d25f Refactor async_track_utc_time_change to avoid using nonlocal (#108007) 2024-01-14 10:57:54 +01:00
Erik Montnemery
3895defff9 Improve calls to async_show_progress in homeassistant_hardware (#107789) 2024-01-14 10:41:44 +01:00
Sam Reed
bca629ed31 Drop facebox integration (#107005) 2024-01-14 10:40:05 +01:00
Jan-Philipp Benecke
c86b45b454 Remove deprecated vacuum service from roborock (#107895) 2024-01-14 09:57:17 +01:00
Marc Mueller
01204356fa Enable strict typing for timer (#107915) 2024-01-14 09:40:14 +01:00
Marc Mueller
ec708811d0 Enable strict typing for trace (#107945) 2024-01-14 09:39:22 +01:00
Marc Mueller
88d7fc87c9 Enable strict typing for shopping_list (#107913) 2024-01-14 09:38:53 +01:00
Erik Montnemery
d4cb055d75 Improve calls to async_show_progress in improv_ble (#107790) 2024-01-14 09:37:54 +01:00
J. Nick Koston
93d363ea57 Improve apple_tv typing (#107694) 2024-01-14 09:37:04 +01:00
Jan Bouwhuis
4b8d8baa69 Remove deprecated YAML import from generic camera (#107992) 2024-01-14 09:36:00 +01:00
Jan Bouwhuis
f48d057307 Remove YAML support from gdacs (#107962) 2024-01-14 09:03:00 +01:00
Brett Adams
8b4d99f7d2 Add route sensors to Tessie (#106530)
* keys may be missing at startup

* Add route sensors and tracker location

* Fix keys and add translation

* Allow a sensor to have no value

* Move attribute to sensor

* Remove state attribute string
2024-01-14 08:08:54 +01:00
J. Nick Koston
07810926d0 Update habluetooth to 2.2.0 (#108000)
* Update habluetooth to 2.2.0

* fixes

* lib
2024-01-13 23:50:47 -05:00
J. Nick Koston
da9fc77333 Save the HassJob type in wemo discovery to avoid checking it each time (#107998) 2024-01-13 23:50:21 -05:00
J. Nick Koston
8d3f693907 Avoid useless time fetch in DataUpdateCoordinator (#107999)
* Avoid useless time fetch in DataUpdateCoordinator

Since we used the async_call_at helper, it would always call dt_util.utcnow()
to feed the _handle_refresh_interval which threw it away. This meant we had
to fetch time twice as much as needed for each update

* tweak

* compat

* adjust comment
2024-01-13 23:40:07 -05:00
J. Nick Koston
9033f1f3e8 Break long lines in powerwall integration (#108002) 2024-01-14 04:22:17 +01:00
J. Nick Koston
659ee51914 Refactor event time trackers to avoid using nonlocal (#107997) 2024-01-13 17:17:55 -10:00
J. Nick Koston
e7c25d1c36 Migrate powerwall unique ids to use the gateway din (#107509) 2024-01-13 16:17:37 -10:00
J. Nick Koston
e4a15354f4 Fix logger creating many thread locks when reloading the integrations page (#93768)
* Fix logger creating many thread locks

We call getLogger for each integration to get the current
log level when loading the integrations page. This creates
a storm of threading locks

* fixes
2024-01-13 21:11:34 -05:00
J. Nick Koston
d8564eba17 Bump lxml to 5.1.0 (#106696)
* Bump lxml to 5.0.0

cython 3.0.7+ is required ?

* bump

* Apply suggestions from code review

* 5.1.0
2024-01-13 21:08:42 -05:00
J. Nick Koston
454c62b5b4 Avoid total_seconds conversion every state write when context is set (#107617) 2024-01-13 21:04:32 -05:00
J. Nick Koston
bc2738c3a1 Avoid entity registry check in live logbook on each state update (#107622)
Avoid entity registry fetch in live logbook

There is no need to check the entity registry for the
state class since we already have the state
2024-01-13 21:04:04 -05:00
J. Nick Koston
f1228a1cfb Add H5106 support to govee-ble (#107781)
* Bump govee-ble to 0.27.0

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.26.0...v0.27.0

note: H5106 is partially supported, full support will be added in another PR + docs

* .1

* Add Govee H5106 support

* 0.27.2

* commit the tests
2024-01-13 21:02:38 -05:00
J. Nick Koston
9c82df4b98 Fix duplicate config entry additions in tests (#107984)
zha and plex still add the same config entry multiple times
but they are going to need seperate PRs as they have more
complex logic
2024-01-13 21:01:18 -05:00
Marc Mueller
3c1e2e17a0 Use prometheus_client module directly (#107918) 2024-01-14 02:56:22 +01:00
Dorian Benech
2584de6324 Add TICMeter Energy Metering sensors (#107956) 2024-01-13 16:53:53 -05:00
Simone Chemelli
ef8d394c16 Update sleep period for Shelly devices with buggy fw (#107961)
* update sleep period for Shelly devices with buggy fw

* code quality

* update model list

* add test

* Apply review comments

* fix test

* use costant
2024-01-13 22:33:02 +01:00
puddly
b0adaece25 Reload ZHA only a single time when the connection is lost multiple times (#107963)
* Reload only a single time when the connection is lost multiple times

* Ignore when reset task finishes, allow only one reset per `ZHAGateway`
2024-01-13 16:32:25 -05:00
J. Nick Koston
6ada825805 Use faster is_admin check for websocket state and event subscriptions (#107621) 2024-01-13 10:42:41 -10:00
Marc Mueller
5e79a0e583 Enable strict typing for search (#107912) 2024-01-13 10:40:50 -10:00
J. Nick Koston
3649cb96de Refactor config entry storage and index (#107590) 2024-01-13 10:34:15 -10:00
J. Nick Koston
2c6aa80bc7 Use more shorthand attributes in ESPHome fans (#107923) 2024-01-13 15:28:43 -05:00
J. Nick Koston
5a198e05ad Small cleanups to ESPHome (#107924)
- Remove unused variables
- Remove unneeded static info lookups
2024-01-13 15:27:58 -05:00
J. Nick Koston
b1d0c6a4f1 Refactor User attribute caching to be safer and more efficient (#96723)
* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* modernize

* coverage

* coverage

* verify caching

* verify caching

* fix type

* fix mocking
2024-01-13 15:10:50 -05:00
J. Nick Koston
d7910841ef Add an index for devices and config entries to the entity registry (#107516)
* Add an index for devices and config entries to the entity registry

* fixes

* tweak

* use a list for now since the tests check order
2024-01-13 14:49:41 -05:00
G Johansson
5d3e069655 Don't load entities for docker virtual ethernet interfaces in System Monitor (#107966) 2024-01-13 20:39:34 +01:00
J. Nick Koston
852a73267f Fix atag test mutating config entry after its adding to hass (#107603) 2024-01-13 20:34:49 +01:00
Marc Mueller
9221f5da10 Enable strict typing for webhook (#107946) 2024-01-13 09:08:26 -10:00
Antoni Czaplicki
ca421d4f86 Add support for Uonet+ Vulcan integration on Python 3.12 (#107959)
* Bump vulcan-api to 2.3.2

* Enable vulcan integration on Python 3.12

* Stop skipping tests for vulcan integration on Python 3.12
2024-01-13 19:58:02 +01:00
Daniel Gangl
d5c3c19d12 Bump zamg to 0.3.5 (#107939) 2024-01-13 19:53:28 +01:00
J. Nick Koston
1cf96a6558 Remove useless _update function in ESPHome (#107927)
This function is never overwritten so we can remove it
2024-01-13 19:39:27 +01:00
Brett Adams
6cbf1da76a Add charge cable lock to Tessie (#107212)
* Add cable lock

* Translate exception

* Use ServiceValidationError
2024-01-13 19:03:10 +01:00
J. Nick Koston
7db8a52c23 Bump aiohomekit to 3.1.3 (#107929)
changelog: https://github.com/Jc2k/aiohomekit/compare/3.1.2...3.1.3

fixes maybe #97888
2024-01-13 18:27:52 +01:00
Michael Arthur
b1a246b817 Add account sensors to electric kiwi integration (#97681)
* add account sensors

* tidy up same issues as other sensors

* add unit tests for sensors

edit and remove comments

assert state and remove HOP sensor types since they aren't being used

* try and fix tests

* add frozen true

* Update tests/components/electric_kiwi/test_sensor.py

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

* return proper native types

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

* tidy up attr unique id

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

* add entities once and use native values properly

* Improve conftest

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

* tidy tests/components/electric_kiwi/test_sensor.py

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

* add assert to component_setup

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

* add extra parameters to test

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

* Update tests/components/electric_kiwi/test_sensor.py

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

* Update tests/components/electric_kiwi/test_sensor.py

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

* change coordinator name

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

* tidy up sensor translation names

* Apply suggestions from code review

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-13 18:12:40 +01:00
Grant
8395d84bbb Add fan mode support to SmartThings fan entity (#106794)
* Fix the fan to support preset modes

* Add more tests and fix some comments

* Don't override inherited member

* Don't check for supported feature as the check is already performed before here

* Do not check for feature on properties

* Update homeassistant/components/smartthings/fan.py

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

* Fix tests

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-13 17:25:26 +01:00
Jan Rieger
058759c76a Bump python-holidays to 0.40 (#107888) 2024-01-13 17:21:49 +01:00
Marc Mueller
0cc43d0915 Enable strict typing for xiaomi_ble (#107948) 2024-01-13 16:57:54 +01:00
Arie Catsman
45fec1d404 Bump pyenphase to 1.17.0 (#107950) 2024-01-13 16:53:48 +01:00
G Johansson
1d2c23d81c Skip disk types in System Monitor (#107943)
* Skip disk types in System Monitor

* change back
2024-01-13 14:34:24 +01:00
G Johansson
c49246dd07 Fix duplicate unique id in System Monitor (again) (#107947)
Fix duplicate unique id in System Monitor
2024-01-13 13:48:02 +01:00
Erik Montnemery
24c23d7323 Warn if integrations call async_show_progress without passing a task (#107796) 2024-01-13 11:56:05 +01:00
Joost Lekkerkerker
9471f81a18 Give name to Netatmo device snapshots (#107938) 2024-01-13 11:09:47 +01:00
Joost Lekkerkerker
f601104418 Snapshot Netatmo devices (#107935) 2024-01-13 10:59:36 +01:00
Joost Lekkerkerker
902619a4db Add snapshot tests to Netatmo platforms (#107932)
* Add snapshot tests to Netatmo platforms

* Add snapshot tests to Netatmo platforms
2024-01-13 10:18:21 +01:00
J. Nick Koston
0458bd68d9 Avoid duplicate search for existing config entries in homekit_controller (#107613) 2024-01-12 22:11:42 -10:00
Marc Mueller
7c98c1e544 Enable strict typing for rest_command (#107911) 2024-01-13 08:48:42 +01:00
Marc Mueller
ca1aaacc90 Enable strict typing for system_log (#107914) 2024-01-12 21:21:11 -10:00
Joost Lekkerkerker
7bcfcfef5f Improve Netatmo tests (#107902)
* Improve Netatmo tests

* Improve Netatmo tests
2024-01-12 23:27:31 +01:00
Jan-Philipp Benecke
68698cacac Remove deprecated YAML support from litejet (#107884) 2024-01-12 16:50:15 -05:00
J. Nick Koston
71aecab38b Revert "Restrict Version Disclosure to Authenticated Requests in Home Assistant" (#107904) 2024-01-12 11:06:59 -10:00
J. Nick Koston
a7d21c709d Bump orjson to 3.9.10 (#107898) 2024-01-12 11:06:44 -10:00
J. Nick Koston
3a4c64b0a7 Fix missing timeout exception check in powerwall config flow (#107899)
* Fix missing timeout exception check in powerwall config flow

powerwall recently switched to asyncio, and every place we
check for unreachable we need to check for timeout error.
There was one missed

```
09:08 homeassistant homeassistant[546]: 2024-01-12 10:09:08.899 ERROR (MainThread) [homeassistant.components.powerwall.config_flow] Unexpected exception
Jan 12 20:09:08 homeassistant homeassistant[546]: Traceback (most recent call last):
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 168, in _async_try_connect
Jan 12 20:09:08 homeassistant homeassistant[546]:     info = await validate_input(self.hass, user_input)
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 76, in validate_input
Jan 12 20:09:08 homeassistant homeassistant[546]:     site_info, gateway_din = await _login_and_fetch_site_info(
Jan 12 20:09:08 homeassistant homeassistant[546]:                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 43, in _login_and_fetch_site_info
Jan 12 20:09:08 homeassistant homeassistant[546]:     await power_wall.login(password)
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/powerwall.py", line 58, in login
Jan 12 20:09:08 homeassistant homeassistant[546]:     return await self.login_as(User.CUSTOMER, password, email, force_sm_off)
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/powerwall.py", line 49, in login_as
Jan 12 20:09:08 homeassistant homeassistant[546]:     response = await self._api.login(user, email, password, force_sm_off)
Jan 12 20:09:08 homeassistant homeassistant[546]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/api.py", line 172, in login
Jan 12 20:09:08 homeassistant homeassistant[546]:     return await self.post(
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/api.py", line 146, in post
Jan 12 20:09:08 homeassistant homeassistant[546]:     response = await self._http_session.post(
Jan 12 20:09:08 homeassistant homeassistant[546]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 601, in _request
Jan 12 20:09:08 homeassistant homeassistant[546]:     await resp.start(conn)
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 960, in start
Jan 12 20:09:08 homeassistant homeassistant[546]:     with self._timer:
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/helpers.py", line 735, in __exit__
Jan 12 20:09:08 homeassistant homeassistant[546]:     raise asyncio.TimeoutError from None
Jan 12 20:09:08 homeassistant homeassistant[546]: TimeoutError

```

* cov
2024-01-12 21:39:27 +01:00
Xitee
86e608d04f Handle missing fields from Roomba (#107893)
Add default values to mission_stats and run_stats
2024-01-12 21:35:09 +01:00
steffenrapp
d0e9e54f26 Extend Nuki integration to expose ringer through Nuki Opener (#107745)
* Expose ring_action_state and ring_action_timestamp of Nuki Opener

* add translation key

* address comments
2024-01-12 18:45:02 +01:00
Franck Nijhof
99ee57aefc 2024.1.3 (#107883) 2024-01-12 18:01:20 +01:00
Bram Kragten
28917011cb Update frontend to 20240112.0 (#107886) 2024-01-12 17:56:43 +01:00
Franck Nijhof
9c6cb5347c Bump version to 2024.1.3 2024-01-12 16:10:51 +01:00
Malte Franken
51c75b020d Bump aio_geojson_generic_client to 0.4 (#107866) 2024-01-12 16:09:18 +01:00
Kevin Worrel
061d2d3ccf Fix for exception in screenlogic.set_color_mode (#107850) 2024-01-12 16:09:12 +01:00
Franck Nijhof
97b596a00d Fix Tailwind cover stuck in closing state (#107827) 2024-01-12 16:09:08 +01:00
J. Nick Koston
e3a44e499c Bump bluetooth deps (#107816) 2024-01-12 16:08:26 +01:00
Ido Flatow
48766c08e0 Fix switcher kis logging incorrect property for device's name (#107775)
* use of incorrect property for device's name

* Update switch.py according to Ruff formatter
2024-01-12 16:04:20 +01:00
Christopher Bailey
f7ad7c4235 Rework events for UniFi Protect (#107771) 2024-01-12 16:04:17 +01:00
Christopher Bailey
38f9fd5734 Bump pyunifiprotect to 4.23.2 (#107769) 2024-01-12 16:04:13 +01:00
Christopher Bailey
05964d6bad Bump pyunifiprotect to 4.23.1 (#107758) 2024-01-12 16:04:10 +01:00
J. Nick Koston
70d1e6a270 Fix ld2410_ble not being able to setup because it has a stale connection (#107754) 2024-01-12 16:04:07 +01:00
Eugene Tiutiunnyk
28da1ac69e Fix Mac address check in kef integration (#107746)
Fix the check for Mac address in kef integration (#106072)

It might be due to an update of `getmac` dependency in some case the mac
was resolved to "00:00:00:00:00:00" instead of the anticipated `None`.
With that the original bug #47678 where a duplicated entity would be
created in case of HA is restarted while the KEF speaker is offline
came back. The PR #52902 was applied back in time to fix that issue.
Now, this change is a continuation of the previous efforts. The solution
was tested for about two months and it does address the bug with
creating duplicated entities in case of KEF speakers being offline.
2024-01-12 16:04:04 +01:00
Simone Chemelli
504e4a7923 Fix "not-logged" edge cases for Comelit VEDO (#107741) 2024-01-12 16:04:01 +01:00
Jan Bouwhuis
40547974fb Fix mqtt text text min max config params can not be equal (#107738)
Fix mqtt text text min max kan not be equal
2024-01-12 16:03:57 +01:00
YogevBokobza
b87bbd1529 Bump aioswitcher to 3.4.1 (#107730)
* switcher: added support for device_key logic included in aioswitcher==3.4.1

* switcher: small fix

* switcher: after lint

* switcher: fix missing device_key in tests

* remove device_key function

* fix missing device_key in tests
2024-01-12 16:03:54 +01:00
Jan-Philipp Benecke
d89659f196 Allow configuration of min_gradient from UI to be negative in Trend (#107720)
Allow configuration of min_gradient to be negative from UI
2024-01-12 16:03:50 +01:00
Martin Hjelmare
00b899ca3c Fix cloud tts loading (#107714) 2024-01-12 16:03:45 +01:00
J. Nick Koston
765c520d7a Clamp tplink color temp to valid range (#107695) 2024-01-12 15:59:05 +01:00
Maciej Bieniek
2a46f201cb Fix device_class type for Shelly Gen1 sleeping sensors (#107683) 2024-01-12 15:59:01 +01:00
Jan Bouwhuis
7f8a157788 Redact sensitive data in alexa debug logging (#107676)
* Redact sensitive data in alexa debug logging

* Add wrappers to diagnostics module

* Test http api log is redacted
2024-01-12 15:58:58 +01:00
Jan Bouwhuis
f993e923a3 Fix invalid alexa climate or water_heater state report with double listed targetSetpoint (#107673) 2024-01-12 15:58:55 +01:00
G Johansson
3386e0e766 Fix duplicated resource issue in System Monitor (#107671)
* Fix duplicated resource issue

* Only slug the argument
2024-01-12 15:58:52 +01:00
Jonas Fors Lellky
0705be607f Set max and min temp for flexit_bacnet climate entity (#107665)
107655: Set max and min temp for flexit_bacnet climate entity
2024-01-12 15:58:49 +01:00
Erik Montnemery
5b84e50dc0 Prevent overriding cached attribute as property (#107657)
* Prevent overriding cached attribute as property

* Remove debug
2024-01-12 15:58:46 +01:00
Marc Mueller
26da7402a2 Fix tplink_lte setup (#107642) 2024-01-12 15:58:42 +01:00
Erwin Douna
f1fc5abbc2 Fix Tado unique mobile device dispatcher (#107631)
* Add unique home ID device dispatch

* Adding fixture for new setup

* Minor refactor work

* Add check for unlinked to different homes

* If the interface returns an error

* Proper error handling

* Feedback fixes

* Comments for error in client

* Typo

* Update homeassistant/components/tado/__init__.py

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

* Update homeassistant/components/tado/__init__.py

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

* Update devices fix standard

* Dispatch out of loop

* Update dispatcher

* Clean up

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-12 15:58:39 +01:00
Shay Levy
644a823c45 Bump aioshelly to 7.1.0 (#107593) 2024-01-12 15:58:35 +01:00
elmurato
fcab683cc0 Bump mcstatus to v11.1.1 (#107546)
* Bump mcstatus to 11.1.0

* Bump mcstatus to v11.1.1
2024-01-12 15:58:32 +01:00
starkillerOG
7bdabce68f Bump reolink_aio to 0.8.6 (#107541) 2024-01-12 15:58:29 +01:00
mkmer
cf1a528b7a Bump blinkpy to 0.22.5 (#107537)
bump blinkpy 0.22.5
2024-01-12 15:58:26 +01:00
Erik Montnemery
f18ab5e1cc Don't include position in binary valve attributes (#107531) 2024-01-12 15:58:23 +01:00
nic
bee76db1c3 Retry zoneminder connection setup (#107519)
* zoneminder setup retry connection

Makes ZM setup be async for enabling connection retry attempts

This also requires zm-py version bump v0.5.4 as that
dependency was patched in conjunction to resolve this issue

Closes #105271

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff format

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff fixes

Signed-off-by: Nic Boet <nic@boet.cc>

* RequestsConnectionError

Signed-off-by: Nic Boet <nic@boet.cc>

* revert async changes

Signed-off-by: Nic Boet <nic@boet.cc>

---------

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-12 15:58:19 +01:00
nic
652fa7d693 Bump zm-py version to v0.5.3 for zoneminder (#107331)
zm-py version bump for zoneminder

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-12 15:58:14 +01:00
Manuel Rüger
73ba77deb6 Fix Luftdaten sensor id string (#107506)
Luftdaten: fix sensor id string
2024-01-12 15:54:24 +01:00
Marc Mueller
66307c5acb Fix asyncio.gather call (#107500) 2024-01-12 15:54:21 +01:00
Simone Chemelli
86822018d8 Fix reauth flow for Comelit VEDO (#107461) 2024-01-12 15:54:17 +01:00
Cyrill Raccaud
b333be8945 Fix Swiss public transport initial data for attributes (#107452)
faster initial data for attributes
2024-01-12 15:54:14 +01:00
Joost Lekkerkerker
a58483f93c Remove name from faa_delays (#107418) 2024-01-12 15:54:11 +01:00
G Johansson
7c06f05108 Handle OSError during setup for System Monitor (#107396)
* Handle OSError during setup for System Monitor

* Clean string copy

* debug

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-12 15:54:08 +01:00
G Johansson
175e07fe3b Fix language flavors in holiday (#107392) 2024-01-12 15:54:05 +01:00
Matthias Alphart
9bc0217738 Fix KNX telegram device trigger not firing after integration reload (#107388) 2024-01-12 15:54:02 +01:00
mkmer
53ab892575 Reduce polling rate in Blink (#107386) 2024-01-12 15:53:58 +01:00
David Bonnes
409a254fe5 Fix evohome high_precision temps not retreived consistently (#107366)
* initial commit

* doctweak

* remove hint

* doctweak
2024-01-12 15:53:56 +01:00
Ben Morton
54e62b4095 Add support for the Spotify DJ (#107268)
* Add support for the Spotify DJ playlist by mocking the playlist response
Add error handling for playlist lookup to ensure it doesn't break current playback state loading

* Run linters
Add exception type to playlist lookup error handling

* Fix typo in comment

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-12 15:53:53 +01:00
Cyrill Raccaud
4e991388fb Fix missing unique_id for spt integration (#107087)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-12 15:53:50 +01:00
vexofp
1acae5a62d Prevent toggle from calling stop on covers which do not support it (#106848)
* Prevent toggle from calling stop on covers which do not support it

* Update homeassistant/components/cover/__init__.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-12 15:53:46 +01:00
Arie Catsman
9fe351f363 Catch missing inverter in Enphase Envoy (#106730)
* bug: prevent invalid key when empty invereter arrays is returned.

Some envoy fw versions return an empty inverter array
every 4 hours when no production is taking place.
Prevent collection failure due to this as other data
seems fine. Inveretrs will show unknown during this cycle.

* refactor: replace try/catch with test and make warning debug

* Update homeassistant/components/enphase_envoy/sensor.py

* Update homeassistant/components/enphase_envoy/sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-12 15:53:43 +01:00
Brandon Rothweiler
f9dacedf0f Add diagnostics to A. O. Smith integration (#106343)
* Add diagnostics to A. O. Smith integration

* Bump py-aosmith to 1.0.4

* remove redactions from test fixture
2024-01-12 15:53:37 +01:00
Malte Franken
e840824a6e Bump aio_geojson_generic_client to 0.4 (#107866) 2024-01-12 15:50:42 +01:00
Marc Mueller
a9420bf05a Enable strict typing for ios (#107382) 2024-01-12 14:43:17 +01:00
Ernst Klamer
0257cd8bbe Bump xiaomi-ble to 0.21.2 (#107779) 2024-01-12 13:29:15 +01:00
Marc Mueller
8e83356ccb Add decorator typing [spotify] (#107560) 2024-01-12 12:58:19 +01:00
Marc Mueller
93dc0b9029 Enable strict typing for ecowitt (#107861) 2024-01-12 12:57:19 +01:00
Marc Mueller
b1f1ecb40a Improve meteo_france typing (#107863) 2024-01-12 12:56:40 +01:00
Marc Mueller
7e28c788cb Enable strict typing for bthome (#107859) 2024-01-12 12:56:13 +01:00
Cyrill Raccaud
96a9ebf137 Fix missing unique_id for spt integration (#107087)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-12 12:55:09 +01:00
Marc Mueller
e36141a4bc Improve onboarding provider call (#107864) 2024-01-12 12:41:37 +01:00
Marc Mueller
7023ac7366 Enable strict typing for cert_expiry (#107860) 2024-01-12 12:32:17 +01:00
Peter Winkler
2508b55b0f Add myUplink integration (#86522)
* First checkin for myUplink

* Refactored coordinator and sensor state classe

* Updated .coveragerc

* Update test_config_flow

* Fix test_config_flow for myuplink

* Only set state class for temperature sensor

* PR comment updates

* Type strong dict

* use asyncio.timeouts

* PR updates (part 1)

* Updated to myuplink 0.0.9

* Add strict typing

* Fix typing

* Inherit CoordinatorEntity

* Clean up coordinator and sensors

* Use common base entity

* Improve device point sensor

* Exclude entity from coverage

* Set device point entity name if there's no entity description

* Update homeassistant/components/myuplink/sensor.py

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

* Update homeassistant/components/myuplink/entity.py

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

* Update homeassistant/components/myuplink/entity.py

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

* Remvoed firmware + connstate sensors

* Always add device point parameter name

* Removed MyUplinkDeviceSensor

* Removed unused class

* key="celsius",

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-12 12:17:07 +01:00
Marc Mueller
c1faafc6a0 Add decorator typing [zha] (#107599) 2024-01-12 11:42:10 +01:00
Marc Mueller
827a1b1f48 Add decorator typing [homematicip_cloud] (#107555) 2024-01-12 11:32:03 +01:00
Marc Mueller
bec88e5e51 Add decorator typing [izone] (#107556) 2024-01-12 11:31:08 +01:00
Joost Lekkerkerker
68ddc1481e Rename netatmo base entity file (#107857) 2024-01-12 11:30:34 +01:00
Tobias Sauerwein
87b694298f Revert "Fix Netatmo camera name does not show under Media -> Media sources -> Camera" (#107856) 2024-01-12 11:30:23 +01:00
Marc Mueller
c9befe8700 Add decorator typing [limitlessled] (#107557) 2024-01-12 11:30:07 +01:00
Jonas Fors Lellky
668fc442e9 Set max and min temp for flexit_bacnet climate entity (#107665)
107655: Set max and min temp for flexit_bacnet climate entity
2024-01-12 10:52:17 +01:00
Simone Chemelli
8d5cdfaf36 Fix reauth flow for Comelit VEDO (#107461) 2024-01-12 10:32:35 +01:00
Kevin Worrel
ee9c6fa0d8 Fix for exception in screenlogic.set_color_mode (#107850) 2024-01-12 10:30:55 +01:00
J. Nick Koston
4b7a313ece Use identity checks for CoreState (#107846)
Some of the checks used ==, and some used is. Switch
everything to is as its faster
2024-01-12 10:21:26 +01:00
J. Nick Koston
b12291633c Fix ld2410_ble not being able to setup because it has a stale connection (#107754) 2024-01-12 09:56:52 +01:00
Simone Chemelli
79254c6867 Fix "not-logged" edge cases for Comelit VEDO (#107741) 2024-01-12 09:56:13 +01:00
Erik Montnemery
e7628d23d2 Don't include position in binary valve attributes (#107531) 2024-01-12 09:55:28 +01:00
Martin Hjelmare
f8318bbbc7 Fix cloud tts loading (#107714) 2024-01-12 09:47:08 +01:00
J. Nick Koston
ce11366b9c Bump bluetooth deps (#107816) 2024-01-12 09:45:49 +01:00
J. Nick Koston
fb0dad66db Add jinja_pass_arg to reserved template names (#107822) 2024-01-12 09:34:49 +01:00
Mikail Tunç
46a06bc8cd Restrict Version Disclosure to Authenticated Requests in Home Assistant (#107458) 2024-01-12 09:34:18 +01:00
J. Nick Koston
bef596d0dd Migrate unifiprotect descriptions to be kw_only (#107832) 2024-01-12 09:33:33 +01:00
J. Nick Koston
b6dfa1fa7c Bump nexia to 2.0.8 (#107835) 2024-01-12 09:32:38 +01:00
dependabot[bot]
72618c1bf2 Bump github/codeql-action from 3.22.12 to 3.23.0 (#107628)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 09:31:13 +01:00
dependabot[bot]
751b459f80 Bump actions/cache from 3.3.2 to 3.3.3 (#107840)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 09:26:01 +01:00
J. Nick Koston
6612de9a6d Bump govee-ble to 0.27.3 (#107839)
changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.27.2...v0.27.3
2024-01-12 09:16:30 +01:00
G Johansson
e715d6a7a1 Fix duplicated resource issue in System Monitor (#107671)
* Fix duplicated resource issue

* Only slug the argument
2024-01-12 08:44:38 +01:00
Matrix
83fbcb11ea Add YoLink SpeakerHub Service (#107787)
* Add YoLink SpeakerHub Service

* fix as suggestion

* service's params descriptions
2024-01-12 08:18:44 +01:00
Aaron Bach
dc10f3c204 Move Guardian valve attributes to diagnostics sensors (#107834) 2024-01-11 19:16:54 -07:00
dcmeglio
69a8f476e8 Improved tracking of switchbot opening/closing states (#106741)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-11 16:09:50 -10:00
dcmeglio
0d8073fddf Bump PySwitchbot to 0.44.0 (#107833) 2024-01-11 15:18:57 -10:00
Franck Nijhof
e71304580d Fix Tailwind cover stuck in closing state (#107827) 2024-01-11 23:25:33 +01:00
Phil Bruckner
24ddc939c0 Remove Life360 integration (#107805) 2024-01-11 21:49:39 +01:00
Cody C
ff811a33f5 Fix Netatmo camera name does not show under Media -> Media sources -> Camera (#107696)
* Fixes issue where Netatmo camera name does not show under Media -> Media sources ->Camera

Fixes #105268

* Remove entity name and change has_entity_name to False

has_entity_name has to be retained (per https://developers.home-assistant.io/docs/core/entity/#has_entity_name-true-mandatory-for-new-integrations)
2024-01-11 21:36:39 +01:00
Erik Montnemery
8a9f9b94ef Fix call to async_setup_component in translation test (#107807) 2024-01-11 10:09:32 -10:00
Erik Montnemery
44a6882c39 Make step_id parameter to FlowHandler.async_show_progress optional (#107802)
Drop step_id parameter from FlowHandler.async_show_progress
2024-01-11 21:05:20 +01:00
Erik Montnemery
ddf3a36061 Improve calls to async_show_progress in google (#107788) 2024-01-11 16:47:53 +01:00
Erik Montnemery
fbb6c1d0f0 Improve calls to async_show_progress in matter (#107791) 2024-01-11 13:08:54 +01:00
Erik Montnemery
2a0bd6654b Improve calls to async_show_progress in zwave_js (#107794) 2024-01-11 13:07:43 +01:00
Erik Montnemery
24cd6a8a52 Improve ergonomics of FlowManager.async_show_progress (#107668)
* Improve ergonomics of FlowManager.async_show_progress

* Don't include progress coroutine in web response

* Unconditionally reset progress task when show_progress finished

* Fix race

* Tweak, add tests

* Address review comments

* Improve error handling

* Allow progress jobs to return anything

* Add comment

* Remove unneeded check

* Change API according to discussion

* Adjust typing
2024-01-11 12:00:12 +01:00
J. Nick Koston
00b40c964a Bump govee-ble to 0.27.2 (#107778)
* Bump govee-ble to 0.27.0

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.26.0...v0.27.0

note: H5106 is partially supported, full support will be added in another PR + docs

* .1

* 0.27.2
2024-01-11 11:28:03 +01:00
Matrix
f217d438cd Add SpeakerHub support to YoLink (#104678)
* SpeakerHub support

* Remove unnecessary code

* fix entity description

* Fix as suggestion

* fixes

* fixes as suggestion & remove Speker Hub service
2024-01-11 11:04:14 +01:00
Ido Flatow
b12c53e94e Fix switcher kis logging incorrect property for device's name (#107775)
* use of incorrect property for device's name

* Update switch.py according to Ruff formatter
2024-01-11 11:39:50 +02:00
Robert Resch
1c669c6e84 Revert "Revert "Add preselect_remember_me to /auth/providers"" (#106867) 2024-01-11 10:37:19 +01:00
Erwin Douna
b08832a89a Fastdotcom service optimization (#107179)
* Startup mechanic

* Workable service (again)

* Optimized version, for now

* Minor refactoring

* Test cases

* Fixing test case

* Adding startup comment

* State_unknown added

* Update homeassistant/components/fastdotcom/services.py

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

* Check if config entries are not found

* Update tests/components/fastdotcom/test_service.py

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

* Update homeassistant/components/fastdotcom/services.py

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

* Update homeassistant/components/fastdotcom/services.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-11 08:27:15 +01:00
Jan Bouwhuis
e0457590d1 Fix mqtt text text min max config params can not be equal (#107738)
Fix mqtt text text min max kan not be equal
2024-01-11 07:17:48 +01:00
Christopher Bailey
b83f5b5932 Add new event sensors from UniFi Protect 2.11 (#107773) 2024-01-10 19:23:59 -10:00
Christopher Bailey
99e25d94c0 Rework events for UniFi Protect (#107771) 2024-01-10 19:02:16 -10:00
Christopher Bailey
ec8a33b52d Rework state change detection for UniFi Protect entities (#107766) 2024-01-10 18:06:45 -10:00
Christopher Bailey
335a1f6e09 Bump pyunifiprotect to 4.23.2 (#107769) 2024-01-10 18:04:37 -10:00
Thomas Kistler
28cdf5f1d2 Bump aioambient to 2024.01.0 (#107767) 2024-01-10 18:04:15 -10:00
jjlawren
0bdbb52694 Bump sonos-websocket to 0.1.3 (#107765) 2024-01-10 18:00:34 -10:00
Christopher Bailey
e595d24d78 Add leak sensor for UP Sense for UniFi Protect (#107762) 2024-01-10 15:32:05 -10:00
Shay Levy
28b5104cda Bump aioshelly to 7.1.0 (#107593) 2024-01-10 14:50:45 -10:00
Ernst Klamer
0ae86095d2 Bump bthome-ble to 3.4.1 (#107757) 2024-01-10 14:48:37 -10:00
Christopher Bailey
b5bd910963 Bump pyunifiprotect to 4.23.1 (#107758) 2024-01-10 14:38:56 -10:00
Aaron Bach
bc4c3bf9e7 Add valve platform to Guardian (#107423) 2024-01-10 13:03:18 -10:00
J. Nick Koston
b2f7fd12a2 Add comment to ConfigEntry.async_setup about race safety (#107756) 2024-01-10 13:03:09 -10:00
Eugene Tiutiunnyk
1bb76e2351 Fix Mac address check in kef integration (#107746)
Fix the check for Mac address in kef integration (#106072)

It might be due to an update of `getmac` dependency in some case the mac
was resolved to "00:00:00:00:00:00" instead of the anticipated `None`.
With that the original bug #47678 where a duplicated entity would be
created in case of HA is restarted while the KEF speaker is offline
came back. The PR #52902 was applied back in time to fix that issue.
Now, this change is a continuation of the previous efforts. The solution
was tested for about two months and it does address the bug with
creating duplicated entities in case of KEF speakers being offline.
2024-01-10 23:23:40 +01:00
Allen Porter
350806c036 Make to-do list item exception wording consistent (#107743) 2024-01-10 22:49:25 +01:00
bubonicbob
c74bef265a Update powerwall for tesla_powerwall 0.5.0 which is async (#107164)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-10 11:21:53 -10:00
YogevBokobza
bdba6f41c9 Bump aioswitcher to 3.4.1 (#107730)
* switcher: added support for device_key logic included in aioswitcher==3.4.1

* switcher: small fix

* switcher: after lint

* switcher: fix missing device_key in tests

* remove device_key function

* fix missing device_key in tests
2024-01-10 21:41:16 +02:00
Álvaro Fernández Rojas
9036d67588 Rename AEMET weather_update_coordinator (#107740)
* aemet: rename weather_update_coordinator

Use "coordinator" instead, like other integrations.

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

* coverage: remove AEMET coordinator

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-01-10 20:33:44 +01:00
J. Nick Koston
7d18ad6fe7 Reduce discovery flow matching overhead (#107709) 2024-01-10 07:14:18 -10:00
Álvaro Fernández Rojas
6a6c447c28 Use new AEMET library data for sensor platform (#102972)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-10 16:36:20 +01:00
Jan Bouwhuis
de9bb20135 Fix invalid alexa climate or water_heater state report with double listed targetSetpoint (#107673) 2024-01-10 16:23:42 +01:00
Jan Bouwhuis
5bdcbc4e8b Redact sensitive data in alexa debug logging (#107676)
* Redact sensitive data in alexa debug logging

* Add wrappers to diagnostics module

* Test http api log is redacted
2024-01-10 16:20:47 +01:00
Josef Zweck
956921a930 Improvements for tedee integration (#107238)
* improvements

* wait another second before creating the entry

* move delay to lib

* move library bump to separate PR

* move available back to lock from entity
2024-01-10 14:55:28 +01:00
Arie Catsman
e5eb58b456 Bump Pyenphase to 1.16.0 (#107719) 2024-01-10 14:34:25 +01:00
Marc Mueller
e91a159efa Add decorator typing [modern_forms] (#107558) 2024-01-10 14:14:33 +01:00
Marc Mueller
fbbe03c93c Add decorator typing [soma] (#107559) 2024-01-10 14:13:05 +01:00
Marc Mueller
402ead8df2 Add decorator typing [toon] (#107597) 2024-01-10 14:11:13 +01:00
elmurato
3fba02a692 Improve debug logs in Minecraft Server (#107672)
Improve debug logs
2024-01-10 14:06:49 +01:00
J. Nick Koston
49bdfbd9ca Bump govee-ble to 0.26.0 (#107706) 2024-01-10 14:03:15 +01:00
Jan-Philipp Benecke
08e3178682 Allow configuration of min_gradient from UI to be negative in Trend (#107720)
Allow configuration of min_gradient to be negative from UI
2024-01-10 14:03:02 +01:00
Cyrill Raccaud
598e18ca86 Set proper sensor device class for swiss_public_transport (#106485)
set proper sensor device class
2024-01-10 13:23:02 +01:00
Erwin Douna
15e3af72d1 Fix Tado unique mobile device dispatcher (#107631)
* Add unique home ID device dispatch

* Adding fixture for new setup

* Minor refactor work

* Add check for unlinked to different homes

* If the interface returns an error

* Proper error handling

* Feedback fixes

* Comments for error in client

* Typo

* Update homeassistant/components/tado/__init__.py

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

* Update homeassistant/components/tado/__init__.py

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

* Update devices fix standard

* Dispatch out of loop

* Update dispatcher

* Clean up

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-10 12:09:10 +01:00
Michaël Arnauts
093e35f4d4 Remove myself as a codeowner from tado (#107708) 2024-01-09 22:54:43 -10:00
Josef Zweck
0f79b6ac2a Bump pytedee_async to 0.2.11 (#107707) 2024-01-10 09:43:04 +01:00
Lars R
bf6b9175a1 Add 'bitwise_xor' filter to jinja templates (#104942)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-10 09:40:52 +01:00
J. Nick Koston
554c27a31a Clamp tplink color temp to valid range (#107695) 2024-01-09 17:08:49 -10:00
Maciej Bieniek
8181fbab5c Fix device_class type for Shelly Gen1 sleeping sensors (#107683) 2024-01-09 12:01:19 -10:00
Yuval Aboulafia
b739fa8c02 Add missing 'state class' to Airvisual (#107666) 2024-01-09 13:01:11 -07:00
Erik Montnemery
9859306718 Prevent overriding cached attribute as property (#107657)
* Prevent overriding cached attribute as property

* Remove debug
2024-01-09 19:16:45 +01:00
J. Nick Koston
ab6b9fe891 Avoid total_seconds conversion in bond keep alive (#107618) 2024-01-09 07:46:57 -10:00
Jan-Philipp Benecke
d1c1eb8428 Add test for avoid triggering ping device tracker home after reload (#107107) 2024-01-09 18:39:31 +01:00
Jan-Philipp Benecke
3141b92027 Remove deprecated services from Huawei LTE (#107578) 2024-01-09 18:39:05 +01:00
Jan-Philipp Benecke
71dcbb95ab Remove deprecated services from Ezviz (#107582) 2024-01-09 18:38:42 +01:00
Luke Lashley
29cac5b093 Bump Python-Roborock to 0.39.0 (#107547)
* bump to 0.39.0

* add new strings

* change strings
2024-01-09 16:48:01 +01:00
Jan-Philipp Benecke
33dd6f66e3 Correct device class in sql tests (#107663) 2024-01-09 16:30:21 +01:00
Jan-Philipp Benecke
1a6418d361 Use right state class in filter test (#107643) 2024-01-09 16:06:36 +01:00
Jan-Philipp Benecke
c62e79f9ee Use right state class for kWh sensor in homekit_controller (#107644) 2024-01-09 16:06:18 +01:00
mkmer
4dbaa576a7 Remove unused option flow from blink (#106735)
* Remove unused option flow

* remove update listener

* adjust scan_interval to original default

* default scn interval back to 30s
2024-01-09 16:06:04 +01:00
Ståle Storø Hauknes
5d259586e5 Airthings cloud: Add myself as codeowner (#107654)
Add myself as codeowner
2024-01-09 15:17:52 +01:00
J. Nick Koston
249e10d8c7 Fix dlink test mutating config entry after its adding to hass (#107604) 2024-01-09 14:55:20 +01:00
Jan-Philipp Benecke
15cee58637 Remove deprecated YAML support from zodiac (#107584) 2024-01-09 14:32:13 +01:00
Jan-Philipp Benecke
fd533e46dd Correct state class in mobile_app tests (#107646)
Correct right state class in `mobile_app` tests
2024-01-09 14:08:58 +01:00
Manuel Dipolt
c9d0134b8b Remove deprecated line in osoenergy (#107553) 2024-01-09 13:56:50 +01:00
Marc Mueller
29dd70ccfb Fix tplink_lte setup (#107642) 2024-01-09 13:08:40 +01:00
vexofp
3c53693fe3 Prevent toggle from calling stop on covers which do not support it (#106848)
* Prevent toggle from calling stop on covers which do not support it

* Update homeassistant/components/cover/__init__.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-09 12:32:27 +01:00
Abílio Costa
3a36117c08 Bump idasen-ha to 2.5 (#107607) 2024-01-08 22:27:16 -10:00
J. Nick Koston
1e4d10efe1 Add caching to the distance calculation utility (#107626) 2024-01-08 21:51:56 -10:00
J. Nick Koston
49e3c740cc Small cleanups to temperature helper (#107625) 2024-01-08 21:51:35 -10:00
Erwin Douna
9ca09bd6f0 Tado unavailable state to device tracker (#107542)
* Adding unavailable state to device tracker

* Small fixes
2024-01-09 08:18:22 +01:00
J. Nick Koston
a0b00d78b1 Avoid duplicate property lookups in camera state_attributes (#107627) 2024-01-09 08:16:19 +01:00
J. Nick Koston
955c70b8f1 Fix cloudflare tests using a dict for the unique id (#107601)
fix cloudflare tests using a dict for the unique id
2024-01-09 07:59:29 +01:00
J. Nick Koston
05d205ae7a Small cleanups to number entity (#107624) 2024-01-08 20:20:15 -10:00
Eric Severance
82dc8260c6 Bump pywemo to 1.4.0 (#107623) 2024-01-08 20:01:15 -10:00
J. Nick Koston
86603b332a Bump aiohttp-zlib-ng to 0.3.1 (#107595) 2024-01-08 13:24:57 -10:00
J. Nick Koston
ea2178a53d Fix tractive tests using a dict for the unique_id (#107602) 2024-01-08 13:10:15 -10:00
J. Nick Koston
bb78b75d49 Bump pymeteoclimatic to 0.1.0 (#107583) 2024-01-08 23:02:29 +01:00
Jan Rieger
9a81a29ce2 Let babel handle the locale separator in holiday (#107571) 2024-01-08 22:59:12 +01:00
Arie Catsman
e8acccce05 Catch missing inverter in Enphase Envoy (#106730)
* bug: prevent invalid key when empty invereter arrays is returned.

Some envoy fw versions return an empty inverter array
every 4 hours when no production is taking place.
Prevent collection failure due to this as other data
seems fine. Inveretrs will show unknown during this cycle.

* refactor: replace try/catch with test and make warning debug

* Update homeassistant/components/enphase_envoy/sensor.py

* Update homeassistant/components/enphase_envoy/sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-08 22:28:04 +01:00
Jan-Philipp Benecke
ca886de3ca Remove deprecated YAML support from OpenSky (#107585) 2024-01-08 22:03:25 +01:00
Marc Mueller
8150754b9b Improve led_ble generic typing (#107534) 2024-01-08 10:08:19 -10:00
mkmer
438ba7eaad Add software version to Blink device info (#107548)
* add firmware to device

* Version from attributes
2024-01-08 20:32:29 +01:00
nic
e349608f92 Retry zoneminder connection setup (#107519)
* zoneminder setup retry connection

Makes ZM setup be async for enabling connection retry attempts

This also requires zm-py version bump v0.5.4 as that
dependency was patched in conjunction to resolve this issue

Closes #105271

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff format

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff fixes

Signed-off-by: Nic Boet <nic@boet.cc>

* RequestsConnectionError

Signed-off-by: Nic Boet <nic@boet.cc>

* revert async changes

Signed-off-by: Nic Boet <nic@boet.cc>

---------

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-08 20:30:44 +01:00
Michael Hansen
4bb2a3ad92 Specific Assist errors for domain/device class (#107302)
* Specific errors for domain/device class

* Don't log exception

* Check device class first

* Refactor guard clauses

* Test default error
2024-01-08 12:23:06 -06:00
Jan Bouwhuis
20610645fb Pop the mocked config flow, restore the original with mock_config_flow (#107567)
Pop the mocked config flow, restore the original if it existed
2024-01-08 19:01:43 +01:00
Josef Zweck
0d946c62dc Bump pytedee_async to 0.2.10 (#107540)
* bump tedee

* bump tedee
2024-01-08 17:17:20 +01:00
starkillerOG
fdf71b2687 Bump reolink_aio to 0.8.6 (#107541) 2024-01-08 17:01:19 +01:00
FlorianOosterhof
13bfeef1da Unlock the precision of sensors of the opentherm_gw integration (#107227)
* Unlock the precision of sensors of the opentherm_gw integration

* Add a suggested_display_precision attribute to all opentherm_gw sensors.
2024-01-08 16:37:11 +01:00
elmurato
0d44a1eb66 Bump mcstatus to v11.1.1 (#107546)
* Bump mcstatus to 11.1.0

* Bump mcstatus to v11.1.1
2024-01-08 16:32:37 +01:00
mkmer
d7be7f5ae1 Bump blinkpy to 0.22.5 (#107537)
bump blinkpy 0.22.5
2024-01-08 15:11:19 +01:00
Josef Zweck
080484f2f6 Remove tedee device safely from registry (#107529)
remove device safely from registry
2024-01-08 13:10:16 +01:00
mkmer
cc67fd8a3c Reduce polling rate in Blink (#107386) 2024-01-08 10:51:58 +01:00
Marc Mueller
e7cc26d028 Improve folder_watcher typing (#107271) 2024-01-08 10:49:15 +01:00
Marc Mueller
3632d6be46 Enable strict typing for dlna_dms (#107305) 2024-01-08 10:45:51 +01:00
Marc Mueller
d0e6ce193c Enable strict typing for tod (#107284) 2024-01-08 10:44:47 +01:00
Marc Mueller
c30bf1f6e1 Enable strict typing for nightscout (#107307) 2024-01-08 10:43:40 +01:00
Marc Mueller
b22cd2deaa Enable strict typing for system_health (#107283) 2024-01-08 10:40:49 +01:00
Joost Lekkerkerker
82e0fc5f4e Use parametrize in drop connect binary sensor tests (#107111) 2024-01-08 10:38:44 +01:00
Josef Zweck
14bf778c10 Cleanup device registry for tedee when a lock is removed (#106994)
* remove removed locks

* move duplicated code to function

* remove entities by removing device

* add new locks automatically

* add locks from coordinator

* smaller pr

* remove snapshot

* move lock removal to coordinator

* change comment

* Update tests/components/tedee/test_init.py

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

* Update tests/components/tedee/test_init.py

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

* test lock unavailable

* move logic to function

* resolve merge conflicts

* no need to call keys()

* no need to call keys()

* check for change first

* readability

* Update tests/components/tedee/test_lock.py

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

* Update tests/components/tedee/test_lock.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-08 10:37:35 +01:00
Joost Lekkerkerker
5fe96390f5 Add zone devices to AnthemAV (#107192) 2024-01-08 10:37:17 +01:00
Manuel Rüger
394385fdeb Fix Luftdaten sensor id string (#107506)
Luftdaten: fix sensor id string
2024-01-08 10:15:30 +01:00
Marc Mueller
3c7a9272fa Enable strict typing for intent (#107282) 2024-01-08 10:09:48 +01:00
Marc Mueller
5ef04fcc7b Improve hunterdouglas_powerview typing (#107445) 2024-01-08 10:08:52 +01:00
Marc Mueller
a6fc4c2bd5 Improve hassio typing (#107292) 2024-01-08 10:08:09 +01:00
Marc Mueller
78752264b3 Fully type homeassistant integration (#107380) 2024-01-08 10:07:30 +01:00
Marc Mueller
5ae419367e Enable strict typing for generic_hygrostat (#107272) 2024-01-08 09:59:31 +01:00
Marc Mueller
265f587768 Enable strict typing for history_stats (#107273) 2024-01-08 09:58:07 +01:00
Erwin Douna
3958d89ae6 Improve typing for Tado (#106992) 2024-01-08 09:57:01 +01:00
Lucas Mindêllo de Andrade
db53237b9a Bump SunWEG to 2.1.0 (#107459) 2024-01-08 09:51:06 +01:00
Marc Mueller
f5d5e1dcbb Enable strict typing for google_assistant_sdk (#107306) 2024-01-08 09:47:17 +01:00
Marc Mueller
fde7a6e9ef Improve dispatcher typing (#106872) 2024-01-08 09:45:37 +01:00
J. Nick Koston
ea4143154b Handle unknown state in HomeKit (#107039) 2024-01-08 09:42:28 +01:00
Jan-Philipp Benecke
40e1bab0ac Remove deprecated YAML for freebox (#107497) 2024-01-08 09:36:17 +01:00
Marc Mueller
442eb68d92 Fix asyncio.gather call (#107500) 2024-01-08 09:35:47 +01:00
tronikos
3709475cb5 Enable long term statistics for Flume water usage current sensor (#107512) 2024-01-08 09:31:56 +01:00
G Johansson
d8c139f211 Fix language flavors in holiday (#107392) 2024-01-08 09:31:44 +01:00
J. Nick Koston
d260ed938a Reduce overhead to call entity services (#106908) 2024-01-08 09:30:52 +01:00
Jan Bouwhuis
9ad3c8dbc9 Remove MQTT legacy vacuum support (#107274) 2024-01-08 09:22:43 +01:00
J. Nick Koston
3eb81bc461 Add coverage for scanning tags with ESPHome (#107337) 2024-01-08 09:20:27 +01:00
Joost Lekkerkerker
1171a7a3d9 Migrate kmtronic to has entity name (#107469) 2024-01-08 09:14:37 +01:00
Joost Lekkerkerker
af209fe2b8 Migrate Mullvad to has entity name (#107520) 2024-01-08 09:13:50 +01:00
Joost Lekkerkerker
7202126751 Add Met eireann to strict typing (#107486) 2024-01-08 09:13:15 +01:00
J. Nick Koston
d609344f40 Reduce duplicate code in ESPHome connection callback (#107338) 2024-01-08 09:10:58 +01:00
Joost Lekkerkerker
102fdbb237 Bump aiowithings to 2.1.0 (#107417) 2024-01-08 09:08:59 +01:00
J. Nick Koston
448d5bbf27 Increase pip timeout in image builds to match core (#107514) 2024-01-08 09:07:42 +01:00
J. Nick Koston
fc36c48acc Bump sensorpush-ble to 1.6.2 (#107410) 2024-01-07 22:06:12 -10:00
Joost Lekkerkerker
eaac01bc76 Introduce heat area property in moehlenhoff alpha2 (#107488) 2024-01-08 08:17:28 +01:00
Joost Lekkerkerker
8b0c96a212 Clean up met config flow (#107480) 2024-01-08 08:11:30 +01:00
Joost Lekkerkerker
f2483bf660 Use constants in Alpha2 config flow (#107518) 2024-01-08 08:05:51 +01:00
J. Nick Koston
efffbc08aa Add support for bluetooth local name matchers shorter than 3 chars (#107411) 2024-01-07 18:25:56 -10:00
J. Nick Koston
69307374f4 Signficantly reduce executor contention during bootstrap (#107312)
* Signficantly reduce executor contention during bootstrap

At startup we have a thundering herd wanting to use the executor
to load manifiest.json. Since we know which integrations we are
about to load in each resolver step, group the manifest loads
into single executor jobs by calling async_get_integrations on
the deps of the integrations after they are resolved.

In practice this reduced the number of executor jobs
by 80% during bootstrap

* merge

* naming

* tweak

* tweak

* not enough contention to be worth it there

* refactor to avoid waiting

* refactor to avoid waiting

* tweaks

* tweaks

* tweak

* background is fine

* comment
2024-01-07 22:55:40 -05:00
J. Nick Koston
acf78664e2 Reduce overhead to compile statistics (#106927)
* Reduce overhead to compile statistics

statistics uses LazyState for compatibility with State when pulling
data from the database.

After the previous round of refactoring to modern history, the setters
are never called and can be removed.

* reduce
2024-01-07 22:36:49 -05:00
J. Nick Koston
d04e2d56da Add support for JSON fragments (#107213) 2024-01-07 17:36:31 -10:00
J. Nick Koston
50edc334de Refactor sensor recorder _get_sensor_states to check for state class first (#107046)
The state class check is cheap and the entity filter check is much
more expensive, so do the state class check first
2024-01-07 22:36:03 -05:00
J. Nick Koston
0b9992260a Improve logbook context augment performance (#106926)
Makes LazyEventPartialState a bit lazier since almost all the
properties are never called.
2024-01-07 22:35:28 -05:00
J. Nick Koston
d8c6534aff Refactor recorder for common event case (#106753)
Almost 99% of items that are put into the recorder queue are
Events. Avoid wrapping them in tasks since we have to unwrap
them right away and its must faster to check for both RecorderTask
and Events since events are the common case.
2024-01-07 22:31:40 -05:00
J. Nick Koston
368feec712 Refactor translations to reduce dict lookups (#107425)
* Refactor translations to reduce dict lookups

All of our cache lookups used:

`cache[language][O(component)][category]`

The cache was designed as

`cache[language][component][category][flatted_key]`

The lookups are now

`cache[language][category][O(component)]`

The cache is now stored as

`cache[language][category][component][flatted_key]`

This allows the catch fetch to avoid looking up
the category each loop

* already a set, and we do not mutate
2024-01-07 22:29:27 -05:00
Matthias Alphart
f53109f513 Move KNX service registration to async_setup (#106635) 2024-01-07 23:26:46 +01:00
Joost Lekkerkerker
426a1511d5 Mark Ring battery and signal strength sensors as diagnostic (#107503) 2024-01-07 23:14:38 +01:00
tronikos
810c6ea5ae Google Generative AI: Add a service for prompts consisting of text and images using Gemini Pro Vision (#105789)
* Bump google-generativeai to 0.3.1

* Migrate to the new API and default to gemini-pro

* Add max output tokens option

* Add generate_content service

* Add  tests

* additional checks

* async read_bytes

* Add tests for all errors
2024-01-07 16:21:27 -05:00
Marc Mueller
fd52172c33 Improve harmony typing (#107447) 2024-01-07 09:35:55 -10:00
Matthias Alphart
a9b51f0255 Fix KNX telegram device trigger not firing after integration reload (#107388) 2024-01-07 20:32:17 +01:00
David Bonnes
2a8444b245 Fix evohome high_precision temps not retreived consistently (#107366)
* initial commit

* doctweak

* remove hint

* doctweak
2024-01-07 20:04:14 +01:00
J. Nick Koston
75d591593d Remove calls to distribution and legacy zip support from package util (#107427) 2024-01-07 07:39:48 -10:00
J. Nick Koston
901b9365b4 Small cleanups to ESPHome callbacks (#107428) 2024-01-07 07:39:33 -10:00
Joost Lekkerkerker
15ce70606f Add typing to Lutron platforms (#107408)
* Add typing to Lutron platforms

* Update homeassistant/components/lutron/switch.py

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

* Update homeassistant/components/lutron/__init__.py

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

* Update homeassistant/components/lutron/entity.py

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

* Update homeassistant/components/lutron/scene.py

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

* Fix typing

* Fix typing

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-07 17:48:23 +01:00
Cyrill Raccaud
3139e92696 Fix Swiss public transport initial data for attributes (#107452)
faster initial data for attributes
2024-01-07 16:19:58 +01:00
Cyrill Raccaud
da8ce7bbf3 Fix local_todo typo (#107454)
local todo typo
2024-01-07 14:20:37 +01:00
G Johansson
840089b8ac Handle OSError during setup for System Monitor (#107396)
* Handle OSError during setup for System Monitor

* Clean string copy

* debug

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-07 13:15:34 +01:00
Raman Gupta
d19037a36b Clean up zwave_js test_removed_device test (#107346) 2024-01-07 12:26:08 +01:00
Marc Mueller
cd8adfc84e Improve flume typing (#107444) 2024-01-07 11:39:41 +01:00
Joost Lekkerkerker
cecb12a93c Remove name from faa_delays (#107418) 2024-01-07 11:27:13 +01:00
Michael
84b20edeca Add missing wifi data in AVM!Fritz Tools tests (#107373) 2024-01-07 10:51:31 +01:00
RJPoelstra
c833f275d6 Add select platform to Vogel's MotionMount integration (#107132) 2024-01-06 23:44:28 -10:00
Marc Mueller
e4ff51fa9a Enable strict typing for youtube (#107440) 2024-01-07 10:43:54 +01:00
Marc Mueller
d8c79964c8 Enable strict typing for waqi (#107439) 2024-01-07 10:43:42 +01:00
Marc Mueller
be68feffdd Enable strict typing for enphase_envoy (#107436) 2024-01-06 23:42:38 -10:00
Marc Mueller
5a39503acc Enable strict typing for led_ble (#107437) 2024-01-06 23:41:54 -10:00
Marc Mueller
de3fde5901 Enable strict typing for oralb (#107438) 2024-01-06 23:41:31 -10:00
Aaron Bach
c96f9864c5 Remove leftover Guardian mixin (#107424) 2024-01-06 23:06:45 -07:00
Aaron Bach
e446857001 Clean up buggy Guardian switch context managers (#107426) 2024-01-06 23:06:28 -07:00
Aaron Bach
50fbcaf20f Streamline exception handling in Guardian (#107053) 2024-01-06 12:56:19 -10:00
Elvio
fce869248c Update Apprise to 1.7.1 (#107383) 2024-01-06 23:44:20 +01:00
Brandon Rothweiler
3f2170bd06 Bump py-aosmith to 1.0.6 (#107409) 2024-01-06 12:01:11 -10:00
Marc Mueller
4ea8c174f5 Improve homekit_controller typing (#107381) 2024-01-06 11:02:30 -10:00
Ben Morton
427f7a7866 Add support for the Spotify DJ (#107268)
* Add support for the Spotify DJ playlist by mocking the playlist response
Add error handling for playlist lookup to ensure it doesn't break current playback state loading

* Run linters
Add exception type to playlist lookup error handling

* Fix typo in comment

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-06 17:22:46 +01:00
Brandon Rothweiler
4af47a4815 Add diagnostics to A. O. Smith integration (#106343)
* Add diagnostics to A. O. Smith integration

* Bump py-aosmith to 1.0.4

* remove redactions from test fixture
2024-01-06 17:16:24 +01:00
Marc-Olivier Arsenault
94885b9868 remove marcolivierarsenault from ecobee codeowners (#107377) 2024-01-06 16:29:50 +01:00
Josef Zweck
7385da626e Add new locks automatically to tedee integration (#107372)
* remove removed locks

* move duplicated code to function

* remove entities by removing device

* add new locks automatically

* add locks from coordinator

* remove other PR stuff

* add pullspring lock to test for coverage

* requested changes
2024-01-06 16:02:07 +01:00
Franck Nijhof
4eddbe7b47 2024.1.2 (#107365) 2024-01-06 13:17:47 +01:00
Franck Nijhof
cab833160d Bump version to 2024.1.2 2024-01-06 12:25:05 +01:00
David F. Mulcahey
003d2be477 Fix assertion error when unloading ZHA with pollable entities (#107311) 2024-01-06 12:24:35 +01:00
Sid
5a01b55fd1 enigma2: fix exception when device in deep sleep, fix previous track (#107296)
enigma2: fix exception when device in deep sleep; previous track
2024-01-06 12:24:32 +01:00
Shay Levy
0dbb4105bc Fix Shelly missing Gen value for older devices (#107294) 2024-01-06 12:24:29 +01:00
Joost Lekkerkerker
5ff6284e0f Fix passing correct location id to streamlabs water (#107291) 2024-01-06 12:24:25 +01:00
Aidan Timson
97674cee88 Fix support for play/pause functionality in System Bridge (#103423)
Fix support for play/pause functionality
2024-01-06 12:24:21 +01:00
Jan Bouwhuis
d6aaaf1f1a Only mock config_entries.HANDLERS for the current test in mock_config_flow (#107357) 2024-01-06 11:46:12 +01:00
J. Nick Koston
65985c4e0b Fix name of 64bit intel/amd arch in builder and wheels workflow (#107335) 2024-01-06 11:30:20 +01:00
Sid
9b1a8a1129 enigma2: fix exception when device in deep sleep, fix previous track (#107296)
enigma2: fix exception when device in deep sleep; previous track
2024-01-06 11:18:32 +01:00
Joost Lekkerkerker
a03ac3ddcd Fix passing correct location id to streamlabs water (#107291) 2024-01-06 10:50:06 +01:00
Marc Mueller
3086d33261 Fix rainforest_raven typing (#107309) 2024-01-06 10:41:25 +01:00
Marc Mueller
902d5a79ca Enable strict typing for p1_monitor (#107301) 2024-01-06 10:38:50 +01:00
Marc Mueller
135a718a0e Enable strict typing for energyzero (#107300) 2024-01-06 10:33:22 +01:00
Marc Mueller
28c0c2d2ad Enable strict typing for easyenergy (#107299) 2024-01-06 10:31:55 +01:00
J. Nick Koston
6ff990e2c2 Avoid fetching logger in check_if_deprecated_constant if there is nothing to log (#107341)
getLogger needs a threading lock so its nice to avoid
calling it if we are not going to log anything
2024-01-06 10:20:30 +01:00
J. Nick Koston
851ad21d11 Small cleanup to zeroconf properties matcher (#107342)
* Small cleanup to zeroconf properties matcher

- Switch to dict.items() to avoid dict key lookup
- return early when a match is rejected

* tweak
2024-01-06 10:16:57 +01:00
J. Nick Koston
44018a4183 Use faster identity checks for SupportsResponse Enum (#107351) 2024-01-06 10:12:31 +01:00
Aidan Timson
ba60290431 Fix support for play/pause functionality in System Bridge (#103423)
Fix support for play/pause functionality
2024-01-06 10:06:23 +01:00
jimmyd-be
ee67c97274 Add time entity to Renson (#105031)
* Add time entity to Renson

* Update homeassistant/components/renson/time.py

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

* remove deleted sensors from strings.json

* Fix Ruff issue

* Fixed loading issue

* Try to fix frozen error

* Revert "Try to fix frozen error"

This reverts commit 803104c2925e6d5acecc0a9d45170a0c85ee7f0e.

* Try to fix frozen error

* Revert "Try to fix frozen error"

This reverts commit 8ba2dcce9444fadcf6bf79e86295f93359b6d7b8.

* Update homeassistant/components/renson/time.py

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

* Change import + api argument

* use _attr_has_entity_name

* Update homeassistant/components/renson/time.py

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

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-06 09:27:34 +01:00
Paulus Schoutsen
f1d2868fd0 Add API to fetch Assist devices (#107333)
* Add API to fetch Assist devices

* Revert some changes to fixture, make a single fixture for an Assist device
2024-01-05 23:30:18 -05:00
nic
6201e81eca Bump zm-py version to v0.5.3 for zoneminder (#107331)
zm-py version bump for zoneminder

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-05 19:19:35 -08:00
J. Nick Koston
c86d1b03fc Disable thermobeacon voltage sensors by default (#107326) 2024-01-05 16:06:31 -10:00
Marc Mueller
4e62dacc00 Fix lutron test AttributeError (2) (#107324) 2024-01-06 01:15:50 +01:00
Marc Mueller
133fd6ea5d Fix lutron test AttributeError (#107323) 2024-01-06 00:51:17 +01:00
Joost Lekkerkerker
49284fb469 Fix duplicate unique_ids in emonitor (#107320) 2024-01-05 13:33:04 -10:00
Shay Levy
ad3c78f848 Fix Shelly missing Gen value for older devices (#107294) 2024-01-05 13:32:04 -10:00
David F. Mulcahey
2ed9397611 Fix assertion error when unloading ZHA with pollable entities (#107311) 2024-01-05 16:53:43 -05:00
Joost Lekkerkerker
2b43271c3b Move Lutron entry data to typed class (#107256)
* Move Lutron entry data to typed class

* Move Lutron entry data to typed class

* Exclude file

* Update homeassistant/components/lutron/__init__.py

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

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-05 22:04:10 +01:00
Roman Sivriver
bb03579bd9 Fix typo in recorder strings.json (#107278) 2024-01-05 20:39:04 +01:00
Joost Lekkerkerker
9672ca5719 Extract LutronDevice into separate file (#107285) 2024-01-05 20:38:02 +01:00
wilburCforce
52653220e3 Add code owner for Lutron (#107280)
* hassfest enable

* update code owner

* fix code owner typo

* removed garbage
2024-01-05 20:07:08 +01:00
J. Nick Koston
81458dbf6f Add test coverage for ESPHome state subscription (#107045) 2024-01-05 19:51:49 +01:00
Jan-Philipp Benecke
c81f909ee3 Use call_soon_threadsafe in mqtt client unsubscribe callback (#107266) 2024-01-05 19:45:56 +01:00
Michael Hansen
a600a0e023 Expose all areas to Assist and ignore empty aliases (#107267)
* Expose all areas to Assist

* Skip empty entity/area aliases
2024-01-05 13:45:41 -05:00
J. Nick Koston
24ee64e20c Convert cert_expiry to use asyncio (#106919) 2024-01-05 08:03:53 -10:00
Jan-Philipp Benecke
9a15a5b6c2 Cleanup and migrate rest_command tests to be async (#107264)
Migrate rest_command tests to be async
2024-01-05 18:53:25 +01:00
Marc Mueller
833cddc8f5 Improve conversation typing (#106905) 2024-01-05 18:40:34 +01:00
Marc Mueller
b2a4de6eed Enable strict typing for duotecno (#107261) 2024-01-05 18:39:18 +01:00
Marc Mueller
de72bbfaad Enable strict typing for minecraft_server (#107262) 2024-01-05 18:38:31 +01:00
Joost Lekkerkerker
3a94dd6578 Migrate Suez Water to has entity name (#107251) 2024-01-05 18:36:21 +01:00
Marc Mueller
f0b47bf00c Enable strict typing for downloader (#107263) 2024-01-05 18:35:05 +01:00
Marc Mueller
221fa48ea5 Improve denonavr typing (#106907) 2024-01-05 18:34:32 +01:00
Jan-Philipp Benecke
e80138dfdf Remove duplicate assignment of median and statistical_mode jinja2 filter (#106953) 2024-01-05 17:36:55 +01:00
Joost Lekkerkerker
3d338b5719 Sort Lutron platforms (#107257) 2024-01-05 17:31:50 +01:00
SLaks
9be9bbad61 Allow selecting of counter entities in derivative/integration config flow (#105321) 2024-01-05 16:46:12 +01:00
wilburCforce
be6cf7d3ae Add Lutron config flow (#98489)
* rough in structure for config_flow

* updated json files

* initial conversion to config_flow

* minor updates

* Update binary_sensor.py

* Update config_flow.py

* Update __init__.py

* updates beased on requested changes

* Update const.py

added doc note for ruff

* updated based on suggestions

* updated load xmldb for efficiency

* updated references

* removed unneeded file

* updated config flow to use GUID from XML DB

* minor update to change logging

* updated based on PR feedback

* reverted change for line 30 based on testing

* corrected user_input

* updated based on latest comments

* exception handling

* added raising of issues for config flow

* updated issues strings

* config flow test shell - needs work

* minor changes

* Update strings.json

* Update config_flow.py

* Update __init__.py

* Create conftest.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update strings.json

* Update requirements_test_all.txt

* Update strings.json

* Update strings.json

* Update config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Create test_init.py

* Update __init__.py

* Delete tests/components/lutron/test_init.py

* Update strings.json

* updated import parts and tested

* updated strings to improve user feedback

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-05 16:39:14 +01:00
Franck Nijhof
80a08199f8 Update Home Assistant Wheels action to 2024.01.0 (#107240) 2024-01-05 16:35:20 +01:00
Alexander Somov
d754ea7e22 Add new Rabbit Air integration (#66130)
* Add new Rabbit Air integration

* Remove py.typed file

It is not needed and was just accidentally added to the commit.

* Enable strict type checking for rabbitair component

Keeping the code fully type hinted is a good idea.

* Add missing type annotations

* Remove translation file

* Prevent data to be added to hass.data if refresh fails

* Reload the config entry when the options change

* Add missing type parameters for generics

* Avoid using assert in production code

* Move zeroconf to optional dependencies

* Remove unnecessary logging

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Remove unused keys from the manifest

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Replace property with attr

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Allow to return None for power

The type of the is_on property now allows this.

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Remove unnecessary method call

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Update the python library

The new version properly re-exports names from the package root.

* Remove options flow

Scan interval should not be part of integration configuration. This was
the only option, so the options flow can be fully removed.

* Replace properties with attrs

* Remove multiline ternary operator

* Use NamedTuple for hass.data

* Remove unused logger variable

* Move async_setup_entry up in the file

* Adjust debouncer settings to use request_refresh

* Prevent status updates during the cooldown period

* Move device polling code to the update coordinator

* Fix the problem with the switch jumping back and forth

The UI seems to have a timeout of 2 seconds somewhere, which is just a
little bit less than what we normally need to get an updated state. So
the power switch would jump to its previous state and then immediately
return to the new state.

* Update the python library

The new version fixes errors when multiple requests are executed
simultaneously.

* Fix incorrect check for pending call in debouncer

This caused the polling to stop.

* Fix tests

* Update .coveragerc to exclude new file.
* Remove test for Options Flow.

* Update the existing entry when device access details change

* Add Zeroconf discovery step

* Fix tests

The ZeroconfServiceInfo constructor now requires one more argument.

* Fix typing for CoordinatorEntity

* Fix signature of async_turn_on

* Fix depreciation warnings

* Fix manifest formatting

* Fix warning about debouncer typing

relates to 5ae5ae5392

* Wait for config entry platform forwards

* Apply some of the suggested changes

* Do not put the MAC address in the title. Use a fixed title instead.
* Do not format the MAC to use as a unique ID.
* Do not catch exceptions in _async_update_data().
* Remove unused _entry field in the base entity class.
* Use the standard attribute self._attr_is_on to keep the power state.

* Store the MAC in the config entry data

* Change the order of except clauses

OSError is an ancestor class of TimeoutError, so TimeoutError should be
handled first

* Fix depreciation warnings

* Fix tests

The ZeroconfServiceInfo constructor arguments have changed.

* Fix DeviceInfo import

* Rename the method to make it clearer what it does

* Apply suggestions from code review

* Fix tests

* Change speed/mode logic to use is_on from the base class

* A zero value is more appropriate than None

since None means "unknown", but we actually know that the speed is zero
when the power is off.

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-05 16:34:28 +01:00
Franck Nijhof
24a8a512d6 2024.1.1 (#107239) 2024-01-05 16:25:49 +01:00
Jan-Philipp Benecke
8bbfee7801 Make exceptions in rest_command services translatable (#107252) 2024-01-05 15:44:31 +01:00
MisterCommand
0d7627da22 Add Hong Kong Observatory integration (#98703)
* Add Hong Kong Observatory integration

* Move coordinator to a separate file

* Map icons to conditions

* Fix code for review

* Skip name

* Add typings to data_coordinator

* Some small fixes

* Rename coordinator.py
2024-01-05 14:52:46 +01:00
Richard Kroegel
e7573c3ed4 Add python_script response (#97937)
* Add response to python_script

* Reset output to empty dict if not valid dict

* Add tests for python_script response

* Raise Exceptions on service execution

* Add info on exception type

* Raise ServiceValidationError instead of ValueError

* Raise only on return_response=True

* Fix exception logger if no service response

* Create issue if exception is not raised

* Revert "Create issue if exception is not raised"

This reverts commit a61dd8619f.

---------

Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2024-01-05 14:30:15 +01:00
J. Nick Koston
8645d9c717 Bump aiohttp-zlib-ng to 0.3.0 (#107184) 2024-01-05 14:28:29 +01:00
RoboMagus
4485ece719 Add support for service response to RESTful command (#97208)
* Add ServiceResponse to rest_command

* Handle json and text responses.
Add Unit tests

* Rest command text output handling.
Prevent issue solved by PR#97777

* Re-raise exceptions as HomeAssistantError to enable 'continue_on_error' in scripts / automations.

* Improve test coverage

* Restructure to improve McCabe Complexity

* Remove LookupError

* Revert exception catching location

* Remove LookupError from exception handling
2024-01-05 14:27:42 +01:00
Scott K Logan
f249563608 Add Rainforest RAVEn integration (#80061)
* Add Rainforest RAVEn integration

* Add Rainforest Automation brand

* Add diagnostics to Rainforest RAVEn integration

* Drop a test assertion for an undefined behavior

* Add DEVICE_NAME test constant

* Catch up with reality

* Use Platform.SENSOR

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

* Make rainforest_raven translatable

* Stop setting device_class on unsupported scenarios

* Rename rainforest_raven.data -> rainforest_raven.coordinator

* Make _generate_unique_id more reusable

* Move device synchronization into third party library

* Switch from asyncio_timeout to asyncio.timeout

* Ignore non-electric meters

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

* Drop direct dependency on iso4217, bump aioraven

* Use RAVEn-specific exceptions

* Add timeouts to data updates

* Move DeviceInfo generation from Sensor to Coordinator

* Store meter macs as strings

* Convert to using SelectSelector

* Drop test_flow_user_invalid_mac

This test isn't necessary now that SelectSelector is used.

* Implement PR feedback

- Split some long format lines
- Simplify meter mac_id extraction in diagnostics
- Expose unique_id using an attribute instead of a property
- Add a comment about the meters dictionary shallow copy

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

* Simplify mac address redaction

Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>

* Freeze RAVEnSensorEntityDescription dataclass

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

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2024-01-05 14:00:54 +01:00
J. Nick Koston
824bb94d1d Add test coverage for ESPHome device info (#107034) 2024-01-05 14:00:38 +01:00
Maikel Punie
84d7be71e0 Bump velbus-aio to 2023.12.0 (#107066) 2024-01-05 13:40:00 +01:00
Grant
371ee1aa8e Add Tyua Product Category "dsd" for Filament Light (#106709)
* Add Product Category "dsd" support to tuya integration for Filament Lights

* remove unnecessary color_temp and color_data arguments

---------

Co-authored-by: Jan Čermák <sairon@users.noreply.github.com>
2024-01-05 13:36:57 +01:00
J. Nick Koston
bc539a946f Use identity checks for unifiprotect enums (#106795)
enums are singletons in this case and there is no need to use
the slower equality checks here
2024-01-05 13:27:10 +01:00
Franck Nijhof
658f1cf5c5 Bump version to 2024.1.1 2024-01-05 13:01:35 +01:00
Raman Gupta
d012817190 Bump zwave-js-server-python to 0.55.3 (#107225)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-05 13:01:06 +01:00
Joakim Sørensen
056701d218 Use supported_features_compat in update.install service (#107224) 2024-01-05 13:01:03 +01:00
Petru Paler
c3963b26e7 Fix entity property cache creation arguments (#107221) 2024-01-05 13:00:59 +01:00
tronikos
4ade5e46d9 Disable IPv6 in the opower integration to fix AEP utilities (#107203) 2024-01-05 13:00:55 +01:00
Brett Adams
c242dcd1f2 Hotfix cache logic bug in Tessie (#107187) 2024-01-05 13:00:52 +01:00
Michael
4e126d68b7 Fix switch states in AVM FRITZ!Box Tools (#107183) 2024-01-05 13:00:49 +01:00
Erwin Douna
d7e1a4fa20 Bump to PyTado 0.17.3 (#107181) 2024-01-05 13:00:46 +01:00
J. Nick Koston
3215dfee6d Bump aiohomekit to 3.1.2 (#107177) 2024-01-05 13:00:43 +01:00
Matt Emerick-Law
c78d691d30 Bump Orvibo to 1.1.2 (#107162)
* Bump python-orvibo version

Fixes https://github.com/home-assistant/core/issues/106923

* Add version number

* Remove version

* Bump python-orvibo version
2024-01-05 13:00:39 +01:00
Bram Kragten
04bf569308 Update frontend to 20240104.0 (#107155) 2024-01-05 13:00:36 +01:00
Erik Montnemery
b8576b8091 Include deprecated constants in wildcard imports (#107114) 2024-01-05 13:00:33 +01:00
J. Nick Koston
a7aa5c0e52 Bump habluetooth to 2.0.2 (#107097) 2024-01-05 13:00:29 +01:00
J. Nick Koston
d600b76801 Fix missing backwards compatibility layer for water_heater supported_features (#107091) 2024-01-05 13:00:26 +01:00
Erik Montnemery
c56d118e8b Deduplicate handling of duplicated constants (#107074)
* Deduplicate handling of duplicated constants

* Use DeprecatedConstant + DeprecatedConstantEnum

* Fixup

* Remove test cases with unnamed tuples
2024-01-05 13:00:23 +01:00
Robert Resch
80b45edb2e Fix mobile_app cloudhook creation (#107068) 2024-01-05 13:00:20 +01:00
Joost Lekkerkerker
5529a85a2b Fix data access in streamlabs water (#107062)
* Fix data access in streamlabs water

* Fix data access in streamlabs water
2024-01-05 13:00:17 +01:00
Joost Lekkerkerker
e2acc70128 Use async_register in streamlabswater (#107060) 2024-01-05 13:00:14 +01:00
J. Nick Koston
427077a4c9 Fix missing backwards compatiblity layer for humidifier supported_features (#107026)
fixes #107018
2024-01-05 13:00:10 +01:00
Maciej Bieniek
8c9875c3cc Get Shelly RPC device gen from config entry data (#107019)
Use gen from config entry data
2024-01-05 13:00:07 +01:00
Sid
ce5455fefc Bump openwebifpy to 4.0.4 (#107000) 2024-01-05 13:00:04 +01:00
Ståle Storø Hauknes
aef129afaf Close stale connections (Airthings BLE) (#106748)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-05 13:00:01 +01:00
Sid
1c94a94ba2 bump openwebifpy to 4.0.3 (#106593) 2024-01-05 12:59:56 +01:00
Patrick Frazer
d87baba96f Bump dropmqttapi to 1.0.2 (#106978) 2024-01-05 12:57:58 +01:00
Joe Neuman
5a0997bac0 Fix qBittorrent torrent count when empty (#106903)
* Fix qbittorrent torrent cound when empty

* lint fix

* Change based on comment
2024-01-05 12:57:55 +01:00
Marc Mueller
e70af204ee Enable strict typing for airthings_ble (#106815) 2024-01-05 12:57:50 +01:00
Raman Gupta
85cdbb5ade Bump zwave-js-server-python to 0.55.3 (#107225)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-05 12:38:00 +01:00
Joost Lekkerkerker
6033a7c3d4 Finish Efergy entity translations (#107152) 2024-01-05 12:32:32 +01:00
Erik Montnemery
c805ea7b4f Include deprecated constants in wildcard imports (#107114) 2024-01-05 11:46:45 +01:00
Robert Resch
c063bf403a Fix mobile_app cloudhook creation (#107068) 2024-01-05 10:53:59 +01:00
Joakim Sørensen
6da82cf07e Use supported_features_compat in update.install service (#107224) 2024-01-05 10:38:54 +01:00
J. Nick Koston
2641e4014a Add color temp support for older HomeKit devices (#107206) 2024-01-04 22:50:26 -10:00
Jan Bouwhuis
f0ec1235b1 Remove naming warnings and work-a-rounds for incorrectly configured MQTT entities (#107188)
* Remove naming warnings for MQTT entities

* Remove unused const
2024-01-05 09:32:22 +01:00
Jan Bouwhuis
8c4a29c200 Remove unneeded preset_mode checks for mqtt climate (#107190) 2024-01-05 09:27:48 +01:00
Jan Bouwhuis
c7b6c9da31 Remove work-a-round for mqtt sensors with an entity_category set to config (#107199)
* Remove work-a-round for mqtt sensors with an entity_category set to `config`

* Cleanup strings
2024-01-05 09:24:52 +01:00
Petru Paler
4a2958baeb Fix entity property cache creation arguments (#107221) 2024-01-05 09:18:25 +01:00
Brett Adams
ace4edf91c Hotfix cache logic bug in Tessie (#107187) 2024-01-05 08:23:43 +01:00
J. Nick Koston
298e2e2b99 Attempt to fix 32bit docker builds (#107210) 2024-01-05 08:23:04 +01:00
J. Nick Koston
8017661d31 Change default python version to 3.12 for image builds (#107209) 2024-01-05 08:21:26 +01:00
Martin Hjelmare
00ff93a69e Set zwave_js voltage sensor suggested precision (#107116) 2024-01-05 01:03:28 -05:00
J. Nick Koston
d67c8bb44f Bump bluetooth-adapters to 0.17.0 (#107195)
changelog: https://github.com/Bluetooth-Devices/bluetooth-adapters/compare/v0.16.2...v0.17.0

related https://github.com/home-assistant/operating-system/issues/2944
2024-01-05 06:54:46 +01:00
tronikos
2a9a046fab Disable IPv6 in the opower integration to fix AEP utilities (#107203) 2024-01-04 15:07:15 -10:00
Joost Lekkerkerker
72e908f6cc Fix conversation snapshots (#107196) 2024-01-05 00:41:52 +01:00
Michael Hansen
269500cb29 Report missing entities/areas instead of failing to match in Assist (#107151)
* Report missing entities/areas instead of failing

* Fix test

* Update assist pipeline test snapshots

* Test complete match failure

* Fix conflict
2024-01-04 17:09:20 -06:00
Erwin Douna
1a7b06f66a Bump to PyTado 0.17.3 (#107181) 2024-01-04 23:41:56 +01:00
Michael
9b8f0e1ee9 Fix switch states in AVM FRITZ!Box Tools (#107183) 2024-01-04 23:36:36 +01:00
J. Nick Koston
f5e7631e84 Fix tplink overloading power strips (#104208) 2024-01-04 12:15:35 -10:00
Ash Hopkins
0ff5ccb7fd Update sensorpush-ble library to 1.6.1 (#107168) 2024-01-04 12:00:06 -10:00
J. Nick Koston
61eb613128 Bump aiohomekit to 3.1.2 (#107177) 2024-01-04 11:21:01 -10:00
Joost Lekkerkerker
34a8812fc3 Introduce base entity in streamlabs water (#107095) 2024-01-04 21:52:38 +01:00
Aaron Bach
3caaf2931f Clean up outdated entity replacement logic in Guardian (#107160) 2024-01-04 21:50:45 +01:00
Denis Shulyaka
99bcc38284 Add conversation_id parameter to conversation.process service (#106078)
* Add conversation_id parameter to conversation.process service

* fix test

* fix tests
2024-01-04 14:46:06 -06:00
Josef Zweck
34e6fa3328 Pass aiohttp clientsession to tedee integration (#107089)
* pass aiohttpsession

* Update homeassistant/components/tedee/config_flow.py

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

* Update homeassistant/components/tedee/__init__.py

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

* move to coordinator

---------

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-04 21:42:38 +01:00
Franck Nijhof
fd3a546cd8 Update Home Assistant base image to 2024.01.0 - Python 3.12 (#107175) 2024-01-04 21:42:03 +01:00
Joost Lekkerkerker
eee6693855 Remove precision in streamlabs water (#107096) 2024-01-04 21:41:45 +01:00
Paul Holzinger
11170c6345 Pass down language to hassil (#106490)
Hassil needs the language to convert numbers, this was added in
https://github.com/home-assistant/hassil/pull/78. This fixes an
annoying warning from the logs.

Fixes #104760
2024-01-04 14:40:49 -06:00
Joost Lekkerkerker
8b1db37a85 Use snapshots in Glances sensor tests (#107159)
* Use snapshots in Glances sensor tests

* yes
2024-01-04 21:32:31 +01:00
J. Nick Koston
bc26377c16 Cache homekit_controller supported features (#106702) 2024-01-04 10:31:09 -10:00
Jan Rieger
f2514c0bde Migrate AVM FRITZ!Box Call monitor to has entity name (#99752)
* Migrate AVM FRITZ!Box Call monitor to has entity name

* Update homeassistant/components/fritzbox_callmonitor/strings.json

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

* Update homeassistant/components/fritzbox_callmonitor/strings.json

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

* Update sensor.py

* Update sensor.py

* Update strings.json

* Use translation placeholders

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-04 21:26:12 +01:00
Joost Lekkerkerker
bf229be7bb Migrate Emonitor to has entity name (#107153) 2024-01-04 21:17:23 +01:00
Matt Emerick-Law
eb320b69bc Bump Orvibo to 1.1.2 (#107162)
* Bump python-orvibo version

Fixes https://github.com/home-assistant/core/issues/106923

* Add version number

* Remove version

* Bump python-orvibo version
2024-01-04 20:41:12 +01:00
Bram Kragten
afb5f3c031 Update frontend to 20240104.0 (#107155) 2024-01-04 19:45:18 +01:00
Jan Bouwhuis
5c82c39936 Reorganize drop_connect tests (#107148) 2024-01-04 17:48:31 +01:00
J. Nick Koston
0695bf8988 Move group helpers into their own module (#106924)
This gets rid of the legacy need to use bind_hass, and
the expand function no longer looses typing.
2024-01-04 17:34:56 +01:00
Jan Bouwhuis
6a02cadc13 Rework drop_connect switch, select and coordinator tests and cleanup fixtures (#107119)
* Refactor drop_connect switch and select tests

* Update coordinator tests, cleanup fixtures
2024-01-04 16:17:48 +01:00
J. Nick Koston
40d034cd8c Revert "Bump aiohttp-zlib-ng to 0.2.0 (#106691)" (#107109) 2024-01-04 15:34:43 +01:00
Martin Hjelmare
80a616d237 Remove zwave_js numeric sensor rounding (#107100) 2024-01-04 13:49:15 +01:00
J. Nick Koston
0ccf8ffbc6 Bump habluetooth to 2.0.2 (#107097) 2024-01-04 02:45:47 -10:00
Franck Nijhof
6debd112af Merge branch 'master' into dev 2024-01-04 13:35:57 +01:00
Erik Montnemery
9eefd95e91 Deduplicate handling of duplicated constants (#107074)
* Deduplicate handling of duplicated constants

* Use DeprecatedConstant + DeprecatedConstantEnum

* Fixup

* Remove test cases with unnamed tuples
2024-01-04 13:25:09 +01:00
J. Nick Koston
1a08bcce77 Fix missing backwards compatibility layer for water_heater supported_features (#107091) 2024-01-04 02:21:52 -10:00
Jan Bouwhuis
10f5ce2dc0 Refactor drop tests for binary_sensor (#107090) 2024-01-04 13:12:11 +01:00
Joost Lekkerkerker
5ae8b6bc02 Add entity descriptions to Streamlabs water (#107071)
* Add sensor tests to Streamlabs water

* Add sensor tests to Streamlabs water

* Use entity descriptions in streamlabs water

* Use entity descriptions in streamlabs water

* Use entity descriptions in streamlabs water

* Add translations
2024-01-04 11:53:04 +01:00
Jan Bouwhuis
5508bb3ef9 Refactor drop sensor tests (#106965)
* Refactor drop sensor tests

* Setup the config entry instead of the component
2024-01-04 10:43:04 +01:00
Franck Nijhof
26055ee636 Update home-assistant/builder to 2024.01.0 (#107069) 2024-01-04 10:19:45 +01:00
Joost Lekkerkerker
333711d951 Add sensor tests to Streamlabs water (#107065) 2024-01-04 09:57:00 +01:00
rappenze
254abeeb4f Remove dead code in fibaro light (#106890) 2024-01-04 09:45:08 +01:00
J. Nick Koston
9c69212ad5 Add test coverage for ESPHome service calls (#107042) 2024-01-04 09:37:56 +01:00
Thomas Kistler
4b3a1b5d2d Update pydrawise to 2024.1.0 (#107032) 2024-01-04 09:36:24 +01:00
J. Nick Koston
a83ab403c1 Small cleanups to denonavr (#107050) 2024-01-04 09:35:13 +01:00
Joost Lekkerkerker
dd6c5e89ef Fix data access in streamlabs water (#107062)
* Fix data access in streamlabs water

* Fix data access in streamlabs water
2024-01-04 09:13:34 +01:00
Joost Lekkerkerker
85a1d8b34c Use async_register in streamlabswater (#107060) 2024-01-04 09:11:44 +01:00
Joshua Krall
53717523e5 Add button platform to Opengarage (#103569)
* Add button entity to reboot OpenGarage device

* Addressing code review comments

* Another code-review fix

* Update homeassistant/components/opengarage/button.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-04 07:37:24 +01:00
Aaron Bach
4fa76801af Re-architect Guardian to use better entity descriptions and properties (#107028)
* Re-architect Guardian to use better entity descriptions and properties

* Reduce blast area

* Code review

* Remove mixins
2024-01-03 22:17:12 -07:00
Rami Mosleh
2331f89936 Issue warning if glances server version is 2 (#105887)
* Issue warning if glances server version is 2

* Auto detect api version

* Apply suggestions

* Add HA version deprecation

* Apply suggestions from code review

* update config flow tests

* Fix breaks in ha version

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-04 05:17:43 +01:00
Paulus Schoutsen
890615bb92 Ring: Add partial back (#107040) 2024-01-03 15:52:05 -10:00
Jan-Philipp Benecke
0183affc7c Use call_soon_threadsafe in token updater of Ring (#106984)
Use call_soon_threadsafe in token update of Ring
2024-01-03 19:59:02 -05:00
J. Nick Koston
4f213f6df3 Fix first ESPHome device update entity not offering install feature (#106993)
In the case where the user gets their first ESPHome device such as a RATGDO,
they will usually add the device first in HA, and than find the dashboard.

The install function will be missing because we do not know if the dashboard
supports updating devices until the first device is added. We now set the
supported features when we learn the version when the first device is added
2024-01-03 19:58:04 -05:00
J. Nick Koston
962c449009 Add missing coverage for esphome_state_property decorator (#106998) 2024-01-03 19:54:28 -05:00
J. Nick Koston
8d2ddb6a04 Small cleanups to ESPHome light platform (#107003)
- Remove unreachable code
- Cache filtering when possible
- Add missing coverage
2024-01-03 19:53:48 -05:00
Tom Harris
d535409349 Bump pyinsteon (#107010) 2024-01-03 19:48:57 -05:00
J. Nick Koston
01d0031e09 Fix ESPHome service removal when the device name contains a dash (#107015)
* Fix ESPHome service removal when the device name contains a dash

If the device name contains a dash the service name is mutated to
replace the dash with an underscore, but the remove function did
not do the same mutation so it would fail to remove the service

* add more coverage

* more cover
2024-01-03 19:47:49 -05:00
Maciej Bieniek
afcf8c9718 Get Shelly RPC device gen from config entry data (#107019)
Use gen from config entry data
2024-01-03 19:45:59 -05:00
J. Nick Koston
987663e4de Fix missing backwards compatiblity layer for humidifier supported_features (#107026)
fixes #107018
2024-01-03 19:41:50 -05:00
Sid
bcc7570d81 Bump openwebifpy to 4.0.4 (#107000) 2024-01-03 19:40:59 -05:00
Robbert Verbruggen
bba24a1251 Bump rachiopy to 1.1.0 (#106975) 2024-01-03 22:56:50 +01:00
Patrick Frazer
aad2f2cd45 Bump dropmqttapi to 1.0.2 (#106978) 2024-01-03 21:10:00 +01:00
Ståle Storø Hauknes
dde4217b2b Close stale connections (Airthings BLE) (#106748)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-03 10:08:58 -10:00
Franck Nijhof
fb0cc6c5d0 2024.1.0 (#106970) 2024-01-03 18:15:49 +01:00
Michael
eb01998395 Add support for placeholders in entity name translations (#104453)
* add placeholder support to entity name translation

* add negativ tests

* make property also available via description

* fix doc string in translation_placeholders()

* fix detection of placeholder

* validate placeholders for localized strings

* add test

* Cache translation_placeholders property

* Make translation_placeholders uncondotionally return dict

* Fall back to unsubstituted name in case of mismatch

* Only replace failing translations with English

* Update snapshots

* Blow up on non stable releases

* Fix test

* Update entity.py

---------

Co-authored-by: Erik <erik@montnemery.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-03 17:34:47 +01:00
Franck Nijhof
15cecbd4a4 Bump version to 2024.1.0 2024-01-03 17:13:22 +01:00
Franck Nijhof
8cf47c4925 Bump version to 2024.1.0b8 2024-01-03 15:29:59 +01:00
Bram Kragten
cd8d95a04d Update frontend to 20240103.3 (#106963) 2024-01-03 15:29:51 +01:00
Jonas Fors Lellky
015752ff11 Set precision to halves in flexit_bacnet (#106959)
flexit_bacnet: set precision to halves for target temperature
2024-01-03 15:29:48 +01:00
jan iversen
9d697c5026 Only set precision in modbus if not configured. (#106952)
Only set precision if not configured.
2024-01-03 15:29:42 +01:00
Bram Kragten
4595c3edaa Update frontend to 20240103.1 (#106948) 2024-01-03 15:29:38 +01:00
Robert Resch
e745542431 Fix creating cloud hook twice for mobile_app (#106945) 2024-01-03 15:29:33 +01:00
Bram Kragten
d071299233 Update frontend to 20240103.3 (#106963) 2024-01-03 15:28:22 +01:00
Jonas Fors Lellky
e2b2732a90 Set precision to halves in flexit_bacnet (#106959)
flexit_bacnet: set precision to halves for target temperature
2024-01-03 14:43:17 +01:00
CR-Tech
df97b0e945 Removed double assignment of _attr_target_temperature_step in __init__ (#106611)
Removed double/wrong assignement of _attr_target_temperature_step into climate Init routine
2024-01-03 13:44:14 +01:00
jan iversen
40d4061fc5 Only set precision in modbus if not configured. (#106952)
Only set precision if not configured.
2024-01-03 13:42:55 +01:00
Bram Kragten
a7ec78601e Update frontend to 20240103.1 (#106948) 2024-01-03 13:18:09 +01:00
Robert Resch
c90f6f2fea Fix creating cloud hook twice for mobile_app (#106945) 2024-01-03 12:29:05 +01:00
Franck Nijhof
2be72fd891 Bump version to 2024.1.0b7 2024-01-03 11:35:43 +01:00
Bram Kragten
2b43f5fcda Update frontend to 20240103.0 (#106942) 2024-01-03 11:35:35 +01:00
Erwin Douna
3295722e70 Change Tado deprecation version to 2024.7.0 (#106938)
Change version to 2024.7.0
2024-01-03 11:35:30 +01:00
Bram Kragten
be6ceb020e Update frontend to 20240103.0 (#106942) 2024-01-03 11:32:48 +01:00
Erwin Douna
8ad66c11b0 Change Tado deprecation version to 2024.7.0 (#106938)
Change version to 2024.7.0
2024-01-03 10:30:32 +01:00
Franck Nijhof
f98bbf88b1 Bump version to 2024.1.0b6 2024-01-03 09:56:28 +01:00
Michael
0226b3f10c Remove group_members from significant attributes in media player (#106916) 2024-01-03 09:55:55 +01:00
Jan-Philipp Benecke
5986967db7 Avoid triggering ping device tracker home after restore (#106913) 2024-01-03 09:55:52 +01:00
Michael Hansen
95ef2dd7f9 Bump intents to 2024.1.2 (#106909) 2024-01-03 09:55:49 +01:00
Erwin Douna
527d9fbb6b Add try-catch for invalid auth to Tado (#106774)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-03 09:55:45 +01:00
Michael
5eb1073b4a Apply late review comments on media player (#106727) 2024-01-03 09:55:41 +01:00
Erwin Douna
59a01fcf9c Add try-catch for invalid auth to Tado (#106774)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-03 09:15:39 +01:00
J. Nick Koston
7b3ec60f90 Speed up getting the mean of statistics (#106930)
All the values we need to get the mean for are always list[float]
so we can use a much simpler algorithm to get the mean of the list
2024-01-03 09:13:23 +01:00
J. Nick Koston
710e55fb09 Bump SQLAlchemy to 2.0.25 (#106931)
* Bump SQLAlchemy to 2.0.25

changelog: https://docs.sqlalchemy.org/en/20/changelog/changelog_20.html#change-2.0.25

* drop unused ignore now that upstream is fixed
2024-01-03 09:12:35 +01:00
Marc Mueller
b3f997156a Enable strict typing for counter (#106906) 2024-01-03 09:06:26 +01:00
Jan-Philipp Benecke
32b6e4d5de Bump aioelectricitymaps to v0.1.6 (#106932) 2024-01-03 08:52:41 +01:00
Jan-Philipp Benecke
938c32d35e Avoid triggering ping device tracker home after restore (#106913) 2024-01-03 06:40:42 +01:00
Joe Neuman
711498793a Fix qBittorrent torrent count when empty (#106903)
* Fix qbittorrent torrent cound when empty

* lint fix

* Change based on comment
2024-01-03 00:19:00 +01:00
Michael
f66438b0ce Remove group_members from significant attributes in media player (#106916) 2024-01-02 23:47:32 +01:00
steffenrapp
608d52f167 Add translatable title to holiday (#106825) 2024-01-02 23:40:38 +01:00
Josef Zweck
87c79ef57f Add tedee bridge as via_device for tedee integration (#106914)
* add bridge as via_device

* add bridge as via_device

* move getting bridge to update_data

* add bridge property
2024-01-02 23:23:50 +01:00
Michael Hansen
5003993658 Bump intents to 2024.1.2 (#106909) 2024-01-02 15:35:48 -06:00
Marc Mueller
f0d520d91f Remove assert for unique_id (#106910)
* Remove assert for unique_id

* Use str | None return instead
2024-01-02 22:01:12 +01:00
Franck Nijhof
77cdc10883 Bump version to 2024.1.0b5 2024-01-02 20:59:49 +01:00
Bram Kragten
5100ba252f Update frontend to 20240102.0 (#106898) 2024-01-02 20:59:40 +01:00
Allen Porter
b5b8bc3102 Improve To-do service error handling (#106886) 2024-01-02 20:59:37 +01:00
Allen Porter
6f18a29241 Improve fitbit authentication error handling (#106885) 2024-01-02 20:59:34 +01:00
David F. Mulcahey
596f855eab Bump Zigpy to 0.60.4 (#106870) 2024-01-02 20:59:31 +01:00
J. Nick Koston
5877fe135c Close stale connections in yalexs_ble to ensure setup can proceed (#106842) 2024-01-02 20:59:28 +01:00
J. Nick Koston
26cf30fc3a Update switchbot to use close_stale_connections_by_address (#106835) 2024-01-02 20:59:25 +01:00
Sid
3419b8d082 Move urllib3 constraint to pyproject.toml (#106768) 2024-01-02 20:59:22 +01:00
Robert Groot
35fc26457b Changed setup of EnergyZero services (#106224)
* Changed setup of energyzero services

* PR review updates

* Dict access instead of get

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

* Added tests for unloaded state

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-02 20:59:18 +01:00
Marc Mueller
1526c321f1 Enable strict typing for axis (#106844) 2024-01-02 20:55:59 +01:00
J. Nick Koston
e1f078b70a Bump aiohttp-zlib-ng to 0.2.0 (#106691) 2024-01-02 20:50:26 +01:00
Marc Mueller
43fa51b696 Enable strict typing for blueprint (#106887) 2024-01-02 20:48:51 +01:00
J. Nick Koston
9231e00561 Update switchbot to use close_stale_connections_by_address (#106835) 2024-01-02 20:44:17 +01:00
Bram Kragten
584b6c2862 Update frontend to 20240102.0 (#106898) 2024-01-02 20:42:27 +01:00
J. Nick Koston
73b36086cf Avoid tuple construction to check HKC available (#106902) 2024-01-02 20:41:54 +01:00
Marc Mueller
fde03d7888 Enable strict typing for co2signal (#106888) 2024-01-02 20:41:39 +01:00
Marc Mueller
dcee8e67c4 Add strict typing to command_line (#106889)
* Add strict typing to command_line

* Code review
2024-01-02 20:04:28 +01:00
Allen Porter
943fb2791e Improve To-do service error handling (#106886) 2024-01-02 19:50:28 +01:00
J. Nick Koston
afed45d5d0 Replace intersection with isdisjoint in apple_tv config flow (#106633) 2024-01-02 17:58:00 +01:00
Allen Porter
2e4c4729c4 Improve fitbit authentication error handling (#106885) 2024-01-02 17:51:15 +01:00
J. Nick Koston
54ba00095b Close stale connections in yalexs_ble to ensure setup can proceed (#106842) 2024-01-02 17:50:10 +01:00
Phil Bruckner
4bfeb87377 Remove deprecated Life360 yaml configuration (#106286) 2024-01-02 17:43:33 +01:00
Franck Nijhof
2d0325a471 Mark stt entity component as strictly typed (#106723)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-02 17:07:47 +01:00
Erik Montnemery
e7b0bf2453 Disable polling in time_date sensor (#106881) 2024-01-02 16:50:07 +01:00
Erik Montnemery
a7f4d426ee Handle time zone change in time_date (#106880) 2024-01-02 16:28:22 +01:00
Erik Montnemery
03cbf8b28d Fix state update in time_date sensor (#106879) 2024-01-02 16:22:16 +01:00
Erik Montnemery
513261baff Improve time_date tests (#106878) 2024-01-02 16:04:38 +01:00
starkillerOG
ba0cb3bd05 Add Reolink image settings (#105415) 2024-01-02 15:39:28 +01:00
J. Nick Koston
09b65f14b9 Index entities by domain for entity services (#106759) 2024-01-02 15:28:58 +01:00
David F. Mulcahey
bf0d891f68 Bump Zigpy to 0.60.4 (#106870) 2024-01-02 08:59:45 -05:00
Erik Montnemery
8f8c0ef13b Deprecate 'beat' display option in Time & Date (#106871)
* Deprecate 'beat' display option in Time & Date

* Move deprecation warning

* Update homeassistant/components/time_date/const.py

Co-authored-by: Sander <developer@golles.nl>

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Sander <developer@golles.nl>
2024-01-02 14:11:45 +01:00
Erik Montnemery
8f9bd75a36 Enable strict typing of date_time (#106868)
* Enable strict typing of date_time

* Fix parse_datetime

* Add test

* Add comments

* Update tests/util/test_dt.py

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

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-02 13:57:25 +01:00
Michael
15cdd42c99 Apply late review comments on media player (#106727) 2024-01-02 13:37:58 +01:00
Sid
729a0fbcd5 Move urllib3 constraint to pyproject.toml (#106768) 2024-01-02 13:34:19 +01:00
steffenrapp
0b9242f809 Add translatable title to logbook (#106810) 2024-01-02 13:30:04 +01:00
Marc Mueller
6e6575afe5 Enable strict typing for apache_kafka (#106823) 2024-01-02 13:29:38 +01:00
Franck Nijhof
06fa306821 Mark humidifier entity component as strictly typed (#106721)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-02 13:29:07 +01:00
Jan-Philipp Benecke
d2a03a4706 Avoid unnecessary domain dataclass in Discovergy (#106869) 2024-01-02 13:28:55 +01:00
Josef Zweck
f0132a6b88 Add reauthentication for tedee integration (#106667)
* start work

* add reauth

* title

* reuse user step for reauth

* Update strings.json

* simplify flow

* remove inline if

* remove await hass block
2024-01-02 13:28:15 +01:00
Robert Groot
2df9e5e7b9 Changed setup of EnergyZero services (#106224)
* Changed setup of energyzero services

* PR review updates

* Dict access instead of get

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

* Added tests for unloaded state

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-02 13:24:17 +01:00
Joost Lekkerkerker
0d7bb2d124 Improve entity descriptions in Tami4 (#106776)
* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4
2024-01-02 13:11:19 +01:00
Marc Mueller
4747460286 Enable strict typing for arwn (#106840) 2024-01-02 13:07:47 +01:00
Franck Nijhof
fc66dead64 Bump version to 2024.1.0b4 2024-01-02 12:59:23 +01:00
Erik Montnemery
056b06de13 Don't use entity_id in __repr__ of not added entity (#106861) 2024-01-02 12:59:11 +01:00
Matt Zimmerman
e604bc8c9b Map missing preset mapping for heat mode "ready" in smarttub (#106856) 2024-01-02 12:59:08 +01:00
J. Nick Koston
59bed57d48 Fix incorrect state in Yale Access Bluetooth when lock status is unknown (#106851) 2024-01-02 12:59:05 +01:00
J. Nick Koston
8c25e2610e Bump yalexs-ble to 2.4.0 (#106834) 2024-01-02 12:59:01 +01:00
J. Nick Koston
38b8a1f95d Bump pySwitchbot to 0.43.0 (#106833) 2024-01-02 12:58:58 +01:00
J. Nick Koston
54a87cf047 Bump bleak-retry-connector to 3.4.0 (#106831) 2024-01-02 12:58:55 +01:00
Bram Kragten
448e98eac5 Update frontend to 20240101.0 (#106808) 2024-01-02 12:58:52 +01:00
Maikel Punie
6ca3c7a673 Bump pyduotecno to 2024.1.1 (#106801)
* Bump pyduotecno to 2024.0.1

* Bump pyduotecno to 2024.1.0

* small update
2024-01-02 12:58:49 +01:00
J. Nick Koston
b1a55e9b19 Fix emulated_hue brightness check (#106783) 2024-01-02 12:58:46 +01:00
David Knowles
16d3d88fa3 Bump pyschlage to 2023.12.1 (#106782) 2024-01-02 12:58:43 +01:00
Christopher Bailey
39960caf36 Bump pyunifiprotect to v4.22.5 (#106781) 2024-01-02 12:58:40 +01:00
Benjamin Richter
e6d2721d1b Fix fints account type check (#106082) 2024-01-02 12:58:37 +01:00
David Knowles
fedb63720c Fix Hydrawise data not refreshing (#105923)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-02 12:58:34 +01:00
Luke Lashley
77286e8f59 Constrain dacite to at least 1.7.0 (#105709) 2024-01-02 12:58:31 +01:00
Jan-Philipp Benecke
bdaf269ba3 Migrate geo_rss_events test to use freezegun (#105895) 2024-01-02 12:53:36 +01:00
Jan-Philipp Benecke
e3b09a5470 Migrate vizio tests to use freezegun (#105417) 2024-01-02 12:53:03 +01:00
J. Nick Koston
038e55a2cb Fix emulated_hue brightness check (#106783) 2024-01-02 12:51:05 +01:00
J. Nick Koston
3f1263a533 Refactor light platform to avoid duplicate property calls (#106857) 2024-01-02 12:49:53 +01:00
J. Nick Koston
73bc65059b Use shorthand attr for screenlogic climate preset modes (#106858) 2024-01-02 12:48:34 +01:00
J. Nick Koston
bbdccede85 Refactor restore state saving to avoid a dict lookup of ATTR_RESTORED (#106854) 2024-01-02 12:48:14 +01:00
Stanislas
41646a6514 Xiaomi MIIO: fix typo in error log (#106852) 2024-01-02 12:47:16 +01:00
David Knowles
6f339541c6 Fix Hydrawise data not refreshing (#105923)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-02 12:46:39 +01:00
J. Nick Koston
1cbacd13aa Use identity checks for HassJobType (#106860) 2024-01-02 12:33:02 +01:00
vexofp
ef261842ac Pass default SSLContext instances to Octoprint custom HTTP sessions (#105351) 2024-01-02 11:59:40 +01:00
J. Nick Koston
93a29ebf2f Bump yalexs-ble to 2.4.0 (#106834) 2024-01-02 11:41:56 +01:00
J. Nick Koston
21fc3203a6 Bump pySwitchbot to 0.43.0 (#106833) 2024-01-02 11:39:04 +01:00
Marc Mueller
8903aecb77 Enable strict typing for airthings (#106814) 2024-01-02 11:38:20 +01:00
J. Nick Koston
d89683f980 Fix incorrect state in Yale Access Bluetooth when lock status is unknown (#106851) 2024-01-02 11:37:51 +01:00
J. Nick Koston
e40faf957e Bump bleak-esphome to 0.4.1 (#106832) 2024-01-02 11:37:18 +01:00
Erik Montnemery
599271fdc0 Don't use entity_id in __repr__ of not added entity (#106861) 2024-01-02 11:35:16 +01:00
Josef Zweck
97a5f0b2af Add diagnostics for tedee (#106662)
* add diagnostics

* don't redact lock name

* Update test_diagnostics.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-02 10:34:02 +01:00
Benjamin Richter
b27e830997 Fix fints account type check (#106082) 2024-01-02 09:59:13 +01:00
Robert Hillis
7396bc61d7 Set entity category and device class for Netgear LTE entities (#106661)
* Set entity category and device class for Netgear

* add suggested unit of measure and precision
2024-01-02 09:55:06 +01:00
J. Nick Koston
a4f0c84457 Reduce duplicate code in json_loads (#106859) 2024-01-01 20:25:23 -10:00
Bram Kragten
391123beb0 Update frontend to 20240101.0 (#106808) 2024-01-01 18:15:34 -10:00
Marc Mueller
d93d25a7d1 Enable strict typing for ambiclimate (#106819) 2024-01-01 18:09:22 -10:00
Luke Lashley
cc18b9a2d8 Constrain dacite to at least 1.7.0 (#105709) 2024-01-01 18:00:17 -10:00
Matt Zimmerman
370345ce2b Map missing preset mapping for heat mode "ready" in smarttub (#106856) 2024-01-01 17:58:12 -10:00
Maikel Punie
b074b23979 Bump pyduotecno to 2024.1.1 (#106801)
* Bump pyduotecno to 2024.0.1

* Bump pyduotecno to 2024.1.0

* small update
2024-01-01 23:45:31 +01:00
J. Nick Koston
25f09134b2 Bump bleak-retry-connector to 3.4.0 (#106831) 2024-01-01 12:16:17 -10:00
Marc Mueller
aec8dc13b2 Improve acmeda typing (#106812) 2024-01-01 22:16:22 +01:00
Marc Mueller
73ccd0d310 Enable strict typing for arcam_fmj (#106837) 2024-01-01 21:12:29 +01:00
Marc Mueller
33f8a364ab Enable strict typing for arris_tg2492lg (#106838) 2024-01-01 20:47:37 +01:00
Marc Mueller
8501b2e71b Enable strict typing for asterisk_cdr + asterisk_mbox (#106841) 2024-01-01 20:45:16 +01:00
Marc Mueller
3b0d877b5e Enable strict typing for amberelectric (#106817) 2024-01-01 20:35:34 +01:00
Marc Mueller
c5c132e1d4 Enable strict typing for airq (#106813) 2024-01-01 20:33:38 +01:00
Marc Mueller
f67bae2cde Enable strict typing for aruba (#106839) 2024-01-01 20:33:15 +01:00
Marc Mueller
800351287b Enable strict typing for aquostv (#106836) 2024-01-01 20:32:29 +01:00
Marc Mueller
0077989169 Enable strict typing for alpha_vantage (#106816) 2024-01-01 20:19:19 +01:00
Marc Mueller
4e0c0cf2ca Enable strict typing for androidtv (#106820) 2024-01-01 20:15:01 +01:00
Marc Mueller
06a5e25853 Enable strict typing for anel_pwrctrl (#106821) 2024-01-01 20:14:34 +01:00
Marc Mueller
c37e268030 Enable strict typing for aprs (#106824) 2024-01-01 20:14:00 +01:00
Marc Mueller
3433e1d349 Enable strict typing for airthings_ble (#106815) 2024-01-01 18:56:44 +01:00
Xitee
a64f912733 Use walrus operator for roomba total cleaned area sensor value (#106772) 2024-01-01 06:24:13 -10:00
J. Nick Koston
41f0eda712 Use shorthand attrs for tplink color temp min/max (#106796)
The valid_temperature_range property does a regex match over
every possible model. Avoid calling it more than once since
it will never change as its based on the model
2024-01-01 13:14:28 +01:00
Marc Mueller
74e02fe057 Update pytest to 7.4.4 (#106802) 2024-01-01 13:12:56 +01:00
Christopher Bailey
ce54a1259a Bump pyunifiprotect to v4.22.5 (#106781) 2023-12-31 09:26:21 -10:00
David Knowles
80f8102b83 Bump pyschlage to 2023.12.1 (#106782) 2023-12-31 20:17:51 +01:00
Franck Nijhof
a7d11120fa Bump version to 2024.1.0b3 2023-12-31 18:57:11 +01:00
Tobias Sauerwein
c06df1957f Bump pyatmo to v8.0.2 (#106758) 2023-12-31 18:56:59 +01:00
puddly
99d575261d Bump ZHA dependencies (#106756)
* Bump ZHA dependencies

* Revert "Remove bellows thread, as it has been removed upstream"

This reverts commit c28053f4bf.
2023-12-31 18:56:57 +01:00
J. Nick Koston
3dca39d0f9 Bump habluetooth to 2.0.1 (#106750)
fixes switching scanners to quickly since the manager failed
to account for jitter in the auto discovered advertising interval

replaces and closes #96531

changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.0.0...v2.0.1
2023-12-31 18:56:53 +01:00
J. Nick Koston
a11fd2aaa6 Bump pyunifiprotect to 4.22.4 (#106749)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.22.3...v4.22.4
2023-12-31 18:56:51 +01:00
starkillerOG
05768f5fbd Bump reolink_aio to 0.8.5 (#106747) 2023-12-31 18:56:48 +01:00
David F. Mulcahey
3d75603b4f Fix Zlinky energy polling in ZHA (#106738) 2023-12-31 18:56:44 +01:00
Franck Nijhof
2179d4de3d Add missing vacuum toggle service description (#106729) 2023-12-31 18:56:41 +01:00
J. Nick Koston
2255f6737c Pin lxml to 4.9.4 (#106694) 2023-12-31 18:56:38 +01:00
J. Nick Koston
456cb20fcd Fix missed cached_property for hvac_mode in climate (#106692) 2023-12-31 18:56:35 +01:00
Keilin Bickar
8dfbe6849e Bump asyncsleepiq to v1.4.1 (#106682)
Update asyncsleepiq to v1.4.1
2023-12-31 18:56:32 +01:00
J. Nick Koston
3dd998b622 Bump roombapy to 1.6.10 (#106678)
changelog: https://github.com/pschmitt/roombapy/compare/1.6.8...1.6.10

fixes #105323
2023-12-31 18:56:29 +01:00
J. Nick Koston
84da1638e8 Bump thermobeacon-ble to 0.6.2 (#106676)
changelog: https://github.com/Bluetooth-Devices/thermobeacon-ble/compare/v0.6.0...v0.6.2
2023-12-31 18:56:26 +01:00
Erik Montnemery
362e5ca09a Fix changed_variables in automation traces (#106665) 2023-12-31 18:56:23 +01:00
G Johansson
494dd2ef07 Handle no permission for disks in Systemmonitor (#106653) 2023-12-31 18:56:20 +01:00
G Johansson
767c55fbac Use set instead of list in Systemmonitor (#106650) 2023-12-31 18:56:17 +01:00
Erik Montnemery
5f3389b8e4 Fix yolink entity descriptions (#106649) 2023-12-31 18:56:14 +01:00
Jaroslav Hanslík
c1e37a4cc3 Fixed native apparent temperature in WeatherEntity (#106645) 2023-12-31 18:56:11 +01:00
Jirka
3cd5f0568a Fix typo in Blink strings (#106641)
Update strings.json

Fixed typo.
2023-12-31 18:56:08 +01:00
Erik Montnemery
f9150b78b3 Ensure it's safe to call Entity.__repr__ on non added entity (#106032) 2023-12-31 18:56:04 +01:00
Erik Montnemery
c1f1b5c50b Ensure it's safe to call Entity.__repr__ on non added entity (#106032) 2023-12-31 18:54:34 +01:00
David F. Mulcahey
c83388fd2d Fix Zlinky energy polling in ZHA (#106738) 2023-12-31 12:12:06 -05:00
J. Nick Koston
bfda3f1ba8 Bump habluetooth to 2.0.1 (#106750)
fixes switching scanners to quickly since the manager failed
to account for jitter in the auto discovered advertising interval

replaces and closes #96531

changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.0.0...v2.0.1
2023-12-31 06:44:55 -10:00
Guy Shefer
70e2ff351d Add Tami4 integration boil water button (#103400)
* Implement boil water button

* Sort platforms list

* Get API directly

* Cleanup

* Rename boil button string

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

* Add button to .coveragerc

* Change ButtonEntityDescription to EntityDescription

* Update homeassistant/components/tami4/button.py

* Update homeassistant/components/tami4/button.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-31 15:39:00 +01:00
Josef Zweck
83b0934138 Add binary sensors for tedee (#106773)
* fix tests

* Update homeassistant/components/tedee/binary_sensor.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-31 13:16:01 +01:00
Josef Zweck
0549c9e113 Add sensor platform for tedee integration (#106722)
* add sensors

* requested changes

* remove translation key from battery

* fix pullspring test

* loop instead of parametrize

* name snapshots

* fix snapshots
2023-12-31 12:24:44 +01:00
Álvaro Fernández Rojas
f7154cff9d Update aioairzone-cloud to v0.3.8 (#106736)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-31 11:50:53 +01:00
puddly
98c41f7398 Bump ZHA dependencies (#106756)
* Bump ZHA dependencies

* Revert "Remove bellows thread, as it has been removed upstream"

This reverts commit c28053f4bf.
2023-12-31 04:54:09 -05:00
Tobias Sauerwein
6a582b29f1 Bump pyatmo to v8.0.2 (#106758) 2023-12-31 10:04:42 +01:00
J. Nick Koston
92713c3f37 Bump pyunifiprotect to 4.22.4 (#106749)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.22.3...v4.22.4
2023-12-31 09:44:12 +01:00
Franck Nijhof
b1dd064f2d Mark time entity component as strictly typed (#106720) 2023-12-31 02:52:59 +01:00
starkillerOG
95f6336ecd Bump reolink_aio to 0.8.5 (#106747) 2023-12-31 00:45:05 +01:00
Franck Nijhof
82b15d9e38 Add missing vacuum toggle service description (#106729) 2023-12-30 23:16:06 +01:00
J. Nick Koston
969f9e2e3f Use more shorthand attrs in bond fan (#106740) 2023-12-30 20:49:06 +01:00
Franck Nijhof
1849d68e78 Mark siren entity component as strictly typed (#106719) 2023-12-30 20:21:33 +01:00
Franck Nijhof
ff25211bf9 Mark wake_word entity component as strictly typed (#106724) 2023-12-30 20:20:33 +01:00
Franck Nijhof
2a6a347cd0 Mark datetime entity component as strictly typed (#106717) 2023-12-30 15:47:08 +01:00
DiamondDrake
8140036d2e Add support for cookie file to media_extractor (#104973)
* media_extractor comp -> add support for cookie file

* Update __init__.py

* Update __init__.py

* fixed pr request, added test

* update test with valid cookie file

* move cookies to subdirectory

* use pathlib instead of os.path
2023-12-30 14:34:50 +01:00
Franck Nijhof
faa2129e96 Mark todo entity component as strictly typed (#106718) 2023-12-30 14:32:44 +01:00
Franck Nijhof
4764af96a8 Mark date entity component as strictly typed (#106716) 2023-12-30 14:23:43 +01:00
Jan-Philipp Benecke
9d36b716e7 Use call_soon_threadsafe in render_will_timeout of template helper (#106514) 2023-12-30 13:55:53 +01:00
Floris272
ee1b0b46ce Add reauth to Blue Current integration (#106658)
* Add reauth to Blue Current integration.

* Apply feedback

* Fix failing codecov check

* Fix patches

* Add wrong_account to strings.json
2023-12-30 13:53:35 +01:00
Josef Zweck
f17470cb29 Upper case tedee device name (#106685) 2023-12-30 13:15:22 +01:00
Michael
cc14d80d3d Add ffmpeg to dev-container (#106710) 2023-12-30 13:14:49 +01:00
J. Nick Koston
a49999e984 Pin lxml to 4.9.4 (#106694) 2023-12-30 11:29:19 +01:00
G Johansson
bcf75795c2 DNS IP implement retry (#105675)
* DNS IP implement retry

* Review comments
2023-12-30 10:51:34 +01:00
Sid
f22d6a4279 Use volume up/down from enigma2 API (#106674)
enigma2: use volume up/down from enigma2 API
2023-12-30 10:34:57 +01:00
J. Nick Koston
197525c697 Bump thermobeacon-ble to 0.6.2 (#106676)
changelog: https://github.com/Bluetooth-Devices/thermobeacon-ble/compare/v0.6.0...v0.6.2
2023-12-30 10:33:59 +01:00
Erik Montnemery
461dad3039 Fix changed_variables in automation traces (#106665) 2023-12-30 08:34:21 +01:00
J. Nick Koston
9e3869ae1c Avoid recreating ReadOnly dicts when attributes do not change (#106687) 2023-12-29 17:10:40 -10:00
Keilin Bickar
2177113c6e Bump asyncsleepiq to v1.4.1 (#106682)
Update asyncsleepiq to v1.4.1
2023-12-30 01:45:04 +01:00
J. Nick Koston
f3ecec9c44 Fix missed cached_property for hvac_mode in climate (#106692) 2023-12-29 14:12:19 -10:00
J. Nick Koston
8abfde2d15 Bump roombapy to 1.6.10 (#106678)
changelog: https://github.com/pschmitt/roombapy/compare/1.6.8...1.6.10

fixes #105323
2023-12-30 00:45:27 +01:00
J. Nick Koston
6e98f72f8b Bump SQLAlchemy to 2.0.24 (#106672) 2023-12-29 10:19:06 -10:00
Jaroslav Hanslík
e83aa86426 Fixed native apparent temperature in WeatherEntity (#106645) 2023-12-29 18:37:46 +01:00
Xitee
2add7707b4 Add roomba total cleaned area sensor (#106640)
* Add roomba total cleaned area sensor

* Use parentheses for multi-line lambda

* Update homeassistant/components/roomba/sensor.py

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

* Update homeassistant/components/roomba/sensor.py

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

* Revert "Update homeassistant/components/roomba/sensor.py"

This reverts commit 819be6179f.

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2023-12-29 15:52:38 +01:00
Josef Zweck
02b863e968 Add tedee integration (#102846)
* init tedee

* init tests

* add config flow tests

* liniting

* test

* undo

* linting

* pylint

* add tests

* more tests

* more tests

* update snapshot

* more tests

* typing

* strict typing

* cleanups

* cleanups, fix tests

* remove extra platforms

* remove codeowner

* improvements

* catch tedeeclientexception

* allow bridge selection in CF

* allow bridge selection in CF

* allow bridge selection in CF

* allow bridge selection in CF

* abort earlier

* auto-select bridge

* remove cloud token, optionsflow to remove size

* remove options flow leftovers

* improve coverage

* defer coordinator setting to after first update

* define coordinator

* some improvements

* remove diagnostics, webhook

* remove reauth flow, freeze data classes

* fix lock test

* Update homeassistant/components/tedee/entity.py

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

* Update homeassistant/components/tedee/__init__.py

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

* Update homeassistant/components/tedee/config_flow.py

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

* Update homeassistant/components/tedee/entity.py

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

* Update homeassistant/components/tedee/entity.py

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

* requested changes

* requested changes

* Update lock.py

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

* Update entity.py

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

* Update lock.py

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

* Update config_flow.py

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

* Update config_flow.py

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

* Update config_flow.py

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

* requested changes

* Update tests/components/tedee/test_lock.py

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

* Update tests/components/tedee/test_lock.py

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

* Update tests/components/tedee/test_lock.py

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

* Update tests/components/tedee/test_lock.py

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

* Update tests/components/tedee/conftest.py

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

* Update homeassistant/components/tedee/coordinator.py

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

* Update homeassistant/components/tedee/lock.py

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

* Update tests/components/tedee/test_config_flow.py

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

* Update homeassistant/components/tedee/strings.json

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

* Update homeassistant/components/tedee/strings.json

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

* Update homeassistant/components/tedee/lock.py

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

* Update homeassistant/components/tedee/strings.json

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

* Update homeassistant/components/tedee/lock.py

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

* requested changes

* requested changes

* requested changes

* revert load fixture

* change tests

* Update test_config_flow.py

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

* Update strings.json

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

* Update coordinator.py

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

* remove warning

* move stuff out of try

* add docstring

* tedee lowercase, time.time

* back to some uppercase, time.time

* awaitable

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-29 14:55:41 +01:00
Erik Montnemery
56a58f9285 Improve tests of inheriting entity descriptions (#106647) 2023-12-29 13:22:52 +01:00
Erik Montnemery
95d7a66c16 Fix yolink entity descriptions (#106649) 2023-12-29 13:22:06 +01:00
G Johansson
853e4d87fa Handle no permission for disks in Systemmonitor (#106653) 2023-12-29 13:21:36 +01:00
G Johansson
4cd1965786 Use set instead of list in Systemmonitor (#106650) 2023-12-29 13:21:08 +01:00
Jirka
19e0f55fc8 Fix typo in Blink strings (#106641)
Update strings.json

Fixed typo.
2023-12-29 12:01:23 +01:00
Franck Nijhof
c54af00ce9 Bump version to 2024.1.0b2 2023-12-29 11:29:50 +01:00
Erik Montnemery
bb6f3bc830 Fix missing await when running shutdown jobs (#106632) 2023-12-29 11:28:15 +01:00
J. Nick Koston
f84d865c51 Migrate light entity to use contains for LightEntityFeature with deprecation warnings (#106622) 2023-12-29 11:28:12 +01:00
J. Nick Koston
2147df4418 Add deprecation warning for siren supported features when using magic numbers (#106621) 2023-12-29 11:28:09 +01:00
J. Nick Koston
af9f6a2b12 Add deprecation warning for lock supported features when using magic numbers (#106620) 2023-12-29 11:28:06 +01:00
J. Nick Koston
024d689b94 Add deprecation warning for alarm_control_panel supported features when using magic numbers (#106619) 2023-12-29 11:28:03 +01:00
J. Nick Koston
9f4790902a Add deprecation warning for cover supported features when using magic numbers (#106618) 2023-12-29 11:27:59 +01:00
J. Nick Koston
5d9177d6e6 Media player platform back-compat for custom components without MediaPlayerEntityFeature (#106616) 2023-12-29 11:27:56 +01:00
J. Nick Koston
70842f197e Vacuum platform back-compat for custom components without VacuumEntityFeature (#106614) 2023-12-29 11:27:53 +01:00
J. Nick Koston
f03bb4a2da Humidifier platform back-compat for custom components without HumidifierEntityFeature (#106613) 2023-12-29 11:27:50 +01:00
J. Nick Koston
aa6e904e86 Remote platform back-compat for custom components without RemoteEntityFeature (#106609) 2023-12-29 11:27:47 +01:00
J. Nick Koston
6224e630ac Water heater platform back-compat for custom components without WaterHeaterEntityFeature (#106608) 2023-12-29 11:27:44 +01:00
J. Nick Koston
04fe8260ab Fan platform back-compat for custom components without FanEntityFeature (#106607) 2023-12-29 11:27:41 +01:00
J. Nick Koston
4a98a6465e Climate platform back-compat for custom components without ClimateEntityFeature (#106605) 2023-12-29 11:27:38 +01:00
Joe Neuman
06f06b7595 Fix count bug in qBittorrent (#106603) 2023-12-29 11:27:35 +01:00
J. Nick Koston
16192cd7f2 Add helper to report deprecated entity supported features magic numbers (#106602) 2023-12-29 11:27:32 +01:00
Robert Hillis
982707afe6 Fix Netgear LTE halting startup (#106598) 2023-12-29 11:27:28 +01:00
Joost Lekkerkerker
911234ae8f Move aeptexas to aep_texas (#106595) 2023-12-29 11:25:58 +01:00
tronikos
55877b0953 Rename domain aepohio to aep_ohio (#106536)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-29 11:23:08 +01:00
J. Nick Koston
0623972ee0 Camera platform back-compat for custom components without CameraEntityFeature (#106529) 2023-12-29 11:11:03 +01:00
J. Nick Koston
d407b9fca8 Update platform back-compat for custom components without UpdateEntityFeature (#106528) 2023-12-29 11:10:58 +01:00
Joe Neuman
e17e372c94 Fix count bug in qBittorrent (#106603) 2023-12-29 11:08:40 +01:00
Robert Hillis
27bdbc6600 Add entity name and translations to Netgear LTE (#106599) 2023-12-29 11:07:56 +01:00
Brett Adams
149fdfb802 Minor improvements to Tessie device entries (#106623)
Add more fields to device info
2023-12-29 10:32:13 +01:00
Nikolay Vasilchuk
c2cfc8ab46 Add GPS satellites count to Starline sensor (#105740)
* GPS Satellites count Starline sensor

* Update homeassistant/components/starline/sensor.py

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

* Update homeassistant/components/starline/strings.json

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

* Capitalise units

* Revert capitalisation

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2023-12-29 10:29:06 +01:00
Erik Montnemery
a4e9a053c7 Fix missing await when running shutdown jobs (#106632) 2023-12-29 10:04:16 +01:00
J. Nick Koston
7702f971fb Use built-in set methods for light supported checks (#106625) 2023-12-29 08:37:44 +01:00
J. Nick Koston
03fcb81a59 Small speed up to compressed state diff (#106624) 2023-12-29 08:36:20 +01:00
J. Nick Koston
7051f28547 Add deprecation warning for cover supported features when using magic numbers (#106618) 2023-12-29 08:34:08 +01:00
Kevin Worrel
ee2689de3c Refactor screenlogic numbers to use subclasses (#106574) 2023-12-28 15:45:34 -10:00
J. Nick Koston
a47587e3cd Add deprecation warning for siren supported features when using magic numbers (#106621) 2023-12-28 15:45:27 -10:00
J. Nick Koston
e4a25825d3 Migrate light entity to use contains for LightEntityFeature with deprecation warnings (#106622) 2023-12-28 15:45:06 -10:00
J. Nick Koston
e6c6327463 Add deprecation warning for alarm_control_panel supported features when using magic numbers (#106619) 2023-12-28 15:04:06 -10:00
J. Nick Koston
2b972f6dba Add deprecation warning for lock supported features when using magic numbers (#106620) 2023-12-28 15:03:14 -10:00
J. Nick Koston
e0b6d4e216 Media player platform back-compat for custom components without MediaPlayerEntityFeature (#106616) 2023-12-28 14:32:44 -10:00
J. Nick Koston
931e90ab20 Humidifier platform back-compat for custom components without HumidifierEntityFeature (#106613) 2023-12-28 14:10:46 -10:00
J. Nick Koston
4b6aaf6254 Update platform back-compat for custom components without UpdateEntityFeature (#106528) 2023-12-28 14:10:26 -10:00
J. Nick Koston
81726808e8 Vacuum platform back-compat for custom components without VacuumEntityFeature (#106614) 2023-12-28 14:06:25 -10:00
J. Nick Koston
6506a8d511 Camera platform back-compat for custom components without CameraEntityFeature (#106529) 2023-12-29 00:45:35 +01:00
J. Nick Koston
552d4e49f0 Climate platform back-compat for custom components without ClimateEntityFeature (#106605) 2023-12-29 00:36:28 +01:00
J. Nick Koston
3e7c44c612 Fan platform back-compat for custom components without FanEntityFeature (#106607) 2023-12-29 00:36:15 +01:00
J. Nick Koston
d0e9f2ce0d Water heater platform back-compat for custom components without WaterHeaterEntityFeature (#106608) 2023-12-29 00:16:02 +01:00
J. Nick Koston
97ee7e2c98 Remote platform back-compat for custom components without RemoteEntityFeature (#106609) 2023-12-29 00:15:48 +01:00
J. Nick Koston
a46fe94216 Add helper to report deprecated entity supported features magic numbers (#106602) 2023-12-28 12:24:36 -10:00
Robert Hillis
f93b0a4831 Fix Netgear LTE halting startup (#106598) 2023-12-28 22:26:19 +01:00
tronikos
858e01ea42 Rename domain aepohio to aep_ohio (#106536)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-28 22:24:11 +01:00
Sid
f99c37b2b5 bump openwebifpy to 4.0.3 (#106593) 2023-12-28 21:59:56 +01:00
Joost Lekkerkerker
c9ecf3af54 Move aeptexas to aep_texas (#106595) 2023-12-28 21:58:34 +01:00
Bram Kragten
2b7d37cbc2 Bump version to 2024.1.0b1 2023-12-28 21:21:15 +01:00
Bram Kragten
256e3e0597 Revert "Bump version to 2024.1.0"
This reverts commit c9f12d45b4.
2023-12-28 21:20:55 +01:00
Bram Kragten
c9f12d45b4 Bump version to 2024.1.0 2023-12-28 21:19:27 +01:00
J. Nick Koston
fc021f8633 Bump aiohomekit to 3.1.1 (#106591) 2023-12-28 21:19:19 +01:00
Erik Montnemery
2ffb033a46 Revert "Set volume_step in enigma2 media_player" (#106584) 2023-12-28 21:19:18 +01:00
jjlawren
9de482f429 Cleanup Sonos subscription used during setup (#106575) 2023-12-28 21:19:17 +01:00
J. Nick Koston
7441962211 Bump aiohomekit to 3.1.1 (#106591) 2023-12-28 21:18:05 +01:00
jjlawren
ad199aaba2 Cleanup Sonos subscription used during setup (#106575) 2023-12-28 21:08:55 +01:00
Erik Montnemery
90744b0a8e Revert "Set volume_step in enigma2 media_player" (#106584) 2023-12-28 21:08:16 +01:00
G Johansson
fa34cbc414 Systemmonitor always load imported disks (#106546)
* Systemmonitor always load legacy disks

* loaded_resources
2023-12-28 20:40:28 +01:00
G Johansson
67629111f9 Systemmonitor always load imported disks (#106546)
* Systemmonitor always load legacy disks

* loaded_resources
2023-12-28 20:39:39 +01:00
Erik Montnemery
df894acefa Revert "Set volume_step in frontier_silicon media_player" (#106583)
Revert "Set volume_step in frontier_silicon media_player (#105953)"

This reverts commit 3e50ca6cda.
2023-12-28 20:38:02 +01:00
Erik Montnemery
5125d8622d Revert "Set volume_step in bluesound media_player" (#106582)
Revert "Set volume_step in bluesound media_player (#105672)"

This reverts commit 7fa55ffdd2.
2023-12-28 20:38:01 +01:00
Erik Montnemery
35b9044187 Revert "Set volume_step in sonos media_player" (#106581)
Revert "Set volume_step in sonos media_player (#105671)"

This reverts commit 6dc8c2c370.
2023-12-28 20:38:00 +01:00
Erik Montnemery
e953587260 Revert "Set volume_step in monoprice media_player" (#106580)
Revert "Set volume_step in monoprice media_player (#105670)"

This reverts commit cffb51ebec.
2023-12-28 20:38:00 +01:00
Erik Montnemery
925b851366 Revert "Set volume_step in cmus media_player" (#106579)
Revert "Set volume_step in cmus media_player (#105667)"

This reverts commit c10b460c6b.
2023-12-28 20:37:59 +01:00
Erik Montnemery
72dd60e667 Revert "Set volume_step in clementine media_player" (#106578)
Revert "Set volume_step in clementine media_player (#105666)"

This reverts commit 36eeb15fee.
2023-12-28 20:37:58 +01:00
Erik Montnemery
104039e732 Revert "Set volume_step in aquostv media_player" (#106577)
Revert "Set volume_step in aquostv media_player (#105665)"

This reverts commit bb8dce6187.
2023-12-28 20:37:57 +01:00
jjlawren
e1e697c16e Bump plexapi to 4.15.7 (#106576) 2023-12-28 20:37:56 +01:00
Michael
a111e35026 Only check known attributes in significant change support (#106572)
only check known attributes
2023-12-28 20:37:55 +01:00
jan iversen
0e0cd8e7de Remove default value for modbus lazy_error (#106561) 2023-12-28 20:37:54 +01:00
G Johansson
d24a923a73 Replace dash in language if needed (#106559)
* Replace dash in language if needed

* Add tests
2023-12-28 20:37:53 +01:00
Bram Kragten
285bb5632d Update frontend to 20231228.0 (#106556) 2023-12-28 20:37:53 +01:00
G Johansson
d7a697faf4 Fix holiday HA language not supported (#106554) 2023-12-28 20:37:52 +01:00
jan iversen
1d0fafcf2d Remove default value from modbus retries (#106551)
Solve retries issue.
2023-12-28 20:37:51 +01:00
G Johansson
571ba0efb0 Bump python-holidays to 0.39 (#106550) 2023-12-28 20:37:50 +01:00
G Johansson
227a69da65 Add missing disks to Systemmonitor (#106541) 2023-12-28 20:37:49 +01:00
Brett Adams
0de6030911 Fix run errors in Tessie (#106521) 2023-12-28 20:37:48 +01:00
Brett Adams
42ffb51b76 Fix Tessie honk button (#106518) 2023-12-28 20:37:48 +01:00
Thomas Hollstegge
50acf85f48 Use correct state for emulated_hue covers (#106516) 2023-12-28 20:37:47 +01:00
Christopher Fenner
b8ddd61b26 Avoid changing state of reduced preset in ViCare integration (#105642) 2023-12-28 20:35:46 +01:00
Christopher Fenner
b685584b91 Handle AttributeError in ViCare integration (#106470) 2023-12-28 20:35:26 +01:00
Bart Janssens
924e47c2a8 Skip activating/deactivating Vicare standby preset (#106476) 2023-12-28 20:35:00 +01:00
mkmer
8e4fade725 Move services to entity services in blink (#105413)
* Use device name to lookup camera

* Fix device registry serial

* Move to entity based services

* Update tests

* Use config_entry
Move refresh service out of camera

* Use config entry for services

* Fix service schema

* Add depreciation note

* Depreciation note

* key error changes
deprecated (not depreciated)
repair issue

* tweak message

* deprication v2

* back out update field change

* backout update schema changes

* Finish rollback on update service

* update doc strings

* move to 2024.7.0
More verbosity to deprecation message
2023-12-28 20:32:38 +01:00
Thomas Hollstegge
6deb6ddbc4 Use correct state for emulated_hue covers (#106516) 2023-12-28 09:30:26 -10:00
Michael
756847eea8 Only check known attributes in significant change support (#106572)
only check known attributes
2023-12-28 20:20:59 +01:00
G Johansson
648afe121d Replace dash in language if needed (#106559)
* Replace dash in language if needed

* Add tests
2023-12-28 20:16:14 +01:00
mkmer
e7e0ae8f6a Move services to entity services in blink (#105413)
* Use device name to lookup camera

* Fix device registry serial

* Move to entity based services

* Update tests

* Use config_entry
Move refresh service out of camera

* Use config entry for services

* Fix service schema

* Add depreciation note

* Depreciation note

* key error changes
deprecated (not depreciated)
repair issue

* tweak message

* deprication v2

* back out update field change

* backout update schema changes

* Finish rollback on update service

* update doc strings

* move to 2024.7.0
More verbosity to deprecation message
2023-12-28 19:56:40 +01:00
Erik Montnemery
1909163c8e Revert "Set volume_step in bluesound media_player" (#106582)
Revert "Set volume_step in bluesound media_player (#105672)"

This reverts commit 7fa55ffdd2.
2023-12-28 19:54:51 +01:00
Erik Montnemery
20d1560b01 Revert "Set volume_step in monoprice media_player" (#106580)
Revert "Set volume_step in monoprice media_player (#105670)"

This reverts commit cffb51ebec.
2023-12-28 19:54:36 +01:00
Erik Montnemery
744f06b5a8 Revert "Set volume_step in cmus media_player" (#106579)
Revert "Set volume_step in cmus media_player (#105667)"

This reverts commit c10b460c6b.
2023-12-28 19:54:21 +01:00
Erik Montnemery
52cc6a1008 Revert "Set volume_step in clementine media_player" (#106578)
Revert "Set volume_step in clementine media_player (#105666)"

This reverts commit 36eeb15fee.
2023-12-28 19:54:10 +01:00
Erik Montnemery
1fc0a305e7 Revert "Set volume_step in aquostv media_player" (#106577)
Revert "Set volume_step in aquostv media_player (#105665)"

This reverts commit bb8dce6187.
2023-12-28 19:53:56 +01:00
Erik Montnemery
29dea2e0ea Revert "Set volume_step in frontier_silicon media_player" (#106583)
Revert "Set volume_step in frontier_silicon media_player (#105953)"

This reverts commit 3e50ca6cda.
2023-12-28 19:50:57 +01:00
Erik Montnemery
fb280229c2 Revert "Set volume_step in sonos media_player" (#106581)
Revert "Set volume_step in sonos media_player (#105671)"

This reverts commit 6dc8c2c370.
2023-12-28 19:48:34 +01:00
jjlawren
43384effcd Bump plexapi to 4.15.7 (#106576) 2023-12-28 19:36:57 +01:00
Isak Nyberg
756292234e Add Record distance sensor to MyPermobil (#106519)
* add record-distance-sensor

* simplify UOM property

* remove uom for record_distance description

* remove redundant code

* Update homeassistant/components/permobil/sensor.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-28 19:27:06 +01:00
Robert Hillis
454201d0a8 Add device info to Netgear LTE (#106568)
* Add device info to Netgear LTE

* uno mas
2023-12-28 17:47:04 +01:00
G Johansson
353f33f4ac Add missing disks to Systemmonitor (#106541) 2023-12-28 17:45:21 +01:00
jan iversen
2abf7d75e9 Remove default value for modbus lazy_error (#106561) 2023-12-28 17:37:48 +01:00
Álvaro Fernández Rojas
5dd63d86f2 Update aioairzone-cloud to v0.3.7 (#106544)
Release v0.3.7

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-28 17:14:25 +01:00
G Johansson
34c9ef42e9 Add myself as codeowner for holiday (#106560) 2023-12-28 16:32:55 +01:00
G Johansson
b852eb7e23 Fix holiday HA language not supported (#106554) 2023-12-28 16:10:27 +01:00
G Johansson
0605c499aa Bump python-holidays to 0.39 (#106550) 2023-12-28 16:05:52 +01:00
Bram Kragten
1cbd9bded0 Update frontend to 20231228.0 (#106556) 2023-12-28 16:05:11 +01:00
jan iversen
21dbc57fc1 Remove default value from modbus retries (#106551)
Solve retries issue.
2023-12-28 14:20:56 +01:00
Marc Mueller
1a6e81767d Improve trace helper typing (#105964) 2023-12-28 14:00:24 +01:00
Christopher Fenner
6eec4998bd Avoid changing state of reduced preset in ViCare integration (#105642) 2023-12-28 11:17:13 +01:00
Christopher Fenner
af881d7ac8 Handle AttributeError in ViCare integration (#106470) 2023-12-28 09:35:39 +01:00
Bart Janssens
a6af2be675 Skip activating/deactivating Vicare standby preset (#106476) 2023-12-28 09:31:35 +01:00
Brett Adams
fb893a5315 Fix run errors in Tessie (#106521) 2023-12-28 09:02:04 +01:00
Brett Adams
5b706cedeb Fix Tessie honk button (#106518) 2023-12-28 09:00:34 +01:00
Franck Nijhof
7ad44a02b7 Bump version to 2024.2.0dev0 (#106504) 2023-12-28 02:08:16 +01:00
J. Nick Koston
178e4f9e25 Use converter factory in sensor platform (#106508)
This is a bit faster than calling .covert
2023-12-28 00:06:36 +01:00
dependabot[bot]
f59e2b0eec Bump dawidd6/action-download-artifact from 2 to 3.0.0 (#105712)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-27 21:52:32 +01:00
Franck Nijhof
0bb892588e Bump version to 2024.1.0b0 2023-12-27 21:23:25 +01:00
ollo69
ee25cb2616 Add AsusWrt temperature sensors provided by http protocol (#105692) 2023-12-27 21:20:03 +01:00
Daniel Schall
8778763a3e Synchronize and cache Generic Camera still image fetching (#105821) 2023-12-27 21:19:25 +01:00
Bernardus Jansen
5545883400 Opentherm gateway: Set unit of measurement for count sensors (#106313) 2023-12-27 21:16:55 +01:00
theorlangur
d0409e719b Add ZHA configuration number entity to set/get thermostat cluster local temperature offset (#105765) 2023-12-27 21:16:03 +01:00
David F. Mulcahey
11e4dd0764 Bump ZHA quirks to 109 and add associated configuration entities (#106492) 2023-12-27 21:15:45 +01:00
Martin Hjelmare
c462d5b8ca Bump zwave-js-server-python to 0.55.2 (#106496) 2023-12-27 21:05:26 +01:00
Mike Megally
9b2c67fcd2 Add Color Night Vision switch for UniFi Protect (#106500)
* Add a switch to enable and disable "Color Night Vision" for the Unifi Protect platform, which is a feature on the new G5 Pro cameras with a "Vision Enhancer" attached

* Updated tests for the new switch
2023-12-27 09:56:54 -10:00
J. Nick Koston
093c952c38 Bump aiohttp-zlib-ng to 0.1.3 (#106489)
Reverts the workaround that was created for #105254 since the original
issue is fixed in zlib_ng 0.3.0+ which the lib now requires as a minimum
version
2023-12-27 08:04:07 -10:00
Michael
389c8d39f5 Add significant Change support for cover (#106016) 2023-12-27 18:28:24 +01:00
Robert Resch
9508a23f95 Check and register cloud hook if needed for mobile_app (#106461) 2023-12-27 18:01:44 +01:00
Bram Kragten
eb437afc67 Update frontend to 20231227.0 (#106486) 2023-12-27 17:59:52 +01:00
dougiteixeira
65c21438a6 Add query type validation independent of declaration position for SQL (#105921)
* Add query type validation independent of declaration position

* Restore close sess

* Separates invalid query and non-read-only query tests

* Add more tests

* Use the SQLParseError exception for queries that are not read-only

* Add handling for multiple SQL queries.

* Fix test

* Clean ';' at the beginning of the SQL query

* Clean ';' at the beginning of the SQL query - init

* Query cleaning before storing

* Query cleaning before setup sesensor plataform - YAML

* Exception when the SQL query type is not detected

* Cleaning

* Cleaning

* Fix typing in tests

* Fix typing in tests

* Add test for query = ';;'

* Update homeassistant/components/sql/__init__.py

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

* Update homeassistant/components/sql/__init__.py

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

* Update __init__.py

* Update config_flow.py

* Clean query before storing

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-27 17:58:35 +01:00
Caius-Bonus
37707edc47 Match ZHA Custom ClusterHandler on a Custom Cluster using a unique id for the quirk (#101709)
* initial

* fix tests

* match on specific name and quirk name

* fix tests

* fix tests

* store cluster handlers in only one place

* edit tests

* use correct device for quirk id

* change quirk id

* fix tests

* even if there is a quirk id, it doesn't have to have a specific cluster handler

* add tests

* rename quirk_id

* add tests

* fix tests

* fix tests

* use quirk id from zha_quirks
2023-12-27 11:48:30 -05:00
Nikolay Vasilchuk
4330452212 Fix Starline attributes timezone (#105645)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-12-27 17:21:10 +01:00
Joost Lekkerkerker
e507d1c5a5 Add more Withings measurement sensors (#105561) 2023-12-27 16:55:42 +01:00
Marcel van der Veldt
13702d51b1 Add more fine grained control over Matter server commissioning for the Companion apps (#106237) 2023-12-27 16:55:07 +01:00
Michael
117ff21c48 Add significant Change support for number (#105863) 2023-12-27 16:54:08 +01:00
Simone Chemelli
a6d8a82f3e Add Comelit alarm zones sensor (#106421)
* Add Comelit alarm zones sensor

* apply review comment

* add translation key

* capitalize

* cleanup

* apply review comment

* apply review comment

* more review comment
2023-12-27 16:47:59 +01:00
David F. Mulcahey
817c71747f Delay all ZHA polling until initialization of entities has completed (#105814)
* Don't update entities until they are initialized

* fix hass reference

* only establish polling once

* fix log level and small cleanup

* start device availability checks after full initialization of network

* add logging

* clean up sensor polling and class hierarchy

* don't attempt restore sensor cleanup in this PR

* put check back

* fix race condition and remove parallel updates

* add sensor polling test

* cleanup switch polling and add a test

* clean up and actually fix race condition

* update light forced refresh

* only use flag

* unused flag

* reduce diff size

* collapse
2023-12-27 10:25:41 -05:00
Jon Caruana
45fde2db4e Remove hardcoded bits from LiteJet integration (#106281)
Use the new properties from pylitejet v0.6.0.
2023-12-27 15:43:00 +01:00
Cyrill Raccaud
1d9a2b53e7 Remove initial entity update from swiss_public_transport (#106478)
remove initial update
2023-12-27 15:28:59 +01:00
Martijn van der Pol
a823edf1c2 Jinja filter and function for median and statistical_mode (#105554)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-27 15:14:20 +01:00
Cyrill Raccaud
ed3ea5e5f4 Add device to swiss public transport (#106475)
add to device registry
2023-12-27 15:08:58 +01:00
G Johansson
83f4d3af5c Implement mode validation in Climate entity component (#105745)
* Implement mode validation in Climate entity component

* Fix some tests

* more tests

* Fix translations

* fix deconz tests

* Fix switcher_kis tests

* not None

* Fix homematicip_cloud test

* Always validate

* Fix shelly

* reverse logic in validation

* modes_str

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-27 14:51:39 +01:00
Jan-Philipp Benecke
e04fda3fad Add config flow to trend (#99761)
* Add config flow to trend

* Remove device_class from options flow

* Add min_samples and import step to config flow

* Fix import

* Fixing tests and some cleanup

* remove unneeded usefixtures

* Apply code review suggestions

* Re-add YAML support

* Re-add reload service

* Fix import

* Apply code review suggestions

* Add test coverage for yaml setup

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-27 14:46:57 +01:00
Erwin Douna
4decc2bbfb Refactor Tado to use OAuth in the DeviceTracker (#102610)
* Refactor to use TadoConnector in the DeviceTracker

* Proposing myself as code owner to be notified of issues

* Update homeassistant/components/tado/device_tracker.py

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

* Fixing method names

* Current progress, switching machines

* Updating DeviceTracker to working prototype

* Removing unnecessary callback

* Adding dispatcher logic

* Minor fine-tuning the intervals

* Removing unnecessary debug log

* Update homeassistant/components/tado/device_tracker.py

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

* Update homeassistant/components/tado/device_tracker.py

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

* Fix sorting

* Retrieve devices from the Tado connector data

* Asyncio feedback & dispatch generic mobile devices

* Updating const

* Fine-tuning unloading

* Making add_tracked_entites callback

* Adding unload over dispatcher_connect

* Convert on_demand_update to callback

* Removing now unused method

* Merging method to on_demand_u

* Adding create_issue to address repair

* Updating with better translation

* Converting to callback

* Adding _attr_should_poll

* Putting back the on_demand_update

* Adding unique_id

* Converting to TrackerEntity

* Adding import step (review needed!)

* Update homeassistant/components/tado/device_tracker.py

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

* Update homeassistant/components/tado/device_tracker.py

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

* Update homeassistant/components/tado/device_tracker.py

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

* Update homeassistant/components/tado/config_flow.py

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

* Typing and location_name

* Changing to _attr_unique_id

* Import improvement attempt

* Property feedback

* Update homeassistant/components/tado/config_flow.py

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

* Adding CONF_HOME_ID and task in get_scanner

* Updating descriptions

* Removing the create_task

* Putting back PLATFORM_SCHEMA

* Adding device_tracker

* Adding get for HomeID

* Get it better ;)

* Retrieve HomeID from API

* Add integration title in dialogs

* Update homeassistant/components/tado/config_flow.py

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

* Update homeassistant/components/tado/config_flow.py

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

* Update homeassistant/components/tado/config_flow.py

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

* Fixing homeID and strings.json

* Delete request in strings

* Update deprecation date

* Adding test cases for import flow

* Update tests/components/tado/test_config_flow.py

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

* Update tests/components/tado/test_config_flow.py

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

* Update tests/components/tado/test_config_flow.py

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

* Removing none

* Fixing test cases

* Update homeassistant/components/tado/config_flow.py

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

* Removing from context manager

* Removing code owner

* Re-adding code owner

* Fix get scanner return value

* Fix device tracker interface

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-27 14:17:23 +01:00
Jan-Philipp Benecke
0694ff8965 Use snapshot assertion in homekit_controller diagnostics tests (#105647) 2023-12-27 13:49:09 +01:00
Daniel Schall
485a02c89d Fix Generic Camera interval calculation (#105820) 2023-12-27 13:45:49 +01:00
Christopher Fenner
50b960fb5e Bump PyViCare to 2.32.0 (#106467) 2023-12-27 13:43:45 +01:00
Joakim Sørensen
b5012a9964 Adjust the GitHub config flow (#105295) 2023-12-27 13:42:24 +01:00
Joost Lekkerkerker
2d5176d1f6 Use entity descriptions in Netgear LTE (#106414) 2023-12-27 13:39:01 +01:00
Greg Dowling
3911894599 Fix roon volume truncation bug (#105696) 2023-12-27 13:37:13 +01:00
Franck Nijhof
5c566770e0 Merge branch 'master' into dev 2023-12-27 13:35:31 +01:00
Franck Nijhof
0f3e6b0dec Revert "Add preselect_remember_me to /auth/providers" (#106472)
Revert "Add preselect_remember_me to `/auth/providers` (#106462)"

This reverts commit c19688e2d2.
2023-12-27 13:22:12 +01:00
David Knowles
7746a94543 Fix Hydrawise watering time duration unit (#105919)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-27 13:20:09 +01:00
Allen Porter
2497798b5d Allow clearing To-do list item extended fields (#106208) 2023-12-27 13:14:59 +01:00
steffenrapp
c51ac7171a Add translatable title to Persistent Notification (#104661) 2023-12-27 13:07:44 +01:00
Klaas Schoute
d0b6acd5e0 Changed setup of easyEnergy services (#106288) 2023-12-27 13:04:49 +01:00
Richard Kroegel
bd4177edc8 Add supports_response to ServiceRegistry.register() (#106164)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-12-27 13:01:20 +01:00
Michael
0824a1f4a2 Add significant Change support for media player (#105999) 2023-12-27 12:59:33 +01:00
Michael
d747b0891d Add significant Change support for fan (#105867) 2023-12-27 12:57:30 +01:00
Rami Mosleh
f71e01f652 Improve glances tests (#106402) 2023-12-27 12:55:10 +01:00
Cyrill Raccaud
b935facec8 Add coordinator to Swiss public transport (#106278) 2023-12-27 12:54:41 +01:00
Joost Lekkerkerker
9944047b35 Add typing to config flow A (#105721) 2023-12-27 12:51:24 +01:00
G Johansson
8cd0644035 Add translation to ServiceValidationError in Lock (#105746) 2023-12-27 12:50:27 +01:00
Jan Bouwhuis
dae8c0fc38 Fix MQTT retained event messages should be discarded (#106425) 2023-12-27 12:48:53 +01:00
kingy444
25f9c5f34b Fix RainMachine bugs (#106231) 2023-12-27 12:38:37 +01:00
Robert Resch
c19688e2d2 Add preselect_remember_me to /auth/providers (#106462) 2023-12-27 11:47:52 +01:00
Daniel Hjelseth Høyer
4f38d8cc5d Bump millheater to 0.11.8 (#106464) 2023-12-27 11:44:09 +01:00
Franck Nijhof
8fb5d5c299 Mark Tailwind a platinum quality integration (#106468) 2023-12-27 11:30:10 +01:00
Franck Nijhof
ae80d576bf 2023.12.4 (#106460) 2023-12-27 11:06:09 +01:00
Brett Adams
675d4f48b5 Fix update platform in Tessie (#106465)
Return up-to-date
2023-12-27 11:05:17 +01:00
Simone Chemelli
f7d482c85b Fix Comelit alarm state (#106466) 2023-12-27 11:04:20 +01:00
Franck Nijhof
a78ecb3895 Add error handling to Tailwind service methods (#106463) 2023-12-27 10:53:31 +01:00
Franck Nijhof
68ac4717dc Revert "Raise HomeAssistantError if event is triggered with invalid event_type" (#106458) 2023-12-27 10:22:37 +01:00
mkmer
2b8fc8e5ae Update quality scale for Aladdin (#99342)
update quality scale
2023-12-27 10:13:18 +01:00
Renat Sibgatulin
1031e416be Remove IP / mDNS validation in airq integration setup (#106326)
Original design relied on aioairq.AirQ.__init__ checking if the input
was a valid IP address or an mDNS of a very specific structure,
and raising an InvalidInput otherwise.
Now, aioairq==0.3.2 removes said check completely following a user's
request to allow arbitrary host name and DNS entries.
In the config flow, "cannot_connect" covers the cases of misspelled
inputs now, which previously were covered by a dedicated "invalid_input"
2023-12-27 09:56:13 +01:00
Franck Nijhof
d6d8e914bc Flip around Tailwind locked out binary sensor (#106457) 2023-12-27 09:52:16 +01:00
Joe Neuman
d33ad57dd3 Add qBittorrent torrent sensors (#105781)
* Upgrade QBittorrent integration to show torrents

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

* Remove unused stuff

* Fix codeowners

* Correct name in comments

* Update __init__.py

* Make get torrents a service with a response

* Update sensor.py

* Update sensor.py

* Update sensor.py

* Add new sensors

* remove service

* more removes

* more

* Address comments

* cleanup

* Update coordinator.py

* Fix most lint issues

* Update sensor.py

* Update sensor.py

* Update manifest.json

* Update sensor class

* Update sensor.py

* Fix lint issue with sensor class

* Adding codeowners

* Update homeassistant/components/qbittorrent/__init__.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-27 09:48:52 +01:00
Jan Bouwhuis
c7eab49c70 Raise ServiceValidationError on invalid select option (#106350)
* Raise ServiceValidationError on invalid select option

* Fix tests

* Correct place holders

* More test fixes
2023-12-27 09:45:55 +01:00
Franck Nijhof
fd8a3cf78f Bump version to 2023.12.4 2023-12-27 09:45:19 +01:00
mkmer
04c0dc7d91 Redact unique id from diagnostics in blink (#106413)
redact unique id
2023-12-27 09:45:06 +01:00
mkmer
690f68c571 Missing exception on relogin in Honeywell (#106324)
Missing exception on relogin
2023-12-27 09:45:03 +01:00
Erik Montnemery
2bf5f8563e Fix Shelly consumption_types (#106273) 2023-12-27 09:45:00 +01:00
Alan Murray
baa18eb0bd Bump aiopulse to 0.4.4 (#106239)
* Bump Rolease Acmeda version 

Bump aiopulse version to 0.4.4 to fix issue for blinds that use status structure to indicate blinds that are fully open or closed.

* Update manifest.json

* update requirements
2023-12-27 09:44:56 +01:00
fwestenberg
d420483869 Bump Devialet to 1.4.5 (#106184)
* Bump Devialet==1.4.4

* Bump Devialet to 1.4.5
2023-12-27 09:43:32 +01:00
sdb9696
b98cb82f41 Bump ring-doorbell to 0.8.5 (#106178) 2023-12-27 09:43:29 +01:00
fwestenberg
c76e1e8c80 Bump Devialet to 1.4.4 (#106171)
Bump Devialet==1.4.4
2023-12-27 09:43:26 +01:00
Tobias Sauerwein
5ab41c40a6 Fix Netatmo light switching states by assuming state until next update (#106162) 2023-12-27 09:43:23 +01:00
Aaron Bach
0beb47ac2c Fix bug with non-existent Notion bridge IDs (#106152) 2023-12-27 09:43:20 +01:00
Phil Bruckner
0ca8e52e57 Bump life360 to 6.0.1 (#106149)
* Bump life360 package to 6.0.1

Fix recent API issues.

* Update requirements files
2023-12-27 09:43:17 +01:00
puddly
e3cb90487c Bump ZHA dependencies (#106147) 2023-12-27 09:43:14 +01:00
J. Nick Koston
529d34235c Bump pyenphase to 1.15.2 (#106134) 2023-12-27 09:43:11 +01:00
Ben
56c6de7223 Bump surepy to 0.9.0 (#106101) 2023-12-27 09:43:08 +01:00
Tobias Sauerwein
59c5077557 Bump pyatmo to 8.0.1 (#106094)
Fix missing NLFE
2023-12-27 09:43:05 +01:00
On Freund
937b13dec6 Don't fetch unchanged OurGroceries lists (#105998) 2023-12-27 09:43:02 +01:00
mkmer
6291465313 Bump blinkpy 0.22.4 (#105993) 2023-12-27 09:42:59 +01:00
Stefan Agner
283f8f466f Add Raspberry Pi 5 to version and hardware integration (#105992) 2023-12-27 09:42:56 +01:00
Tobias Sauerwein
03009a2bb9 Fix unreachable Netatmo sensor returning false values (#105954)
* Fix unreachable sensor returning false values

* Clean up unnecessary code
2023-12-27 09:42:53 +01:00
starkillerOG
3b18eb214d Bump motionblinds to 0.6.19 (#105951) 2023-12-27 09:42:50 +01:00
starkillerOG
02919fc1a4 Bump reolink_aio to 0.8.4 (#105946) 2023-12-27 09:42:47 +01:00
starkillerOG
03d7e9182b Bump reolink_aio to 0.8.3 (#105489) 2023-12-27 09:42:42 +01:00
Michael
a6018c5f7e Set WiFi QR code entity to unknown when Fritzbox is not available (#105870) 2023-12-27 09:41:07 +01:00
Michael
e16fb3a9d3 Address late review comments on AVM FRITZ!SmartHome (#105860)
set copies dict keys by default
2023-12-27 09:41:04 +01:00
J. Nick Koston
5ea2471260 Bump pyunifiprotect to 4.22.3 (#105833)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.22.0...v4.22.3
2023-12-27 09:41:01 +01:00
Álvaro Fernández Rojas
7ae296b0f2 Fix Airzone temperature range on new climate card (#105830)
* airzone: climate: fix double setpoint

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

* tests: airzone: fix double setpoint temperature

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

* tests: airzone: fix swapped double setpoint

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-27 09:40:58 +01:00
Maciej Bieniek
b58c8eaaa9 Fix HVAC mode duplication for Shelly Gen2 climate platform (#105812)
Fix HVAC mode duplication
2023-12-27 09:40:55 +01:00
Álvaro Fernández Rojas
c5e3d922b0 Update aioairzone to v0.7.2 (#105811) 2023-12-27 09:40:52 +01:00
Álvaro Fernández Rojas
0e2677396a Bump aioairzone to v0.7.0 (#105807) 2023-12-27 09:40:49 +01:00
Michael Hansen
f1f3301edc Set todo item status in intent (#105743) 2023-12-27 09:40:46 +01:00
Stefan Agner
8bfb6b5745 Add Raspberry Pi 5 specific container image (#105488) 2023-12-27 09:40:42 +01:00
vexofp
6720580a9e Pass timeout to httpx in RESTful Switch (#105364)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-27 09:40:39 +01:00
Robert Resch
fbcb31b103 Deprecate deprecated unit of measurement constants (#106455) 2023-12-27 09:04:25 +01:00
Joost Lekkerkerker
f92e732f27 Use translation placeholders in Swiss public transport (#106416) 2023-12-27 09:01:53 +01:00
Jan Bouwhuis
65e8bbacc9 Raise HomeAssistantError if event is triggered with invalid event_type (#106357) 2023-12-27 08:50:46 +01:00
J. Nick Koston
99734a76aa Use faster contains check in water_heater (#106438) 2023-12-27 08:48:27 +01:00
Martin Hjelmare
59a01da0ed Improve cloud tts tests (#106427) 2023-12-27 08:48:07 +01:00
J. Nick Koston
2cc6fd1afb Add attr caching support to the geo_location platform (#106432) 2023-12-27 08:46:36 +01:00
J. Nick Koston
9b864e8130 Use faster contains check in humidifier (#106433) 2023-12-27 08:46:13 +01:00
J. Nick Koston
7a2a99db2e Use faster contains check in update (#106436) 2023-12-27 08:45:51 +01:00
J. Nick Koston
6dbfd70e30 Use faster contains check in remote (#106435) 2023-12-27 08:45:25 +01:00
J. Nick Koston
e801413c73 Use faster contains check in vacuum (#106437) 2023-12-27 08:45:07 +01:00
Robert Resch
b08268da31 Deprecate deprecated core constants (#106456) 2023-12-27 08:42:57 +01:00
Brett Adams
2afe3364ca Add names to all Tessie entities (#106267)
* Add name back to device tracker and lock

* Add name to media player

* Add name to update

* Update snapshot

* Keep none name on Update

* Re-add update
2023-12-27 07:56:23 +01:00
Brett Adams
91aea843fc Move Trunks from Button to Cover in Tessie (#106448)
* Move trunks from buttons to covers

* Add tests

* Cleanup snapshot

* Use Constants

* StrEnum to IntEnum
2023-12-27 06:56:09 +01:00
Brett Adams
2fe982c7f3 Handle failed updates in Tessie (#106450) 2023-12-26 17:19:44 -10:00
J. Nick Koston
4b19c28ad9 Use faster contains check in media_player (#106434) 2023-12-26 13:18:22 -10:00
Brett Adams
9dde42a023 Handle Auto Fan and MyFan in Advantage Air (#95594)
* Decouple climate from MyFan

* Add tests

* Prepare for auto change

* Handle both modes

* Fix import

* Remove reference to FAN map

* Correct auto fan logic

* Remove multiline ternary operator

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

* Fix coverage

* fix tests

* ruff

* Test auto fan mode with snapshot

* add more testing

* Add switch testing

* Fix a bug caught by new tests

* Remove ineffective snapshot tests

* Readd snapshots but use args

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-26 23:31:25 +01:00
Keilin Bickar
615cd56f03 Add Support for SleepIQ Foot Warmers (#105931)
* Add foot warmer support

* Add Tests for foot warmers

* Move attr options out of constructor

* Change options to lowercase

* Update test and translations

* Switch back to entity

* Update homeassistant/components/sleepiq/strings.json

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-26 23:31:00 +01:00
J. Nick Koston
51a50fc134 Use faster contains check in fan (#106431) 2023-12-26 12:19:02 -10:00
J. Nick Koston
244a7bef39 Use faster contains check in climate (#106430) 2023-12-26 12:18:52 -10:00
Brett Adams
b51a242fd4 Add install to Tessie update platform (#106352) 2023-12-26 11:56:23 -10:00
Brett Adams
728bef20d6 Add more binary sensors to Tessie (#106212) 2023-12-26 11:54:28 -10:00
Joost Lekkerkerker
01ded7daea Add config flow to Streamlabs water (#104962)
* Add config flow to Streamlabs water

* Add config flow to Streamlabs water

* Add config flow to Streamlabs water

* Add issue when import is successful

* Remove import issue when entry already exists

* Remove import issue when entry already exists

* Fix feedback

* Fix feedback

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-26 22:24:28 +01:00
J. Nick Koston
c7b4f8f780 Use faster contains check in camera for stream feature (#106429) 2023-12-26 10:48:31 -10:00
Simone Chemelli
8be8524955 Fix freeze entity description (#106418) 2023-12-26 18:59:40 +01:00
Brett Adams
9b740c1111 Add missing translations to Tessie Button platform (#106232)
Add missing translations
2023-12-26 18:57:30 +01:00
G Johansson
4f0ee20ec5 Add config flow to System Monitor (#104906)
* Initial commit for config flow to System Monitor

* sensors

* Fixes

* Works

* Add import

* entity_registry_enabled_default = False

* entity_category = diagnostic

* Create issue

* issue in config flow

* Tests

* test requirement

* codeowner

* Fix names

* processes

* Fix type

* reviews

* get info during startup once

* Select process

* Legacy import of resources

* requirements

* Allow custom

* Fix tests

* strings

* strings

* Always enable process sensors

* Fix docstrings

* skip remove sensors if no sensors

* Modify sensors

* Fix tests
2023-12-26 18:29:32 +01:00
Simone Chemelli
2cd6c2b6bf Add alarm platform to Comelit (#104718)
* initial work on alarm

* final work on alarm

* coveragerc

* add tests

* add code validation

* remove sensor changes for a dedicated PR

* code optimization and cleanup

* tweaks

* tweak #2

* apply suggestion

* code quality

* code quality #2

* fix cover.py

* api typing

* use base classes where possibile

* apply const as per review comment

* cleanup unload entry

* apply review comments
2023-12-26 18:27:33 +01:00
Marc Mueller
c6d1f1ccc8 Fix pytest test collection warning (#106405) 2023-12-26 16:23:19 +01:00
mkmer
e9f28c2060 Redact unique id from diagnostics in blink (#106413)
redact unique id
2023-12-26 16:16:54 +01:00
Martin Hjelmare
e764372d1e Move cloud binary sensor to config entry (#106409)
* Move cloud binary sensor to config entry

* Fix docstring
2023-12-26 15:12:37 +01:00
Tobias Perschon
c8f9285aba Switch unifi_direct to external library (#105046)
* switch to external library

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* use mac as name if no hostname is available

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* update requirements_test_all

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* update .coveragerc

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* update codeowners and remove old tests

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* reverted get_device_name to old behaviour

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* typing and some cleanup

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* typing fix

Signed-off-by: Tobias Perschon <tobias@perschon.at>

* code cleanup

Signed-off-by: Tobias Perschon <tobias@perschon.at>

---------

Signed-off-by: Tobias Perschon <tobias@perschon.at>
2023-12-26 13:22:53 +01:00
Marc Mueller
0d2ec6cd5c Improve drop_connect typing (#106404) 2023-12-26 13:11:05 +01:00
J. Nick Koston
1c96cf33b8 Avoid recreating a set each time sensor unit_of_measurement is called (#106401) 2023-12-25 21:11:48 -10:00
J. Nick Koston
b17bec2b0a Cache media player url hashing (#106400) 2023-12-25 21:03:35 -10:00
Maciej Bieniek
3eef1a3f6a Add valve platform for Shelly Gas Valve (#106087)
* Add valve platform

* Update BLOCK_PLATFORMS

* Add tests

* Use _attr_is_closed

* Fix mypy errors

* Make the valve switch to disabled by default

* Add deprecation issues

* Remove LOGGER

* Clean

* Add deprecation comments

* Suggested changes

* Set True for is_fixable

* Show valve entity and services in repair issue
2023-12-26 07:56:21 +01:00
J. Nick Koston
b800475242 Use shorthand attrs for more tplink light attributes (#106399)
* Use shorthand attrs for more tplink light attributes

supported_color_modes and features were having to be recalced every time
state was written

* preen
2023-12-26 07:28:40 +01:00
Raman Gupta
18ace16744 Bump zwave-js-server-python to 0.55.1 (#105502) 2023-12-25 23:29:05 -05:00
Robert Hillis
6f9bff7602 Add config flow to Netgear LTE (#93002)
* Add config flow to Netgear LTE

* uno mas

* uno mas

* forgot one

* uno mas

* uno mas

* apply suggestions

* tweak user step

* fix load/unload/dep

* clean up

* fix tests

* test yaml before importing

* uno mas

* uno mas

* uno mas

* uno mas

* uno mas

* fix startup hanging

* break out yaml import

* fix doc string

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-26 05:19:28 +01:00
Alessandro Mariotti
f0e080f958 Bump getmac 0.9.4 (#106321) 2023-12-25 09:18:06 -10:00
J. Nick Koston
eb3fde7261 Avoid clearing the attr cache in setter when nothing has changed (#106384) 2023-12-25 09:13:48 -10:00
J. Nick Koston
50f64e053e Use identity checks for sensor device class enums (#106383) 2023-12-25 08:35:44 -10:00
Jan Bouwhuis
3016dbc2bd Enable toggle on valve/cover start in google_assistant (#106378) 2023-12-25 15:40:17 +01:00
Brett Adams
04a56eaabe Add data model to Tessie (#106285)
Add data model
2023-12-25 13:01:13 +01:00
G Johansson
123b2669f3 Add full coverage to Fast.com (#105596)
* Add full test coverage for Fast.com

* Remove not needed

* Add service deprecated test

* Rename speedtest

* Extend delay test
2023-12-25 12:04:07 +01:00
Brett Adams
4c11cb78c8 Add delay to manual refresh in Advantage Air (#104918)
* Add debouncer

* Avoid having 3 calls

* Debounce causes extra refresh in reload window

* Seperate disabled test to avoid latent refresh

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-25 12:01:59 +01:00
Maciej Bieniek
d59142a595 Add missing sensors for Shelly Pro Dimmer 2PM (#105008)
Add missing sensors for Shelly Pro Dimmer 2
2023-12-25 07:02:57 +01:00
Kevin Worrel
f45f0b4327 Split out shared screenlogic switch code (#106344) 2023-12-24 11:51:43 -10:00
jan iversen
9066555feb Deprecate parameter "retries" in modbus (#105024) 2023-12-24 16:47:22 +01:00
Patrick Frazer
771409579a Add select platform to drop_connect integration (#106309)
* Add select platform to drop_connect integration

* Fix select test

* Fix minor issues

* Make function definition more specific

* Revert change to switch.py for inclusion in separate PR

* Improve typing

* Add translation keys for select options

* Fix set function typing

* Remove redundant value check

* Remove args that match defaults
2023-12-24 15:03:10 +01:00
Dave T
0a4e82f190 Bump temperusb to 1.6.1 (#106346) 2023-12-24 12:23:26 +01:00
Sid
4ee0666efd Bump openwebifpy to 4.0.2 (#106345)
bump openwebifpy to 4.0.2
2023-12-24 12:22:53 +01:00
mkmer
fc349b0875 Missing exception on relogin in Honeywell (#106324)
Missing exception on relogin
2023-12-23 21:11:51 -05:00
J. Nick Koston
3d6fb60e93 Add support for attribute caching to the vacuum platform (#106332) 2023-12-23 15:36:45 -10:00
Joost Lekkerkerker
c7cb508896 Add diagnostics to ccm15 (#106329)
* Add diagnostics to ccm15

* Update homeassistant/components/ccm15/diagnostics.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-24 02:34:36 +01:00
Joost Lekkerkerker
e469c6892b Add Airnow to strict typing (#105566) 2023-12-23 15:16:15 -10:00
J. Nick Koston
278c7ac2a5 Add support for attribute caching to the todo platform (#106341) 2023-12-23 15:15:09 -10:00
J. Nick Koston
2a52453f5d Add support for attribute caching to the datetime platform (#106340) 2023-12-23 15:14:48 -10:00
J. Nick Koston
b5e1074062 Add support for attribute caching to the time platform (#106339) 2023-12-23 15:14:31 -10:00
J. Nick Koston
b6c2842b01 Add support for attribute caching to the date platform (#106338) 2023-12-23 15:14:09 -10:00
J. Nick Koston
24b14d07de Add support for attribute caching to the water_heater platform (#106336) 2023-12-23 14:29:18 -10:00
J. Nick Koston
38e79bbf9d Add support for attribute caching to the lawn_mower platform (#106335) 2023-12-23 14:28:25 -10:00
J. Nick Koston
63f3c23968 Add support for attribute caching to the weather platform (#106334) 2023-12-23 14:28:08 -10:00
J. Nick Koston
68974a849f Add support for attribute caching to the siren platform (#106337) 2023-12-23 14:27:38 -10:00
J. Nick Koston
85e9bc6f5a Add support for attribute caching to the image platform (#106333) 2023-12-23 14:27:14 -10:00
J. Nick Koston
f097e2a2f6 Add support for attribute caching to the media_player platform (#106257) 2023-12-23 13:33:11 -10:00
J. Nick Koston
b757984031 Optimize use_device_name check in base entity class (#106209) 2023-12-24 00:30:33 +01:00
J. Nick Koston
6e6d7a0c92 Add support for attribute caching to the event platform (#106330) 2023-12-23 13:23:32 -10:00
Diogo Gomes
b674985b20 Add 4 more entities in V2C Trydan EVSE (#105531)
* adds EVSE Lock, Timer, Dynamic Intensity, Dynamic Intensity Pause

* fix casing
2023-12-24 00:20:46 +01:00
J. Nick Koston
e43f4412fa Fix native_step in number not looking at _attr_native_step (#106327) 2023-12-23 13:20:24 -10:00
J. Nick Koston
abd3c54cbe Add support for attribute caching to the camera platform (#106256) 2023-12-23 13:01:47 -10:00
Jan-Philipp Benecke
2f72d4f9f0 Remove unnecessary async_add_job in face processing of image_processing (#106323) 2023-12-23 12:30:31 -10:00
Sid
bd6e2c54e1 Use shorthand attributes in enigma2 (#106318)
* enigma2: add strict typing, change property functions to _attr_*

* applied changes of review

* changes from review
2023-12-23 23:12:03 +01:00
Kevin Worrel
4c912fcf1b Update test data for screenlogic (#106325) 2023-12-23 11:57:27 -10:00
J. Nick Koston
9052b89d63 Add support for attribute caching to the climate platform (#106266) 2023-12-23 11:29:33 -10:00
J. Nick Koston
6d14c265b4 Ensure MQTT attributes are bound to the respective platform entity (#106316) 2023-12-23 10:39:25 -10:00
Oscar Calvo
b2caf15434 New integration Midea ccm15 climate (#94824)
* Initial commit

* Correct settings for config flow

* Use scan interval

* Store proper data

* Remove circular dependency

* Remove circular dependency

* Integration can be initialized

* Fix defaults

* Add setup entry

* Add setup entry

* Dont block forever

* Poll during async_setup_entry

* Remove not needed async methods

* Add debug info

* Parse binary data

* Parse binary data

* Use data to update device

* Use data to update device

* Add CCM15DeviceState

* Use DataCoordinator

* Use DataCoordinator

* Use DataCoordinator

* Use CoordinatorEntity

* Use CoordinatorEntity

* Call update API

* Call update API

* Call update API

* Call update API

* Use dataclass

* Use dataclass

* Use dataclass

* Use dataclass

* Use dataclass

* Use dataclass

* Use dataclass

* Use dataclass

* Fix bugs

* Implement swing

* Support swing mode, read only

* Add unit test

* Swing should work

* Set swing mode

* Add DeviceInfo

* Add error code

* Add error code

* Add error code

* Add error code

* Initial commit

* Refactor

* Remove comment code

* Try remove circular ref

* Try remove circular ref

* Remove circular ref

* Fix bug

* Fix tests

* Fix tests

* Increase test coverage

* Increase test coverage

* Increase test coverrage

* Add more unit tests

* Increase coverage

* Update coordinator.py

* Fix ruff

* Set unit of temperature

* Add bounds check

* Fix unit tests

* Add test coverage

* Use Py-ccm15

* Update tests

* Upgrade dependency

* Apply PR feedback

* Upgrade dependency

* Upgrade dependency

* Upgrade dependency

* Force ruff

* Delete not needed consts

* Fix mypy

* Update homeassistant/components/ccm15/coordinator.py

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

* Apply PR Feedback

* Apply PR Feedback

* Apply PR Feedback

* Apply PR Feedback

* Apply PR Feedback

* Apply PR Feedback

* Fix unit tests

* Move climate instance

* Revert "Move climate instance"

This reverts commit cc5b9916b7.

* Apply PR feedback

* Apply PR Feedback

* Remove scan internal parameter

* Update homeassistant/components/ccm15/coordinator.py

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

* Remove empty keys

* Fix tests

* Use attr fields

* Try refactor

* Check for multiple hosts

* Check for duplicates

* Fix tests

* Use PRECISION_WHOLE

* Use str(ac_index)

* Move {self._ac_host}.{self._ac_index} to construtor

* Make it fancy

* Update homeassistant/components/ccm15/coordinator.py

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

* Move const to class variables

* Use actual config host

* Move device info to construtor

* Update homeassistant/components/ccm15/climate.py

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

* Set name to none, dont ask for poll

* Undo name change

* Dont use coordinator in config flow

* Dont use coordinator in config flow

* Check already configured

* Apply PR comments

* Move above

* Use device info name

* Update tests/components/ccm15/test_coordinator.py

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

* Update tests/components/ccm15/test_config_flow.py

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

* Apply feedback

* Remove logger debug calls

* Add new test to check for dupplicates

* Test error

* Use better name for test

* Update homeassistant/components/ccm15/config_flow.py

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

* Update homeassistant/components/ccm15/climate.py

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

* Update homeassistant/components/ccm15/config_flow.py

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

* Use prop data for all getters

* Fix tests

* Improve tests

* Improve tests, v2

* Replace log message by comment

* No need to do bounds check

* Update config_flow.py

* Update test_config_flow.py

* Update test_coordinator.py

* Update test_coordinator.py

* Create test_climate.py

* Delete tests/components/ccm15/test_coordinator.py

* Update coordinator.py

* Update __init__.py

* Create test_climate.ambr

* Update conftest.py

* Update test_climate.py

* Create test_init.py

* Update .coveragerc

* Update __init__.py

* We need to check bounds after all

* Add more test coverage

* Test is not None

* Use better naming

* fix tests

* Add available property

* Update homeassistant/components/ccm15/climate.py

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

* Use snapshots to simulate netwrok failure or power failure

* Remove not needed test

* Use walrus

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-23 21:24:52 +01:00
J. Nick Koston
83e1ba338a Add support for attribute caching to the switch platform (#106258) 2023-12-23 09:22:02 -10:00
Robert Resch
ebdf7b9c8c Deprecate some deprecated const constants (#106230)
* Deprecate some deprecated const constants

* Improve code

* fix typing

* Apply suggestions from code review

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-23 20:18:51 +01:00
Franck Nijhof
55a5e9c4b5 Update psutil to 5.9.7 (#106295) 2023-12-23 09:04:34 -10:00
Joost Lekkerkerker
8c0594219f Add entity translations to Steamist (#96182)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-23 08:58:54 -10:00
Jan Bouwhuis
9234852e2a Improve typing on drop_connect switch entity description (#106314)
* Improve typing on drop_connext switch entity description

* Update homeassistant/components/drop_connect/switch.py

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

* Update homeassistant/components/drop_connect/switch.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-23 19:42:41 +01:00
J. Nick Koston
43757ecea5 Add support for attribute caching to the select platform (#106255) 2023-12-23 08:05:00 -10:00
J. Nick Koston
3d9fc8ed77 Add support for attribute caching to the light platform (#106260) 2023-12-23 08:04:30 -10:00
J. Nick Koston
1631a52b09 Add support for attribute caching to the alarm_control_panel platform (#106265) 2023-12-23 08:04:11 -10:00
J. Nick Koston
4ee961cd51 Add support for attribute caching to the cover platform (#106268) 2023-12-23 08:03:44 -10:00
c0ffeeca7
28dccc334d ISY994: remove reference to reload service (#106302) 2023-12-23 07:43:52 -10:00
Brandon Rothweiler
c629b434cd Add energy usage sensor to A. O. Smith integration (#105616)
* Add energy usage sensor to A. O. Smith integration

* Address review comments

* Address review comment

* Address review comment

* Create device outside of the entity class

* Address review comment

* remove platinum
2023-12-23 17:24:49 +01:00
Matt
345f7f2003 Fix feedreader date comparison to allow RSS entries with identical timestamps (#104925)
Change feedreader publishdate comparison
2023-12-23 16:48:36 +01:00
Jan Bouwhuis
e311a6835e Add valve platform support to google_assistant (#106139)
* Add valve platform to google_assistant

* Use constant for domains set
2023-12-23 16:46:25 +01:00
Patrick Frazer
c126022d4f Add switches to drop_connect integration (#106264)
* Add switches to drop_connect integration

* Let device update state

* Simplify icon property

* Use constants for icon names

* Add simulated responses from devices

* Use keyed form for switch value

* Clean up properties
2023-12-23 16:39:31 +01:00
Marco
d450a7f57e Improve mikrotik error handling (#106244)
* improve mikrotik error handling

* switch to debug

* fix mock command arguments

* add recommendations

---------

Co-authored-by: Marco98 <Marco98@users.noreply.github.com>
2023-12-23 16:26:27 +01:00
Sid
0af850cbb6 Restructure enigma2 integration to use async (#104206)
Restructure the enigma2 integration to use async
2023-12-23 16:08:53 +01:00
Jan Bouwhuis
6da2f98d34 Fix mqtt valve is not resetting opening or closing state (#106240)
* Fix mqtt valve is not resetting opening or closing state

* Require state or position attr in JSON state update

* Do not change `_attr_is_closed` if valve reports a position

* Add comment, use tuple

* Call _update_state
2023-12-23 15:18:44 +01:00
Brett Adams
043f3e640c Rework entity description functions in Tessie (#106287)
* use lamdba to return the library function

* Rename mocks

* lambda number

* Lambda button

* Add missing

* Remove context manager
2023-12-23 13:45:06 +01:00
doggkruse
ea7c839423 Apply units of measure provided in API when available in LaCrosse View (#106299)
* Apply units of measure provided in API when available to avoid mismatch of native units.  Improved fix for #106148

* Fix ruff error
2023-12-23 13:41:15 +01:00
Michael
da684d6a7b Add diagnostics support to Tankerkoenig (#106301) 2023-12-23 12:20:15 +01:00
J. Nick Koston
d83dafa14a Add support for attribute caching to the fan platform (#106269) 2023-12-23 11:26:40 +01:00
Robert Resch
060172fc24 Deprecate deprecated data entry flow constants (#106229) 2023-12-23 11:25:39 +01:00
Michael
859e7972ac Add significant Change support for vacuum (#106002) 2023-12-23 11:24:32 +01:00
J. Nick Koston
ff004a1c20 Add support for attribute caching to the sensor platform (#106252) 2023-12-23 11:13:02 +01:00
J. Nick Koston
97ed6570a7 Add support for attribute caching to the binary_sensor platform (#106253) 2023-12-23 11:11:50 +01:00
J. Nick Koston
1c8d961832 Add support for attribute caching to ToggleEntity (#106272) 2023-12-23 11:11:14 +01:00
J. Nick Koston
ca7daa21fe Add support for attribute caching to the text platform (#106262) 2023-12-23 11:10:46 +01:00
J. Nick Koston
ef0031cbcf Add support for attribute caching to the button platform (#106259) 2023-12-23 11:09:46 +01:00
J. Nick Koston
98dd69ba09 Add support for attribute caching to the remote platform (#106274) 2023-12-23 11:09:18 +01:00
J. Nick Koston
d1174593f9 Add support for attribute caching to the lock platform (#106275) 2023-12-23 11:08:35 +01:00
dependabot[bot]
01da8a089f Bump github/codeql-action from 2.22.10 to 3.22.12 (#106221)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-23 11:06:54 +01:00
J. Nick Koston
bb30bfa225 Reduce zeroconf matcher complexity (#105880) 2023-12-23 11:04:05 +01:00
Michael
321dc3984c Add significant Change support for humidifier (#106015) 2023-12-23 10:56:51 +01:00
Robert Resch
20ba764d92 Deprecate deprecated camera constants (#106095) 2023-12-23 10:46:23 +01:00
Franck Nijhof
3404bd4de5 Fix flaky Tailwind tests by fixing via_device (#106294) 2023-12-23 10:45:20 +01:00
Martin Hjelmare
1d0cee5e8a Improve cloud system health tests (#106235) 2023-12-23 10:35:16 +01:00
J. Nick Koston
5156a93b9e Add support for attribute caching to the update platform (#106261) 2023-12-23 10:29:55 +01:00
Aaron Bach
1e12c7fe12 Fix bug with non-existent Notion bridge IDs (#106152) 2023-12-23 10:26:00 +01:00
jjlawren
0ae4d017b9 Add subwoofer crossover support to Sonos Amp devices (#106290) 2023-12-23 10:25:20 +01:00
J. Nick Koston
5d2ddcb1d2 Add support for attribute caching to the number platform (#106254) 2023-12-22 15:22:18 -10:00
J. Nick Koston
634551dae0 Add support for attribute caching to the humidifier platform (#106271) 2023-12-22 15:22:06 -10:00
Phil Bruckner
963347b9c5 Reduce Life360 update time by fetching Places & Members in parallel (#106277) 2023-12-22 16:29:26 -06:00
Erik Montnemery
a4357409c8 Fix Shelly consumption_types (#106273) 2023-12-22 22:58:59 +01:00
Bram Kragten
7ba1736637 Filter by supported features for todo services (#106241) 2023-12-22 21:22:16 +01:00
Erik Montnemery
3a744d374b Add support for caching entity properties (#100601) 2023-12-22 09:02:55 -10:00
Martin Hjelmare
087eb86e37 Improve cloud binary sensor tests (#106238)
* Clean up cloud binary sensor test

* Test remove entity
2023-12-22 19:48:07 +01:00
Patrick Frazer
c41173bb29 Add binary sensors to drop_connect integration (#106248) 2023-12-22 19:26:52 +01:00
Allen Porter
656d0696bb Add support for re-ordering Google Tasks (#104769)
* Add reorder and task ordering

* Remove un-needed js id code

* Revert dead code deletion

* Remove reverted test and dead logger

* Update comment name
2023-12-22 18:49:41 +01:00
Kristof Mariën
32a5345a85 Add foscam coordinator (#92665)
* Add foscam coordinator

* Code cleanup

* Coordinator cleanup

* Coordinator cleanup

* Replace async_timeout with asyncio.timeout

* Ignore coordinator (requires external device)

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-22 17:44:52 +01:00
Cyrill Raccaud
181190d22d Log when swiss_public_transport loses connection (#106200)
* better handling of sensor init state

* sensor.py use integrated attr

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

* use parents implementation for availability

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-22 17:11:49 +01:00
G Johansson
d1d5c50b73 Add full test coverage to Trafikverket Train (#106247)
* Add full test coverage for Trafikverket Train

* Coordinator full coverage

* Now full coverage

* Add util
2023-12-22 16:53:51 +01:00
Floris272
8b0d19aca2 Add bluecurrent integration (#82483)
* Add bluecurrent integration

* Apply feedback

* Rename integration

* changed constants and removed strings.sensor.json

* update blue_current integration

* update bluecurrent-api to 1.0.4

* Update bluecurrent-api to 1.0.5

* Apply feedback

* Remove translation

* Apply feedback

* Use customer_id as unique id

* Apply feedback

* Add @pytest.mark.parametrize

* Replace loop.create_task with async_create_task
2023-12-22 16:34:16 +01:00
Joost Lekkerkerker
989a7e7b10 Clean up swiss public transport (#106245) 2023-12-22 15:59:01 +01:00
Rami Mosleh
c91ac22d3c Add location selector to Islamic prayer times (#105911)
* Add location selector to config flow

* Simplify entry data

* fix abort string

* Add migration with minor version

* Follow documented migration method
2023-12-22 15:24:50 +01:00
Alan Murray
b7661b4d79 Bump aiopulse to 0.4.4 (#106239)
* Bump Rolease Acmeda version 

Bump aiopulse version to 0.4.4 to fix issue for blinds that use status structure to indicate blinds that are fully open or closed.

* Update manifest.json

* update requirements
2023-12-22 15:23:39 +01:00
G Johansson
126a58a33e Return multiple trains in Trafikverket Train (#106206)
* Add list of trains to coordinator

* Fix to work

* snapshot

* Fixes

* Fix
2023-12-22 15:18:16 +01:00
Marc Mueller
f06d956da7 Update pytest warnings filter (#106234) 2023-12-22 14:52:31 +01:00
Jan-Philipp Benecke
13504d5fd5 Add consider home interval to ping (#104881)
* Add consider home interval to ping

* Run ruff after rebase

* Fix buggy consider home interval
2023-12-22 14:50:58 +01:00
Marc Mueller
a579a0c80a Update coverage to 7.3.4 (#106233) 2023-12-22 14:50:07 +01:00
Erik Montnemery
922cef2884 Don't make huawei_lte entity classes dataclasses (#106160) 2023-12-22 14:27:28 +01:00
Patrick Frazer
fce1b6d248 Add DROP integration (#104319)
* Add DROP integration

* Remove all but one platform for first PR

* Simplify initialization of hass.data[] structure

* Remove unnecessary mnemonic 'DROP_' prefix from DOMAIN constants

* Remove unnecessary whitespace

* Clarify configuration 'confirm' step description

* Remove unnecessary whitespace

* Use device class where applicable

* Remove unnecessary constructor and change its elements to class variables

* Change base entity inheritance to CoordinatorEntity

* Make sensor definitions more concise

* Rename HA domain from drop to drop_connect

* Remove underscores from class and function names

* Remove duplicate temperature sensor

* Change title capitalization

* Refactor using SensorEntityDescription

* Remove unnecessary intermediate dict layer

* Remove generated translations file

* Remove currently unused string values

* Use constants in sensor definitions

* Replace values with constants

* Move translation keys

* Remove unnecessary unique ID and config entry references

* Clean up DROPEntity initialization

* Clean up sensors

* Rename vars and functions according to style

* Remove redundant self references

* Clean up DROPSensor initializer

* Add missing state classes

* Simplify detection of configured devices

* Change entity identifiers to create device linkage

* Move device_info to coordinator

* Remove unnecessary properties

* Correct hub device IDs

* Remove redundant attribute

* Replace optional UID with assert

* Remove redundant attribute

* Correct coordinator initialization

* Fix mypy error

* Move API functionality to 3rd party library

* Abstract device to sensor map into a dict

* Unsubscribe MQTT on unload

* Move entity device information

* Make type checking for mypy conditional

* Bump dropmqttapi to 1.0.1

* Freeze dataclass to match parent class

* Fix race condition in MQTT unsubscribe setup

* Ensure unit tests begin with invalid MQTT state

* Change unit tests to reflect device firmware

* Move MQTT subscription out of the coordinator

* Tidy up initializer

* Move entirety of MQTT subscription out of the coordinator

* Make drop_api a class property

* Remove unnecessary type checks

* Simplify some unit test asserts

* Remove argument matching default

* Add entity category to battery and cartridge life sensors
2023-12-22 14:24:08 +01:00
Nikolay Vasilchuk
243ee2247b Add starline binary sensors (#105724)
* Additional attributes for starline

* Handsfree binary sensor

* Sensors

* Review
2023-12-22 13:22:44 +01:00
ashionky
102c7f1959 Add Refoss integration (#100573)
* refoss

* refoss

* refoss

* refoss

* refoss modify

* ip

* 8.22

* format

* format

* format

* bugfix

* test

* test

* test

* test

* test

* test

* 9.1

* refosss

* refoss

* refoss

* refoss

* refoss

* refoss

* refoss

* refoss

* test

* requirements_test_all.txt

* codeowners

* refoss

* Review feedback repair

* strings

* refoss

* refoss

* refoss

* 1.1.1

* 1.1.2

* refoss

* refoss

* refoss.1.1.7

* refoss-gree

* 1.1.7

* test

* refoss

* test refoss

* test refoss

* refoss-test

* refoss

* refoss

* test

* test

* refoss

* CODEOWNERS

* fix

* Update homeassistant/components/refoss/__init__.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-22 13:18:32 +01:00
Jan Bouwhuis
f536bc1d0c Add valve support to Amazon Alexa (#106053)
Add valve platform to Amazon Alexa
2023-12-22 12:08:06 +01:00
Brett Adams
b4f8fe8d4d Add media player platform to Tessie (#106214)
* Add media platform

* Add more props

* Fix platform filename

* Working

* Add a test

* Update test and fixture

* Refactor media player properties to handle null values

* Add comments

* add more assertions

* Fix test docstring

* Use walrus instead.

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

* Test  when media player is idle

* Fix tests

* Remove None type from volume_level

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

* Return media position only when a media duration is > 0

* Remove impossible None type

* Add snapshot and freezer

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-22 12:07:47 +01:00
RJPoelstra
2c2e6171e2 Add integration for Vogel's MotionMount (#103498)
* Skeleton for Vogel's MotionMount support.

* Generated updates.

* Add validation of the discovered information.

* Add manual configuration

* Use a mac address as a unique id

* Add tests for config_flow

* Add a 'turn' sensor entity.

* Add all needed sensors.

* Add number and select entity for control of MotionMount

* Update based on development checklist

* Preset selector now updates when a preset is chosen

* Fix adding presets selector to device

* Remove irrelevant TODO

* Bump python-MotionMount requirement

* Invert direction of turn slider

* Prepare for PR

* Make sure entities have correct values when created

* Use device's mac address as unique id for entities.

* Fix missing files in .coveragerc

* Remove typing ignore from device library.

Improved typing also gave rise to the need to improve the callback mechanism

* Improve typing

* Convert property to shorthand form

* Remove unneeded CONF_NAME in ConfigEntry

* Add small comment

* Refresh coordinator on notification from MotionMount

* Use translation for entity

* Bump python-MotionMount

* Raise `ConfigEntryNotReady` when connect fails

* Use local variable

* Improve exception handling

* Reduce duplicate code

* Make better use of constants

* Remove unneeded callback

* Remove other occurrence of unneeded callback

* Improve removal of suffix

* Catch 'getaddrinfo' exception

* Add config flow tests for invalid hostname

* Abort if device with same hostname is already configured

* Make sure we connect to a device with the same unique id as configured

* Convert function names to snake_case

* Remove unneeded commented-out code

* Use tuple

* Make us of config_entry id when mac is missing

* Prevent update of entities when nothing changed

* Don't store data in `hass.data` until we know we will proceed

* Remove coordinator

* Handle situation where mac is EMPTY_MAC

* Disable polling

* Fix failing hassfest

* Avoid calling unique-id-less discovery handler for situations where we've an unique id
2023-12-22 12:04:58 +01:00
Brett Adams
c824d06a8c Add number platform to Tessie (#106205)
* Add number platform

* Make self.set consistent

* Fix test docstring

* Use entity descriptions

* Add patch_description to tests

* Rename argument to arg

* Make max key mandatory

* Set SOC min to normal value
2023-12-22 11:57:21 +01:00
Nerdix
9237740103 Increase version default timeout from 10 to 30 seconds (#106158)
* Update __init__.py

* Update __init__.py

* Revert timeout changes

* Revert commit Revert timeout changes
2023-12-22 11:37:03 +01:00
Robert Resch
4d5bea7bcc Deprecate deprecated switch constants (#106225) 2023-12-22 11:23:21 +01:00
Robert Resch
06220849fc Deprecate deprecated water_heater constants (#106226) 2023-12-22 11:23:03 +01:00
Robert Resch
e18d2b8873 Deprecate deprecated device_registry helper constants (#106227) 2023-12-22 11:21:45 +01:00
Brett Adams
23fa86cc23 Add cover platform to Tessie (#105422)
* Add cover platform

* fix case

* Remove virtual key issue

* Remove redundant logic

* Fix logic that I missed

* Add missing types

* Add missing type

* Update entity

* Make window name better

* Fix test

* Update docstrings and comments
2023-12-22 10:17:23 +01:00
Brett Adams
1170e72913 Add lock platform to Tessie (#106216)
* Add lock platform

* Update tests

* fix test docstring
2023-12-22 10:11:48 +01:00
Brett Adams
abc57ea706 Quality improvements for Tessie (#106218)
Quality improvements
2023-12-22 10:11:18 +01:00
Jon Caruana
72da0a0e1d Bump pylitejet to v0.6.2 (#106222)
Bump pylitejet to 0.6.2
2023-12-22 10:04:16 +01:00
Tobias Sauerwein
7ef20c4431 Fix Netatmo light switching states by assuming state until next update (#106162) 2023-12-22 07:37:57 +01:00
Brett Adams
8918a9c2c4 Add button platform to Tessie (#106210) 2023-12-21 16:40:55 -10:00
Brett Adams
e86ac568e1 Add device tracker to Tessie (#105428)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-21 14:28:58 -10:00
Robert Resch
8b08b5e8d2 Deprecate legacy_templates (#105556)
* Deprecate legacy_templates

* Improve wording

* Implement suggestion

* simplify

* Add deleting of the repair issues back

* Update homeassistant/components/homeassistant/strings.json

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

* Test issue removal too

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-22 00:42:16 +01:00
Jan-Philipp Benecke
88ea5f7a54 Use call_soon_threadsafe in face processing of image_processing (#106168) 2023-12-22 00:38:49 +01:00
J. Nick Koston
e75357980a Bump aiohttp-zlib-ng to 0.1.2 (#106193)
fixes #105254
2023-12-22 00:03:42 +01:00
Diogo Alves
69f8514556 Fix lacrosse view sensor units (#106203)
Fixed Unit values from sensor.py

There was a mistake on the units from the sensor that where messing up the device readings on rain, windchill and feels like sensors
2023-12-21 23:28:19 +01:00
Robert Resch
c4c422de79 Skip logging deprecated constant if the calling integration couldn't be indentified (#106181)
* Add option to log only if a integreation is detected for a deprecated constant

* Require param

* Add test that log entry is not created

* typo
2023-12-21 23:19:40 +01:00
Cyrill Raccaud
9fbc15c28b Bump python-opendata-transport to 0.4.0 (#106199)
bump version to 0.4.0
2023-12-21 22:17:43 +01:00
Marc Mueller
d144d6cd68 Update mypy to 1.8.0 (#106189) 2023-12-21 22:01:49 +01:00
Denis Shulyaka
9ba53e03ee Bump httpx to 0.26.0 and httpcore to 1.0.2 (#106194) 2023-12-21 10:11:00 -10:00
Cyrill Raccaud
7e685f2bc7 Swiss public transport config flow (#105648)
* add config flow

* unit tests

* yaml config import flow

* change deprecation period and simply code

* keep name for legacy yaml
- removing the name now would break current implementations
- it will be removed together with the deprectation of  yaml config flow

* improve error handling, simpler unique_id, cleanup

* simplify issues for yaml import flow

* improve typing and clean name handling

* streamline unit tests
- happy path + errors
- mock opendata instead of aiohttp

* parametrize unit tests

* improve strings

* add missing aborts

* update coverage ignore

* remove redundant test

* minor clean up of constants
2023-12-21 20:38:00 +01:00
J. Nick Koston
54f460b7c9 Improve performance of dhcp on high activity networks (#105884)
* Improve performance of dhcp on high activity networks

Most of the overhead was constructing IPAddress objects
which is solved with https://github.com/bdraco/cached-ipaddress

* fix test

* fix: bump

* bump again

* lets do it on the correct branch
2023-12-21 20:36:09 +01:00
fwestenberg
f9c096687f Bump Devialet to 1.4.5 (#106184)
* Bump Devialet==1.4.4

* Bump Devialet to 1.4.5
2023-12-21 20:18:20 +01:00
DeerMaximum
dfc7ff8e64 Bump pyvlx to 0.2.21 (#105800)
* Bump pyvlx to 0.2.21

* Fix typing

* Optimize fix
2023-12-21 18:28:42 +01:00
Robert Groot
d5c7ae5b34 Add Energyzero get_gas_prices and get_energy_price services (#101374)
Co-authored-by: Klaas Schoute <klaas_schoute@hotmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-21 15:39:51 +01:00
Erik Montnemery
0534b0dee4 Improve entity tests (#106175) 2023-12-21 15:32:25 +01:00
fwestenberg
39a956cea3 Bump Devialet to 1.4.4 (#106171)
Bump Devialet==1.4.4
2023-12-21 15:00:11 +01:00
sdb9696
ab2f3381a5 Bump ring-doorbell to 0.8.5 (#106178) 2023-12-21 14:58:01 +01:00
Martin Hjelmare
e1f31194f7 Move cloud stt engine to config entry (#99608)
* Migrate cloud stt to config entry

* Update default engine

* Test config flow

* Migrate pipelines with cloud stt engine to new engine id

* Fix test after rebase

* Update and add comment

* Remove cloud specifics from default stt engine

* Refactor cloud assist pipeline

* Fix cloud stt entity_id

* Try to wait for platforms before creating default pipeline

* Clean up import

* Move function in cloud assist pipeline

* Wait for tts platform loaded in stt migration

* Update deprecation dates

* Clean up not used fixture

* Add test for async_update_pipeline

* Define pipeline update interface better

* Remove leftover

* Fix tests

* Change default engine test

* Add test for missing stt entity during login

* Add and update comments

* Update config entry title
2023-12-21 13:39:02 +01:00
Jan-Philipp Benecke
f0104d6851 Remove gios sensor description required fields mixin (#106174) 2023-12-21 13:25:21 +01:00
David Bonnes
aa9f00099d Make evohome strictly typed (#106012)
* initial commit

* return to conventional approach

* add type hint for wrapper

* use walrus operator
2023-12-21 13:22:42 +01:00
Richard Kroegel
2b65fb22d3 Remove warning message on BMW initialization (#106169)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-12-21 13:12:25 +01:00
Brett Adams
13908cf5a6 Add update platform to Tessie (#106093)
* Add version platform

* Add strings and test

* Remove potential for None

* Dont show progress when no update is running

* Return None for no update

* Add comment

* Remove future feature

* WIP

* Fix statuses

* update fixture

* Remove entity name

* Remove name correctly

* Use False for in_progress
2023-12-21 12:43:11 +01:00
Jan Bouwhuis
f263da843a Fix typo's en and improve language on MQTT data descriptions (#106165)
* Fix typo's en and prove language on MQTT data descriptions

* Update homeassistant/components/mqtt/strings.json

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

* Update homeassistant/components/mqtt/strings.json

* Update homeassistant/components/mqtt/strings.json

Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
2023-12-21 12:32:24 +01:00
Jan-Philipp Benecke
0ae0331c5c Migrate google related tests to use freezegun (#105552)
* Migrate google related tests to use freezegun

* retrigger CI

* Fix google tests

* Add timezone to config_entry_token_expiry

* Separate config_entry_token_expiry from token_expiry

* Also test token refresh for offset-naive tokens

* retrigger CI

* Apply code review suggestion

Co-authored-by: Allen Porter <allen.porter@gmail.com>

* Run ruff-format

---------

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2023-12-21 12:23:01 +01:00
Jan Bouwhuis
f8f31627ce Refactor ranging utils for mqtt cover (#105739)
* Refactor ranging utils for mqtt cover

* Use literals for default min and max percentage
2023-12-21 11:54:05 +01:00
Michael
0614e291c1 Set WiFi QR code entity to unknown when Fritzbox is not available (#105870) 2023-12-21 10:29:01 +01:00
Matthias Alphart
46d63ad7ba Allow Fronius devices to be deleted (#106141) 2023-12-21 10:02:38 +01:00
J. Nick Koston
235914c63a Improve performance of dhcp integration client processing (#106137)
We were using run_callback_threadsafe here which has the overhead
of creating a future and waiting for the result when we throw
it away.
2023-12-21 09:28:04 +01:00
Brett Adams
1d63c34816 Add flags to EntityDescriptions in Tessie (#105847)
* Add SensorEntityDescription flags

* fix datclass attributes
2023-12-21 09:15:51 +01:00
J. Nick Koston
6845218a24 Bump bluetooth-data-tools to 1.19.0 (#106156) 2023-12-20 21:13:59 -10:00
Erik Montnemery
037eb33710 Refactor media_player test classes (#105630) 2023-12-21 08:11:27 +01:00
Lucas Mindêllo de Andrade
48241771f6 Bump SunWEG to 2.0.3 (#106135)
* chore(sunweg): bump version

* chore(sunweg): bump 2.0.3
2023-12-21 07:45:41 +01:00
puddly
bfaae77e51 Bump ZHA dependencies (#106147) 2023-12-21 07:44:36 +01:00
J. Nick Koston
e50fe79911 Update habluetooth to 2.0.0 (#106145) 2023-12-20 20:37:39 -10:00
Brett Adams
dbb726f41f Add Select platform to Tessie (#105423)
* Add select platform

* Add error coverage

* Fix case

* fix value

* Remove virtual key issue

* Add TessieSeatHeaterOptions enum and update TessieSeatHeaterSelectEntity options

* use ENUM in tests

* Porting other fixes

* Update entity
2023-12-21 07:34:31 +01:00
Phil Bruckner
126f0e4047 Bump life360 to 6.0.1 (#106149)
* Bump life360 package to 6.0.1

Fix recent API issues.

* Update requirements files
2023-12-21 07:18:49 +01:00
tronikos
aa51b5f6d4 Add virtual integrations for AEP utilities supported by opower (#106146) 2023-12-21 06:44:40 +01:00
Brett Adams
e2cf4244ea Add switch platform to Tessie (#106153)
* Add switch platform

* Make functions mandatory

* Underscores

* Improvements
2023-12-21 06:34:52 +01:00
Brett Adams
7c5824b4f3 Add climate platform to Tessie (#105420)
* Add climate platform

* Other fixes

* Use super native value

* change to _value

* Sentence case strings

* Add some more type definition

* Add return types

* Add some more assertions

* Remove VirtualKey error

* Add type to args

* rename climate to primary

* fix min max

* Use String Enum

* Add PRECISION_HALVES

* Fix string enum

* fix str enum

* Simplify run logic

* Rename enum to TessieClimateKeeper
2023-12-21 06:18:18 +01:00
J. Nick Koston
e2314565bb Fix ESPHome Bluetooth diagnostics (#106151) 2023-12-20 18:33:43 -10:00
J. Nick Koston
ced4123d4c Bump pyenphase to 1.15.2 (#106134) 2023-12-20 14:10:56 -10:00
J. Nick Koston
5722b4a1ce Break out the ESPHome Bluetooth scanner connection logic into bleak-esphome (#105908) 2023-12-20 13:36:37 -10:00
Robert Resch
d47ec91231 Deprecate deprecated sensor constants (#106120) 2023-12-21 00:02:20 +01:00
Robert Resch
494a897568 Deprecate deprecated climate constants (#106096) 2023-12-21 00:00:21 +01:00
J. Nick Koston
dfb08e7efd Remove unneeded usage of run_callback_threadsafe in entity helper (#106138)
We do not need to create a future here as we do not
need to wait for the result as its going to run
in the background in a task anyways
2023-12-20 23:57:20 +01:00
Ville Skyttä
24b1e01d71 Update Ruff to 0.1.8, avoid linter/formatter conflicts (#106080)
* Disable Ruff rules that may conflict with the formatter

* Upgrade Ruff to 0.1.8

- https://github.com/astral-sh/ruff/releases/tag/v0.1.7
- https://github.com/astral-sh/ruff/releases/tag/v0.1.8

* Format with Ruff 0.1.8
2023-12-20 23:55:09 +01:00
Jan Bouwhuis
f5f9b89848 Add water_heater to google_assistant (#105915)
* Add water_heater to google_assistant

* Follow up comments

* Add water_heater to default exposed domains
2023-12-20 23:26:55 +01:00
Jan Bouwhuis
c57cc85174 Add note on overkiz measurement sensor fix (#105141) 2023-12-20 23:07:31 +01:00
Jan Bouwhuis
65d3f7e1c7 Improve error mqtt valve error logging (#106129)
* Improve error mqtt valve error logging

* Update homeassistant/components/mqtt/valve.py

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

* Update homeassistant/components/mqtt/valve.py

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

* Update homeassistant/components/mqtt/valve.py

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

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-12-20 21:18:30 +01:00
Tobias Sauerwein
69dcc159ae Bump pyatmo to 8.0.1 (#106094)
Fix missing NLFE
2023-12-20 20:32:03 +01:00
Robert Resch
98f0ed1892 Deprecate deprecated siren constants (#106121) 2023-12-20 19:11:03 +01:00
Robert Resch
803e77bebd Move prusalink migration to async_migrate_entry and use a minor version bump (#106109)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-20 19:10:12 +01:00
Robert Resch
ea28b74fe9 Deprecate deprecated alarm control panel constants (#106058) 2023-12-20 18:41:17 +01:00
Robert Resch
491a50a2f1 Deprecate deprecated lock constants (#106113) 2023-12-20 18:07:17 +01:00
Robert Resch
9dd1b9e268 Deprecate deprecated device tracker constants (#106099) 2023-12-20 18:06:38 +01:00
Robert Resch
28e4358c53 Deprecate deprecated humidifier constants (#106112) 2023-12-20 18:05:43 +01:00
Robert Resch
9830f77e9e Deprecate deprecated cover constants (#106098) 2023-12-20 18:04:44 +01:00
Robert Resch
c9c072ff3e Deprecate deprecated fan constants (#106111) 2023-12-20 17:54:43 +01:00
J. Nick Koston
2403b21c4f Bump zeroconf to 0.131.0 (#106037) 2023-12-20 06:37:52 -10:00
Robert Resch
036c856500 Deprecate deprecated number constants (#106114) 2023-12-20 17:28:52 +01:00
Robert Resch
58759ff6b7 Deprecate deprecated remote constants (#106116) 2023-12-20 17:20:50 +01:00
Jan Bouwhuis
93c800c4e8 Add water_heater to alexa (#106011)
* Add water_heater support to alexa

* Improve test coverage

* Follow up comments
2023-12-20 16:48:02 +01:00
Robert Resch
5a3db078d5 Use patch.dict in deprecation test "test_check_if_deprecated_constant" (#106117) 2023-12-20 16:06:26 +01:00
Ben
56967a92e0 Bump surepy to 0.9.0 (#106101) 2023-12-20 15:46:54 +01:00
On Freund
3e07cf50ce Don't fetch unchanged OurGroceries lists (#105998) 2023-12-20 10:35:42 +01:00
Nikolay Vasilchuk
33bcf70bf3 Add Starline Service Mode switch (#105741)
* Starline Service Mode switch

* Update homeassistant/components/starline/strings.json

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-20 09:51:46 +01:00
Jan Bouwhuis
c7f6ab2457 Add MQTT valve platform (#105766)
* Add mqtt valve platform

* No stop topic-reports_position and validation

* Do not allow state_open, state_closed with position reporing valve

* Allow open/close feature to be disabled

* Follow up comments

* Rename

* Apply defaults in validator

* Update docstr
2023-12-20 07:49:49 +01:00
Sid
918ea8f56d Move shared enigma2 constants (#106064)
enigma2: move shared constants from media_player.py into its own const.py
2023-12-19 23:19:24 +01:00
J. Nick Koston
97a14f6b6c Bump aioesphomeapi to 21.0.1 (#106079) 2023-12-19 11:43:00 -10:00
vexofp
c5a3e58994 Pass timeout to httpx in RESTful Switch (#105364)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-19 10:47:42 -10:00
raww
f7a5b14cd6 Bump switchbot-api to 1.3.0 (#105594) 2023-12-19 10:27:31 -10:00
Franck Nijhof
63a535e9d9 Small cleanup in Tailwind (#106073) 2023-12-19 21:17:29 +01:00
Michael Chisholm
64a2c64419 Bump async-upnp-client to 0.38.0 (#105980) 2023-12-19 10:12:30 -10:00
Erik Montnemery
1ae6f1e9e2 Add valve support to switch_as_x (#105988) 2023-12-19 20:16:18 +01:00
Robert Resch
db985925c4 Deprecate deprecated automation constants (#106067) 2023-12-19 19:22:13 +01:00
Klaas Schoute
9275d35c0a Improve tests for easyEnergy (#105989) 2023-12-19 19:02:40 +01:00
Niklas Wagner
91f8d3faef Upgrade Prusa Link to new Digest Authentication and /v1/ API (#103396)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-19 18:07:27 +01:00
Robert Resch
c226d793d4 Move common function for testing derepcation constants to util (#106063) 2023-12-19 17:31:31 +01:00
Robert Resch
0e0fd39603 Add dir_with_deprecated_constants function to deprecation helper (#106059) 2023-12-19 16:37:21 +01:00
Franck Nijhof
63136572a5 Update gotailwind to 0.2.2 (#106054) 2023-12-19 13:35:29 +01:00
Joakim Sørensen
5b4000e759 Bump hass-nabucasa from 0.74.0 to 0.75.1 (#105958)
* Bump hass-nabucasa from 0.74.0 to 0.75.1

* Force sorting of parametrized test

* Simplify async_create_issue.severity

* use fixtures
2023-12-19 13:08:27 +01:00
Franck Nijhof
48740e6b05 Add cover platform to Tailwind integration (#106042) 2023-12-19 12:46:21 +01:00
Robert Resch
a4ccd6e13b Deprecate binary sensor device class constants (#105736)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-19 12:45:32 +01:00
G Johansson
c64c1c8f08 Workday create repair if named holiday missing (#101201) 2023-12-19 12:33:05 +01:00
Michael
c87f2027d4 Use check_valid_float helper in significant change support of sensor and weather (#106013) 2023-12-19 12:31:10 +01:00
Michael
a1614d6b7e Add significant Change support for climate (#106020) 2023-12-19 12:30:30 +01:00
Jan-Philipp Benecke
7d74c89606 Use freezegun in image_upload test (#106045) 2023-12-19 12:26:40 +01:00
Jan-Philipp Benecke
f84e43bc0a Use freezegun in qld_bushfire test (#106049) 2023-12-19 12:21:19 +01:00
Jan-Philipp Benecke
c50098a845 Use freezegun in nsw_rural_fire_service_feed test (#106050) 2023-12-19 12:20:56 +01:00
Jan-Philipp Benecke
2d31f9e984 Use freezegun in ign_sismologia test (#106051) 2023-12-19 12:20:28 +01:00
Jan-Philipp Benecke
f20e4b9df1 Add myself as code owner for rest_command (#106047) 2023-12-19 12:07:13 +01:00
Jan-Philipp Benecke
bb6f78dcc4 Remove sun entity description required fields mixin (#105848) 2023-12-19 11:16:35 +01:00
Franck Nijhof
ef59394ef4 Add binary sensor platform to Tailwind integration (#106033) 2023-12-19 10:38:56 +01:00
Michael
a4cb64e20e Add significant Change support for water heater (#106003) 2023-12-19 10:38:13 +01:00
mkmer
8c3911ffea Bump blinkpy 0.22.4 (#105993) 2023-12-19 10:36:13 +01:00
Jan-Philipp Benecke
40f30675dd Remove gree switch entity description required fields mixin (#105849) 2023-12-19 10:35:19 +01:00
Jan-Philipp Benecke
ed9e738985 Remove ipma entity description required fields mixin (#106039) 2023-12-19 10:35:04 +01:00
Guido Schmitz
24191545a1 Bump devolo_home_control_api to 0.18.3 (#106035) 2023-12-19 10:26:54 +01:00
Michael
458fcc6372 Add significant Change support for alarm control panel (#106021) 2023-12-19 09:58:02 +01:00
mkmer
061c144fe8 Correct logic in honeywell for cleaning up stale devices (#106018)
* code quality fixes

* remove unnecessary code

* Remove comment

* change config entry configuration order

* update based on aladdin connect pr
2023-12-19 07:58:35 +01:00
tronikos
09a0ace671 Fix opower for AEP utilities (#106010) 2023-12-18 20:49:18 -10:00
mkmer
69fccec147 Clean up device registry for doors that no longer exist in Aladdin Connect (#99743)
* Remove devices that no longer exist

* Run Black after merge

* config 2 devices then 1 devices

* clean up device assertions

* More generic device check

* Add request from Honeywell PR

* remove unnecesary test
optimize dont_remove

* remove unnecessary test

* Actually test same id different domain

* Test correct id

* refactor remove test

* Remove .get for non optional keys

* Comprehension for all_device_ids

* Fix DR test, remove `remove`

* fix entities for full test coverage

* remove unused variable assignment

* Additional assertions confirming other domain

* Assertion error

* new method for identifier loop

* device_entries for lists
2023-12-19 07:30:02 +01:00
Erik Montnemery
0c2485bc03 Freeze integration entity descriptions (#105984)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-18 16:28:13 -10:00
Joakim Plate
ae8db120e8 Upgrade gardena_bluetooth to 1.4.1 (#106017) 2023-12-18 16:27:31 -10:00
Luke Lashley
97e66ef9ee Bump Roborock to 0.38.0 (#106025) 2023-12-18 16:26:45 -10:00
Sid
953a035cb5 Update enigma2 codeowners (#106000) 2023-12-18 15:30:23 -10:00
Erik Montnemery
6f392a3b43 Avoid mutating entity descriptions in sunweg tests (#106024) 2023-12-18 15:26:59 -10:00
Erik Montnemery
649e8e689d Fix entity descriptions in upnp (#106023) 2023-12-18 15:26:38 -10:00
Erik Montnemery
d1f6b1271f Avoid mutating entity descriptions in screenlogic (#106022) 2023-12-18 15:26:17 -10:00
epenet
17b53d7acb Remove leftover logging in onewire (#105986)
Remove leftover logging
2023-12-19 00:23:51 +01:00
Michael
29e30e796a Add significant change helper check_valid_float (#106005) 2023-12-18 21:59:30 +01:00
Marc Mueller
446f560b59 Set aiohttp shutdown_timeout on AppRunner instead of TCPSite (#105973) 2023-12-18 10:59:23 -10:00
Guido Schmitz
b35afccdb7 Add PLC PHY rates as sensor to devolo Home Network (#87039)
* Add plc phyrate sensors

* Fix mypy

* Add tests

* Use suggested_display_precision

* Adapt to recent development

* Remove accidentally added constant

* Fix tests

* Fix pylint

* Use PHY rate instead of phyrate

* Adapt tests

* Hopefully fix mypy

* Hopefully fix mypy

* Use LogicalNetwork

* Apply mypy fixes
2023-12-18 21:11:06 +01:00
Eugenio Panadero
b96d2cadac Add new price sensors with API token access to pvpc hourly pricing (#85769)
*  Implement optional API token in config-flow + options

to make the data download from an authenticated path in ESIOS server

As this is an *alternative* access, and current public path works for the PVPC,
no user (current or new) is compelled to obtain a token,
and it can be enabled anytime in options, or doing the setup again

When enabling the token, it is verified (or "invalid_auth" error),
and a 'reauth' flow is implemented, which can change or disable the token if
it starts failing.

The 1st step of config/options flow adds a bool to enable this private access,
- if unchecked (default), entry is set for public access (like before)
- if checked, a 2nd step opens to input the token, with instructions
  of how to get one (with a direct link to create a 'request email').
  If the token is valid, the entry is set for authenticated access

The 'reauth' flow shows the boolean flag so the user could disable a bad token
by unchecking the boolean flag 'use_api_token'

* ♻️ Remove storage of flag 'use_api_token' in config entry

leaving it only to enable/disable the optional token in the config-flow

* ♻️ Adjust async_update_options

*  Add new price sensors with API token access

New price sensors added:
- Injection price: price of excess energy from self-consumption
- OMIE price: electricity price in the 'open' market
- MAG price: Temporal tax cost for gas compensation

*  Adapt tests to work with multiple sensors

* 🐛 Fix all integration sensors going unavailable

when any sensor lacks data for the current day (usually the 'OMIE price')

* Fix rebase

* Customize icons and display precision for new sensors

* Disable MAG Tax and OMIE price sensors by default

* Move logic to assign sensor unique ids to integration

* Move helper functions to helpers.py

* Fix sensor activation for API download
2023-12-18 21:06:02 +01:00
Erik Montnemery
1d1cd6be57 Avoid mutating entity descriptions in sunweg (#105982) 2023-12-18 10:03:40 -10:00
Erik Montnemery
27f81b3f63 Avoid mutating entity descriptions in unifiprotect (#105976) 2023-12-18 09:58:32 -10:00
Miguel Camba
5175737b60 Add Valve integration (#102184)
* Add Valve integration.

This adds the valve integration discussed in https://github.com/home-assistant/architecture/discussions/975
Most of the code is taken from the cover integration but simplified since valves
can't tilt.

There are a couple outstanding errors I'm not sure how to solve and prevents
me from even making this commit without `--no-verify`.

* Apply PR feedback

* Apply more feedback: Intruduce the bare minimum

* Remove file commited by mistake

* Hopefully this fixes tests

* Match cover's typing and mypy settings

* Change some configuration files

* Fix test

* Increase code coverage a little

* Code coverate inproved to 91%

* 95% code coverage

* Coverate up to 97%

* Coverage 98%

* Apply PR feedback

* Even more feedback

* Add line I shouldn't have removed

* Derive closed/open state from current position

* Hopefully last feedback

* Update homeassistant/components/valve/__init__.py

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

* Update homeassistant/components/valve/__init__.py

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

* Remove unnecesary translation

* Remove unused method arguments

* Complete code coverage

* Update homeassistant/components/valve/__init__.py

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

* Simplify tests

* Update homeassistant/components/valve/__init__.py

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

* Apply last feedback

* Update tests/components/valve/test_init.py

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

* Update tests/components/valve/test_init.py

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

* Update tests/testing_config/custom_components/test/valve.py

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

* More feedback

* Apply suggestion

* And more feedback

* Apply feedback

* Remove commented code

* Reverse logic to unindent

* Update homeassistant/components/valve/__init__.py

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

* Update homeassistant/components/valve/__init__.py

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

* Implement stop valve for Mock valve

* Fix tests now that I've implemented stop_valve

* Assert it's neither opening nor closing

* Use current position instead

* Avoid scheduling executor when opening or closing

* Fix incorrect bitwise operation

* Simplify toggle

* Remove uneeded partial functions

* Make is_last_toggle_direction_open private

* Remove valve from test custom integration

* Improve test coverage

* Address review comments

* Address review comments

* Address review comments

* Update homeassistant/components/valve/__init__.py

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

* Update tests

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Erik <erik@montnemery.com>
2023-12-18 19:48:00 +01:00
Stefan Agner
93a9a9d1e2 Add Raspberry Pi 5 to version and hardware integration (#105992) 2023-12-18 19:31:37 +01:00
Erik Montnemery
0a6f541b27 Avoid mutating entity descriptions in screenlogic (#105983) 2023-12-18 19:14:10 +01:00
Rami Mosleh
ab40ba80a9 Improve Transmission Entity description class (#105924)
* Add entity mixin for transmission sensors

* use kw_only in EntityDescription class

* minor fix

* Update sensor.py uom
2023-12-18 19:09:01 +01:00
Franck Nijhof
5f2a13fec6 Add DHCP discovery to Tailwind (#105981) 2023-12-18 15:52:48 +01:00
Daniel Gangl
72fe30439e Rename zamg to GeoSphere Austria (#105494) 2023-12-18 15:47:44 +01:00
Erik Montnemery
2515e520c1 Allow step size any for number selector in slider mode (#105978) 2023-12-18 15:30:59 +01:00
Marc Mueller
b671de8942 Improve logging util typing (#105968) 2023-12-18 14:54:12 +01:00
Michael
58070e14a7 Add significant Change support for camera (#105866) 2023-12-18 14:40:55 +01:00
Jan-Philipp Benecke
0972dc5867 Migrate directv test to use freezegun (#105894) 2023-12-18 14:40:13 +01:00
Franck Nijhof
556be26040 Add button platform to Tailwind integration (#105961) 2023-12-18 14:11:43 +01:00
J. Nick Koston
4bdfea5d67 Remove HaAsyncServiceBrowser from zeroconf (#105881) 2023-12-18 14:11:06 +01:00
tronikos
4f11419ae7 Bump google-generativeai to 0.3.1 (#105783) 2023-12-18 14:07:08 +01:00
Franck Nijhof
79aa888ca0 Add diagnostics platform to Tailwind (#105965) 2023-12-18 14:05:15 +01:00
mkmer
a2a9a8e231 Fix typo in deprecated comment (#105969) 2023-12-18 14:04:19 +01:00
Erik Montnemery
bad9598baa Avoid mutating entity descriptions in ovo_energy (#105971) 2023-12-18 14:03:57 +01:00
Erik Montnemery
8518d46d28 Avoid mutating entity descriptions in radarr (#105972) 2023-12-18 14:03:41 +01:00
Erik Montnemery
7a9e303e20 Avoid mutating entity descriptions in onewire (#105970) 2023-12-18 13:58:57 +01:00
Tobias Sauerwein
57a6effd70 Fix unreachable Netatmo sensor returning false values (#105954)
* Fix unreachable sensor returning false values

* Clean up unnecessary code
2023-12-18 13:57:34 +01:00
Erik Montnemery
94d22c936e Avoid mutating entity descriptions in tomorrowio (#105975) 2023-12-18 13:57:11 +01:00
Erik Montnemery
77c72f2402 Avoid mutating entity descriptions in solaredge (#105974) 2023-12-18 13:55:12 +01:00
Robert Resch
393da7b2e0 Fix easyenergy async_setup_services declaration (#105947) 2023-12-18 13:27:37 +01:00
Marc Mueller
8d0ce6ead6 Improve rfxtrx typing (#105966) 2023-12-18 13:23:30 +01:00
tronikos
82f3f17537 Bump opower to 0.1.0 (#105957) 2023-12-18 12:16:32 +01:00
Franck Nijhof
3c73c0f17f Add reauth support to Tailwind (#105959) 2023-12-18 12:12:56 +01:00
starkillerOG
60fe6ff771 Bump motionblinds to 0.6.19 (#105951) 2023-12-18 11:30:44 +01:00
starkillerOG
253182c650 Reolink change ir to switch (#105916)
* Change IR from light to switch

* Remove old entity

* Add test

* Apply suggestions from code review

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

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2023-12-18 11:13:20 +01:00
Erik Montnemery
3e50ca6cda Set volume_step in frontier_silicon media_player (#105953) 2023-12-18 11:08:26 +01:00
Franck Nijhof
90fef6b9c9 Add Tailwind zeroconf discovery (#105949) 2023-12-18 10:39:15 +01:00
starkillerOG
f912b9c34a Bump reolink_aio to 0.8.4 (#105946) 2023-12-18 10:37:22 +01:00
Joost Lekkerkerker
0d049d73cf Add AndroidTV remote to strict typing (#105571)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-18 10:34:39 +01:00
Klaas Schoute
e59e1d7f8e Add prices service calls for easyEnergy (#105175) 2023-12-18 09:37:59 +01:00
Franck Nijhof
d50b79ba84 Add Tailwind integration (#105926)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-18 08:42:53 +01:00
Brandon Rothweiler
6acbbec839 Address late review comments for A. O. Smith reauth (#105941) 2023-12-18 07:10:14 +01:00
Keilin Bickar
017dc66046 Bump asyncsleepiq to v1.4.0 (#105939) 2023-12-17 17:19:29 -10:00
ollo69
2c54f8bf8e Bump pyasuswrt to 0.1.21 (#105922) 2023-12-17 15:34:19 -10:00
Brett Adams
a88335272a Implement Review Feedback for Tessie (#105937) 2023-12-17 15:33:26 -10:00
Marc Mueller
aac02d7b84 Add first TypeVarTuple annotations (#105379) 2023-12-18 00:38:07 +01:00
J. Nick Koston
5c503683b7 Bump lru-dict to 1.3.0 (#105914)
* Bump lru-dict to 1.3.0

changelog: https://github.com/amitdev/lru-dict/compare/v1.2.0...v1.3.0

* fix typing

* quote types

* quote types
2023-12-18 00:16:31 +01:00
David Bonnes
45b5ddfad7 Use library constants instead of literals in Evohome (#105039)
* initial commit

* roll back some consts

* doctweak

* tweak linting

* doctweak
2023-12-17 23:08:18 +01:00
J. Nick Koston
67d903ca99 Remove bluetooth-data-tools dep from ESPHome (#105912) 2023-12-17 09:18:20 -10:00
J. Nick Koston
9490da830c Bump bleak-esphome to 0.4.0 (#105909) 2023-12-17 06:15:55 -10:00
J. Nick Koston
3f68abdd3a Bump zeroconf to 0.130.0 (#105868) 2023-12-17 06:00:38 -10:00
Jan-Philipp Benecke
7772f60426 Migrate file test to use freezegun (#105892) 2023-12-17 05:09:10 -10:00
J. Nick Koston
89513efd8d Refactor ESPHome Bluetooth connection logic to prepare for esphome-bleak (#105747) 2023-12-17 04:42:28 -10:00
J. Nick Koston
e78588a585 Bump bluetooth-adapters to 0.16.2 (#105878)
changelog: https://github.com/Bluetooth-Devices/bluetooth-adapters/compare/v0.16.1...v0.16.2
2023-12-17 12:48:08 +01:00
J. Nick Koston
87c081e70d Bump aiodiscover to 1.6.0 (#105885) 2023-12-16 16:07:21 -10:00
J. Nick Koston
537dbd8375 Fix cloud tests doing socket I/O (#105874)
https://github.com/home-assistant/core/actions/runs/7233101649/job/19708631179?pr=105868
https://github.com/home-assistant/core/actions/runs/7232949349?pr=105834

I was hoping to only patch the library, but when I did that it still failed
because it had no access token
2023-12-17 01:23:56 +01:00
Ernst Klamer
299a2ef04e Bump qingping_ble to 0.9.0 (#105876) 2023-12-16 10:16:30 -10:00
Ernst Klamer
cd15283c2e Bump bthome_ble to 3.3.1 (#105834)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-16 09:08:28 -10:00
Michael
4cca174586 Address late review comments on AVM FRITZ!SmartHome (#105860)
set copies dict keys by default
2023-12-16 19:38:58 +01:00
Chris Cohen
5ce782d597 Bump glances-api to 0.5.0 (#105813)
bump glances API to 0.5.0
2023-12-16 19:27:46 +01:00
Álvaro Fernández Rojas
3be12c0611 Fix Airzone temperature range on new climate card (#105830)
* airzone: climate: fix double setpoint

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

* tests: airzone: fix double setpoint temperature

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

* tests: airzone: fix swapped double setpoint

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-16 18:42:58 +01:00
J. Nick Koston
755dcd8bc6 Ensure bluetooth auto recovery does not run in tests (#105841) 2023-12-16 06:09:03 -10:00
Marc Mueller
8549311d1d Update feedparser to 6.0.11 (#105857) 2023-12-16 14:48:51 +01:00
Marc Mueller
e7d7bb4f25 Update coverage to 7.3.3 (#105855) 2023-12-16 14:47:47 +01:00
Marc Mueller
80a164347a Update pre-commit to 3.6.0 (#105856) 2023-12-16 14:47:30 +01:00
Erik Montnemery
104bcc64b7 Allow inheriting base component entity descriptions in frozen dataclasses (#105512)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-15 23:33:50 -10:00
J. Nick Koston
47f8e08261 Reduce overhead to connect dispatcher (#105715)
Reduce overhead connect dispatcher

- We tend to have 1000s (or 10000s) of connected dispatchers which
  makes these prime targets to reduce overhead/memory

- Instead of creating new functions to wrap log exceptions each time
  use partials which reuses the function body and only create new
  arguments

Previous optimizations #103307 #93602
2023-12-16 10:16:58 +01:00
Joseph Block
1271f16385 Add Unifi device state for additional diagnostics (#105138)
* Add device state for additional diagnostics

* Add state test and fix existing tests

* Utilize IntEnum and dict for state lookup

* Update aiounifi to v68
2023-12-16 08:38:21 +01:00
jjlawren
9c134c6b51 Bump soco to 0.30.0 (#105823) 2023-12-16 08:06:04 +01:00
J. Nick Koston
19341863ba Bump pyunifiprotect to 4.22.3 (#105833)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.22.0...v4.22.3
2023-12-16 08:02:00 +01:00
Brett Adams
887f9a21e5 Add Binary Sensor platform to Tessie (#105421) 2023-12-15 18:56:38 -10:00
Brett Adams
59630460c6 Quality fixes for Tessie (#105838) 2023-12-15 16:11:20 -10:00
Álvaro Fernández Rojas
a12c490cff Update aioairzone to v0.7.2 (#105811) 2023-12-15 14:59:43 -10:00
Brett Adams
e02f4c9c60 Fix translation keys in Tessie (#105824) 2023-12-15 11:25:51 -10:00
Maciej Bieniek
67a30d71e6 Fix HVAC mode duplication for Shelly Gen2 climate platform (#105812)
Fix HVAC mode duplication
2023-12-15 18:14:53 +01:00
Jan Bouwhuis
b4741c2069 Add data descriptions to MQTT config flow. (#105301)
* Add data descriptions to MQTT config flow.

* Remove keep allive, correct text CA cert
2023-12-15 16:30:54 +01:00
Álvaro Fernández Rojas
af91a54663 Bump aioairzone to v0.7.0 (#105807) 2023-12-15 16:27:00 +01:00
tronikos
b344ac42a8 Bump opower to 0.0.41 (#105791) 2023-12-15 13:38:38 +01:00
Joost Lekkerkerker
ef5d9d7377 Partly migrate Plex to has entity name (#98841)
* Partly migrate Plex to has entity name

* Use friendly name for device name

* Lowercase
2023-12-15 08:56:26 +01:00
Jan Bouwhuis
3f2fc2fce9 Fix mqtt tests modifying globals (#105774) 2023-12-15 08:15:10 +01:00
Erik Montnemery
a2b31a06e3 Avoid mutating entity descriptions in solaredge tests (#105718) 2023-12-15 08:10:35 +01:00
Erik Montnemery
c10b460c6b Set volume_step in cmus media_player (#105667) 2023-12-15 00:52:52 +01:00
Erik Montnemery
36eeb15fee Set volume_step in clementine media_player (#105666) 2023-12-15 00:49:30 +01:00
Erik Montnemery
bb8dce6187 Set volume_step in aquostv media_player (#105665) 2023-12-15 00:48:02 +01:00
Erik Montnemery
7fa55ffdd2 Set volume_step in bluesound media_player (#105672) 2023-12-15 00:10:31 +01:00
Erik Montnemery
cffb51ebec Set volume_step in monoprice media_player (#105670) 2023-12-15 00:09:05 +01:00
Martin Hjelmare
4da04a358a Refactor cloud assist pipeline (#105723)
* Refactor cloud assist pipeline

* Return None early
2023-12-14 23:56:08 +01:00
G Johansson
f4c8920231 Bump brottsplatskartan 1.0.5 (#105759) 2023-12-14 23:36:12 +01:00
Michael Hansen
6c5ca58405 Set todo item status in intent (#105743) 2023-12-14 22:53:22 +01:00
G Johansson
e055306482 Bump pytrafikverket to 0.3.9.2 (#105752) 2023-12-14 22:05:39 +01:00
Franck Nijhof
d56b79a993 2023.12.3 (#105757) 2023-12-14 21:44:14 +01:00
J. Nick Koston
34c7685927 Bump bleak-esphome to 0.3.0 (#105748) 2023-12-14 10:27:52 -10:00
Franck Nijhof
07667a6aee Bump version to 2023.12.3 2023-12-14 20:37:09 +01:00
Franck Nijhof
dbfc5ea8f9 Disable user profiles on login screen (#105749) 2023-12-14 20:36:59 +01:00
Charles Garwood
4aa03b33f6 Fix Fully Kiosk Browser MQTT event callbacks with non-standard event topics (#105735) 2023-12-14 20:36:56 +01:00
epenet
25bfe7ec82 Fix issue clearing renault schedules (#105719)
* Fix issue clearing renault schedules

* Adjust
2023-12-14 20:36:52 +01:00
Jan-Philipp Benecke
f8e92ddcb3 Add missing rest_command reload service to services.yaml (#105714)
* Add missing rest_command reload service to services.yaml

* Add missing strings.json

* retrigger stale CI
2023-12-14 20:36:48 +01:00
J. Nick Koston
73e234dfa5 Bump zeroconf to 0.128.5 (#105694) 2023-12-14 20:36:16 +01:00
Robert Svensson
3adda6b110 Fix restoring UniFi clients with old unique id (#105691)
Fix restoring UniFi clients with bad unique id
2023-12-14 20:35:07 +01:00
Álvaro Fernández Rojas
d5ecc55f89 Update AEMET-OpenData to v0.4.7 (#105676) 2023-12-14 20:35:03 +01:00
Michael
bfdadd12e9 Ensure platform setup for all AVM FRITZ!SmartHome devices (#105515) 2023-12-14 20:34:59 +01:00
Franck Nijhof
cc75430af3 Disable user profiles on login screen (#105749) 2023-12-14 20:28:08 +01:00
Charles Garwood
032d120a26 Include Envoy firmware version in Enphase diagnostics (#105742)
* Include Envoy firmware version in Enphase diagnostics

* Update tests
2023-12-14 13:59:39 -05:00
Charles Garwood
40f914214b Fix Fully Kiosk Browser MQTT event callbacks with non-standard event topics (#105735) 2023-12-14 18:59:37 +01:00
Álvaro Fernández Rojas
a488d120b7 Update AEMET-OpenData to v0.4.7 (#105676) 2023-12-14 18:59:04 +01:00
J. Nick Koston
8d1a69ae84 Migrate ESPHome bleak implementation to bleak-esphome library (#105611) 2023-12-14 07:21:31 -10:00
J. Nick Koston
0d9a583f4d Small speed up to data entry flow steps (#105713)
Instead of checking if the flow is completed with
a linear tuple search each time, use a constant
set
2023-12-14 17:32:14 +01:00
Sylvain Rivierre
ffb963c4c5 Add France to picnic countries (#105722)
Picnic is also available in France "FR" country
2023-12-14 16:55:17 +01:00
Lucas Mindêllo de Andrade
d4a7361bc6 Bump sunweg to 2.0.1 (#105613)
* chore(sunweg): minor requested changes

* test(sunweg): use of fixtures

* feat(sunweg): provide bad auth result on expired authentication

* chore(sunweg): bump version

* chore(sunweg): removed reauth

* chore(sunweg): removed features out of scope

* chore(sunweg): fixtures moved to conftest.py

* chore(sunweg): devicetype moved to const

* chore(sunweg):  conftest comment

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-14 16:51:57 +01:00
J. Nick Koston
7e1dc2286f Bump bluetooth-data-tools to 1.18.0 (#105685)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v1.17.0...v1.18.0
2023-12-14 16:12:52 +01:00
Jan-Philipp Benecke
82218928e7 Add missing rest_command reload service to services.yaml (#105714)
* Add missing rest_command reload service to services.yaml

* Add missing strings.json

* retrigger stale CI
2023-12-14 15:20:34 +01:00
Nikolay Vasilchuk
356ad52d10 Replace Starline horn switch with button (#105728) 2023-12-14 15:00:23 +01:00
epenet
351b07b14d Fix issue clearing renault schedules (#105719)
* Fix issue clearing renault schedules

* Adjust
2023-12-14 12:54:03 +01:00
Erik Montnemery
9095027363 Avoid mutating entity descriptions in efergy tests (#105717) 2023-12-14 12:48:15 +01:00
Brig Lamoreaux
7721840298 Allow multiple configs for srp energy (#96573)
* Allow multiple configs.

* Rename test configs.

* Remove unused property

* Merge branch 'dev' into srp_energy_202307.coordinator

* Use title in device name.
2023-12-14 11:07:13 +01:00
Martin Hjelmare
2e448d2d13 Remove cloud details from assist pipeline (#105687)
* Remove cloud details from assist pipeline

* Update assist pipeline tests

* Update cloud tests
2023-12-14 10:15:59 +01:00
yangbo
82f0b28e89 Bump iammeter to 0.2.1 (#95885)
* Bump iammeter to 0.2.1

* Refactor sensor.

* Add const.py to .coveragerc.

* Add id migration.

* Modify translation file.

* Fix ruff test error

* update asyncio.timeout import.

* Delete homeassistant/components/iammeter/translations directory

* Add strings.json
2023-12-14 10:01:29 +01:00
Erik Montnemery
0ec3a222e3 Remove device_state_attributes property from entity base class (#105650) 2023-12-14 08:33:56 +01:00
Erik Montnemery
9020dbb093 Remove context_recent_time property from entity base class (#105652) 2023-12-14 08:33:31 +01:00
J. Nick Koston
aafdca88c9 Bump zeroconf to 0.129.0 (#105701)
* Bump zeroconf to 0.129.0

changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.128.5...0.129.0

* cleanup typing

* remove redunant lru

* revert type narrowing
2023-12-14 07:52:37 +01:00
J. Nick Koston
a16ab0d1ac Bump zeroconf to 0.128.5 (#105694) 2023-12-13 12:14:07 -10:00
Robert Svensson
7084889b78 Fix restoring UniFi clients with old unique id (#105691)
Fix restoring UniFi clients with bad unique id
2023-12-13 22:35:41 +01:00
Erik Montnemery
72cb21d875 Set volume_step in enigma2 media_player (#105669) 2023-12-13 19:42:11 +01:00
G Johansson
08b6d2af5e Add error translations to Yale Smart Living (#105678) 2023-12-13 19:41:31 +01:00
G Johansson
65514fbd73 Add error translations for Sensibo (#105600) 2023-12-13 19:40:57 +01:00
Erik Montnemery
6dc8c2c370 Set volume_step in sonos media_player (#105671) 2023-12-13 19:40:51 +01:00
G Johansson
5f69749420 Use Textselector in Trafikverket Camera (#105677)
* Use Textselector in Trafikverket Camera

* Update homeassistant/components/trafikverket_camera/strings.json

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

---------

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2023-12-13 19:39:19 +01:00
Jan-Philipp Benecke
d322cb5fdf Migrate homekit_controller tests to use freezegun (#105646) 2023-12-13 19:37:51 +01:00
Franck Nijhof
711d9e21ab 2023.12.2 (#105655) 2023-12-13 18:48:43 +01:00
Michael
08ca3678da Ensure platform setup for all AVM FRITZ!SmartHome devices (#105515) 2023-12-13 18:07:29 +01:00
Erik Montnemery
dd5a48996a Keep capabilities up to date in the entity registry (#101748)
* Keep capabilities up to date in the entity registry

* Warn if entities update their capabilities very often

* Fix updating of device class

* Stop tracking capability updates once flooding is logged

* Only sync registry if state changed

* Improve test

* Revert "Only sync registry if state changed"

This reverts commit 1c52571596c06444df234d4b088242b494b630f2.

* Avoid calculating device class twice

* Address review comments

* Revert using dataclass

* Fix unintended revert

* Add helper method
2023-12-13 17:27:26 +01:00
Erik Montnemery
4f9f548929 Add volume_step property to MediaPlayerEntity (#105574)
* Add volume_step property to MediaPlayerEntity

* Improve tests

* Address review comments
2023-12-13 17:26:34 +01:00
puddly
ebb54d7a6c Bump ZHA dependencies (#105661) 2023-12-13 17:10:56 +01:00
puddly
db52b9b0e1 Reload ZHA integration on any error, not just recoverable ones (#105659) 2023-12-13 17:10:52 +01:00
Marc Mueller
75bdd84c80 Update pylint to 3.0.3 (#105491) 2023-12-13 17:10:48 +01:00
Joost Lekkerkerker
896ca8ce83 Fix timing issue in Withings (#105203) 2023-12-13 17:07:36 +01:00
puddly
4e9b9add29 Bump ZHA dependencies (#105661) 2023-12-13 17:06:46 +01:00
Joost Lekkerkerker
a82410d5e9 Deduplicate constants E-Z (#105657) 2023-12-13 17:05:37 +01:00
Erik Montnemery
bbfffbb47e Avoid mutating entity descriptions in melcloud (#105629) 2023-12-13 16:57:22 +01:00
Joost Lekkerkerker
e4453ace88 Add country code constant (#105640) 2023-12-13 16:50:46 +01:00
Joost Lekkerkerker
816a37f9fc Fix timing issue in Withings (#105203) 2023-12-13 16:48:46 +01:00
puddly
e475829ce6 Reload ZHA integration on any error, not just recoverable ones (#105659) 2023-12-13 16:24:26 +01:00
Erik Montnemery
2d59eba4c7 Avoid mutating entity descriptions in airthings_ble (#105627) 2023-12-13 15:23:38 +01:00
Erik Montnemery
7ab003c746 Avoid mutating entity descriptions in lidarr (#105628) 2023-12-13 15:22:29 +01:00
Erik Montnemery
abac68f158 Avoid mutating entity descriptions in efergy (#105626) 2023-12-13 15:20:29 +01:00
Franck Nijhof
8744b05468 Bump version to 2023.12.2 2023-12-13 14:53:10 +01:00
Erik Montnemery
dff7725c1f Fix goodwe tests (#105653) 2023-12-13 14:52:44 +01:00
Michael Hansen
36c56eb32a Rename "satellite enabled" to "mute" (#105619) 2023-12-13 14:51:25 +01:00
Michael Hansen
797af14012 Skip TTS events entirely with empty text (#105617) 2023-12-13 14:48:51 +01:00
Michael Hansen
8812ca13d9 Add name slot to HassClimateGetTemperature intent (#105585) 2023-12-13 14:48:48 +01:00
G Johansson
8b3ba452bc Fix setup Fast.com (#105580)
* Fix setup fastdotcom

* Add if
2023-12-13 14:48:44 +01:00
Khole
fbb315b0a8 Bump pyhiveapi to v0.5.16 (#105513)
Co-authored-by: Khole Jones <khole.jones@frasers.group>
2023-12-13 14:48:41 +01:00
Julien "_FrnchFrgg_" Rivaud
9d0fed8539 Bump caldav to 1.3.8 (#105508)
* Bump caldav to 1.3.8

1.3.8 fixes a bug where duplicate STATUS properties would be emitted for a single VTODO depending on the case of the arguments used.

That bug meant that even though that is the intended API usage, passing lowercase for the status argument name would be rejected by caldav servers checking conformance with the spec which forbids duplicate STATUS.

This in turn prevented HomeAssistant to add new items to a caldav todo list.

Bump the requirements to 1.3.8 to repair that feature

* Update global requirements
2023-12-13 14:48:38 +01:00
Michael Hansen
4849884467 Disconnect before reconnecting to satellite (#105500)
Disconnect before reconnecting
2023-12-13 14:48:35 +01:00
Joost Lekkerkerker
8a0b1637b1 Remove Aftership import issue when entry already exists (#105476) 2023-12-13 14:48:30 +01:00
J. Nick Koston
ba84af9374 Bump zeroconf to 0.128.4 (#105465)
* Bump zeroconf to 0.128.3

significant bug fixes

changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.128.0...0.128.3

* .4
2023-12-13 14:47:27 +01:00
Allen Porter
557ce965cf Bump ical to 6.1.1 (#105462) 2023-12-13 14:42:03 +01:00
Arie Catsman
3b7add533b Write Enphase Envoy data to log when in debug mode (#105456) 2023-12-13 14:42:00 +01:00
Allen Porter
0683b8be21 Fix fitbit oauth reauth debug logging (#105450) 2023-12-13 14:41:56 +01:00
Jan Bouwhuis
399f98a726 Fix alexa calling not featured cover services (#105444)
* Fix alexa calls not supported cover services

* Follow up comment and additional tests
2023-12-13 14:41:53 +01:00
Bouwe Westerdijk
0023d66c80 Bump plugwise to v0.35.3 (#105442) 2023-12-13 14:41:49 +01:00
Erik Montnemery
164d0d2085 Bump hatasmota to 0.8.0 (#105440)
* Bump hatasmota to 0.8.0

* Keep devices with deep sleep support always available

* Add tests
2023-12-13 14:41:46 +01:00
Jan Schneider
a0e9772f52 Check if heat area exists when setting up valve opening and battery sensors in moehlenhoff alpha2 (#105437)
Check whether the referenced heat area exists

when setting up valve opening and battery sensors
2023-12-13 14:41:42 +01:00
Florian B
84c713894b Fix adding/updating todo items with due date in CalDAV integration (#105435)
* refactor: return date/datetime for due date

* fix: explicitly set due date on vTODO component

Using `set_due` automatically handles converting the Python-native
date/datetime values to the correct representation required by RFC5545.

* fix: fix tests with changed due date handling

* fix: item.due may not be a str

* refactor: keep local timezone of due datetime

* refactor: reorder import statement

To make ruff happy.

* fix: fix false-positive mypy error
2023-12-13 14:41:39 +01:00
mkmer
a02faaf489 Fix service missing key in Blink (#105387)
* fix update service
refactor service yaml

* Remove leftover target
2023-12-13 14:41:35 +01:00
G Johansson
15cf732463 Fix preset modes error in Smartthings (#105375) 2023-12-13 14:41:31 +01:00
David Knowles
ef17950d76 Bump pyschlage to 2023.12.0 (#105349)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-13 14:41:28 +01:00
mkmer
2d1c716444 Add missing configuration for services.yaml in blink (#105310) 2023-12-13 14:41:24 +01:00
Jan Bouwhuis
c6339cb0c0 Fix CI test_invalid_rrule_fix test by freezing the time (#105294) 2023-12-13 14:41:20 +01:00
J. Nick Koston
7c0a5baf77 Bump zeroconf to 0.128.0 (#104936) 2023-12-13 14:41:16 +01:00
Alex Thompson
0fa3ce763e Fix Lyric LCC thermostats auto mode (#104853) 2023-12-13 14:41:07 +01:00
Jan-Philipp Benecke
61a99c911c Migrate demo test to use freezegun (#105644) 2023-12-13 14:33:59 +01:00
Joost Lekkerkerker
ac53b78a0c Deduplicate constants A-D (#105638) 2023-12-13 14:21:44 +01:00
Martin Hjelmare
02853a62f0 Clean cloud client fixture from cloud http api tests (#105649) 2023-12-13 14:21:33 +01:00
Martin Hjelmare
5bb233998e Improve cloud http api tests (#105610)
* Improve cloud http api tests

* Add comments to the cloud fixture

* Fix docstring
2023-12-13 13:53:22 +01:00
mletenay
0548f9f342 Add diagnostics download to goodwe integration (#102928)
* Add diagnostics download to goodwe integration

* Revert change not related to test

* Use MagicMock for mock inverter

* Use spec with mock
2023-12-13 12:35:53 +01:00
Joost Lekkerkerker
22b2c588eb Use issue registry fixture (#105633) 2023-12-13 11:23:38 +01:00
Joost Lekkerkerker
06f81251fb Reduce code duplication in Suez config flow (#105558) 2023-12-13 10:41:35 +01:00
Erik Montnemery
a91dfc7954 Fix entity descriptions in philips_js (#105625) 2023-12-13 10:24:34 +01:00
Erik Montnemery
22c3847c0e Allow inheriting FrozenOrThawed with custom init (#105624) 2023-12-13 10:13:34 +01:00
Arie Catsman
c318445a76 Write Enphase Envoy data to log when in debug mode (#105456) 2023-12-13 09:22:10 +01:00
J. Nick Koston
5dbd0dede1 Refactor Bluetooth scanners to avoid the need to pass a callback (#105607) 2023-12-13 09:17:48 +01:00
Michael Hansen
aaccf19013 Rename "satellite enabled" to "mute" (#105619) 2023-12-13 09:09:22 +01:00
Maciej Bieniek
66d24b38aa Add diagnostics platform to BraviaTV (#105603)
* Add diagnostics platform

* Add test

* Improve test

* Use consts

* Fix test

* Patch methods

* Patch methods
2023-12-13 08:18:50 +01:00
dependabot[bot]
9e9b518433 Bump github/codeql-action from 2.22.9 to 2.22.10 (#105620) 2023-12-13 07:38:42 +01:00
Michael Hansen
a73e86a741 Skip TTS events entirely with empty text (#105617) 2023-12-13 00:21:16 -05:00
Michael Hansen
431a44ab67 Add name slot to HassClimateGetTemperature intent (#105585) 2023-12-12 22:54:15 -05:00
J. Nick Koston
22f0e09b8c Bump aioesphomeapi to 21.0.0 (#105609) 2023-12-12 15:20:05 -10:00
Brandon Rothweiler
a595cd7141 Add sensor platform to A. O. Smith integration (#105604)
* Add sensor platform to A. O. Smith integration

* Fix typo

* Remove unnecessary mixin

* Simplify async_setup_entry
2023-12-13 00:52:15 +01:00
J. Nick Koston
98b1bc9bed Bump aioesphomeapi to 20.1.0 (#105602) 2023-12-12 12:51:18 -10:00
Maciej Bieniek
77283704a5 Bump brother library, use pysnmp-lextudio with SNMP integration (#105591) 2023-12-12 11:36:11 -10:00
Franck Nijhof
d144d6c9ab Mark more entities secondary on Fully Kiosk Browser (#105595) 2023-12-12 21:40:11 +01:00
Joost Lekkerkerker
283ff4fada Add Adax to strict typing (#105562) 2023-12-12 21:29:18 +01:00
J. Nick Koston
f002a6a732 Refactor all Bluetooth scanners to inherit from BaseHaRemoteScanner (#105523) 2023-12-12 21:28:43 +01:00
Erik Montnemery
5bd0833f49 Improve FrozenOrThawed (#105541) 2023-12-12 21:19:41 +01:00
Erwin Douna
8bd265c3ae Add Fastdotcom service (#105553)
* Add service for manual control

* Proper naming

* Removing old translation

* Reverting back service

* Removig services.yaml

* Putting back in service

* Putting back in service description and yaml

* Proper naming

* Adding create_issue

* Feedback fixes

* Fix deprecation date in strings

* Update homeassistant/components/fastdotcom/__init__.py

* Update homeassistant/components/fastdotcom/strings.json

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-12 21:18:12 +01:00
Joost Lekkerkerker
0e5d72a501 Add Android IP webcam to strict typing (#105570) 2023-12-12 20:54:35 +01:00
Joost Lekkerkerker
84bffcd2e1 Add Aranet to strict typing (#105577) 2023-12-12 20:54:00 +01:00
Joost Lekkerkerker
09b07c071b Add Apprise to strict typing (#105575) 2023-12-12 20:53:36 +01:00
Erwin Douna
32147dbdd9 Bump PyTado to 0.17.0 (#105573) 2023-12-12 20:52:59 +01:00
Jan-Philipp Benecke
d33aa6b8e7 Migrate homematicip_cloud tests to use freezegun (#105592) 2023-12-12 20:51:32 +01:00
G Johansson
4ad16b56f2 Fix setup Fast.com (#105580)
* Fix setup fastdotcom

* Add if
2023-12-12 20:43:09 +01:00
J. Nick Koston
54d314d1d0 Bump aioesphomeapi to 20.0.0 (#105586)
changelog: https://github.com/esphome/aioesphomeapi/compare/v19.3.1...v20.0.0

- Add happy eyeballs support (RFC 8305) (#789)

Note that nothing much happens yet on the HA side since
we only pass one IP in so its always going to fallback
at this point
2023-12-12 08:41:50 -10:00
J. Nick Koston
f58af0d717 Bump aiohomekit to 3.1.0 (#105584) 2023-12-12 19:07:20 +01:00
J. Nick Koston
c7a95d5654 Bump dbus-fast to 2.21.0 (#105536) 2023-12-12 07:55:12 -10:00
J. Nick Koston
ec1cde77f6 Add support for Happy Eyeballs to homekit_controller (#105454) 2023-12-12 07:54:33 -10:00
Joost Lekkerkerker
64c3cfca17 Add Airvisual pro to strict typing (#105568) 2023-12-12 17:27:41 +01:00
Jan Bouwhuis
280637822b Use mocked entity platform for lock service tests (#105020)
* Use mocked entity platform for lock service tests

* Cleanup old mock class

* Follow up on code review

* Improve mock entity platform

* Use entity_id of passed entity instead of constant
2023-12-12 15:49:01 +01:00
Joost Lekkerkerker
5c514b6b19 Add Suez Water to strict typing (#105559) 2023-12-12 14:44:17 +01:00
Martin Hjelmare
2631fde0f7 Patch aiohttp server app router freeze in tests (#105555)
* Add test for registering a http view late

* Patch aiohttp server app router freeze

* Correct language
2023-12-12 14:40:38 +01:00
Erwin Douna
fb615817b4 Add Tado error handling to fetching devices (#105546) 2023-12-12 10:55:22 +01:00
Erwin Douna
9d44dc4437 Add Fast.com Device Info (#105528)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-12 10:41:00 +01:00
Erik Montnemery
6908497c3d Add minor version to config entries (#105479) 2023-12-12 08:44:35 +01:00
Khole
ac656847cb Bump pyhiveapi to v0.5.16 (#105513)
Co-authored-by: Khole Jones <khole.jones@frasers.group>
2023-12-12 08:38:12 +01:00
J. Nick Koston
e2abd3b8d0 Bump bluetooth libraries (#105522) 2023-12-12 08:31:23 +01:00
Jan-Philipp Benecke
4859226496 Migrate geonetnz_* tests to use freezegun (#105521) 2023-12-12 08:30:08 +01:00
Jan-Philipp Benecke
319d6db55b Migrate device_sun_light_trigger tests to use freezegun (#105520) 2023-12-12 08:29:10 +01:00
Jan Bouwhuis
a66c9bb7b6 Update stale doc strings in entity platform tests (#105526) 2023-12-12 08:28:08 +01:00
J. Nick Koston
f4ee2a1ab4 Bump anyio to 4.1.0 (#105529) 2023-12-12 08:24:24 +01:00
dependabot[bot]
324aa171c6 Bump sigstore/cosign-installer from 3.2.0 to 3.3.0 (#105537)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-12 08:20:26 +01:00
Diogo Gomes
54c218c139 Updates V2C sensor icons (#105534)
update icons
2023-12-12 08:17:09 +01:00
Brett Adams
8922c93259 Improve tests in Tessie (#105430) 2023-12-11 20:30:54 -10:00
Julien "_FrnchFrgg_" Rivaud
bf9c2a08b7 Bump caldav to 1.3.8 (#105508)
* Bump caldav to 1.3.8

1.3.8 fixes a bug where duplicate STATUS properties would be emitted for a single VTODO depending on the case of the arguments used.

That bug meant that even though that is the intended API usage, passing lowercase for the status argument name would be rejected by caldav servers checking conformance with the spec which forbids duplicate STATUS.

This in turn prevented HomeAssistant to add new items to a caldav todo list.

Bump the requirements to 1.3.8 to repair that feature

* Update global requirements
2023-12-11 19:42:52 -08:00
Erik Montnemery
d4cf049016 Remove unneeded class _EntityDescriptionBase (#105518) 2023-12-11 23:10:11 +01:00
Maciej Bieniek
bf93929826 Add support for Shelly Gen3 devices (#104874)
* Add support for Gen3 devices

* Add RPC_GENERATIONS const

* Add gen3 to tests

* More tests

* Add BLOCK_GENERATIONS const

* Use *_GENERATIONS constants from aioshelly
2023-12-11 22:58:56 +01:00
Erwin Douna
662e19999d Add Fastdotcom DataUpdateCoordinator (#104839)
* Adding DataUpdateCoordinator

* Updating and adding test cases

* Optimizing test

* Fix typing

* Prevent speedtest at startup

* Removing typing on Coordinator

* Update homeassistant/components/fastdotcom/coordinator.py

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

* Putting back typing

* Update homeassistant/components/fastdotcom/__init__.py

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

* Adding proper StateType typing

* Fix linting

* Stricter typing

* Creating proper test case for coordinator

* Fixing typo

* Patching librbary

* Adding unavailable state test

* Putting back in asserts

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Coordinator workable proposal

* Update tests/components/fastdotcom/test_coordinator.py

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

* Working test cases

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Update tests/components/fastdotcom/test_coordinator.py

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

* Fixing tests and context

* Fix the freezer interval to 59 minutes

* Fix test

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-11 22:28:04 +01:00
Joost Lekkerkerker
a187a39f0b Add config flow to Suez water (#104730)
* Add config flow to Suez water

* fix tests

* Complete coverage

* Change version to 2024.7

* Fix final test

* Add issue when import is successful

* Move hassdata

* Do unique_id

* Remove import issue when entry already exists

* Remove import issue when entry already exists
2023-12-11 22:06:16 +01:00
J. Nick Koston
e890671192 Relocate Bluetooth manager to habluetooth library (#105110)
* Relocate Bluetooth manager to habluetooth library

* Relocate Bluetooth manager to habluetooth library

* Relocate Bluetooth manager to habluetooth library

* fixes

* fix patching time

* fix more tests

* fix more tests

* split

* Bump habluetooth to 0.7.0

changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v0.6.1...v0.7.0

This is the big change that will move the manager so the HA
PR that will follow this will be a bit larger than the rest of them
since the manager is connected to everything

* fix types

* fix types

* fix types

* fix patch targets

* fix flakey logbook tests (will need another PR)

* mock shutdown

* bump again

* value can be a float now

* Revert "value can be a float now"

This reverts commit b7e7127143.

* float
2023-12-11 15:42:00 -05:00
Erwin Douna
0dc61b3493 Add typing in Melcloud config flow (#105510)
* Add typing in config flow

* Patching functions with typing
2023-12-11 20:30:19 +01:00
Erik Montnemery
dd338799d4 Make it possible to inherit EntityDescription in frozen and mutable dataclasses (#105211) 2023-12-11 20:00:55 +01:00
Joakim Plate
bb0d082b25 Correctly report unavailable battery for value 255 of percentage (#104566)
* Ignore unavailable battery level for zha

* Adjust unavailable test
2023-12-11 19:17:06 +01:00
Stefan Agner
837ce99e30 Add Raspberry Pi 5 specific container image (#105488) 2023-12-11 17:39:48 +01:00
starkillerOG
d1ea04152a Bump reolink_aio to 0.8.3 (#105489) 2023-12-11 17:37:15 +01:00
Marc Mueller
6c2b3ef950 Update typing-extensions to 4.9.0 (#105490) 2023-12-11 17:30:24 +01:00
Michael Hansen
80607f7750 Disconnect before reconnecting to satellite (#105500)
Disconnect before reconnecting
2023-12-11 11:18:46 -05:00
Marc Mueller
b71f488d3e Update pylint to 3.0.3 (#105491) 2023-12-11 17:04:07 +01:00
Erik Montnemery
94fd7d0353 Improve test of config entry store (#105487)
* Improve test of config entry store

* Tweak test
2023-12-11 10:48:12 -05:00
Alex Thompson
4c0fda9ca0 Fix Lyric LCC thermostats auto mode (#104853) 2023-12-11 16:27:02 +01:00
jan iversen
3963f59121 Reduce modbus validator for "swap" (remove special handling) (#105021) 2023-12-11 16:12:32 +01:00
Stefan Agner
44e54e11d8 Follow Alpine 3.18 raspberrypi package updates (#105486)
Alpine 3.18 renamed the packages raspberrypi and raspberrypi-libs to
raspberrypi-userland and raspberrypi-userland-libs respectively. Follow
that rename. With this moderniziation raspistill and friends now gets
deployed to /usr/bin, which makes any symlinks obsolete.

Note that there is and was never a 64-bit variant of raspistill. So
these symlinks were essentially useless all along.

This effectively doesn't change anything for users: Alpine automatically
installed the renamed package already and Home Assistant Core picked
up the raspistill binary from /usr/bin already.
2023-12-11 15:58:51 +01:00
Denis Shulyaka
1242456ff1 Bump openai end switch from dall-e-2 to dall-e-3 (#104998)
* Bump openai

* Fix tests

* Apply suggestions from code review

* Undo conftest changes

* Raise repasir issue

* Explicitly use async mock for chat.completions.create

It is not always detected correctly as async because it uses a decorator

* removed duplicated message

* ruff

* Compatibility with old pydantic versions

* Compatibility with old pydantic versions

* More tests

* Apply suggestions from code review

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

* Apply suggestions from code review

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2023-12-11 09:47:26 -05:00
G Johansson
c0314cd05c Make Workday UI setup nicer (#105407) 2023-12-11 14:06:29 +01:00
Jan Rieger
cedac41407 Bump python-holidays to 0.38 (#105482) 2023-12-11 13:18:23 +01:00
Joost Lekkerkerker
32681acc79 Remove Aftership import issue when entry already exists (#105476) 2023-12-11 12:09:43 +01:00
Jan-Philipp Benecke
47819bde4f Migrate sonarr tests to use freezegun (#105410) 2023-12-11 10:47:51 +01:00
Jan-Philipp Benecke
b4731674f8 Migrate octoprint tests to use freezegun (#105408) 2023-12-11 10:42:16 +01:00
Bouwe Westerdijk
3e3f9cf092 Bump plugwise to v0.35.3 (#105442) 2023-12-11 10:29:50 +01:00
Jan-Philipp Benecke
fbfe434e8b Migrate tag & tts tests to use freezegun (#105411) 2023-12-11 09:09:23 +01:00
Jon Caruana
c89c2f9392 Bump pylitejet to v0.6.0 (#105472) 2023-12-11 08:40:13 +01:00
J. Nick Koston
c634e3f0ca Bump zeroconf to 0.128.4 (#105465)
* Bump zeroconf to 0.128.3

significant bug fixes

changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.128.0...0.128.3

* .4
2023-12-11 07:47:53 +01:00
Allen Porter
72c6eb8885 Bump ical to 6.1.1 (#105462) 2023-12-10 15:46:27 -08:00
Jan Schneider
77c722630e Check if heat area exists when setting up valve opening and battery sensors in moehlenhoff alpha2 (#105437)
Check whether the referenced heat area exists

when setting up valve opening and battery sensors
2023-12-10 23:59:54 +01:00
Brandon Rothweiler
58d9d0daa5 Add reauth to A. O. Smith integration (#105320)
* Add reauth to A. O. Smith integration

* Validate reauth uses the same email address

* Only show password field during reauth
2023-12-10 14:30:24 -08:00
Erik Montnemery
b5af987a18 Bump hatasmota to 0.8.0 (#105440)
* Bump hatasmota to 0.8.0

* Keep devices with deep sleep support always available

* Add tests
2023-12-10 23:16:06 +01:00
Allen Porter
4752d37df7 Fix fitbit oauth reauth debug logging (#105450) 2023-12-10 23:09:58 +01:00
Jan Bouwhuis
a7155b154e Fix alexa calling not featured cover services (#105444)
* Fix alexa calls not supported cover services

* Follow up comment and additional tests
2023-12-10 17:27:01 +01:00
Florian B
063ac53f01 Fix adding/updating todo items with due date in CalDAV integration (#105435)
* refactor: return date/datetime for due date

* fix: explicitly set due date on vTODO component

Using `set_due` automatically handles converting the Python-native
date/datetime values to the correct representation required by RFC5545.

* fix: fix tests with changed due date handling

* fix: item.due may not be a str

* refactor: keep local timezone of due datetime

* refactor: reorder import statement

To make ruff happy.

* fix: fix false-positive mypy error
2023-12-10 08:23:05 -08:00
Franck Nijhof
6a3c422d2f Improve Amazon Alexa endpoint validation (#105287)
* Improve Amazon Alexa endpoint validation

* Add source comment

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-12-10 13:38:10 +01:00
Jan-Philipp Benecke
ff85d0c290 Migrate mqtt tests to use freezegun (#105414) 2023-12-10 09:25:16 +01:00
Brett Adams
1cc47c0553 Add reauth to Tessie (#105419)
* First pass at Tessie

* Working POC

* async_step_reauth

* Config Flow tests

* WIP

* Add test requirement

* correctly gen test requirements

* 100% coverage

* Remove remnants of copy paste

* Add TPMS

* Fix docstring

* Remove redundant line

* Fix some more copied docstrings

* Grammar

* Create reusable StrEnum

* Streamline get

* Add a couple more sensors

* Removed need for a model

* Move MODELS

* Remove DOMAIN from config flow

* Add translation strings

* Remove unused parameter

* Simplify error handling

* Refactor coordinator to class

* Add missing types

* Add icon to shift state

* Simplify setdefault

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

* Use walrus for async_unload_platforms

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

* Reformat entity init

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

* Remove Unique ID

* Better Config Flow Tests

* Fix all remaining tests

* Standardise docstring

* Remove redudnant test

* Set TessieDataUpdateCoordinator on entity

* Correct some sensors

* add error types

* Make shift state a ENUM sensor

* Add more sensors

* Fix translation string

* Add precision suggestions

* Move session from init to coordinator

* Add api_key type

* Remove api_key parameter

* Meta changes

* Update TessieEntity and TessieSensor translations

* Goodbye translation keys

* bump tessie-api to 0.0.9

* Fix only_active to be True

* Per vehicle coordinator

* Rework coordinator

* Fix coverage

* WIP

* The grand rework

* Add comments

* Use ENUM more

* Add ENUM translations

* Update homeassistant/components/tessie/sensor.py

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

* Add entity_category

* Remove reauth

* Remove session

* Update homeassistant/components/tessie/__init__.py

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

* Add property tag

* Add error text

* Complete config flow tests

* Fix property and rename

* Fix init test

* Reworked coordinator tests

* Add extra checks

* Update homeassistant/components/tessie/__init__.py

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

* Update homeassistant/components/tessie/coordinator.py

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

* Apply suggestions from code review

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

* Ruff fix

* Update homeassistant/components/tessie/config_flow.py

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

* Remove future ENUMs

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

* Ruff fix

* Update homeassistant/components/tessie/config_flow.py

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

* Remove reauth and already configured strings

* Lowercase sensor values for translation

* Update homeassistant/components/tessie/__init__.py

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

* Fixed, before using lambda

* Add value lambda

* fix lambda

* Fix config flow test

* @bdraco fix for 500 errors

* format

* Add reauth

* Reuse string in reauth

* Ruff

* remove redundant check

* Improve error tests

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-09 23:37:57 -08:00
elmurato
7b32e4142e Make API init async in Minecraft Server (#105403)
* Make api init async

* Remove duplicate assignment of address and set server to None in constructor
2023-12-09 21:15:48 -08:00
Jan-Philipp Benecke
a8148cea65 Migrate roku tests to use freezegun (#105418) 2023-12-09 12:47:19 -10:00
Brett Adams
64a5271a51 Add Tessie Integration (#104684)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-09 12:46:32 -10:00
vexofp
327016eaeb Accept HTTP 200 through 206 as success for RESTful Switch (#105358) 2023-12-09 12:45:33 -10:00
Raman Gupta
4e1677e3f0 Remove zwave_js device on device reset (#104291)
* Reload zwave_js config entry on device reset

* remove device

* Just remove the device and don't reload

* revert change to notification message

* Assert device is no longer there
2023-12-09 23:33:31 +01:00
vexofp
885410bcfc Prevent duplicate default SSLContext instances (#105348)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-09 11:30:12 -10:00
Jan-Philipp Benecke
a090bcb8a5 Migrate time_date tests to use freezegun (#105409) 2023-12-09 21:35:52 +01:00
J. Nick Koston
a0bf170fb4 Avoid ffmpeg subprocess for many component tests (#105354) 2023-12-09 19:41:37 +01:00
mkmer
c96a588934 Fix service missing key in Blink (#105387)
* fix update service
refactor service yaml

* Remove leftover target
2023-12-09 19:18:59 +01:00
Maciej Bieniek
35b733fa2c Bump aioshelly to version 7.0.0 (#105384)
* Remove get_rpc_device_sleep_period() function

* Bump aioshelly version to 7.0.0

* Remove firmware compatibility check from BLE scanner

* Remove firmware compatibility check from light transition

* Update default fw ver

* Use LightEntityFeature in tests
2023-12-09 17:12:05 +02:00
G Johansson
f37f40c338 Fix preset modes error in Smartthings (#105375) 2023-12-09 13:49:32 +01:00
starkillerOG
25586f9efd Add data descriptions to Reolink (#105298) 2023-12-09 13:06:18 +01:00
Jan-Philipp Benecke
b5785003a3 Migrate unifi tests to use freezegun (#105343) 2023-12-09 12:55:40 +01:00
Marc Mueller
1eaf208450 Update freezegun to 1.3.1 (#105377) 2023-12-09 12:29:23 +01:00
Brett Adams
d54c36307a Fix the ruff-format error (#105376) 2023-12-09 11:53:47 +01:00
Jan-Philipp Benecke
2d02cdcd0d Migrate gree tests to use freezegun (#105340) 2023-12-09 10:19:42 +01:00
J. Nick Koston
cc85e89cf2 Make network fixture scoped to session to speed up tests (#105353) 2023-12-09 10:19:08 +01:00
Jan-Philipp Benecke
4d708f1931 Migrate template tests to use freezegun (#105341) 2023-12-09 09:47:28 +01:00
Lucas Mindêllo de Andrade
f567bf6dfe Sun WEG integration (#88272)
* feat(sunweg): initial support

* chore: removed commented out code

* chore: removed warning

* fix: set never_resets for total sensors

* test: some tests

* fix(sunweg): default plantid type

* fix(sunweg): return first plant id

* test(sunweg): improved code coverage

* chore(sunweg): missing FlowResult return type

* chore(sunweg): removed unused strings

* perf(sunweg): using only one api instance

* chore(sunweg): removed uneeded atribute

* refact(sunweg): small refactoring

* refact(sunweg): typing

* chore(sunweg): comments

* chore(sunweg): bump version

* chore(sunweg): bump lib version

* test(sunweg): different mocking and coverage

* test: fixed setup component parameter

* feat: dynamic metrics

* fix(sunweg): ruff

* fix(sunweg): mypy

* refact(sunweg): codereview suggestions

* chore(sunweg): removed unused string

* chore(sunweg): typehint and code formatting
2023-12-09 09:45:40 +01:00
David Knowles
906aa14b43 Bump pyschlage to 2023.12.0 (#105349)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-08 22:01:40 -10:00
vexofp
617b045727 Fix SSLCipherList typing error in IMAP coordinator (#105362) 2023-12-08 21:34:01 -10:00
Brett Adams
e1df1f9ffe Replace aiohttp mock with patch in Advantage Air (#104932)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-08 15:15:57 -10:00
Franck Nijhof
9b10af612a 2023.12.1 (#105324) 2023-12-08 22:13:24 +01:00
mkmer
6a6956573f Add missing configuration for services.yaml in blink (#105310) 2023-12-08 21:30:41 +01:00
Viktor Andersson
12019ec77c Add myself as code owner for co2signal (#105302) 2023-12-08 21:22:34 +01:00
Bouwe Westerdijk
47dc48ca66 Bump plugwise to v0.34.5 (#105330) 2023-12-08 21:20:02 +01:00
Jan Bouwhuis
5220afa856 Workaround to_json template filter in parsing dict key (#105327)
* Work-a-round orjson for `to_json` fiter in case dict key is str subclass

* Add option instead

* Remove json.dumps work-a-round

* Update homeassistant/helpers/template.py

* Fix test

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-12-08 21:19:59 +01:00
G Johansson
629731e2dd Add rollback on exception that needs rollback in SQL (#104948) 2023-12-08 21:19:56 +01:00
Jan-Philipp Benecke
a7845406a5 Migrate homeassistant component tests to use freezegun (#105333) 2023-12-08 21:18:09 +01:00
Bouwe Westerdijk
46e75ed94b Bump plugwise to v0.34.5 (#105330) 2023-12-08 21:15:33 +01:00
G Johansson
99cf4a6b2d Add rollback on exception that needs rollback in SQL (#104948) 2023-12-08 21:13:37 +01:00
Jan Bouwhuis
4bb0e13cda Workaround to_json template filter in parsing dict key (#105327)
* Work-a-round orjson for `to_json` fiter in case dict key is str subclass

* Add option instead

* Remove json.dumps work-a-round

* Update homeassistant/helpers/template.py

* Fix test

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-12-08 20:57:53 +01:00
Franck Nijhof
9aaff618e2 Bump version to 2023.12.1 2023-12-08 19:08:47 +01:00
Erik Montnemery
35954128ad Add workaround for orjson not handling subclasses of str (#105314)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-08 19:08:02 +01:00
Michael Hansen
d9b31e9841 Use area id for context instead of name (#105313) 2023-12-08 19:07:58 +01:00
Erik Montnemery
1e3c154fdf Add test for energy cost sensor for late price sensor (#105312) 2023-12-08 19:07:24 +01:00
Paul Bottein
1777f6b935 Update frontend to 20231208.2 (#105299) 2023-12-08 19:06:25 +01:00
Øyvind Matheson Wergeland
c24af97514 Always set _attr_current_option in Nobø Hub select entities (#105289)
Always set _attr_current_option in select entities.
2023-12-08 19:06:08 +01:00
Jan Bouwhuis
892a7c36ca Fix mqtt json light state updates using deprecated color handling (#105283) 2023-12-08 19:06:03 +01:00
Michael Hansen
53cbde8dca Set device id and forward errors to Wyoming satellites (#105266)
* Set device id and forward errors

* Fix tests
2023-12-08 19:05:23 +01:00
J. Nick Koston
f3bb832b19 Bump pyunifiprotect to 4.22.0 (#105265) 2023-12-08 19:02:43 +01:00
On Freund
d89f6b5eb0 Fix update of uncategorized OurGroceries items (#105255)
* Fix update of uncategorized OurGroceries items

* Address code review comments
2023-12-08 19:02:40 +01:00
Duco Sebel
4953a36da8 Add migration for old HomeWizard sensors (#105251)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-08 19:02:37 +01:00
Jan-Philipp Benecke
38e01b248f Explicit check for None in Discovergy entity if condition (#105248)
Fix checking for None in Discovergy
2023-12-08 19:02:34 +01:00
ollo69
f8d9c4c3ad Fix AsusWrt invalid data type with tuple type (#105247) 2023-12-08 19:02:31 +01:00
G Johansson
3a10ea1892 Fix check_date service in workday (#105241)
* Fix check_date service in workday

* Add test
2023-12-08 19:02:28 +01:00
Lars
c6187ed914 Fix Fritzbox light setup (#105232) 2023-12-08 19:02:24 +01:00
Erik Montnemery
d679764d3b Disable config flow progress in peco config flow (#105222) 2023-12-08 19:02:21 +01:00
haimn
f1169e0a0d fix supportedFanOscillationModes is null (#105205)
* fix supportedFanOscillationModes is null

* set default supported_swings to None

* return None if no fan oscillation modes listed
2023-12-08 19:02:18 +01:00
Greg Dowling
119c9c3a6b Fix bug in roon incremental volume control. (#105201) 2023-12-08 19:02:15 +01:00
Jan-Philipp Benecke
c5d1a0fbe1 Increase ping update interval to 30 seconds (#105199) 2023-12-08 19:02:12 +01:00
Sebastian Nohn
8ffb147926 Set ping interval to 15 seconds instead of 5 minutes (#105191)
set ping interval to a more sane value of 15 seconds instead of 5 minutes. fixes home-assistant/core#105163
2023-12-08 19:02:04 +01:00
lunmay
688fab49c3 Fix missing apostrophe in smtp (#105189)
Fix missing apostrophe
2023-12-08 19:01:20 +01:00
TheJulianJES
c035ffb06e Fix ZHA quirk ID custom entities matching all devices (#105184) 2023-12-08 19:00:39 +01:00
Quentame
054ede9663 Bump Météo-France to 1.3.0 (#105170) 2023-12-08 19:00:36 +01:00
Michael Hansen
614e9069c2 Don't return TTS URL in Assist pipeline (#105164)
* Don't return TTS URL

* Add test for empty queue
2023-12-08 19:00:33 +01:00
starkillerOG
b832a692d9 Bump reolink_aio to 0.8.2 (#105157) 2023-12-08 19:00:30 +01:00
Robert Svensson
cfa85956e1 Improve LIDL christmas light detection in deCONZ (#105155) 2023-12-08 19:00:25 +01:00
Mick Vleeshouwer
a2f9ffe50f Disable scenarios (scenes) for local API in Overkiz (#105153) 2023-12-08 19:00:22 +01:00
Michael Hansen
47032d055c Expose todo entities to Assist by default (#105150) 2023-12-08 19:00:14 +01:00
Jan Bouwhuis
b977fd6ab2 Correct smtp error message string (#105148) 2023-12-08 18:59:36 +01:00
Jan Bouwhuis
3972d8fc00 Correct smtp error message string (#105148) 2023-12-08 18:58:00 +01:00
TJ Horner
53497e3fad Bump apple_weatherkit to 1.1.2 (#105140) 2023-12-08 18:57:16 +01:00
Matrix
24f0e927f3 Bump yolink-api to 0.3.4 (#105124)
* Bump yolink-api to 0.3.3

* bump yolink api to 0.3.4
2023-12-08 18:57:10 +01:00
Excentyl
9527548207 Initialize energy_state without price (#97031)
Co-authored-by: Erik <erik@montnemery.com>
2023-12-08 18:56:05 +01:00
Erik Montnemery
af715a4b9a Add workaround for orjson not handling subclasses of str (#105314)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-08 18:13:34 +01:00
Excentyl
46d626280e Initialize energy_state without price (#97031)
Co-authored-by: Erik <erik@montnemery.com>
2023-12-08 17:46:08 +01:00
Brandon Rothweiler
1c7bd3f729 Add A. O. Smith integration (#104976) 2023-12-08 17:17:42 +01:00
Michael Hansen
fdeb9e36c3 Use area id for context instead of name (#105313) 2023-12-08 10:05:21 -06:00
Jan Bouwhuis
e5a115ce1f Fix mqtt json light state updates using deprecated color handling (#105283) 2023-12-08 16:54:02 +01:00
Erik Montnemery
b0ef9623f9 Add test for energy cost sensor for late price sensor (#105312) 2023-12-08 16:51:07 +01:00
Paul Bottein
05f67f745b Update frontend to 20231208.2 (#105299) 2023-12-08 16:45:34 +01:00
Raj Laud
45f7ffb34c Add support for accessing Squeezebox over over https (#95088)
* Supports access to squeezebox server behind https reverse proxy

* Update squeezebox test

* Update homeassistant/components/squeezebox/config_flow.py

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

* Update homeassistant/components/squeezebox/config_flow.py

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

* Update squeezebox unit tests based on code review

* Migration unit test

* Run black on suggestions accepted in code review

* Apply suggestions from code review

Instead of upgrading squeezebox config, just assume a default of https=False.

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

* Update test_init.py

Remove migrate entry test since we are no longer migrating

* Delete tests/components/squeezebox/test_init.py

Remove unused test

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-12-08 15:51:19 +01:00
Øyvind Matheson Wergeland
a10f580815 Always set _attr_current_option in Nobø Hub select entities (#105289)
Always set _attr_current_option in select entities.
2023-12-08 14:42:42 +01:00
Jan-Philipp Benecke
6b7dace8d4 Migrate samsungtv tests to use freezegun (#105286) 2023-12-08 14:37:02 +01:00
Jan Bouwhuis
8721327176 Fix CI test_invalid_rrule_fix test by freezing the time (#105294) 2023-12-08 14:35:01 +01:00
Yuxin Wang
88ddc25129 Replace apcaccess dependency with aioapcaccess in apcupsd (#104571)
* Replace apcaccess dependency with async version aioapcaccess

* Upgrade the dependency to the latest version (v0.4.2)

* Handle asyncio.IncompleteReadError
2023-12-08 12:40:09 +01:00
Franck Nijhof
949ca6bafc Update yarl to 1.9.4 (#105282) 2023-12-08 12:11:59 +01:00
Øyvind Matheson Wergeland
9fb9ff4f90 Remove workaround for default lock code in Matter (#105173)
* Matter: Remove workaround for default lock code

* Review

* Review 2
2023-12-08 11:46:27 +01:00
Franck Nijhof
0eb7034f89 Adjust stale bot policy for PRs (#105280) 2023-12-08 10:59:38 +01:00
Duco Sebel
156dac394a Add migration for old HomeWizard sensors (#105251)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-08 09:39:39 +01:00
Lars
a09ccddaa3 Fix Fritzbox light setup (#105232) 2023-12-08 09:33:24 +01:00
ollo69
b29e9e2df0 Fix AsusWrt invalid data type with tuple type (#105247) 2023-12-08 09:01:22 +01:00
J. Nick Koston
97991cfa46 Bump pyunifiprotect to 4.22.0 (#105265) 2023-12-08 09:00:23 +01:00
J. Nick Koston
8aacd3ea1b Bump habluetooth to 0.10.0 (#105118) 2023-12-08 08:56:32 +01:00
dependabot[bot]
8879f7350a Bump github/codeql-action from 2.22.8 to 2.22.9 (#105274)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-08 08:55:25 +01:00
dependabot[bot]
a710491990 Bump actions/stale from 8.0.0 to 9.0.0 (#105275)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-08 08:54:27 +01:00
osohotwateriot
664d2410d5 Add OSO Energy integration (#70365)
* Add OSO Energy integration

* Add min/max for v40 level and bump pyosoenergyapi to 1.0.2

* OSO Energy address review comments

* Bump pyosoenergyapi to 1.0.3 and remove scan interval

* Remove unnecessary code

* Update homeassistant/components/osoenergy/__init__.py

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

* Fixes to latest version

* Add support to set temperature

* Update homeassistant/components/osoenergy/config_flow.py

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

* Fixes after review

* Remove unused code

* Add support for translations and modify services

* Apply suggestions from code review

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

* Refactor services and constants according to the PR suggestions

* Remove unnecessary code

* Remove unused import in constants

* Refactoring and support for multiple instances

* Apply suggestions from code review

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

* Refactor code and apply review suggestions

* Bump pyosoenergyapi to 1.0.5

* Remove services to reduce initial PR

* Remove extra state attributes and make OSO Entity generic

---------

Co-authored-by: Daniel Hjelseth Høyer <github@dahoiv.net>
Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-08 08:51:59 +01:00
Michael Hansen
43daeb2630 Set device id and forward errors to Wyoming satellites (#105266)
* Set device id and forward errors

* Fix tests
2023-12-07 19:44:43 -06:00
Michael Hansen
e9f8e7ab50 Add Wyoming satellite audio settings (#105261)
* Add noise suppression level

* Add auto gain and volume multiplier

* Always use mock TTS dir in Wyoming tests

* More tests
2023-12-07 17:02:55 -05:00
Jan-Philipp Benecke
d1aa690c24 Migrate non-component tests to use freezegun/freezer (#105142) 2023-12-07 22:58:09 +01:00
Joost Lekkerkerker
00e87b9dff Migrate Gree to has entity name (#104739)
* Migrate Gree to has entity name

* Migrate Gree to has entity name
2023-12-07 22:47:52 +01:00
On Freund
c4d77877d2 Fix update of uncategorized OurGroceries items (#105255)
* Fix update of uncategorized OurGroceries items

* Address code review comments
2023-12-07 22:11:08 +01:00
Jan-Philipp Benecke
8a4b761c78 Use freezegun in cert_expiry tests (#105125) 2023-12-07 21:55:37 +01:00
Michael Hansen
4c4ad9404f Don't return TTS URL in Assist pipeline (#105164)
* Don't return TTS URL

* Add test for empty queue
2023-12-07 15:28:04 -05:00
Jan-Philipp Benecke
6666b796f2 Migrate auth tests to use freezegun (#105243) 2023-12-07 21:18:10 +01:00
G Johansson
2daa94b600 Fix check_date service in workday (#105241)
* Fix check_date service in workday

* Add test
2023-12-07 20:04:39 +01:00
Jan-Philipp Benecke
dd902bc956 Explicit check for None in Discovergy entity if condition (#105248)
Fix checking for None in Discovergy
2023-12-07 19:47:14 +01:00
haimn
83a1ca5e83 fix supportedFanOscillationModes is null (#105205)
* fix supportedFanOscillationModes is null

* set default supported_swings to None

* return None if no fan oscillation modes listed
2023-12-07 18:03:07 +01:00
Klaas Schoute
d86abf214b Bump energyzero lib to v2.1.0 (#105228) 2023-12-07 15:22:30 +01:00
Klaas Schoute
d80547519a Bump easyenergy lib to v2.1.0 (#105224) 2023-12-07 14:57:08 +01:00
Erik Montnemery
84329844fd Disable config flow progress in peco config flow (#105222) 2023-12-07 13:25:23 +01:00
Franck Nijhof
72b0904b41 Merge branch 'master' into dev 2023-12-07 11:15:00 +01:00
Greg Dowling
334673154c Fix bug in roon incremental volume control. (#105201) 2023-12-07 11:00:26 +01:00
dewdrop
de758fd7b3 Add Seattle City Light virtual integration via Opower (#104997) 2023-12-07 10:39:54 +01:00
jimmyd-be
d61814a1ed Add custom services for renson fans (#94497)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-07 09:57:01 +01:00
Jan-Philipp Benecke
0728106c98 Increase ping update interval to 30 seconds (#105199) 2023-12-07 09:50:21 +01:00
Duco Sebel
f8c216a5ea Use brightness scaling util in HomeWizard Number entity (#105147) 2023-12-07 09:37:20 +01:00
Jan Bouwhuis
f48e948871 Correct smtp error message string (#105148) 2023-12-07 09:35:22 +01:00
Mick Vleeshouwer
e40f486968 Disable scenarios (scenes) for local API in Overkiz (#105153) 2023-12-07 09:33:33 +01:00
dependabot[bot]
316776742f Bump actions/setup-python from 4.8.0 to 5.0.0 (#105193)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-07 09:27:48 +01:00
Duco Sebel
3d5329755f Add extra tests for HomeWizard for unsupported entity creation (#105149) 2023-12-07 09:24:27 +01:00
Michael Hansen
ebde8ccfe4 Expose todo entities to Assist by default (#105150) 2023-12-07 09:22:03 +01:00
Robert Svensson
2a8a60b381 Improve LIDL christmas light detection in deCONZ (#105155) 2023-12-07 09:19:38 +01:00
Quentame
f420dcbedc Bump Météo-France to 1.3.0 (#105170) 2023-12-07 09:18:34 +01:00
Cían Hughes
e051244927 Add Modbus fan speed support (#104577)
Co-authored-by: jan iversen <jancasacondor@gmail.com>
2023-12-07 08:19:03 +01:00
Sebastian Nohn
22119a2fd8 Set ping interval to 15 seconds instead of 5 minutes (#105191)
set ping interval to a more sane value of 15 seconds instead of 5 minutes. fixes home-assistant/core#105163
2023-12-07 07:44:19 +01:00
starkillerOG
0b6665ed09 Bump reolink_aio to 0.8.2 (#105157) 2023-12-07 07:39:37 +01:00
Matrix
4666d7e17f Bump yolink-api to 0.3.4 (#105124)
* Bump yolink-api to 0.3.3

* bump yolink api to 0.3.4
2023-12-07 07:30:27 +01:00
TheJulianJES
9181933619 Fix ZHA quirk ID custom entities matching all devices (#105184) 2023-12-07 07:15:31 +01:00
lunmay
16f6a57924 Fix missing apostrophe in smtp (#105189)
Fix missing apostrophe
2023-12-07 07:12:27 +01:00
Jan-Philipp Benecke
05e122e22b Modernize and cleanup trend tests (#105010)
Co-authored-by: Em <emmanuel.sciara@gmail.com>
2023-12-06 18:46:35 +01:00
TJ Horner
32febcda5a Bump apple_weatherkit to 1.1.2 (#105140) 2023-12-06 18:36:46 +01:00
Tucker Kern
ff21c02cb6 Add preset modes to ESPHome fan entities (#103781)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-06 06:53:52 -10:00
Franck Nijhof
ea1222bff3 2023.12.0 (#105135) 2023-12-06 17:44:26 +01:00
Franck Nijhof
af23580530 Bump version to 2023.12.0 2023-12-06 16:31:24 +01:00
Paul Bottein
d8b056b340 Update frontend to 20231206.0 (#105132) 2023-12-06 16:31:06 +01:00
Franck Nijhof
0958e8fadf Fix missing target in todo.remove_completed_items service (#105127) 2023-12-06 16:30:59 +01:00
Xidorn Quan
e165d6741e Bump thermopro-ble to 0.5.0 (#105126) 2023-12-06 16:30:52 +01:00
Tobias Perschon
6b3e9904c8 Add missing services and strings entries for reply_to_message_id (#105072) 2023-12-06 16:27:06 +01:00
Marc Mueller
c93abd9d20 Improve decorator type annotations [zwave_js] (#104825)
* Improve decorator type annotations [zwave_js]

* Improve _async_get_entry annotation
2023-12-06 16:22:32 +01:00
Joost Lekkerkerker
6721f9fdb2 Bump python-opensky to 1.0.0 (#105131) 2023-12-06 16:21:12 +01:00
Paul Bottein
297a7638ca Update frontend to 20231206.0 (#105132) 2023-12-06 14:51:36 +01:00
Jan-Philipp Benecke
a16819e0e5 Use freezegun in utility_meter tests (#105123) 2023-12-06 14:43:26 +01:00
Franck Nijhof
3f28354a00 Fix missing target in todo.remove_completed_items service (#105127) 2023-12-06 14:39:27 +01:00
Xidorn Quan
eb00259356 Bump thermopro-ble to 0.5.0 (#105126) 2023-12-06 13:30:31 +01:00
Ville Skyttä
a29695e622 Add Huawei LTE network mode select (#104614)
* Convert network mode from sensor to select for huawei_lte

This also introduces the select platform to huawei_lte integration.

* Move (networkmode, str) mapping to const

Also, rebase on top of the current dev

* Fix variable naming, initialize name

* Fix wrong key for router access

* Typing fixes

* Adapt to current way of registering subscriptions

* Simplify option management, make translatable

* Make use of custom entity description

* Add icon

* Revert sensor formatting changes, move to another PR

* Improve entity class naming

* Add test

* Make sure entity descriptions define a setter function

---------

Co-authored-by: Teemu Rytilahti <tpr@iki.fi>
2023-12-06 14:23:26 +02:00
Jan Rieger
81d05acd07 Address late review for Holiday (#105121) 2023-12-06 12:39:46 +01:00
Tobias Perschon
7424c296b7 Add missing services and strings entries for reply_to_message_id (#105072) 2023-12-06 11:01:05 +01:00
David Bonnes
88a4b74d4b bump evohome-async to 0.4.15 (#105119) 2023-12-06 10:32:10 +01:00
Franck Nijhof
9fcb722381 Bump version to 2023.12.0b5 2023-12-06 08:31:21 +01:00
Michael Hansen
da766bc7c5 Bump intents to 2023.12.05 (#105116) 2023-12-06 08:31:13 +01:00
lunmay
681a3fd271 Fix typo in v2c strings.json (#105104)
fo -> of
2023-12-06 08:31:10 +01:00
Robert Svensson
990fd31e84 Bump aiounifi to v67 (#105099)
* Bump aiounifi to v67

* Fix mypy
2023-12-06 08:31:06 +01:00
Jan Bouwhuis
f7c9d20472 Fix overkiz measurement sensor returns None if 0 (#105090) 2023-12-06 08:31:03 +01:00
TJ Horner
ae4811b776 Update apple_weatherkit to 1.1.1 (#105079) 2023-12-06 08:30:46 +01:00
dependabot[bot]
a904461b6a Bump actions/setup-python from 4.7.1 to 4.8.0 (#105117)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-06 08:28:02 +01:00
J. Nick Koston
bf8f78c041 Fix flakey logbook tests (#105111) 2023-12-06 08:15:48 +01:00
J. Nick Koston
a528183556 Bump habluetooth to 0.8.0 (#105109) 2023-12-06 08:15:24 +01:00
Michael Hansen
3fda43ef33 Bump intents to 2023.12.05 (#105116) 2023-12-06 08:14:34 +01:00
J. Nick Koston
2401a09600 Bump aioesphomeapi to 19.3.0 (#105114) 2023-12-06 08:13:35 +01:00
Klaas Schoute
9a3b4939a9 Update easyenergy lib to v2.0.0 (#105108) 2023-12-06 07:35:29 +01:00
lunmay
ad26af608b Fix typo in v2c strings.json (#105104)
fo -> of
2023-12-05 16:25:08 -05:00
Tudor Sandu
636e38f4b3 Trigger Home Assistant shutdown automations right before the stop event instead of during it (#91165)
Co-authored-by: Erik <erik@montnemery.com>
2023-12-05 11:24:41 -10:00
Robert Svensson
44810f9772 Bump aiounifi to v67 (#105099)
* Bump aiounifi to v67

* Fix mypy
2023-12-05 22:16:07 +01:00
jimmyd-be
712a401ee2 Bump renson library to version 1.7.1 (#105096) 2023-12-05 21:06:29 +01:00
TJ Horner
19e193ae1d Increase frequency of weatherkit updates (#105094) 2023-12-05 09:45:26 -10:00
TJ Horner
eadcceeed1 Update apple_weatherkit to 1.1.1 (#105079) 2023-12-05 09:45:00 -10:00
Jan Bouwhuis
be44de0a41 Fix overkiz measurement sensor returns None if 0 (#105090) 2023-12-05 20:00:53 +01:00
J. Nick Koston
3c635fdbf2 Split bluetooth manager so it can be extracted into the habluetooth lib (#105015) 2023-12-05 19:54:50 +01:00
J. Nick Koston
94d168e20e Move Bluetooth advertisement tracker to habluetooth library (#105083) 2023-12-05 19:53:29 +01:00
Michael
3310f4c130 Add significant Change support for weather (#104840) 2023-12-05 19:17:52 +01:00
Erik Montnemery
1edfaed7be Improve raise contains mocks (#105078)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-12-05 19:14:35 +01:00
Klaas Schoute
d4cbe89c2f Update energyzero lib to v2.0.0 (#105080) 2023-12-05 19:14:13 +01:00
Franck Nijhof
b0367d3d74 Bump version to 2023.12.0b4 2023-12-05 19:09:24 +01:00
Bram Kragten
30d529aab0 Update frontend to 20231205.0 (#105081) 2023-12-05 19:09:16 +01:00
Jan-Philipp Benecke
4018a28510 Remove device from known_devices upon import in ping device tracker (#105009)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-05 19:09:12 +01:00
Bram Kragten
dd37205a42 Update frontend to 20231205.0 (#105081) 2023-12-05 18:52:52 +01:00
Jan-Philipp Benecke
dc17780e5b Remove device from known_devices upon import in ping device tracker (#105009)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-05 18:52:22 +01:00
J. Nick Koston
b6245c834d Move local bluetooth scanner code into habluetooth library (#104970) 2023-12-05 07:19:02 -10:00
Erik Montnemery
428c184c75 Improve yamaha tests (#105077) 2023-12-05 07:17:56 -10:00
Erik Montnemery
5b55c7da5f Remove logic converting empty or falsy YAML to empty dict (#103912)
* Correct logic converting empty YAML to empty dict

* Modify according to github comments

* Add load_yaml_dict helper

* Update check_config script

* Update tests
2023-12-05 18:08:11 +01:00
Joost Lekkerkerker
a8ca73a7dd Finish scaffold config flow with either abort or create entry (#105012) 2023-12-05 17:13:29 +01:00
Robert Hillis
651df6b698 Add calendar entity to Radarr (#79077)
* Add calendar entity to Radarr

* address feedback/add tests

* black

* uno mas

* rework to coordinator

* uno mas

* move release atttribute writing

* fix calendar items and attributes
2023-12-05 07:51:51 -08:00
Franck Nijhof
a076b7d992 Bump version to 2023.12.0b3 2023-12-05 15:57:40 +01:00
Erik Montnemery
55c686ad03 Don't use deprecated_class decorator on deprecated YAML classes (#105063) 2023-12-05 15:55:27 +01:00
Robert Svensson
7cb383146a Make UniFi WiFi clients numerical (#105032) 2023-12-05 15:55:23 +01:00
Robert Svensson
2f727d5fe1 Fix stuck clients in UniFi options (#105028) 2023-12-05 15:55:18 +01:00
Robert Svensson
65c8aa3249 Make unifi RX-/TX-sensors diagnostic entities (#105022) 2023-12-05 15:55:15 +01:00
Bartosz Dokurno
c62c002657 Update Todoist config flow URL (#104992) 2023-12-05 15:55:12 +01:00
Erik Montnemery
fd4a05fc7a Minor improvements of deprecation helper (#104980) 2023-12-05 15:55:08 +01:00
Marco
56e325a2b1 Fix Mikrotik rename from wifiwave2 to wifi for upcoming RouterOS 7.13 (#104966)
Co-authored-by: Marco98 <Marco98@users.noreply.github.com>
2023-12-05 15:55:05 +01:00
Aaron Godfrey
48cce1a854 Exclude Todoist sub-tasks for the todo platform (#104914) 2023-12-05 15:55:01 +01:00
Marcel van der Veldt
99401c60c7 Add Matter custom cluster sensors (Eve Energy Plug energy measurements) (#104830)
* Support for sensors from custom clusters in Matter

* lint

* no need to write state twice

* Add test for eve energy plug

* Update homeassistant/components/matter/entity.py

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

* adjust comment

* debounce extra poll timer

* use async_call_later helper

* Update homeassistant/components/matter/entity.py

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

* wip extend test

* Update test_sensor.py

* fix state class for sensors

* trigger (fake) event callback on all subscribers

* Update eve-energy-plug.json

* add test for additionally polled value

* adjust delay to 3 seconds

* Adjust subscribe_events to always use kwargs

* Update tests/components/matter/common.py

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

* Update test_sensor.py

* remove redundant code

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-05 15:54:58 +01:00
Michael Hansen
5a49e1dd5c Add Wyoming satellite (#104759)
* First draft of Wyoming satellite

* Set up homeassistant in tests

* Move satellite

* Add devices with binary sensor and select

* Add more events

* Add satellite enabled switch

* Fix mistake

* Only set up necessary platforms for satellites

* Lots of fixes

* Add tests

* Use config entry id as satellite id

* Initial satellite test

* Add satellite pipeline test

* More tests

* More satellite tests

* Only support single device per config entry

* Address comments

* Make a copy of platforms
2023-12-05 15:54:55 +01:00
Allen Porter
db6b804298 Add due date and description fields to Todoist To-do entity (#104655)
* Add Todoist Due date and description fields

* Update entity features with new names

* Make items into walrus

* Update due_datetime field

* Add additional tests for adding new fields to items

* Fix call args in todoist test
2023-12-05 15:54:52 +01:00
Allen Porter
655b067277 Add due date and description to Google Tasks (#104654)
* Add tests for config validation function

* Add Google Tasks due date and description

* Revert test timezone

* Update changes after upstream

* Update homeassistant/components/google_tasks/todo.py

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

* Add google tasks tests for creating

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-05 15:54:48 +01:00
GeoffAtHome
55bafc260d Fix geniushub smart plug state at start-up (#102110)
* Smart plug did state wrong at start-up

* Update docstring to reflect code
2023-12-05 15:54:44 +01:00
Erik Montnemery
3bcc6194ef Add domain key config validation (#104242)
* Drop use of regex in helpers.extract_domain_configs

* Update test

* Revert test update

* Add domain_from_config_key helper

* Add validator

* Address review comment

* Update snapshots

* Inline domain_from_config_key in validator
2023-12-05 15:07:32 +01:00
Erik Montnemery
25bea91683 Use modern platform path when reporting platform config errors (#104238)
* Use modern platform path when reporting platform config errors

* Update tests

* Address review comment

* Explicitly pass platform domain to log helpers

* Revert overly complicated changes

* Try a simpler solution
2023-12-05 15:06:13 +01:00
dupondje
db9d6b401a Add optional dsmr timestamp sensor (#104979)
* Add optional timestamp sensor

* Apply suggestions from code review

Remove "timestamp" translation

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-05 14:28:57 +01:00
GeoffAtHome
c4fbc78c05 Fix geniushub smart plug state at start-up (#102110)
* Smart plug did state wrong at start-up

* Update docstring to reflect code
2023-12-05 14:03:39 +01:00
Marc Mueller
6e0ba8e726 Improve matrix typing (#105067) 2023-12-05 13:40:14 +01:00
Thomas Zahari
f460fdf632 Add fields cancelled & extra to result of the departure HVV sensor (#105030) 2023-12-05 13:15:16 +01:00
jan iversen
0638088aee Deprecate and remove lazy_error from modbus (#105037) 2023-12-05 13:08:33 +01:00
Erik Montnemery
5b59e043fa Don't use deprecated_class decorator on deprecated YAML classes (#105063) 2023-12-05 11:36:26 +01:00
Erik Montnemery
ae002e2f38 Remove breaks_in_ha_version from deprecated YAML classes (#105062) 2023-12-05 10:48:31 +01:00
Jan-Philipp Benecke
5cab64bfcd Make season types translatable (#105027) 2023-12-05 09:48:46 +01:00
Robert Svensson
4b87936779 Fix stuck clients in UniFi options (#105028) 2023-12-05 09:42:43 +01:00
J. Nick Koston
9b53fa6478 Bump habluetooth to 0.6.1 (#105029) 2023-12-05 09:30:21 +01:00
J. Nick Koston
c2cc8014dc Avoid double URL creation for hassio ingress (#105052) 2023-12-05 09:29:43 +01:00
Marco
b7bc49b863 Fix Mikrotik rename from wifiwave2 to wifi for upcoming RouterOS 7.13 (#104966)
Co-authored-by: Marco98 <Marco98@users.noreply.github.com>
2023-12-05 09:21:03 +01:00
Robert Svensson
482e087a85 Make unifi RX-/TX-sensors diagnostic entities (#105022) 2023-12-05 08:55:15 +01:00
Robert Svensson
e80ee09f5e Make UniFi WiFi clients numerical (#105032) 2023-12-05 08:50:32 +01:00
Erik Montnemery
84e74e4c74 Reverse component path (#104087)
* Reverse component path

* Update translations helper

* Fix

* Revert incorrect change of PLATFORM_FORMAT

* Fix use of PLATFORM_FORMAT in tts

* Fix ios
2023-12-05 08:43:58 +01:00
Michael Hansen
a9381d2590 Add Wyoming satellite (#104759)
* First draft of Wyoming satellite

* Set up homeassistant in tests

* Move satellite

* Add devices with binary sensor and select

* Add more events

* Add satellite enabled switch

* Fix mistake

* Only set up necessary platforms for satellites

* Lots of fixes

* Add tests

* Use config entry id as satellite id

* Initial satellite test

* Add satellite pipeline test

* More tests

* More satellite tests

* Only support single device per config entry

* Address comments

* Make a copy of platforms
2023-12-04 15:13:15 -05:00
Aaron Godfrey
677c50a7cc Exclude Todoist sub-tasks for the todo platform (#104914) 2023-12-04 20:37:09 +01:00
Erik Montnemery
35e2f591c1 Make cv.string return subclasses of str as is (#103916) 2023-12-04 20:36:16 +01:00
Marcel van der Veldt
516966db33 Add Matter custom cluster sensors (Eve Energy Plug energy measurements) (#104830)
* Support for sensors from custom clusters in Matter

* lint

* no need to write state twice

* Add test for eve energy plug

* Update homeassistant/components/matter/entity.py

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

* adjust comment

* debounce extra poll timer

* use async_call_later helper

* Update homeassistant/components/matter/entity.py

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

* wip extend test

* Update test_sensor.py

* fix state class for sensors

* trigger (fake) event callback on all subscribers

* Update eve-energy-plug.json

* add test for additionally polled value

* adjust delay to 3 seconds

* Adjust subscribe_events to always use kwargs

* Update tests/components/matter/common.py

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

* Update test_sensor.py

* remove redundant code

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-12-04 17:21:41 +01:00
Franck Nijhof
ca147060d9 Bump version to 2023.12.0b2 2023-12-04 15:00:20 +01:00
c0ffeeca7
8fd2e6451a W-Z: add host field description (#104996) 2023-12-04 15:00:09 +01:00
Bram Kragten
df8f462370 Update frontend to 20231204.0 (#104990) 2023-12-04 15:00:06 +01:00
Jan Bouwhuis
64f7855b94 Raise on smtp notification if attachment is not allowed (#104981)
* Raise smtp notification if attachment not allowed

* Pass url as placeholder

* Use variable in err message

* Add allow_list as placeholder
2023-12-04 15:00:02 +01:00
Jan Bouwhuis
204cc20bc2 Do not allow smtp to access insecure files (#104972) 2023-12-04 14:59:59 +01:00
Richard Kroegel
63ed4b0769 Bump bimmer-connected to 0.14.6 (#104961)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-12-04 14:59:56 +01:00
starkillerOG
cd86318b4b Do not fail if Reolink ONVIF cannot be connected (#104947) 2023-12-04 14:59:53 +01:00
Jan Bouwhuis
7d21ed41a2 Refactor lock default code handling (#104807) 2023-12-04 14:59:51 +01:00
G Johansson
214f214122 Only raise issue if switch used in Logitech Harmony Hub (#104941) 2023-12-04 14:59:49 +01:00
Alex Thompson
b53b1ab614 Fix Lyric HVAC mode reset on temperature change (#104910)
* Fix Lyric HVAC mode reset on temperature change

* Reduce code duplication

* Revert additional bugfix

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-12-04 14:59:46 +01:00
G Johansson
f5fae54c32 Fix get_events name in calendar strings (#104902) 2023-12-04 14:59:43 +01:00
Jan Bouwhuis
e1142e2ad8 Fix dsmr zero reconnect interval option could crash HA (#104900)
* Fix dsmr zero interval option could crash HA

* No change change the options
2023-12-04 14:59:40 +01:00
Patrick Decat
380e71d1b2 Fix incompatible 'measurement' state and 'volume' device class warnings in Overkiz (#104896) 2023-12-04 14:59:36 +01:00
Jan Bouwhuis
cda7863a45 Link second Hue host field description (#104885) 2023-12-04 14:59:33 +01:00
c0ffeeca7
9181d655f9 U-V add host field description (#104872)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2023-12-04 14:59:30 +01:00
c0ffeeca7
555e413edb T-add host field description (#104871) 2023-12-04 14:59:26 +01:00
starkillerOG
39026e3b53 Reolink schedule update after firmware update (#104867) 2023-12-04 14:59:23 +01:00
c0ffeeca7
8fd9761e7d Solar-Log to Soundtouch: add host field description (#104863) 2023-12-04 14:59:20 +01:00
c0ffeeca7
0cf4c6e568 SamsungTV to Snapcast: add host field description (#104862) 2023-12-04 14:59:17 +01:00
c0ffeeca7
0dc157dc31 Reolink to Ruckus: add host field description (#104861)
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
2023-12-04 14:59:14 +01:00
c0ffeeca7
9827ba7e60 Radio Thermostat to Renson: add host field description (#104860) 2023-12-04 14:59:10 +01:00
c0ffeeca7
f194ffcd52 Ping to Qnap: add host field description (#104859) 2023-12-04 14:59:07 +01:00
c0ffeeca7
42982de223 Obihai to OpenGarage: add host field description (#104858)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-12-04 14:59:04 +01:00
c0ffeeca7
1d04fcc485 Nanoleaf to Nut: add host field description (#104857)
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
2023-12-04 14:59:01 +01:00
c0ffeeca7
1378abab35 Modern Forms to MyStrom: add host field description (#104856) 2023-12-04 14:58:58 +01:00
c0ffeeca7
78cf9f2a01 Lifx, Lutron: add host field description (#104855) 2023-12-04 14:58:55 +01:00
Michael
074bcc8adc Fix handling of unrecognized mimetypes in Synology DSM photos integration (#104848) 2023-12-04 14:58:52 +01:00
Jan Bouwhuis
d67d2d9566 Filter out zero readings for DSMR enery sensors (#104843) 2023-12-04 14:58:49 +01:00
Robert Hillis
262e59f293 Fix Harmony switch removal version (#104838) 2023-12-04 14:58:46 +01:00
Daniel Hjelseth Høyer
11db0ab1e1 Bump Mill library (#104836) 2023-12-04 14:58:43 +01:00
Erik Montnemery
367bbf5709 Use deprecated_class decorator in deprecated YAML loader classes (#104835) 2023-12-04 14:58:40 +01:00
Bartosz Dokurno
13fdac23c1 Update Todoist config flow URL (#104992) 2023-12-04 14:58:37 +01:00
Marcel van der Veldt
0d318da9aa Update Matter test fixtures to schema version 5 (#104829) 2023-12-04 14:58:37 +01:00
mkmer
7ea4e15ff2 Late review updates for Blink (#104755) 2023-12-04 14:58:32 +01:00
Eric Härtel
cc0326548e Add CB3 descriptor to ZHA manifest (#104071) 2023-12-04 14:51:43 +01:00
c0ffeeca7
188d6a6eee W-Z: add host field description (#104996) 2023-12-04 14:48:56 +01:00
jan iversen
1629bdcd7f Remove "swap: none" from modbus (#104713) 2023-12-04 14:48:40 +01:00
Bram Kragten
157c4e31df Update frontend to 20231204.0 (#104990) 2023-12-04 13:10:51 +01:00
c0ffeeca7
8661aa96bd U-V add host field description (#104872)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2023-12-04 13:10:22 +01:00
Erik Montnemery
95f7db1970 Move config_per_platform and extract_domain_configs to config.py (#104989) 2023-12-04 12:48:49 +01:00
tronikos
53becaa976 Bump opower==0.0.40 (#104986) 2023-12-04 12:32:08 +01:00
Jan Bouwhuis
e8475b9b33 Add scaling utils for brightness and fanspeed (#104753)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-12-04 12:10:58 +01:00
c0ffeeca7
7222e2b2d6 T-add host field description (#104871) 2023-12-04 11:52:54 +01:00
Erik Montnemery
db51a8e1f7 Allow passing breaks_in_ha_version to deprecation helper decorators (#104985) 2023-12-04 11:52:10 +01:00
Jan Bouwhuis
d8a6d864c0 Raise on smtp notification if attachment is not allowed (#104981)
* Raise smtp notification if attachment not allowed

* Pass url as placeholder

* Use variable in err message

* Add allow_list as placeholder
2023-12-04 11:48:29 +01:00
Matthias Dunda
0f3cb9b1b6 Add telegram message timestamp to event data (#87493) 2023-12-04 10:53:59 +01:00
c0ffeeca7
bf49a3dcc2 Solar-Log to Soundtouch: add host field description (#104863) 2023-12-04 10:48:58 +01:00
Erik Montnemery
34d01719f2 Minor improvements of deprecation helper (#104980) 2023-12-04 10:47:49 +01:00
c0ffeeca7
7ac8f191bd Modern Forms to MyStrom: add host field description (#104856) 2023-12-04 10:46:49 +01:00
c0ffeeca7
ff84b82027 Squeezebox to Synology DSM: add host field description (#104864)
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>
2023-12-04 10:45:43 +01:00
c0ffeeca7
3cba10fa20 Lifx, Lutron: add host field description (#104855) 2023-12-04 10:44:52 +01:00
starkillerOG
3316f6980d Do not fail if Reolink ONVIF cannot be connected (#104947) 2023-12-04 10:44:29 +01:00
c0ffeeca7
bf63674af2 Nanoleaf to Nut: add host field description (#104857)
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
2023-12-04 10:38:52 +01:00
c0ffeeca7
ab4c6cddf2 Radio Thermostat to Renson: add host field description (#104860) 2023-12-04 10:37:51 +01:00
c0ffeeca7
9b9d9c6116 Reolink to Ruckus: add host field description (#104861)
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
2023-12-04 10:37:02 +01:00
J. Nick Koston
b0d0f15911 Bump dbus-fast to 2.20.0 (#104978) 2023-12-03 22:53:47 -10:00
Eric Härtel
557e9337bc Add CB3 descriptor to ZHA manifest (#104071) 2023-12-04 09:48:44 +01:00
Patrick Decat
8e42105b2d Fix incompatible 'measurement' state and 'volume' device class warnings in Overkiz (#104896) 2023-12-04 09:45:59 +01:00
Jan Bouwhuis
9c9d8669ec Link second Hue host field description (#104885) 2023-12-04 09:36:41 +01:00
Jirka
91463566c0 Update balboa strings.json (#104977) 2023-12-04 09:14:24 +01:00
c0ffeeca7
7ae6343b25 Obihai to OpenGarage: add host field description (#104858)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-12-04 09:13:48 +01:00
Richard Kroegel
6335c24568 Bump bimmer-connected to 0.14.6 (#104961)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-12-04 09:13:27 +01:00
J. Nick Koston
67039e0f26 Remove monotonic_time_coarse datetime helper (#104892) 2023-12-04 09:10:13 +01:00
Kevin Worrel
3b5e498c30 Bump screenlogicpy to v0.10.0 (#104866) 2023-12-04 09:07:46 +01:00
David Bonnes
6fd96f856d Bump evohome-async to 0.4.13 (#104960)
bump client to 0.4.13
2023-12-04 08:48:47 +01:00
J. Nick Koston
401c890364 Bump habluetooth to 0.5.1 (#104969)
* bump lib

* bump again to be patchable
2023-12-04 08:42:07 +01:00
Brett Adams
453f91a3ae Add virtual integration Fujitsu anywAIR (#102978)
Add anywair
2023-12-04 08:09:15 +01:00
Joost Lekkerkerker
374b1cfd0c Fix bug in config flow scaffold (#104965) 2023-12-04 07:48:05 +01:00
Joost Lekkerkerker
b56cd169ac Use constants in config flow scaffold (#104964) 2023-12-04 07:46:36 +01:00
Jan Bouwhuis
fe2906f159 Do not allow smtp to access insecure files (#104972) 2023-12-03 20:06:01 -05:00
J. Nick Koston
c1f68c3767 Bump habluetooth to 0.4.0 (#104958) 2023-12-03 12:18:10 -10:00
Alex Thompson
23cd66c54b Fix Lyric HVAC mode reset on temperature change (#104910)
* Fix Lyric HVAC mode reset on temperature change

* Reduce code duplication

* Revert additional bugfix

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-12-03 22:13:26 +01:00
Joost Lekkerkerker
833805f9be Add StreamLabsWater to strict typing (#104957) 2023-12-03 21:10:37 +01:00
jjlawren
ecc49e61f6 Bump plexapi to 4.15.6 (#104949) 2023-12-03 21:05:30 +01:00
J. Nick Koston
28584ad240 Relocate base Bluetooth scanner code into an external library (#104930) 2023-12-03 10:00:11 -10:00
J. Nick Koston
c8bb72935d Bump bluetooth-data-tools to 1.17.0 (#104935) 2023-12-03 08:53:17 -10:00
Jan Rieger
244edb488b Add Holiday integration (#103795)
* Add Holiday integration

* Localize holiday names

* Changes based on review feedback

* Add tests

* Add device info

* Bump holidays to 0.36

* Default to Home Assistant country setting

* Update homeassistant/components/holiday/calendar.py

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

* Update homeassistant/components/holiday/calendar.py

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

* Update homeassistant/components/holiday/config_flow.py

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

* black

* Move time

* Stop creating duplicate holiday calendars

* Set default language using python-holiday

* Use common translation

* Set _attr_name to None to fix friendly name

* Fix location

* Update homeassistant/components/holiday/__init__.py

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

* Update homeassistant/components/holiday/calendar.py

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

* Update homeassistant/components/holiday/calendar.py

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

* Update tests/components/holiday/test_init.py

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

* cleanup

* Set up the integration and test the state

* Test that configuring more than one instance is rejected

* Set default_language to user's language, fallback to country's default language

* Improve tests

* Update homeassistant/components/holiday/calendar.py

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

* Cleanup

* Add next year so we don't run out

* Update tests/components/holiday/test_init.py

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

* Cleanup

* Set default language in `__init__`

* Add strict typing

* Change default language: HA's language `en` is `en_US` in holidays, apart from Canada

* CONF_PROVINCE can be None

* Fix test

* Fix default_language

* Refactor tests

* Province can be None

* Add test for translated title

* Address feedback

* Address feedback

* Change test to use service call

* Address feedback

* Apply suggestions from code review

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

* Changes based on review feedback

* Update homeassistant/components/holiday/calendar.py

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

* Update homeassistant/components/holiday/calendar.py

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

* Add a test if next event is missing

* Rebase

* Set device to service

* Remove not needed translation key

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-03 16:28:53 +01:00
G Johansson
67784def13 Only raise issue if switch used in Logitech Harmony Hub (#104941) 2023-12-03 11:57:48 +01:00
Jan Bouwhuis
5d6791e412 Remove CONF_PRECISION remainder from dsmr (#104919) 2023-12-03 11:53:09 +01:00
J. Nick Koston
edb52bb364 Bump zeroconf to 0.128.0 (#104936) 2023-12-03 11:51:34 +01:00
Jan Rieger
a5fe68c354 Bump python-holidays to 0.37 (#104937) 2023-12-03 11:15:07 +01:00
J. Nick Koston
dd9c22672a Refactor bluetooth scanners for better seperation of concerns (#104909) 2023-12-02 13:20:06 -10:00
Erwin Douna
7a9c3819e0 Add MELCloud token refresh upon firmware upgrade (#104391)
* Adding initial setup

* Update homeassistant/components/melcloud/__init__.py

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

* Adding ConfigEntryNotReady exception

* Update homeassistant/components/melcloud/__init__.py

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

* Update homeassistant/components/melcloud/config_flow.py

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

* Update homeassistant/components/melcloud/__init__.py

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

* Placing exception handling in setup_entry

* Expanding test cases

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-02 23:07:06 +01:00
Dave T
b48ad268b5 Add alarm sensor to Aurora ABB (#104503)
* Add new sensors

* Add strings

* Fix tests

* Only add alarm sensor, & refactor

* Address review comments

* Address review comments.

* Fix ruff
2023-12-02 23:04:37 +01:00
Christopher Fenner
7480945465 Add number entities for program temperature in ViCare integration (#103960)
* add number platform

* Update .coveragerc

* reset default value

* fix default value

* cast Any value to float

* Apply suggestions from code review

* Update strings.json

* add translation keys

* remove obsolete unique id handling

* add eco program

* reset type

* remove name from entity

* Update strings.json

* Update strings.json

* rename

* Apply suggestions from code review

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

* retype getter

* adjust interface

* use device classes

* check setter

* Revert "check setter"

This reverts commit 360e333159.

* remove eco entity

* Update strings.json

* add eco sensor entity

* Revert "add eco sensor entity"

This reverts commit d64b38c548.

* Update strings.json

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-02 22:44:49 +01:00
Jan Bouwhuis
c9306049b3 Correct SerialException import in dsmr, firmata, landysgyr_heat_meater and rfxtrx integrations (#104889)
* Fix SerialException import in dsmr integration

* Fix imports firmata, landysgyr_heat_meter, rfxtrx
2023-12-02 19:30:04 +01:00
Jan Bouwhuis
5106dd173c Fix dsmr zero reconnect interval option could crash HA (#104900)
* Fix dsmr zero interval option could crash HA

* No change change the options
2023-12-02 19:28:56 +01:00
Marc Mueller
559e8dfc69 Improve decorator type annotations [esphome] (#104878) 2023-12-02 06:57:58 -10:00
Marc Mueller
e9d4a02bb1 Adjust roku type hint (#104877) 2023-12-02 10:37:44 -05:00
G Johansson
06d663d33f Fix get_events name in calendar strings (#104902) 2023-12-02 10:35:52 -05:00
starkillerOG
381036e46a Reolink only fetch data for enabled entities (#104157) 2023-12-02 14:10:44 +01:00
J. Nick Koston
a3dd2b8ea9 Migrate to using faster monotonic_time_coarse from bluetooth-data-tools (#104882) 2023-12-01 10:57:09 -10:00
c0ffeeca7
e724414475 SamsungTV to Snapcast: add host field description (#104862) 2023-12-01 16:45:53 +01:00
Marc Mueller
5014e2f0c7 Fix powerwall typing (#104875) 2023-12-01 05:42:50 -10:00
Michael
dc708b8a18 Fix handling of unrecognized mimetypes in Synology DSM photos integration (#104848) 2023-12-01 15:58:15 +01:00
J. Nick Koston
970751a635 Bump bluetooth-data-tools to 0.16.0 (#104854) 2023-12-01 04:44:58 -07:00
starkillerOG
742e2dbbe4 Reolink schedule update after firmware update (#104867) 2023-12-01 12:26:18 +01:00
c0ffeeca7
450bc8dd2c Ping to Qnap: add host field description (#104859) 2023-12-01 12:18:34 +01:00
Niccolò Maggioni
0232c8dcb0 Add temperature to the light color mode parameter fallbacks (#86026)
* Add color temperature to the color mode fallbacks

* Manually add ATTR_COLOR_TEMP since ATTR_COLOR_TEMP_KELVIN is pre-parsed

* Include the legacy ATTR_COLOR_TEMP attribute in the tests

* Apply suggestions from code review

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

* Add citation for McCamy's approximation formula

If still existing, also see page 3 of https://www.st.com/resource/en/application_note/an5638-how-correlated-color-temperature-is-calculated-by-vd6283-stmicroelectronics.pdf

* Update homeassistant/util/color.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-12-01 08:26:07 +01:00
Franck Nijhof
7ec2980e52 Change pytest fixture scope from core fixtures (#104831) 2023-12-01 07:14:13 +01:00
Jan Bouwhuis
1273bc8ec4 Let executor CI test pass under worse conditions (#104849) 2023-11-30 20:05:26 -10:00
Jan Bouwhuis
7767bb328d Filter out zero readings for DSMR enery sensors (#104843) 2023-11-30 23:42:51 +01:00
Erik Montnemery
00e57ab9a4 Use deprecated_class decorator in deprecated YAML loader classes (#104835) 2023-11-30 22:43:34 +01:00
mkmer
99f28c7163 Late review updates for Blink (#104755) 2023-11-30 22:40:41 +01:00
Daniel Hjelseth Høyer
3e95c1c705 Bump Mill library (#104836) 2023-11-30 22:39:54 +01:00
Robert Hillis
b0f5b78b9a Fix Harmony switch removal version (#104838) 2023-11-30 22:21:34 +01:00
cdnninja
ea732349c9 Vesync constant cleanup (#104842) 2023-11-30 22:19:02 +01:00
Marcel van der Veldt
4829b21fd0 Update Matter test fixtures to schema version 5 (#104829) 2023-11-30 20:08:58 +01:00
Franck Nijhof
cd1ee70707 Use orjson to load HomeWizard test fixtures (#104832) 2023-11-30 19:58:33 +01:00
Franck Nijhof
93c8618f8a Bump version to 2023.12.0b1 2023-11-30 19:48:24 +01:00
Franck Nijhof
208622e8a7 Revert "Add Komfovent (#95722)" (#104819) 2023-11-30 19:48:08 +01:00
Erik Montnemery
45f79ee1ba Restore renamed yaml loader classes and warn when used (#104818) 2023-11-30 19:48:04 +01:00
Bram Kragten
7739f99233 Update frontend to 20231130.0 (#104816) 2023-11-30 19:48:01 +01:00
Maciej Bieniek
43e0ddc74e Address late review for the host field description in Shelly integration (#104815)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-11-30 19:47:57 +01:00
Mappenhei
7e012183da Add Humidity device class to LaCross humidity sensor (#104814) 2023-11-30 19:47:54 +01:00
Maciej Bieniek
7a36bdb052 Make Shelly Wall Display thermostat implementation compatible with firmware 1.2.5 (#104812) 2023-11-30 19:47:51 +01:00
Erik Montnemery
83d881459a Add NodeStrClass.__voluptuous_compile__ (#104808) 2023-11-30 19:47:47 +01:00
Marcel van der Veldt
9d53d6811a Bump python-matter-server to version 5.0.0 (#104805) 2023-11-30 19:47:44 +01:00
Charles Garwood
847fd4c653 Use .get for Fully Kiosk SSL settings in coordinator (#104801) 2023-11-30 19:47:40 +01:00
Michael
0eefc98b33 Fix runtime error in CalDAV (#104800) 2023-11-30 19:47:36 +01:00
Marcel van der Veldt
ea8a47d0e9 Fix device sync to Google Assistant if Matter integration is active (#104796)
* Only get Matter device info if device is an actual Matter device

* Return None if matter device does not exist

* lint

* fix test

* adjust google assistant test
2023-11-30 19:47:30 +01:00
c0ffeeca7
75d2ea9c57 KMtronic to LG Soundbar: add host field description (#104792) 2023-11-30 19:45:02 +01:00
c0ffeeca7
cf63cd33c5 iAlarm to Keenetic: add host field description (#104791)
Co-authored-by: Andrey Kupreychik <foxel@quickfox.ru>
2023-11-30 19:44:58 +01:00
c0ffeeca7
fd442fadf8 HLK to Hyperion: add host field description (#104789)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 19:44:52 +01:00
c0ffeeca7
62537aa63a Frontier to Glances: add host field description (#104787)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 19:44:48 +01:00
c0ffeeca7
d7de9c13fd Goalzero to HEOS: add host field description (#104786) 2023-11-30 19:44:45 +01:00
Erwin Douna
04b72953e6 Fix Fastdotcom no entity (#104785)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-11-30 19:44:41 +01:00
c0ffeeca7
ddba7d8ed8 Freebox to FRITZ!Box add host field description (#104784)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2023-11-30 19:44:38 +01:00
c0ffeeca7
40c7432e8a FiveM to Foscam: add host field description (#104782) 2023-11-30 19:44:35 +01:00
c0ffeeca7
e1504759fe Enphase to Evil: add host field description (#104779)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 19:44:31 +01:00
c0ffeeca7
b6b2cf194d Ecoforest to Emonitor: add host field description (#104778) 2023-11-30 19:44:28 +01:00
c0ffeeca7
c3566db339 Dremel to Duotecno: add host field description (#104776)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 19:44:25 +01:00
c0ffeeca7
4eec48de51 Deconz to DoorBird: add host field description (#104772)
* Deconz to DoorBird: add host field description

* Update homeassistant/components/deconz/strings.json

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2023-11-30 19:44:21 +01:00
c0ffeeca7
fe544f670f Comelit, Coolmaster: add host field description (#104771) 2023-11-30 19:44:18 +01:00
c0ffeeca7
816e524457 Broadlink, BSB-Lan: add host field description (#104770) 2023-11-30 19:44:15 +01:00
Allen Porter
4b22551af1 Fix bug in rainbird device ids that are int serial numbers (#104768) 2023-11-30 19:44:12 +01:00
Jan Bouwhuis
b4907800a9 Debug level logging for DSMR migration code (#104757) 2023-11-30 19:44:08 +01:00
Daniel Gangl
f366b37c52 Bump zamg to 0.3.3 (#104756) 2023-11-30 19:44:05 +01:00
Michael Hansen
90bcad31b5 Skip TTS when text is empty (#104741)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-11-30 19:44:01 +01:00
Franck Nijhof
34c65749e2 Revert "Add proj dependency to our wheels builder (#104699)" (#104704) 2023-11-30 19:43:58 +01:00
Christopher Fenner
5f549649de Update initial translation for ViCare water heater entity (#104696) 2023-11-30 19:43:55 +01:00
c0ffeeca7
78f1c0cb80 Axis: add host and user name field description (#104693) 2023-11-30 19:43:51 +01:00
Charles Garwood
6f45fafc11 Bump pynws to 1.6.0 (#104679) 2023-11-30 19:43:48 +01:00
Florian
4acea82ca1 Fix Philips TV none recordings_list (#104665)
Correct for missing recordings list in api client.
---------

Co-authored-by: Joakim Plate <elupus@ecce.se>
2023-11-30 19:43:44 +01:00
Sergiy Maysak
f1e8c1c7ee Fix wirelesstag unique_id to use uuid instead of tag_id (#104394)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-11-30 19:43:40 +01:00
Marc Mueller
ca9d58c442 Improve decorator type annotations [sensibo] (#104824) 2023-11-30 19:06:36 +01:00
Joost Lekkerkerker
fed8e5e873 Always create APCUPS device (#104716) 2023-11-30 18:51:23 +01:00
Marc Mueller
2496c275c8 Improve decorator type annotations [core] (#104826) 2023-11-30 18:50:31 +01:00
Marc Mueller
46ba62a3c0 Improve decorator type annotations [sabnzbd] (#104823) 2023-11-30 18:47:58 +01:00
Marc Mueller
6ffc298986 Improve decorator type annotations [matter] (#104822) 2023-11-30 18:47:18 +01:00
Maciej Bieniek
8e2f4a347c Address late review for the host field description in Shelly integration (#104815)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-11-30 18:46:18 +01:00
Mappenhei
9bdb713408 Add Humidity device class to LaCross humidity sensor (#104814) 2023-11-30 18:45:52 +01:00
Marc Mueller
d597cfec49 Improve decorator type annotations (#104821) 2023-11-30 18:45:18 +01:00
Franck Nijhof
4bc1e5075a Revert "Add Komfovent (#95722)" (#104819) 2023-11-30 18:45:04 +01:00
Sergiy Maysak
689c0d14ec Added typing for return value for async_migrate func. (#104828) 2023-11-30 18:19:10 +01:00
David Bonnes
f50cd5ab5e Bump evohome-async to 0.4.9 (#103660) 2023-11-30 18:17:34 +01:00
Erik Montnemery
abc05451a2 Restore renamed yaml loader classes and warn when used (#104818) 2023-11-30 18:14:48 +01:00
cdnninja
9447d954d6 Add codeowner to vesync (#104809) 2023-11-30 18:14:22 +01:00
Bram Kragten
99523c96a2 Update frontend to 20231130.0 (#104816) 2023-11-30 17:49:31 +01:00
Erik Montnemery
12902b8a68 Add NodeStrClass.__voluptuous_compile__ (#104808) 2023-11-30 17:45:27 +01:00
Maciej Bieniek
b7bf1e9f3f Make Shelly Wall Display thermostat implementation compatible with firmware 1.2.5 (#104812) 2023-11-30 17:26:07 +01:00
c0ffeeca7
3133585d52 Enphase to Evil: add host field description (#104779)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 17:25:04 +01:00
c0ffeeca7
0c08081386 Deconz to DoorBird: add host field description (#104772)
* Deconz to DoorBird: add host field description

* Update homeassistant/components/deconz/strings.json

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2023-11-30 17:24:21 +01:00
Erwin Douna
b3d64c3949 Fix Fastdotcom no entity (#104785)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-11-30 17:11:28 +01:00
Marcel van der Veldt
b31d805de1 Bump python-matter-server to version 5.0.0 (#104805) 2023-11-30 17:09:53 +01:00
Michael
7ec6510221 Add significant Change support for remote (#104627) 2023-11-30 17:09:06 +01:00
c0ffeeca7
419dc8adb1 Freebox to FRITZ!Box add host field description (#104784)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2023-11-30 17:05:32 +01:00
c0ffeeca7
41fb8d50cc Goalzero to HEOS: add host field description (#104786) 2023-11-30 17:04:15 +01:00
c0ffeeca7
b9ab28150e iAlarm to Keenetic: add host field description (#104791)
Co-authored-by: Andrey Kupreychik <foxel@quickfox.ru>
2023-11-30 17:03:27 +01:00
Marcel van der Veldt
52450291cb Fix device sync to Google Assistant if Matter integration is active (#104796)
* Only get Matter device info if device is an actual Matter device

* Return None if matter device does not exist

* lint

* fix test

* adjust google assistant test
2023-11-30 16:59:26 +01:00
c0ffeeca7
cc2c7c7be1 KMtronic to LG Soundbar: add host field description (#104792) 2023-11-30 16:57:44 +01:00
c0ffeeca7
3bbed8965a Frontier to Glances: add host field description (#104787)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 16:55:53 +01:00
Jonas Fors Lellky
25ebbda3a9 Add Flexit bacnet integration (#104275)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Piotr Buliński <piotr@bulinski.no>
Co-authored-by: Piotr Buliński <piotr@qbee.io>
2023-11-30 16:50:13 +01:00
c0ffeeca7
1c78848c43 HLK to Hyperion: add host field description (#104789)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 16:38:40 +01:00
Jan-Philipp Benecke
f59588b413 Make the minimum number of samples used by the trend sensor configurable (#101102)
* Make the minimum of samples configurable & raise issue when min_samples > max_samples

* Wording

* Remove issue creation and use a custom schema validator

* Remove issue from strings.json

* Add test for validator and fix error message
2023-11-30 15:41:58 +01:00
Charles Garwood
aa4382e091 Use .get for Fully Kiosk SSL settings in coordinator (#104801) 2023-11-30 14:22:17 +01:00
starkillerOG
fa7a74c611 Cleanup Reolink formatting (late review) (#104793)
cleanup
2023-11-30 13:54:37 +01:00
Michael
68e883dc63 Fix runtime error in CalDAV (#104800) 2023-11-30 13:50:58 +01:00
Sergiy Maysak
1ab9357840 Fix wirelesstag unique_id to use uuid instead of tag_id (#104394)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-11-30 12:14:46 +01:00
c0ffeeca7
d1a2192e37 FiveM to Foscam: add host field description (#104782) 2023-11-30 11:59:20 +01:00
starkillerOG
69af4c8603 Add common reolink entity description (#104142)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-11-30 11:26:33 +01:00
c0ffeeca7
dd00357e9c Ecoforest to Emonitor: add host field description (#104778) 2023-11-30 09:44:18 +01:00
c0ffeeca7
da93daaa75 Dremel to Duotecno: add host field description (#104776)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-30 09:43:42 +01:00
c0ffeeca7
56350d1c0a Broadlink, BSB-Lan: add host field description (#104770) 2023-11-30 08:47:37 +01:00
c0ffeeca7
8bc1f9d03d Comelit, Coolmaster: add host field description (#104771) 2023-11-30 08:47:17 +01:00
Joost Lekkerkerker
6ac9a1d1f2 Migrate GDACS to has entity name (#104733) 2023-11-30 08:22:16 +01:00
c0ffeeca7
2f0846bd87 Axis: add host and user name field description (#104693) 2023-11-30 08:12:39 +01:00
Allen Porter
64a6a6a778 Add due date and description fields to Todoist To-do entity (#104655)
* Add Todoist Due date and description fields

* Update entity features with new names

* Make items into walrus

* Update due_datetime field

* Add additional tests for adding new fields to items

* Fix call args in todoist test
2023-11-30 07:01:57 +01:00
Allen Porter
c72e4e8b5c Fix bug in rainbird device ids that are int serial numbers (#104768) 2023-11-30 06:11:38 +01:00
starkillerOG
9fa163c107 Reolink cleanup when CAM disconnected from NVR (#103888)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-11-30 01:50:37 +01:00
Christopher Fenner
ec647677e9 Update initial translation for ViCare water heater entity (#104696) 2023-11-30 01:38:33 +01:00
Daniel Gangl
b957c4e3ee Bump zamg to 0.3.3 (#104756) 2023-11-30 01:31:39 +01:00
Michael Hansen
d793203163 Skip TTS when text is empty (#104741)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-11-30 01:31:27 +01:00
Jan Bouwhuis
04f1b11ef7 Debug level logging for DSMR migration code (#104757) 2023-11-30 00:32:12 +01:00
Franck Nijhof
ec3795ab97 Revert "Add proj dependency to our wheels builder (#104699)" (#104704) 2023-11-29 23:16:58 +01:00
Charles Garwood
e8091a47db Bump pynws to 1.6.0 (#104679) 2023-11-29 23:13:05 +01:00
Rami Mosleh
2437fb314f Add strict typing to push bullet (#99538)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-29 23:05:10 +01:00
Allen Porter
c8aed06438 Add due date and description to Google Tasks (#104654)
* Add tests for config validation function

* Add Google Tasks due date and description

* Revert test timezone

* Update changes after upstream

* Update homeassistant/components/google_tasks/todo.py

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

* Add google tasks tests for creating

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-11-29 22:37:43 +01:00
Joost Lekkerkerker
8e64eff626 Add entity translations to faa_delays (#104749) 2023-11-29 22:23:46 +01:00
Joost Lekkerkerker
9126b00dfe Move Faa delays state attributes to entity description (#104748) 2023-11-29 22:01:03 +01:00
Florian
7638b9bba1 Fix Philips TV none recordings_list (#104665)
Correct for missing recordings list in api client.
---------

Co-authored-by: Joakim Plate <elupus@ecce.se>
2023-11-29 21:54:05 +01:00
Joost Lekkerkerker
bdf4c61a05 Add faa_delays to strict typing (#104720) 2023-11-29 21:41:32 +01:00
Franck Nijhof
0a98a648bb Bump version to 2024.1.0dev0 (#104746) 2023-11-29 21:29:11 +01:00
Franck Nijhof
19f543214f Bump version to 2023.12.0b0 2023-11-29 20:40:14 +01:00
Allen Porter
af2f8699b7 Add due date and description to CalDAV To-do (#104656)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2023-11-29 19:35:36 +01:00
J. Nick Koston
1522118453 Remove aiohttp cancel on disconnect workaround (#104175) 2023-11-29 11:20:36 -07:00
J. Nick Koston
50f2c41145 Avoid db hit and executor job for impossible history queries (#104724) 2023-11-29 11:20:22 -07:00
Joost Lekkerkerker
1fefa93648 Use config entry callbacks in Gree (#104740) 2023-11-29 19:03:58 +01:00
Michael Hansen
e10d58ef3e Bump intents to 2023.11.29 (#104738) 2023-11-29 18:52:27 +01:00
J. Nick Koston
1b048ff388 Remove HomeAssistantAccessLogger (#104173) 2023-11-29 10:40:19 -07:00
Duco Sebel
1727c19e0d Address review comments for Picnic (#104732) 2023-11-29 18:35:55 +01:00
Paul Bottein
38eda9f46e Add multiple option to text selector (#104635)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-11-29 18:32:32 +01:00
J. Nick Koston
dfed10420c Remove aiohttp enable_compression helper (#104174) 2023-11-29 10:24:34 -07:00
Richard Kroegel
2287c45afc Bump bimmer-connected to 0.14.5 (#104715)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-11-29 18:11:04 +01:00
Michael Hansen
a894146cee Fix TTS streaming for VoIP (#104620)
* Use wav instead of raw tts audio in voip

* More tests

* Use mock TTS dir
2023-11-29 12:07:22 -05:00
Jan Bouwhuis
47426a3ddc Remove redundant websocket_api exception handler (#104727) 2023-11-29 16:56:26 +01:00
Jan Bouwhuis
4bf88b1690 Improve MQTT json light brightness scaling (#104510)
* Improve MQTT json light brightness scaling

* Revert unrelated changes

* Format
2023-11-29 16:42:10 +01:00
Joost Lekkerkerker
b36ddaa15c Change super class order in Withings Calendar (#104721) 2023-11-29 16:30:23 +01:00
Jan Bouwhuis
82264a0d6b Fix mqtt cover state is open after receiving stopped payload (#104726) 2023-11-29 16:29:42 +01:00
Bram Kragten
4628b03677 Update frontend to 20231129.1 (#104723) 2023-11-29 16:29:20 +01:00
Jan-Philipp Benecke
e2bab699b5 Avoid double refresh when adding entities in bsblan (#104647) 2023-11-29 16:24:30 +01:00
J. Nick Koston
608f4f7c52 Bump aiohttp to 3.9.1 (#104176) 2023-11-29 16:13:54 +01:00
dupondje
ba481001c3 Add support for multiple mbus devices in dsmr (#84097)
* Add support for multiple mbus devices in dsmr

A dsmr meter can have 4 mbus devices.
Support them all and also add support for a water meter on the mbus
device.

* Apply suggestions from code review

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

* Rewrite old gas sensor to new mbus sensor

* No force updates + fix mbus entity unique_id

* Remove old gas device

* Add additional tests

* Fix remarks from last review + move migrated 5b gas meter to new device_id

* Fix ruff error

* Last fixes

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-11-29 15:41:58 +01:00
Joost Lekkerkerker
36eb858d0a Rename variable in Epson tests (#104722) 2023-11-29 15:22:21 +01:00
Stefan Rado
c6c8bb6970 Bump aioesphomeapi to 19.2.1 (#104703) 2023-11-29 15:20:40 +01:00
Erik Montnemery
61d82ae9ab Tweak dockerfile generation (#104717) 2023-11-29 15:20:21 +01:00
Franck Nijhof
8f2e69fdb7 Revert "Update stookwijzer api to atlas leefomgeving (#103323)" (#104705) 2023-11-29 15:18:25 +01:00
Martin Hjelmare
e884933dbd Remove rest api service call timeout (#104709) 2023-11-29 14:46:19 +01:00
stegm
09d7679818 Add new sensors of Kostal Plenticore integration (#103802) 2023-11-29 14:24:09 +01:00
Marc Mueller
0a13968209 Improve devialet coordinator typing (#104707) 2023-11-29 14:17:15 +01:00
Jan Bouwhuis
953a212dd6 Use ServiceValidationError for invalid fan preset_mode and move check to fan entity component (#104560)
* Use ServiceValidationError for fan preset_mode

* Use _valid_preset_mode_or_raise to raise

* Move preset_mode validation to entity component

* Fix bond fan and comments

* Fixes baf, fjaraskupan and template

* More integration adjustments

* Add custom components mock and test code

* Make NotValidPresetModeError subclass

* Update homeassistant/components/fan/strings.json

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

* Keep bond has_action validation

* Move demo test asserts outside context block

* Follow up comment

* Update homeassistant/components/fan/strings.json

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

* Fix demo tests

* Remove pylint disable

* Remove unreachable code

* Update homeassistant/components/fan/__init__.py

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

* Use NotValidPresetModeError, Final methods

* Address comments

* Correct docst

* Follow up comments

* Update homeassistant/components/fan/__init__.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-11-29 13:56:51 +01:00
Bram Kragten
49381cefa3 Update frontend to 20231129.0 (#104710) 2023-11-29 13:37:23 +01:00
G Johansson
e5a7446afe Use id as location data in Trafikverket Camera (#104473) 2023-11-29 13:35:32 +01:00
Franck Nijhof
cf23de1c48 Add proj-dev dependency to our wheels builder (#104711) 2023-11-29 13:15:37 +01:00
Martin Hjelmare
5f44dadb66 Rename todo due_date_time parameter to due_datetime (#104698)
* Rename todo due_date_time parameter to due_datetime

* Apply suggestions from code review

---------

Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
2023-11-29 13:11:15 +01:00
Jan Bouwhuis
861bb48ab6 Assign specific error code for HomeAssistantError on websocket_api connection exceptions (#104700)
Assign specific error code for HomeAssistantError
2023-11-29 13:07:52 +01:00
Franck Nijhof
9741380cc0 Add proj-util dependency to our wheels builder (#104708) 2023-11-29 12:41:47 +01:00
Simone Chemelli
fc7b17d35b Handle server disconnection for Comelit devices (#104583) 2023-11-29 12:33:25 +01:00
schelv
31cab5803c Add Option For Kelvin Unit To Color Temperature Selector (#103799) 2023-11-29 12:25:06 +01:00
Stefan Rado
d9c0acc1d2 Partially revert #103807: Remove deprecated aux heat support from ESPHome climate entities (#104694) 2023-11-29 04:45:15 -06:00
Franck Nijhof
6dc818b682 Add proj dependency to our wheels builder (#104699) 2023-11-29 11:38:23 +01:00
puddly
bd8f01bd35 Bump ZHA dependencies (#104335) 2023-11-29 11:30:15 +01:00
Erik Montnemery
999875d0e4 Autogenerate Dockerfile (#104669) 2023-11-29 11:26:50 +01:00
c0ffeeca7
bcfb5307f5 Balboa, Bond, Bosch: add host field description (#104695) 2023-11-29 11:06:50 +01:00
Jan Bouwhuis
efd330f182 Send localization info on websocket_api script errors (#104638)
* Send localization info on script errors

* Use connection exception hander

* Keep HomeAssistantError is unknown_error

* Move specific exception handling
2023-11-29 10:47:23 +01:00
Franck Nijhof
7dbaf40f48 Merge branch 'master' into dev 2023-11-29 10:13:51 +01:00
Ville Skyttä
afc3f1d933 Make huawei_lte operator search and preferred network modes translatable (#104673) 2023-11-29 10:07:54 +01:00
c0ffeeca7
634785a2d8 Atag: add host field description (#104691) 2023-11-29 10:02:49 +01:00
Sebastian YEPES
a3bad54583 Add Tuya Smart Water Timer (#95053)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-29 09:48:45 +01:00
Simone Chemelli
6a87876729 Handle server disconnection for Vodafone devices (#104650) 2023-11-29 09:39:30 +01:00
Maciej Bieniek
8c56b5ef82 Add a host field description for Bravia, Brother and NAM (#104689) 2023-11-29 09:35:38 +01:00
c0ffeeca7
4d00767081 ASUSWRT: add description of host field. Fix title (#104690)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-11-29 09:35:08 +01:00
Christopher Fenner
c4e3ae84f4 Optimize async executor use in ViCare integration (#104645)
* use one async executor

* use list comprehension

* simplify

* simplify

* simplify

* simplify

* simplify

* simplify

* simplify

* simplify

* add type

* Apply suggestions from code review

* fix ruff findings
2023-11-29 09:28:56 +01:00
TheJulianJES
2663a4d617 Bump zha-quirks to 0.0.107 (#104683) 2023-11-29 09:19:02 +01:00
Christopher Fenner
5dc64dd6b9 Fix HA state update in ViCare number platform (#104687)
use sync update fn
2023-11-29 09:16:58 +01:00
c0ffeeca7
8e8e8077a0 Agent DVR and Android IP webcam: Add description of host field (#104688) 2023-11-29 09:13:35 +01:00
IceBotYT
526180a8af Add PECO smart meter binary_sensor (#71034)
* Add support for PECO smart meter

* Add support for PECO smart meter

* Conform to black

* Fix tests and additional clean-up

* Return init file to original state

* Move to FlowResultType

* Catch up to upstream

* Remove commented code

* isort

* Merge smart meter and outage count into one entry

* Test coverage

* Remove logging exceptions from config flow verification

* Fix comments from @emontnemery

* Revert "Add support for PECO smart meter"

This reverts commit 36ca90856684f328e71bc3778fa7aa52a6bde5ca.

* More fixes
2023-11-29 09:08:27 +01:00
Maciej Bieniek
3aa9066a50 Add field description for Shelly host (#104686) 2023-11-29 08:45:47 +01:00
c0ffeeca7
4b667cff26 Host field description: implement review from #104658 (#104685) 2023-11-29 08:44:28 +01:00
Renat Sibgatulin
68722ce662 Bump aioairq to 0.3.1 (#104659) 2023-11-29 08:43:48 +01:00
Jan-Philipp Benecke
a9a95ad881 Revert "Introduce base entity for ping" (#104682) 2023-11-29 08:42:02 +01:00
Stefan Rado
017d05c03e Add humidity and aux heat support to ESPHome climate entities (#103807)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-11-29 17:57:30 +13:00
J. Nick Koston
3c25d95481 Bump aioesphomeapi to 19.2.0 (#104677) 2023-11-29 16:57:39 +13:00
J. Nick Koston
de3b608e78 Remove BLE connection state unsubscribe workaround from ESPHome (#104674)
aioesphomeapi now has explict coverage to ensure calling
the unsubscribe function after the connection drops is safe
and will not raise anymore
2023-11-28 23:38:00 +01:00
Alex Hermann
bdef0ba6e5 Significantly improve performance for some cases of the history start time state query (#99450)
* recorder: Apply filter in the outer query too

Function _get_start_time_state_for_entities_stmt() produced a query which
is dead-slow in my installation. On analysis, the outer query produced
millions of rows which had to be joined to the subquery. The subquery has
a filter which would eliminate almost all of the outer rows.

To speed up the query, apply the same filter to the outer query, so way
less rows have to be joined.

This reduced the query time on my system from more than half an hour to
mere milliseconds.

* lint

* merge filter

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-11-28 16:23:49 -06:00
Ville Skyttä
21d842cb58 Fix human readable huawei_lte sensor names (#104672)
Regression from 7c85d84133, #98631
2023-11-28 23:44:35 +02:00
Adrian Huber
2c196baa7a Add DeviceInfo to Wolf SmartSet Entities (#104642)
* Fix await warning

* Add DeviceInfo to Wolflink sensors

* Remove comment

* Don't pass device name to DeviceInfo

* Use _attr_device_info instead of property
2023-11-28 22:24:25 +01:00
J. Nick Koston
93aa31c835 Bump aioesphomeapi to 19.1.7 (#104644)
* Bump aioesphomeapi to 19.1.5

changelog: https://github.com/esphome/aioesphomeapi/compare/v19.1.4...v19.1.5

- Removes the need to watch for BLE connection drops with a seperate
  future as the library now raises BluetoothConnectionDroppedError when
  the connection drops during a BLE operation

* reduce stack

* .6

* tweak

* 19.1.7
2023-11-28 21:51:35 +01:00
Daniel Hjelseth Høyer
63ef9efa26 Bump pyAdax to 0.4.0 (#104660)
Updata Adax lib

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2023-11-28 21:22:48 +01:00
mkmer
595663778c Bump aiosomecomfort to 0.0.24 (#104649)
* Bump aiosomecomfort to 0.0.24

* PascalCase change
2023-11-28 19:34:30 +01:00
c0ffeeca7
9bdf82eb32 Add info what to enter into host field (#104658)
* Add info what to enter into host field

* Fix style
2023-11-28 19:32:11 +01:00
mkmer
56f2f17ed1 Bump aiosomecomfort to 0.0.23 (#104641) 2023-11-28 15:51:47 +01:00
glanch
7533895a3d Add tag name to tag_scanned event data (#97553)
* Add tag name to tag scanned event data

* Make name in event data optional, add test cases for events

* Simplify sanity None check of tag data

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

* Apply suggestions from code review

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-11-28 13:58:40 +01:00
fwestenberg
d3b04a5a58 Add Devialet integration (#86551)
* Add Devialet

* Bump Devialet==1.4.0

* Bump Devialet==1.4.1

* Sort manifest and add shorthand

* Black formatting

* Fix incompatible type

* Add type guarding for name

* Rename host keywork in tests

* Fix Devialet tests

* Add update coordinator

* Update devialet tests

* Create unique_id from entry data
2023-11-28 13:56:17 +01:00
Jan-Philipp Benecke
61a5c0de5e Use shorthand attributes in HVV departures (#104637)
* Use shorthand attributes in HVV departures

* Apply code review suggestion

Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>

* Apply code review sugesstion

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

---------

Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-11-28 13:44:40 +01:00
fwestenberg
9dc5d4a1bb Update stookwijzer api to atlas leefomgeving (#103323)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-11-28 13:23:51 +01:00
Allen Porter
b8cc3349be Add To-do due date and description fields (#104128)
* Add To-do due date and description fields

* Fix due date schema

* Revert devcontainer change

* Split due date and due date time

* Add tests for config validation function

* Add timezone converstion tests

* Add local todo due date/time and description implementation

* Revert configuration

* Revert test changes

* Add comments for the todo item field description

* Rename function _validate_supported_features

* Fix issues in items factory

* Readability improvements

* Apply suggestions from code review

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

* Rename CONF to ATTR usages

* Simplify local time validator

* Rename TodoListEntityFeature fields for setting extended fields

* Remove duplicate validations

* Update subscribe test

* Fix local_todo tests

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-11-28 13:01:12 +01:00
Franck Nijhof
ef89d1cd3d 2023.11.3 (#104348) 2023-11-22 12:51:36 +01:00
Allen Porter
9c4fd88a3d Bump ical to 6.1.0 (#103759) 2023-11-22 09:45:45 +01:00
Allen Porter
f5783cd3b5 Bump ical to 6.0.0 (#103482) 2023-11-22 09:45:40 +01:00
Franck Nijhof
1200ded24c Bumped version to 2023.11.3 2023-11-22 09:12:24 +01:00
Erik Montnemery
da992e9f45 Bump pychromecast to 13.0.8 (#104320) 2023-11-22 09:11:21 +01:00
Allen Porter
40326385ae Bump pyrainbird to 4.0.1 (#104293) 2023-11-22 09:11:17 +01:00
Richard Kroegel
da04c32893 Bump bimmer_connected to 0.14.3 (#104282)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-11-22 09:11:13 +01:00
Jan Bouwhuis
ae2ff926c1 Restore removed guard for non-string inputs in Alexa (#104263) 2023-11-22 09:11:10 +01:00
epenet
a5d48da07a Catch ClientOSError in renault integration (#104248) 2023-11-22 09:11:06 +01:00
Anton Tolchanov
669daabfdb Handle attributes set to None in prometheus (#104247)
Better handle attributes set to None
2023-11-22 09:11:02 +01:00
Jan Bouwhuis
b64ef24f20 Fix mqtt json light allows to set brightness value >255 (#104220) 2023-11-22 09:10:58 +01:00
Jan Bouwhuis
86beb9d135 Fix imap does not decode text body correctly (#104217) 2023-11-22 09:10:06 +01:00
Rene Nemec
64297aeb8f Increase Tomato request timeout (#104203)
* tomato integration timeout fixed

* update tests in tomato integration
2023-11-22 09:10:01 +01:00
mkmer
5650df5cfb Bump aiosomecomfort to 0.0.22 (#104202)
* Bump aiosomecomfort to 0.0.20

* Bump aiosomecomfort to 0.0.22
2023-11-22 09:09:56 +01:00
Allen Porter
83c59d4154 Fix Local To-do list bug renaming items (#104182)
* Fix Local To-do bug renaming items

* Fix renaming
2023-11-22 09:09:53 +01:00
Thomas Schamm
4680ac0cbf Bump boschshcpy to 0.2.75 (#104159)
Bumped to boschshcpy==0.2.75
2023-11-22 09:08:37 +01:00
J. Nick Koston
8b79d38497 Prevent Bluetooth reconnects from blocking shutdown (#104150) 2023-11-22 09:08:33 +01:00
J. Nick Koston
35b1051c67 Add debug logging for which adapter is used to connect bluetooth devices (#103264)
Log which adapter is used to connect bluetooth devices

This is a debug logging improvement to help users find problems
with their setup
2023-11-22 09:08:28 +01:00
J. Nick Koston
fcc7020946 Fix memory leak in ESPHome disconnect callbacks (#104149) 2023-11-22 08:35:58 +01:00
J. Nick Koston
d69d9863b5 Fix ESPHome BLE client raising confusing error when not connected (#104146) 2023-11-22 08:35:55 +01:00
Arie Catsman
885152df81 Bump pyenphase to 1.14.3 (#104101)
fix(101354):update pyenphase to 1.14.3
2023-11-22 08:35:51 +01:00
Martin Hjelmare
7ff1bdb098 Fix device tracker see gps accuracy selector (#104022) 2023-11-22 08:35:48 +01:00
deosrc
399299c13c Fix netatmo authentication when using cloud authentication credentials (#104021)
* Fix netatmo authentication loop

* Update unit tests

* Move logic to determine api scopes

* Add unit tests for new method

* Use pyatmo scope list (#1)

* Exclude scopes not working with cloud

* Fix linting error

---------

Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2023-11-22 08:35:44 +01:00
J. Nick Koston
c241c2f79c Fix emulated_hue with None values (#104020) 2023-11-22 08:35:40 +01:00
Martin Hjelmare
b010c6b793 Fix openexchangerates form data description (#103974) 2023-11-22 08:35:36 +01:00
Chuck Foster
2f380d4b75 Fix duplicate Ban file entries (#103953) 2023-11-22 08:35:33 +01:00
Matt Zimmerman
19f268a1e1 Update smarttub to 0.0.36 (#103948) 2023-11-22 08:35:29 +01:00
Raman Gupta
bcd371ac2b Bump zwave-js-server-python to 0.54.0 (#103943) 2023-11-22 08:35:25 +01:00
Tom Brien
a5a8d38d08 Fix Coinbase for new API Structure (#103930) 2023-11-22 08:35:22 +01:00
Simone Chemelli
56298b2c88 fix Comelit cover stop (#103911) 2023-11-22 08:35:18 +01:00
Allen Porter
cf35e9b154 Update Fitbit to avoid a KeyError when restingHeartRate is not present (#103872)
* Update Fitbit to avoid a KeyError when `restingHeartRate` is not present

* Explicitly handle none response values
2023-11-22 08:35:15 +01:00
Allen Porter
29a65d5620 Fix for Google Calendar API returning invalid RRULE:DATE rules (#103870) 2023-11-22 08:35:11 +01:00
Allen Porter
c352cf0bd8 Fix bug in Fitbit config flow, and switch to prefer display name (#103869) 2023-11-22 08:35:08 +01:00
Allen Porter
e89b47138d Bump gcal_sync to 6.0.1 (#103861) 2023-11-22 08:35:04 +01:00
suaveolent
339e9e7b48 Bump lupupy to 0.3.1 (#103835)
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2023-11-22 08:35:00 +01:00
J. Nick Koston
92780dd217 Bump pyunifiprotect to 4.21.0 (#103832)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.20.0...v4.21.0
2023-11-22 08:34:56 +01:00
Maikel Punie
6133ce0258 Bump velbusaio to 2023.11.0 (#103798) 2023-11-22 08:34:53 +01:00
Simone Chemelli
57c76b2ea3 Bump aiocomelit to 0.5.2 (#103791)
* Bump aoicomelit to 0.5.0

* bump to 0.5.2
2023-11-22 08:34:49 +01:00
Mick Vleeshouwer
149aef9a12 Bump pyOverkiz to 1.13.2 (#103790) 2023-11-22 08:34:45 +01:00
Mick Vleeshouwer
3dddf6b9f6 Bump pyOverkiz to 1.13.0 (#103582) 2023-11-22 08:34:41 +01:00
Allen Porter
2a26dea587 Fix Rainbird unique to use a more reliable source (mac address) (#101603)
* Fix rainbird unique id to use a mac address for new entries

* Fix typo

* Normalize mac address before using as unique id

* Apply suggestions from code review

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

* Update test check and remove dead code

* Update all config entries to the new format

* Update config entry tests for migration

* Fix rainbird entity unique ids

* Add test coverage for repair failure

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Remove unnecessary migration failure checks

* Remove invalid config entries

* Update entry when entering a different hostname for an existing host.

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-11-22 08:34:36 +01:00
Jan Rieger
31ac03fe50 Fix typo in calendar translation (#103789) 2023-11-22 08:31:14 +01:00
Marcel van der Veldt
fb1dfb016e Fix race condition in Matter unsubscribe method (#103770) 2023-11-22 08:31:10 +01:00
Jan Bouwhuis
8a152a68d8 Fix raising vol.Invalid during mqtt config validation instead of ValueError (#103764) 2023-11-22 08:31:06 +01:00
Marcel van der Veldt
df3e49b24f Fix discovery schema for Matter switches (#103762)
* Fix discovery schema for matter switches

* fix typo in function that generates device name

* add test for switchunit
2023-11-22 08:31:02 +01:00
G-Two
db604170ba Bump subarulink to 0.7.9 (#103761) 2023-11-22 08:30:58 +01:00
J. Nick Koston
d8a6d3e1bc Bump python-matter-server to 4.0.2 (#103760)
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
2023-11-22 08:30:54 +01:00
Maciej Bieniek
6f086a27d4 Bump accuweather to version 2.1.0 (#103744) 2023-11-22 08:30:51 +01:00
Joost Lekkerkerker
3993c14f1d Lock Withings token refresh (#103688)
Lock Withings refresh
2023-11-22 08:30:44 +01:00
Allen Porter
d63d7841c3 Remove rainbird yaml config test fixtures (#103607) 2023-11-22 08:30:38 +01:00
Maciej Bieniek
e555671765 Bump accuweather to version 2.0.1 (#103532) 2023-11-22 08:30:33 +01:00
Franck Nijhof
a3319262ac 2023.11.2 (#103737) 2023-11-10 12:41:51 +01:00
Franck Nijhof
eaf711335d Bumped version to 2023.11.2 2023-11-10 10:04:50 +01:00
Bram Kragten
f120558750 Update frontend to 20231030.2 (#103706) 2023-11-10 10:04:33 +01:00
Joost Lekkerkerker
30dc05cdd7 Add name to Withings coordinator (#103692) 2023-11-10 10:04:29 +01:00
J. Nick Koston
8ce746972f Incease tplink setup timeout (#103671)
It can take longer than 5s to do the first update of the device
especially when the device is overloaded as seen in #103668

Wait 10 seconds for the discovery since when the power strips are loaded they cannot respond in time
2023-11-10 10:04:26 +01:00
starkillerOG
f946ed9e16 Fix Reolink DHCP IP update (#103654) 2023-11-10 10:04:23 +01:00
Joost Lekkerkerker
0ffc1bae76 Bump yt-dlp to 2023.10.13 (#103616) 2023-11-10 10:04:20 +01:00
Joost Lekkerkerker
d1a3a5895b Raise exception when data can't be fetched in Opensky (#103596) 2023-11-10 10:04:17 +01:00
suaveolent
f9c70fd3c8 fix: get_devices only checks for the first type (#103583) 2023-11-10 10:04:14 +01:00
dupondje
70f0ee81c9 Update dsmr-parser to 1.3.1 to fix parsing issues (#103572) 2023-11-10 10:04:10 +01:00
Charles Garwood
95d4254074 Bump pyenphase to 1.14.2 (#103553) 2023-11-10 10:04:07 +01:00
J. Nick Koston
c8d3e377f0 Bump aioesphomeapi to 18.2.4 (#103552) 2023-11-10 10:04:04 +01:00
epenet
da1c282c1b Fix invalid MAC in samsungtv (#103512)
* Fix invalid MAC in samsungtv

* Also adjust __init__
2023-11-10 10:04:01 +01:00
dupondje
35c0c9958d Fix 5B Gas meter in dsmr (#103506)
* Fix 5B Gas meter in dsmr

In commit 1b73219 the gas meter broke for 5B.
As the change can't be reverted easily without removing the peak usage
sensors, we implement a workaround.

The first MBUS_METER_READING2 value will contain the gas meter data just
like the previous BELGIUM_5MIN_GAS_METER_READING did.
But this without the need to touch dsmr_parser (version).

Fixes: #103306, #103293

* Use parametrize

* Apply suggestions from code review

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

* Add additional tests + typo fix

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2023-11-10 10:03:57 +01:00
mkmer
93a0bd351a Bump blinkpy to 0.22.3 (#103438) 2023-11-10 10:00:11 +01:00
J. Nick Koston
dbdd9d74cf Bump bluetooth-data-tools to 0.14.0 (#103413)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v1.13.0...v1.14.0
2023-11-10 10:00:08 +01:00
J. Nick Koston
3cac87cf30 Bump aioesphomeapi to 18.2.1 (#103156) 2023-11-10 10:00:05 +01:00
Jesse Hills
d019045199 ESPHome: Add suggested_area from device info (#102834) 2023-11-10 10:00:00 +01:00
Robert Resch
8f684ab102 Revert binary_sensor part of #103210 (#103499) 2023-11-06 17:56:53 +01:00
Matt Zimmerman
c17def27fc Fix litterrobot test failure due to time zone dependence (#103444)
* fix litterrobot test

* use a date in northern hemisehpere summer
2023-11-06 17:03:07 +01:00
dupondje
27d8d1011e Use right equipment identifier in DSMR setup (#103494) 2023-11-06 14:51:33 +01:00
Joost Lekkerkerker
e2270a305d Sort Withings sleep data on end date (#103454)
* Sort Withings sleep data on end date

* Sort Withings sleep data on end date
2023-11-06 14:51:30 +01:00
Matthias Alphart
6fd8973a00 Fix KNX expose default value when attribute is None (#103446)
Fix KNX expose default value when attribute is `null`
2023-11-06 14:51:27 +01:00
jan iversen
9a37868244 Modbus set device_class in slaves (#103442) 2023-11-06 14:51:24 +01:00
jan iversen
9327c51115 modbus Allow swap: byte for datatype: string. (#103441) 2023-11-06 14:51:21 +01:00
Michael
e56e75114a Fix serial in Flo device information (#103427) 2023-11-06 14:51:17 +01:00
Tobias Sauerwein
f45114371e Bump pyatmo to v7.6.0 (#103410)
Signed-off-by: Tobias Sauerwein <cgtobi@gmail.com>
2023-11-06 14:51:14 +01:00
Franck Nijhof
7e2c12b0a9 Update tailscale to 0.6.0 (#103409) 2023-11-06 14:51:10 +01:00
J. Nick Koston
050f1085d0 Pin jaraco.functools to fix builds and CI (#103406) 2023-11-06 14:51:07 +01:00
Matt Zimmerman
334a02bc2b Handle smarttub sensor values being None (#103385)
* [smarttub] handle sensor values being None

* empty commit to rerun CI

* lint

* use const in test

* reorder checks

* use None instead of STATE_UNKNOWN

* empty commit to rerun CI

* check for STATE_UNKNOWN in test

* empty commit to rerun CI
2023-11-06 14:51:04 +01:00
Nathan Spencer
412fa4c65a Handle null data in WeatherFlow sensors (#103349)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-11-06 14:51:01 +01:00
Álvaro Fernández Rojas
2b36befe95 Update aioairzone-cloud to v0.3.5 (#103315)
* Update aioairzone-cloud to v0.3.3

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

* Update aioairzone-cloud to v0.3.4

Reverts accidental TaskGroup changes.

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

* Update aioairzone-cloud to v0.3.5

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

* Trigger Github CI

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-11-06 14:50:56 +01:00
Álvaro Fernández Rojas
aa623cc15c Update aioairzone-cloud to v0.3.2 (#103258)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-11-06 14:50:51 +01:00
Maciej Bieniek
b0bb91ec08 Don't assume that the sleep value is a dictionary in Tractive integration (#103138)
* Sleep value can be null

* Catch TypeError
2023-11-06 14:49:10 +01:00
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
4531 changed files with 208827 additions and 48048 deletions

View File

@@ -28,7 +28,6 @@ omit =
homeassistant/components/adguard/sensor.py
homeassistant/components/adguard/switch.py
homeassistant/components/ads/*
homeassistant/components/aemet/weather_update_coordinator.py
homeassistant/components/aftership/__init__.py
homeassistant/components/aftership/sensor.py
homeassistant/components/agent_dvr/alarm_control_panel.py
@@ -47,6 +46,9 @@ omit =
homeassistant/components/airtouch4/__init__.py
homeassistant/components/airtouch4/climate.py
homeassistant/components/airtouch4/coordinator.py
homeassistant/components/airtouch5/__init__.py
homeassistant/components/airtouch5/climate.py
homeassistant/components/airtouch5/entity.py
homeassistant/components/airvisual/__init__.py
homeassistant/components/airvisual/sensor.py
homeassistant/components/airvisual_pro/__init__.py
@@ -110,6 +112,12 @@ omit =
homeassistant/components/baf/sensor.py
homeassistant/components/baf/switch.py
homeassistant/components/baidu/tts.py
homeassistant/components/bang_olufsen/__init__.py
homeassistant/components/bang_olufsen/const.py
homeassistant/components/bang_olufsen/entity.py
homeassistant/components/bang_olufsen/media_player.py
homeassistant/components/bang_olufsen/util.py
homeassistant/components/bang_olufsen/websocket.py
homeassistant/components/bbox/device_tracker.py
homeassistant/components/bbox/sensor.py
homeassistant/components/beewi_smartclim/sensor.py
@@ -142,6 +150,8 @@ omit =
homeassistant/components/braviatv/coordinator.py
homeassistant/components/braviatv/media_player.py
homeassistant/components/braviatv/remote.py
homeassistant/components/bring/coordinator.py
homeassistant/components/bring/todo.py
homeassistant/components/broadlink/climate.py
homeassistant/components/broadlink/light.py
homeassistant/components/broadlink/remote.py
@@ -173,6 +183,8 @@ omit =
homeassistant/components/coinbase/sensor.py
homeassistant/components/comed_hourly_pricing/sensor.py
homeassistant/components/comelit/__init__.py
homeassistant/components/comelit/alarm_control_panel.py
homeassistant/components/comelit/climate.py
homeassistant/components/comelit/const.py
homeassistant/components/comelit/cover.py
homeassistant/components/comelit/coordinator.py
@@ -272,7 +284,12 @@ omit =
homeassistant/components/econet/climate.py
homeassistant/components/econet/sensor.py
homeassistant/components/econet/water_heater.py
homeassistant/components/ecovacs/*
homeassistant/components/ecovacs/controller.py
homeassistant/components/ecovacs/entity.py
homeassistant/components/ecovacs/image.py
homeassistant/components/ecovacs/number.py
homeassistant/components/ecovacs/util.py
homeassistant/components/ecovacs/vacuum.py
homeassistant/components/ecowitt/__init__.py
homeassistant/components/ecowitt/binary_sensor.py
homeassistant/components/ecowitt/entity.py
@@ -303,6 +320,8 @@ omit =
homeassistant/components/elmax/cover.py
homeassistant/components/elmax/switch.py
homeassistant/components/elv/*
homeassistant/components/elvia/__init__.py
homeassistant/components/elvia/importer.py
homeassistant/components/emby/media_player.py
homeassistant/components/emoncms/sensor.py
homeassistant/components/emoncms_history/*
@@ -331,13 +350,15 @@ omit =
homeassistant/components/environment_canada/weather.py
homeassistant/components/envisalink/*
homeassistant/components/ephember/climate.py
homeassistant/components/epion/__init__.py
homeassistant/components/epion/coordinator.py
homeassistant/components/epion/sensor.py
homeassistant/components/epson/__init__.py
homeassistant/components/epson/media_player.py
homeassistant/components/epsonworkforce/sensor.py
homeassistant/components/escea/__init__.py
homeassistant/components/escea/climate.py
homeassistant/components/escea/discovery.py
homeassistant/components/esphome/bluetooth/*
homeassistant/components/esphome/manager.py
homeassistant/components/etherscan/sensor.py
homeassistant/components/eufy/*
@@ -364,8 +385,6 @@ omit =
homeassistant/components/faa_delays/binary_sensor.py
homeassistant/components/faa_delays/coordinator.py
homeassistant/components/familyhub/camera.py
homeassistant/components/fastdotcom/sensor.py
homeassistant/components/fastdotcom/__init__.py
homeassistant/components/ffmpeg/camera.py
homeassistant/components/fibaro/__init__.py
homeassistant/components/fibaro/binary_sensor.py
@@ -404,6 +423,7 @@ omit =
homeassistant/components/fjaraskupan/sensor.py
homeassistant/components/fleetgo/device_tracker.py
homeassistant/components/flexit/climate.py
homeassistant/components/flexit_bacnet/climate.py
homeassistant/components/flic/binary_sensor.py
homeassistant/components/flick_electric/__init__.py
homeassistant/components/flick_electric/sensor.py
@@ -419,6 +439,8 @@ omit =
homeassistant/components/fortios/device_tracker.py
homeassistant/components/foscam/__init__.py
homeassistant/components/foscam/camera.py
homeassistant/components/foscam/coordinator.py
homeassistant/components/foscam/entity.py
homeassistant/components/foursquare/*
homeassistant/components/free_mobile/notify.py
homeassistant/components/freebox/camera.py
@@ -459,6 +481,7 @@ omit =
homeassistant/components/google_cloud/tts.py
homeassistant/components/google_maps/device_tracker.py
homeassistant/components/google_pubsub/__init__.py
homeassistant/components/gpsd/__init__.py
homeassistant/components/gpsd/sensor.py
homeassistant/components/greenwave/light.py
homeassistant/components/growatt_server/__init__.py
@@ -469,9 +492,11 @@ omit =
homeassistant/components/guardian/__init__.py
homeassistant/components/guardian/binary_sensor.py
homeassistant/components/guardian/button.py
homeassistant/components/guardian/coordinator.py
homeassistant/components/guardian/sensor.py
homeassistant/components/guardian/switch.py
homeassistant/components/guardian/util.py
homeassistant/components/guardian/valve.py
homeassistant/components/habitica/__init__.py
homeassistant/components/habitica/sensor.py
homeassistant/components/harman_kardon_avr/media_player.py
@@ -493,6 +518,9 @@ omit =
homeassistant/components/hive/sensor.py
homeassistant/components/hive/switch.py
homeassistant/components/hive/water_heater.py
homeassistant/components/hko/__init__.py
homeassistant/components/hko/weather.py
homeassistant/components/hko/coordinator.py
homeassistant/components/hlk_sw16/__init__.py
homeassistant/components/hlk_sw16/switch.py
homeassistant/components/home_connect/__init__.py
@@ -502,8 +530,6 @@ omit =
homeassistant/components/home_connect/light.py
homeassistant/components/home_connect/sensor.py
homeassistant/components/home_connect/switch.py
homeassistant/components/home_plus_control/api.py
homeassistant/components/home_plus_control/switch.py
homeassistant/components/homematic/__init__.py
homeassistant/components/homematic/binary_sensor.py
homeassistant/components/homematic/climate.py
@@ -533,9 +559,12 @@ omit =
homeassistant/components/hunterdouglas_powerview/shade_data.py
homeassistant/components/hunterdouglas_powerview/util.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/huum/__init__.py
homeassistant/components/huum/climate.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/iammeter/const.py
homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py
homeassistant/components/iaqualink/climate.py
@@ -633,8 +662,6 @@ omit =
homeassistant/components/kodi/browse_media.py
homeassistant/components/kodi/media_player.py
homeassistant/components/kodi/notify.py
homeassistant/components/komfovent/__init__.py
homeassistant/components/komfovent/climate.py
homeassistant/components/konnected/__init__.py
homeassistant/components/konnected/panel.py
homeassistant/components/konnected/switch.py
@@ -660,10 +687,6 @@ omit =
homeassistant/components/lg_netcast/media_player.py
homeassistant/components/lg_soundbar/__init__.py
homeassistant/components/lg_soundbar/media_player.py
homeassistant/components/life360/__init__.py
homeassistant/components/life360/button.py
homeassistant/components/life360/coordinator.py
homeassistant/components/life360/device_tracker.py
homeassistant/components/lightwave/*
homeassistant/components/limitlessled/light.py
homeassistant/components/linksys_smart/device_tracker.py
@@ -691,10 +714,16 @@ omit =
homeassistant/components/loqed/sensor.py
homeassistant/components/luci/device_tracker.py
homeassistant/components/luftdaten/sensor.py
homeassistant/components/lupusec/*
homeassistant/components/lupusec/__init__.py
homeassistant/components/lupusec/alarm_control_panel.py
homeassistant/components/lupusec/binary_sensor.py
homeassistant/components/lupusec/entity.py
homeassistant/components/lupusec/switch.py
homeassistant/components/lutron/__init__.py
homeassistant/components/lutron/binary_sensor.py
homeassistant/components/lutron/cover.py
homeassistant/components/lutron/entity.py
homeassistant/components/lutron/fan.py
homeassistant/components/lutron/light.py
homeassistant/components/lutron/switch.py
homeassistant/components/lutron_caseta/__init__.py
@@ -756,6 +785,12 @@ omit =
homeassistant/components/motion_blinds/cover.py
homeassistant/components/motion_blinds/entity.py
homeassistant/components/motion_blinds/sensor.py
homeassistant/components/motionmount/__init__.py
homeassistant/components/motionmount/binary_sensor.py
homeassistant/components/motionmount/entity.py
homeassistant/components/motionmount/number.py
homeassistant/components/motionmount/select.py
homeassistant/components/motionmount/sensor.py
homeassistant/components/mpd/media_player.py
homeassistant/components/mqtt_room/sensor.py
homeassistant/components/msteams/notify.py
@@ -801,7 +836,8 @@ omit =
homeassistant/components/netgear/sensor.py
homeassistant/components/netgear/switch.py
homeassistant/components/netgear/update.py
homeassistant/components/netgear_lte/*
homeassistant/components/netgear_lte/__init__.py
homeassistant/components/netgear_lte/notify.py
homeassistant/components/netio/switch.py
homeassistant/components/neurio_energy/sensor.py
homeassistant/components/nexia/climate.py
@@ -812,6 +848,7 @@ omit =
homeassistant/components/nextcloud/coordinator.py
homeassistant/components/nextcloud/entity.py
homeassistant/components/nextcloud/sensor.py
homeassistant/components/nextcloud/update.py
homeassistant/components/nfandroidtv/__init__.py
homeassistant/components/nfandroidtv/notify.py
homeassistant/components/nibe_heatpump/__init__.py
@@ -902,6 +939,9 @@ omit =
homeassistant/components/opple/light.py
homeassistant/components/oru/*
homeassistant/components/orvibo/switch.py
homeassistant/components/osoenergy/__init__.py
homeassistant/components/osoenergy/const.py
homeassistant/components/osoenergy/water_heater.py
homeassistant/components/osramlightify/light.py
homeassistant/components/otp/sensor.py
homeassistant/components/overkiz/__init__.py
@@ -991,6 +1031,11 @@ omit =
homeassistant/components/qrcode/image_processing.py
homeassistant/components/quantum_gateway/device_tracker.py
homeassistant/components/qvr_pro/*
homeassistant/components/rabbitair/__init__.py
homeassistant/components/rabbitair/const.py
homeassistant/components/rabbitair/coordinator.py
homeassistant/components/rabbitair/entity.py
homeassistant/components/rabbitair/fan.py
homeassistant/components/rachio/__init__.py
homeassistant/components/rachio/binary_sensor.py
homeassistant/components/rachio/device.py
@@ -1023,11 +1068,18 @@ omit =
homeassistant/components/renson/fan.py
homeassistant/components/renson/binary_sensor.py
homeassistant/components/renson/number.py
homeassistant/components/renson/time.py
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/sensor.py
homeassistant/components/recorder/repack.py
homeassistant/components/recswitch/switch.py
homeassistant/components/reddit/sensor.py
homeassistant/components/refoss/__init__.py
homeassistant/components/refoss/bridge.py
homeassistant/components/refoss/coordinator.py
homeassistant/components/refoss/entity.py
homeassistant/components/refoss/switch.py
homeassistant/components/refoss/util.py
homeassistant/components/rejseplanen/sensor.py
homeassistant/components/remember_the_milk/__init__.py
homeassistant/components/remote_rpi_gpio/*
@@ -1055,6 +1107,9 @@ omit =
homeassistant/components/ripple/sensor.py
homeassistant/components/roborock/coordinator.py
homeassistant/components/rocketchat/notify.py
homeassistant/components/romy/__init__.py
homeassistant/components/romy/coordinator.py
homeassistant/components/romy/vacuum.py
homeassistant/components/roomba/__init__.py
homeassistant/components/roomba/binary_sensor.py
homeassistant/components/roomba/braava.py
@@ -1211,6 +1266,7 @@ omit =
homeassistant/components/starline/__init__.py
homeassistant/components/starline/account.py
homeassistant/components/starline/binary_sensor.py
homeassistant/components/starline/button.py
homeassistant/components/starline/device_tracker.py
homeassistant/components/starline/entity.py
homeassistant/components/starline/lock.py
@@ -1228,8 +1284,12 @@ omit =
homeassistant/components/stream/fmp4utils.py
homeassistant/components/stream/hls.py
homeassistant/components/stream/worker.py
homeassistant/components/streamlabswater/*
homeassistant/components/suez_water/*
homeassistant/components/streamlabswater/__init__.py
homeassistant/components/streamlabswater/binary_sensor.py
homeassistant/components/streamlabswater/coordinator.py
homeassistant/components/streamlabswater/sensor.py
homeassistant/components/suez_water/__init__.py
homeassistant/components/suez_water/sensor.py
homeassistant/components/supervisord/sensor.py
homeassistant/components/supla/*
homeassistant/components/surepetcare/__init__.py
@@ -1237,6 +1297,8 @@ omit =
homeassistant/components/surepetcare/entity.py
homeassistant/components/surepetcare/sensor.py
homeassistant/components/swiss_hydrological_data/sensor.py
homeassistant/components/swiss_public_transport/__init__.py
homeassistant/components/swiss_public_transport/coordinator.py
homeassistant/components/swiss_public_transport/sensor.py
homeassistant/components/swisscom/device_tracker.py
homeassistant/components/switchbee/__init__.py
@@ -1288,13 +1350,13 @@ omit =
homeassistant/components/system_bridge/notify.py
homeassistant/components/system_bridge/sensor.py
homeassistant/components/system_bridge/update.py
homeassistant/components/systemmonitor/sensor.py
homeassistant/components/tado/__init__.py
homeassistant/components/tado/binary_sensor.py
homeassistant/components/tado/climate.py
homeassistant/components/tado/device_tracker.py
homeassistant/components/tado/sensor.py
homeassistant/components/tado/water_heater.py
homeassistant/components/tami4/button.py
homeassistant/components/tank_utility/sensor.py
homeassistant/components/tankerkoenig/__init__.py
homeassistant/components/tankerkoenig/binary_sensor.py
@@ -1363,6 +1425,11 @@ omit =
homeassistant/components/tplink_omada/controller.py
homeassistant/components/tplink_omada/update.py
homeassistant/components/traccar/device_tracker.py
homeassistant/components/traccar_server/__init__.py
homeassistant/components/traccar_server/coordinator.py
homeassistant/components/traccar_server/device_tracker.py
homeassistant/components/traccar_server/entity.py
homeassistant/components/traccar_server/helpers.py
homeassistant/components/tractive/__init__.py
homeassistant/components/tractive/binary_sensor.py
homeassistant/components/tractive/device_tracker.py
@@ -1377,10 +1444,6 @@ omit =
homeassistant/components/tradfri/light.py
homeassistant/components/tradfri/sensor.py
homeassistant/components/tradfri/switch.py
homeassistant/components/trafikverket_train/__init__.py
homeassistant/components/trafikverket_train/coordinator.py
homeassistant/components/trafikverket_train/sensor.py
homeassistant/components/trafikverket_train/util.py
homeassistant/components/trafikverket_weatherstation/__init__.py
homeassistant/components/trafikverket_weatherstation/coordinator.py
homeassistant/components/trafikverket_weatherstation/sensor.py
@@ -1415,6 +1478,8 @@ omit =
homeassistant/components/ukraine_alarm/__init__.py
homeassistant/components/ukraine_alarm/binary_sensor.py
homeassistant/components/unifiled/*
homeassistant/components/unifi_direct/__init__.py
homeassistant/components/unifi_direct/device_tracker.py
homeassistant/components/upb/__init__.py
homeassistant/components/upb/light.py
homeassistant/components/upc_connect/*
@@ -1464,7 +1529,6 @@ omit =
homeassistant/components/vesync/switch.py
homeassistant/components/viaggiatreno/sensor.py
homeassistant/components/vicare/__init__.py
homeassistant/components/vicare/binary_sensor.py
homeassistant/components/vicare/button.py
homeassistant/components/vicare/climate.py
homeassistant/components/vicare/entity.py
@@ -1584,7 +1648,9 @@ omit =
homeassistant/components/yolink/entity.py
homeassistant/components/yolink/light.py
homeassistant/components/yolink/lock.py
homeassistant/components/yolink/number.py
homeassistant/components/yolink/sensor.py
homeassistant/components/yolink/services.py
homeassistant/components/yolink/siren.py
homeassistant/components/yolink/switch.py
homeassistant/components/youless/__init__.py
@@ -1623,6 +1689,13 @@ omit =
homeassistant/components/zwave_me/switch.py
homeassistant/components/electrasmart/climate.py
homeassistant/components/electrasmart/__init__.py
homeassistant/components/myuplink/__init__.py
homeassistant/components/myuplink/api.py
homeassistant/components/myuplink/application_credentials.py
homeassistant/components/myuplink/coordinator.py
homeassistant/components/myuplink/entity.py
homeassistant/components/myuplink/sensor.py
[report]
# Regexes for lines to exclude from consideration

View File

@@ -5,7 +5,8 @@
"postCreateCommand": "script/setup",
"postStartCommand": "script/bootstrap",
"containerEnv": { "DEVCONTAINER": "1" },
"appPort": ["8123:8123"],
// Port 5683 udp is used by Shelly integration
"appPort": ["8123:8123", "5683:5683/udp"],
"runArgs": ["-e", "GIT_EDITOR=code --wait"],
"customizations": {
"vscode": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
.github/assets/screenshot-states.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@@ -10,7 +10,8 @@ on:
env:
BUILD_TYPE: core
DEFAULT_PYTHON: "3.11"
DEFAULT_PYTHON: "3.12"
PIP_TIMEOUT: 60
jobs:
init:
@@ -29,7 +30,7 @@ jobs:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -59,7 +60,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -102,7 +103,7 @@ jobs:
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v3.0.0
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/frontend
@@ -113,7 +114,7 @@ jobs:
- name: Download nightly wheels of intents
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v3.0.0
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/intents-package
@@ -124,7 +125,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -179,6 +180,15 @@ jobs:
sed -i "s|pyezviz|# pyezviz|g" requirements_all.txt
sed -i "s|pykrakenapi|# pykrakenapi|g" requirements_all.txt
- name: Adjustments for 64-bit
if: matrix.arch == 'amd64' || matrix.arch == 'aarch64'
run: |
# Some speedups are only available on 64-bit, and since
# we build 32bit images on 64bit hosts, we only enable
# the speed ups on 64bit since the wheels for 32bit
# are not available.
sed -i "s|aiohttp-zlib-ng|aiohttp-zlib-ng\[isal\]|g" requirements_all.txt
- name: Download Translations
run: python3 -m script.translations download
env:
@@ -197,7 +207,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2023.09.0
uses: home-assistant/builder@2024.01.0
with:
args: |
$BUILD_ARGS \
@@ -247,6 +257,7 @@ jobs:
- raspberrypi3-64
- raspberrypi4
- raspberrypi4-64
- raspberrypi5-64
- tinker
- yellow
- green
@@ -273,7 +284,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2023.09.0
uses: home-assistant/builder@2024.01.0
with:
args: |
$BUILD_ARGS \
@@ -330,7 +341,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Install Cosign
uses: sigstore/cosign-installer@v3.2.0
uses: sigstore/cosign-installer@v3.3.0
with:
cosign-release: "v2.0.2"

View File

@@ -35,8 +35,8 @@ on:
env:
CACHE_VERSION: 5
PIP_CACHE_VERSION: 4
MYPY_CACHE_VERSION: 6
HA_SHORT_VERSION: "2023.12"
MYPY_CACHE_VERSION: 7
HA_SHORT_VERSION: "2024.2"
DEFAULT_PYTHON: "3.11"
ALL_PYTHON_VERSIONS: "['3.11', '3.12']"
# 10.3 is the oldest supported version
@@ -103,7 +103,7 @@ jobs:
echo "key=pre-commit-${{ env.CACHE_VERSION }}-${{
hashFiles('.pre-commit-config.yaml') }}" >> $GITHUB_OUTPUT
- name: Filter for core changes
uses: dorny/paths-filter@v2.11.1
uses: dorny/paths-filter@v3.0.0
id: core
with:
filters: .core_files.yaml
@@ -118,7 +118,7 @@ jobs:
echo "Result:"
cat .integration_paths.yaml
- name: Filter for integration changes
uses: dorny/paths-filter@v2.11.1
uses: dorny/paths-filter@v3.0.0
id: integrations
with:
filters: .integration_paths.yaml
@@ -225,13 +225,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: venv
key: >-
@@ -246,7 +246,7 @@ jobs:
pip install "$(cat requirements_test.txt | grep pre-commit)"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
lookup-only: true
@@ -269,14 +269,14 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -285,7 +285,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -309,14 +309,14 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -325,7 +325,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -348,14 +348,14 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -364,7 +364,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -443,7 +443,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -454,7 +454,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: venv
lookup-only: true
@@ -463,7 +463,7 @@ jobs:
needs.info.outputs.python_cache_key }}
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -511,13 +511,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -543,13 +543,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -576,13 +576,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -597,14 +597,14 @@ jobs:
run: |
. venv/bin/activate
python --version
pylint --ignore-missing-annotations=y homeassistant
pylint --ignore-missing-annotations=y --ignore-wrong-coordinator-module=y homeassistant
- name: Run pylint (partially)
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
python --version
pylint --ignore-missing-annotations=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
pylint --ignore-missing-annotations=y --ignore-wrong-coordinator-module=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
mypy:
name: Check mypy
@@ -620,7 +620,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -633,7 +633,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -641,7 +641,7 @@ jobs:
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore mypy cache
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: .mypy_cache
key: >-
@@ -702,13 +702,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -854,13 +854,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -898,6 +898,7 @@ jobs:
python --version
set -o pipefail
mariadb=$(echo "${{ matrix.mariadb-group }}" | sed "s/:/-/g")
echo "mariadb=${mariadb}" >> $GITHUB_OUTPUT
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.recorder")
@@ -929,7 +930,8 @@ jobs:
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v3.1.2
with:
name: coverage-${{ matrix.python-version }}-mariadb
name: coverage-${{ matrix.python-version }}-mariadb-${{
steps.pytest-partial.outputs.mariadb }}
path: coverage.xml
- name: Check dirty
run: |
@@ -978,13 +980,13 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -1022,6 +1024,7 @@ jobs:
python --version
set -o pipefail
postgresql=$(echo "${{ matrix.postgresql-group }}" | sed "s/:/-/g")
echo "postgresql=${postgresql}" >> $GITHUB_OUTPUT
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.recorder")
@@ -1054,7 +1057,8 @@ jobs:
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v3.1.0
with:
name: coverage-${{ matrix.python-version }}-postgresql
name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }}
path: coverage.xml
- name: Check dirty
run: |

View File

@@ -29,11 +29,11 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Initialize CodeQL
uses: github/codeql-action/init@v2.22.8
uses: github/codeql-action/init@v3.23.2
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2.22.8
uses: github/codeql-action/analyze@v3.23.2
with:
category: "/language:python"

View File

@@ -11,16 +11,16 @@ jobs:
if: github.repository_owner == 'home-assistant'
runs-on: ubuntu-latest
steps:
# The 90 day stale policy for PRs
# The 60 day stale policy for PRs
# Used for:
# - PRs
# - No PRs marked as no-stale
# - No issues (-1)
- name: 90 days stale PRs policy
uses: actions/stale@v8.0.0
- name: 60 days stale PRs policy
uses: actions/stale@v9.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
days-before-stale: 60
days-before-close: 7
days-before-issue-stale: -1
days-before-issue-close: -1
@@ -33,7 +33,11 @@ jobs:
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
Thank you for your contributions.
If you are the author of this PR, please leave a comment if you want
to keep it open. Also, please rebase your PR onto the latest dev
branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!
# Generate a token for the GitHub App, we use this method to avoid
# hitting API limits for our GitHub actions + have a higher rate limit.
@@ -53,7 +57,7 @@ jobs:
# - No issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: 90 days stale issues
uses: actions/stale@v8.0.0
uses: actions/stale@v9.0.0
with:
repo-token: ${{ steps.token.outputs.token }}
days-before-stale: 90
@@ -83,7 +87,7 @@ jobs:
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Needs more information stale issues policy
uses: actions/stale@v8.0.0
uses: actions/stale@v9.0.0
with:
repo-token: ${{ steps.token.outputs.token }}
only-labels: "needs-more-information"

View File

@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.1
uses: actions/setup-python@v5.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}

View File

@@ -99,14 +99,14 @@ jobs:
name: requirements_diff
- name: Build wheels
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "libffi-dev;openssl-dev;yaml-dev"
apk: "libffi-dev;openssl-dev;yaml-dev;nasm"
skip-binary: aiohttp
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
@@ -160,6 +160,12 @@ jobs:
sed -i "s|pyezviz|# pyezviz|g" ${requirement_file}
sed -i "s|pykrakenapi|# pykrakenapi|g" ${requirement_file}
fi
# Some speedups are only for 64-bit
if [ "${{ matrix.arch }}" = "amd64" ] || [ "${{ matrix.arch }}" = "aarch64" ]; then
sed -i "s|aiohttp-zlib-ng|aiohttp-zlib-ng\[isal\]|g" ${requirement_file}
fi
done
- name: Split requirements all
@@ -192,7 +198,7 @@ jobs:
sed -i "/numpy/d" homeassistant/package_constraints.txt
- name: Build wheels (old cython)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -207,42 +213,42 @@ jobs:
pip: "'cython<3'"
- name: Build wheels (part 1)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
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"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtaa"
- name: Build wheels (part 2)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
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"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtab"
- name: Build wheels (part 3)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
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"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
rev: v0.1.8
hooks:
- id: ruff
args:
@@ -83,7 +83,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/(manifest|strings)\.json|homeassistant/brands/.*\.json|\.coveragerc|homeassistant/.+/services\.yaml|script/hassfest/(?!metadata|mypy_config).+\.py)$
files: ^(homeassistant/.+/(icons|manifest|strings)\.json|homeassistant/brands/.*\.json|\.coveragerc|homeassistant/.+/services\.yaml|script/hassfest/(?!metadata|mypy_config).+\.py)$
- id: hassfest-metadata
name: hassfest-metadata
entry: script/run-in-env.sh python3 -m script.hassfest -p metadata

View File

@@ -42,59 +42,101 @@ homeassistant.components
homeassistant.components.abode.*
homeassistant.components.accuweather.*
homeassistant.components.acer_projector.*
homeassistant.components.acmeda.*
homeassistant.components.actiontec.*
homeassistant.components.adax.*
homeassistant.components.adguard.*
homeassistant.components.aftership.*
homeassistant.components.air_quality.*
homeassistant.components.airly.*
homeassistant.components.airnow.*
homeassistant.components.airq.*
homeassistant.components.airthings.*
homeassistant.components.airthings_ble.*
homeassistant.components.airtouch5.*
homeassistant.components.airvisual.*
homeassistant.components.airvisual_pro.*
homeassistant.components.airzone.*
homeassistant.components.airzone_cloud.*
homeassistant.components.aladdin_connect.*
homeassistant.components.alarm_control_panel.*
homeassistant.components.alert.*
homeassistant.components.alexa.*
homeassistant.components.alpha_vantage.*
homeassistant.components.amazon_polly.*
homeassistant.components.amberelectric.*
homeassistant.components.ambiclimate.*
homeassistant.components.ambient_station.*
homeassistant.components.amcrest.*
homeassistant.components.ampio.*
homeassistant.components.analytics.*
homeassistant.components.analytics_insights.*
homeassistant.components.android_ip_webcam.*
homeassistant.components.androidtv.*
homeassistant.components.androidtv_remote.*
homeassistant.components.anel_pwrctrl.*
homeassistant.components.anova.*
homeassistant.components.anthemav.*
homeassistant.components.apache_kafka.*
homeassistant.components.apcupsd.*
homeassistant.components.api.*
homeassistant.components.apprise.*
homeassistant.components.aprs.*
homeassistant.components.aqualogic.*
homeassistant.components.aquostv.*
homeassistant.components.aranet.*
homeassistant.components.arcam_fmj.*
homeassistant.components.arris_tg2492lg.*
homeassistant.components.aruba.*
homeassistant.components.arwn.*
homeassistant.components.aseko_pool_live.*
homeassistant.components.assist_pipeline.*
homeassistant.components.asterisk_cdr.*
homeassistant.components.asterisk_mbox.*
homeassistant.components.asuswrt.*
homeassistant.components.auth.*
homeassistant.components.automation.*
homeassistant.components.awair.*
homeassistant.components.axis.*
homeassistant.components.backup.*
homeassistant.components.baf.*
homeassistant.components.bang_olufsen.*
homeassistant.components.bayesian.*
homeassistant.components.binary_sensor.*
homeassistant.components.bitcoin.*
homeassistant.components.blockchain.*
homeassistant.components.blue_current.*
homeassistant.components.blueprint.*
homeassistant.components.bluetooth.*
homeassistant.components.bluetooth_adapters.*
homeassistant.components.bluetooth_tracker.*
homeassistant.components.bmw_connected_drive.*
homeassistant.components.bond.*
homeassistant.components.braviatv.*
homeassistant.components.brother.*
homeassistant.components.browser.*
homeassistant.components.bthome.*
homeassistant.components.button.*
homeassistant.components.calendar.*
homeassistant.components.camera.*
homeassistant.components.canary.*
homeassistant.components.cert_expiry.*
homeassistant.components.clickatell.*
homeassistant.components.clicksend.*
homeassistant.components.climate.*
homeassistant.components.cloud.*
homeassistant.components.co2signal.*
homeassistant.components.command_line.*
homeassistant.components.config.*
homeassistant.components.configurator.*
homeassistant.components.counter.*
homeassistant.components.cover.*
homeassistant.components.cpuspeed.*
homeassistant.components.crownstone.*
homeassistant.components.date.*
homeassistant.components.datetime.*
homeassistant.components.deconz.*
homeassistant.components.default_config.*
homeassistant.components.demo.*
homeassistant.components.derivative.*
homeassistant.components.device_automation.*
@@ -105,11 +147,18 @@ homeassistant.components.dhcp.*
homeassistant.components.diagnostics.*
homeassistant.components.discovergy.*
homeassistant.components.dlna_dmr.*
homeassistant.components.dlna_dms.*
homeassistant.components.dnsip.*
homeassistant.components.doorbird.*
homeassistant.components.dormakaba_dkey.*
homeassistant.components.downloader.*
homeassistant.components.dsmr.*
homeassistant.components.duckdns.*
homeassistant.components.dunehd.*
homeassistant.components.duotecno.*
homeassistant.components.easyenergy.*
homeassistant.components.ecovacs.*
homeassistant.components.ecowitt.*
homeassistant.components.efergy.*
homeassistant.components.electrasmart.*
homeassistant.components.electric_kiwi.*
@@ -117,9 +166,14 @@ homeassistant.components.elgato.*
homeassistant.components.elkm1.*
homeassistant.components.emulated_hue.*
homeassistant.components.energy.*
homeassistant.components.energyzero.*
homeassistant.components.enigma2.*
homeassistant.components.enphase_envoy.*
homeassistant.components.esphome.*
homeassistant.components.event.*
homeassistant.components.evil_genius_labs.*
homeassistant.components.evohome.*
homeassistant.components.faa_delays.*
homeassistant.components.fan.*
homeassistant.components.fastdotcom.*
homeassistant.components.feedreader.*
@@ -127,6 +181,7 @@ homeassistant.components.file_upload.*
homeassistant.components.filesize.*
homeassistant.components.filter.*
homeassistant.components.fitbit.*
homeassistant.components.flexit_bacnet.*
homeassistant.components.flux_led.*
homeassistant.components.forecast_solar.*
homeassistant.components.fritz.*
@@ -135,12 +190,15 @@ homeassistant.components.fritzbox_callmonitor.*
homeassistant.components.fronius.*
homeassistant.components.frontend.*
homeassistant.components.fully_kiosk.*
homeassistant.components.generic_hygrostat.*
homeassistant.components.generic_thermostat.*
homeassistant.components.geo_location.*
homeassistant.components.geocaching.*
homeassistant.components.gios.*
homeassistant.components.glances.*
homeassistant.components.goalzero.*
homeassistant.components.google.*
homeassistant.components.google_assistant_sdk.*
homeassistant.components.google_sheets.*
homeassistant.components.gpsd.*
homeassistant.components.greeneye_monitor.*
@@ -150,8 +208,9 @@ homeassistant.components.hardkernel.*
homeassistant.components.hardware.*
homeassistant.components.here_travel_time.*
homeassistant.components.history.*
homeassistant.components.homeassistant.exposed_entities
homeassistant.components.homeassistant.triggers.event
homeassistant.components.history_stats.*
homeassistant.components.holiday.*
homeassistant.components.homeassistant.*
homeassistant.components.homeassistant_alerts.*
homeassistant.components.homeassistant_green.*
homeassistant.components.homeassistant_hardware.*
@@ -170,6 +229,7 @@ homeassistant.components.homekit_controller.utils
homeassistant.components.homewizard.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.humidifier.*
homeassistant.components.hydrawise.*
homeassistant.components.hyperion.*
homeassistant.components.ibeacon.*
@@ -182,6 +242,9 @@ homeassistant.components.input_button.*
homeassistant.components.input_select.*
homeassistant.components.input_text.*
homeassistant.components.integration.*
homeassistant.components.intent.*
homeassistant.components.intent_script.*
homeassistant.components.ios.*
homeassistant.components.ipp.*
homeassistant.components.iqvia.*
homeassistant.components.islamic_prayer_times.*
@@ -194,11 +257,13 @@ homeassistant.components.knx.*
homeassistant.components.kraken.*
homeassistant.components.lacrosse.*
homeassistant.components.lacrosse_view.*
homeassistant.components.lamarzocco.*
homeassistant.components.lametric.*
homeassistant.components.laundrify.*
homeassistant.components.lawn_mower.*
homeassistant.components.lcn.*
homeassistant.components.ld2410_ble.*
homeassistant.components.led_ble.*
homeassistant.components.lidarr.*
homeassistant.components.lifx.*
homeassistant.components.light.*
@@ -214,22 +279,28 @@ homeassistant.components.london_underground.*
homeassistant.components.lookin.*
homeassistant.components.luftdaten.*
homeassistant.components.mailbox.*
homeassistant.components.map.*
homeassistant.components.mastodon.*
homeassistant.components.matrix.*
homeassistant.components.matter.*
homeassistant.components.media_extractor.*
homeassistant.components.media_player.*
homeassistant.components.media_source.*
homeassistant.components.met_eireann.*
homeassistant.components.metoffice.*
homeassistant.components.mikrotik.*
homeassistant.components.min_max.*
homeassistant.components.minecraft_server.*
homeassistant.components.mjpeg.*
homeassistant.components.modbus.*
homeassistant.components.modem_callerid.*
homeassistant.components.moon.*
homeassistant.components.mopeka.*
homeassistant.components.motionmount.*
homeassistant.components.mqtt.*
homeassistant.components.my.*
homeassistant.components.mysensors.*
homeassistant.components.myuplink.*
homeassistant.components.nam.*
homeassistant.components.nanoleaf.*
homeassistant.components.neato.*
@@ -238,20 +309,24 @@ homeassistant.components.netatmo.*
homeassistant.components.network.*
homeassistant.components.nextdns.*
homeassistant.components.nfandroidtv.*
homeassistant.components.nightscout.*
homeassistant.components.nissan_leaf.*
homeassistant.components.no_ip.*
homeassistant.components.notify.*
homeassistant.components.notion.*
homeassistant.components.number.*
homeassistant.components.nut.*
homeassistant.components.onboarding.*
homeassistant.components.oncue.*
homeassistant.components.onewire.*
homeassistant.components.open_meteo.*
homeassistant.components.openexchangerates.*
homeassistant.components.opensky.*
homeassistant.components.openuv.*
homeassistant.components.oralb.*
homeassistant.components.otbr.*
homeassistant.components.overkiz.*
homeassistant.components.p1_monitor.*
homeassistant.components.peco.*
homeassistant.components.persistent_notification.*
homeassistant.components.pi_hole.*
@@ -260,13 +335,17 @@ homeassistant.components.plugwise.*
homeassistant.components.poolsense.*
homeassistant.components.powerwall.*
homeassistant.components.private_ble_device.*
homeassistant.components.prometheus.*
homeassistant.components.proximity.*
homeassistant.components.prusalink.*
homeassistant.components.pure_energie.*
homeassistant.components.purpleair.*
homeassistant.components.pushbullet.*
homeassistant.components.pvoutput.*
homeassistant.components.qnap_qsw.*
homeassistant.components.rabbitair.*
homeassistant.components.radarr.*
homeassistant.components.rainforest_raven.*
homeassistant.components.rainmachine.*
homeassistant.components.raspberry_pi.*
homeassistant.components.rdw.*
@@ -276,11 +355,13 @@ homeassistant.components.remote.*
homeassistant.components.renault.*
homeassistant.components.repairs.*
homeassistant.components.rest.*
homeassistant.components.rest_command.*
homeassistant.components.rfxtrx.*
homeassistant.components.rhasspy.*
homeassistant.components.ridwell.*
homeassistant.components.rituals_perfume_genie.*
homeassistant.components.roku.*
homeassistant.components.romy.*
homeassistant.components.rpi_power.*
homeassistant.components.rss_feed_template.*
homeassistant.components.rtsp_to_webrtc.*
@@ -290,6 +371,7 @@ homeassistant.components.samsungtv.*
homeassistant.components.scene.*
homeassistant.components.schedule.*
homeassistant.components.scrape.*
homeassistant.components.search.*
homeassistant.components.select.*
homeassistant.components.sensibo.*
homeassistant.components.sensirion_ble.*
@@ -297,8 +379,10 @@ homeassistant.components.sensor.*
homeassistant.components.senz.*
homeassistant.components.sfr_box.*
homeassistant.components.shelly.*
homeassistant.components.shopping_list.*
homeassistant.components.simplepush.*
homeassistant.components.simplisafe.*
homeassistant.components.siren.*
homeassistant.components.skybell.*
homeassistant.components.slack.*
homeassistant.components.sleepiq.*
@@ -313,6 +397,9 @@ homeassistant.components.statistics.*
homeassistant.components.steamist.*
homeassistant.components.stookalert.*
homeassistant.components.stream.*
homeassistant.components.streamlabswater.*
homeassistant.components.stt.*
homeassistant.components.suez_water.*
homeassistant.components.sun.*
homeassistant.components.surepetcare.*
homeassistant.components.switch.*
@@ -320,20 +407,31 @@ homeassistant.components.switchbee.*
homeassistant.components.switchbot_cloud.*
homeassistant.components.switcher_kis.*
homeassistant.components.synology_dsm.*
homeassistant.components.system_health.*
homeassistant.components.system_log.*
homeassistant.components.systemmonitor.*
homeassistant.components.tag.*
homeassistant.components.tailscale.*
homeassistant.components.tailwind.*
homeassistant.components.tami4.*
homeassistant.components.tautulli.*
homeassistant.components.tcp.*
homeassistant.components.technove.*
homeassistant.components.tedee.*
homeassistant.components.text.*
homeassistant.components.threshold.*
homeassistant.components.tibber.*
homeassistant.components.tile.*
homeassistant.components.tilt_ble.*
homeassistant.components.time.*
homeassistant.components.time_date.*
homeassistant.components.timer.*
homeassistant.components.tod.*
homeassistant.components.todo.*
homeassistant.components.tolo.*
homeassistant.components.tplink.*
homeassistant.components.tplink_omada.*
homeassistant.components.trace.*
homeassistant.components.tractive.*
homeassistant.components.tradfri.*
homeassistant.components.trafikverket_camera.*
@@ -353,13 +451,17 @@ homeassistant.components.uptimerobot.*
homeassistant.components.usb.*
homeassistant.components.vacuum.*
homeassistant.components.vallox.*
homeassistant.components.valve.*
homeassistant.components.velbus.*
homeassistant.components.vlc_telnet.*
homeassistant.components.wake_on_lan.*
homeassistant.components.wake_word.*
homeassistant.components.wallbox.*
homeassistant.components.waqi.*
homeassistant.components.water_heater.*
homeassistant.components.watttime.*
homeassistant.components.weather.*
homeassistant.components.webhook.*
homeassistant.components.webostv.*
homeassistant.components.websocket_api.*
homeassistant.components.wemo.*
@@ -368,8 +470,10 @@ homeassistant.components.withings.*
homeassistant.components.wiz.*
homeassistant.components.wled.*
homeassistant.components.worldclock.*
homeassistant.components.xiaomi_ble.*
homeassistant.components.yale_smart_alarm.*
homeassistant.components.yalexs_ble.*
homeassistant.components.youtube.*
homeassistant.components.zeroconf.*
homeassistant.components.zodiac.*
homeassistant.components.zone.*

14
.vscode/tasks.json vendored
View File

@@ -157,6 +157,20 @@
"kind": "build",
"isDefault": true
}
},
{
"label": "Install integration requirements",
"detail": "Install all requirements of a given integration.",
"type": "shell",
"command": "${command:python.interpreterPath} -m script.install_integration_requirements ${input:integrationName}",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new"
}
}
],
"inputs": [

View File

@@ -45,12 +45,14 @@ build.json @home-assistant/supervisor
/tests/components/airnow/ @asymworks
/homeassistant/components/airq/ @Sibgatulin @dl2080
/tests/components/airq/ @Sibgatulin @dl2080
/homeassistant/components/airthings/ @danielhiversen
/tests/components/airthings/ @danielhiversen
/homeassistant/components/airthings/ @danielhiversen @LaStrada
/tests/components/airthings/ @danielhiversen @LaStrada
/homeassistant/components/airthings_ble/ @vincegio @LaStrada
/tests/components/airthings_ble/ @vincegio @LaStrada
/homeassistant/components/airtouch4/ @samsinnamon
/tests/components/airtouch4/ @samsinnamon
/homeassistant/components/airtouch5/ @danzel
/tests/components/airtouch5/ @danzel
/homeassistant/components/airvisual/ @bachya
/tests/components/airvisual/ @bachya
/homeassistant/components/airvisual_pro/ @bachya
@@ -76,6 +78,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/amcrest/ @flacjacket
/homeassistant/components/analytics/ @home-assistant/core @ludeeus
/tests/components/analytics/ @home-assistant/core @ludeeus
/homeassistant/components/analytics_insights/ @joostlek
/tests/components/analytics_insights/ @joostlek
/homeassistant/components/android_ip_webcam/ @engrbm87
/tests/components/android_ip_webcam/ @engrbm87
/homeassistant/components/androidtv/ @JeffLIrion @ollo69
@@ -86,6 +90,8 @@ build.json @home-assistant/supervisor
/tests/components/anova/ @Lash-L
/homeassistant/components/anthemav/ @hyralex
/tests/components/anthemav/ @hyralex
/homeassistant/components/aosmith/ @bdr99
/tests/components/aosmith/ @bdr99
/homeassistant/components/apache_kafka/ @bachya
/tests/components/apache_kafka/ @bachya
/homeassistant/components/apcupsd/ @yuxincs
@@ -143,6 +149,8 @@ build.json @home-assistant/supervisor
/tests/components/baf/ @bdraco @jfroy
/homeassistant/components/balboa/ @garbled1 @natekspencer
/tests/components/balboa/ @garbled1 @natekspencer
/homeassistant/components/bang_olufsen/ @mj23000
/tests/components/bang_olufsen/ @mj23000
/homeassistant/components/bayesian/ @HarvsG
/tests/components/bayesian/ @HarvsG
/homeassistant/components/beewi_smartclim/ @alemuro
@@ -153,6 +161,8 @@ build.json @home-assistant/supervisor
/tests/components/blebox/ @bbx-a @riokuu
/homeassistant/components/blink/ @fronzbot @mkmer
/tests/components/blink/ @fronzbot @mkmer
/homeassistant/components/blue_current/ @Floris272 @gleeuwen
/tests/components/blue_current/ @Floris272 @gleeuwen
/homeassistant/components/bluemaestro/ @bdraco
/tests/components/bluemaestro/ @bdraco
/homeassistant/components/blueprint/ @home-assistant/core
@@ -170,6 +180,8 @@ build.json @home-assistant/supervisor
/tests/components/bosch_shc/ @tschamm
/homeassistant/components/braviatv/ @bieniu @Drafteed
/tests/components/braviatv/ @bieniu @Drafteed
/homeassistant/components/bring/ @miaucl @tr4nt0r
/tests/components/bring/ @miaucl @tr4nt0r
/homeassistant/components/broadlink/ @danielhiversen @felipediel @L-I-Am @eifinger
/tests/components/broadlink/ @danielhiversen @felipediel @L-I-Am @eifinger
/homeassistant/components/brother/ @bieniu
@@ -193,6 +205,8 @@ build.json @home-assistant/supervisor
/tests/components/camera/ @home-assistant/core
/homeassistant/components/cast/ @emontnemery
/tests/components/cast/ @emontnemery
/homeassistant/components/ccm15/ @ocalvo
/tests/components/ccm15/ @ocalvo
/homeassistant/components/cert_expiry/ @jjlawren
/tests/components/cert_expiry/ @jjlawren
/homeassistant/components/circuit/ @braam
@@ -205,8 +219,8 @@ build.json @home-assistant/supervisor
/tests/components/cloud/ @home-assistant/cloud
/homeassistant/components/cloudflare/ @ludeeus @ctalkington
/tests/components/cloudflare/ @ludeeus @ctalkington
/homeassistant/components/co2signal/ @jpbede
/tests/components/co2signal/ @jpbede
/homeassistant/components/co2signal/ @jpbede @VIKTORVAV99
/tests/components/co2signal/ @jpbede @VIKTORVAV99
/homeassistant/components/coinbase/ @tombrien
/tests/components/coinbase/ @tombrien
/homeassistant/components/color_extractor/ @GenericStudent
@@ -259,6 +273,8 @@ build.json @home-assistant/supervisor
/tests/components/denonavr/ @ol-iver @starkillerOG
/homeassistant/components/derivative/ @afaucogney
/tests/components/derivative/ @afaucogney
/homeassistant/components/devialet/ @fwestenberg
/tests/components/devialet/ @fwestenberg
/homeassistant/components/device_automation/ @home-assistant/core
/tests/components/device_automation/ @home-assistant/core
/homeassistant/components/device_tracker/ @home-assistant/core
@@ -293,6 +309,8 @@ build.json @home-assistant/supervisor
/tests/components/dormakaba_dkey/ @emontnemery
/homeassistant/components/dremel_3d_printer/ @tkdrob
/tests/components/dremel_3d_printer/ @tkdrob
/homeassistant/components/drop_connect/ @ChandlerSystems @pfrazer
/tests/components/drop_connect/ @ChandlerSystems @pfrazer
/homeassistant/components/dsmr/ @Robbie1221 @frenck
/tests/components/dsmr/ @Robbie1221 @frenck
/homeassistant/components/dsmr_reader/ @depl0y @glodenox
@@ -307,13 +325,12 @@ build.json @home-assistant/supervisor
/tests/components/eafm/ @Jc2k
/homeassistant/components/easyenergy/ @klaasnicolaas
/tests/components/easyenergy/ @klaasnicolaas
/homeassistant/components/ecobee/ @marcolivierarsenault
/tests/components/ecobee/ @marcolivierarsenault
/homeassistant/components/ecoforest/ @pjanuario
/tests/components/ecoforest/ @pjanuario
/homeassistant/components/econet/ @w1ll1am23
/tests/components/econet/ @w1ll1am23
/homeassistant/components/ecovacs/ @OverloadUT @mib1185
/homeassistant/components/ecovacs/ @OverloadUT @mib1185 @edenhaus
/tests/components/ecovacs/ @OverloadUT @mib1185 @edenhaus
/homeassistant/components/ecowitt/ @pvizeli
/tests/components/ecowitt/ @pvizeli
/homeassistant/components/efergy/ @tkdrob
@@ -330,6 +347,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/elmax/ @albertogeniola
/tests/components/elmax/ @albertogeniola
/homeassistant/components/elv/ @majuss
/homeassistant/components/elvia/ @ludeeus
/tests/components/elvia/ @ludeeus
/homeassistant/components/emby/ @mezz64
/homeassistant/components/emoncms/ @borpin
/homeassistant/components/emonitor/ @bdraco
@@ -342,7 +361,7 @@ build.json @home-assistant/supervisor
/tests/components/energy/ @home-assistant/core
/homeassistant/components/energyzero/ @klaasnicolaas
/tests/components/energyzero/ @klaasnicolaas
/homeassistant/components/enigma2/ @fbradyirl
/homeassistant/components/enigma2/ @autinerd
/homeassistant/components/enocean/ @bdurrer
/tests/components/enocean/ @bdurrer
/homeassistant/components/enphase_envoy/ @bdraco @cgarwood @dgomes @joostlek @catsmanac
@@ -351,6 +370,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/environment_canada/ @gwww @michaeldavie
/tests/components/environment_canada/ @gwww @michaeldavie
/homeassistant/components/ephember/ @ttroy50
/homeassistant/components/epion/ @lhgravendeel
/tests/components/epion/ @lhgravendeel
/homeassistant/components/epson/ @pszafer
/tests/components/epson/ @pszafer
/homeassistant/components/epsonworkforce/ @ThaStealth
@@ -393,6 +414,8 @@ build.json @home-assistant/supervisor
/tests/components/fivem/ @Sander0542
/homeassistant/components/fjaraskupan/ @elupus
/tests/components/fjaraskupan/ @elupus
/homeassistant/components/flexit_bacnet/ @lellky @piotrbulinski
/tests/components/flexit_bacnet/ @lellky @piotrbulinski
/homeassistant/components/flick_electric/ @ZephireNZ
/tests/components/flick_electric/ @ZephireNZ
/homeassistant/components/flipr/ @cnico
@@ -408,8 +431,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/forked_daapd/ @uvjustin
/tests/components/forked_daapd/ @uvjustin
/homeassistant/components/fortios/ @kimfrellsen
/homeassistant/components/foscam/ @skgsergio
/tests/components/foscam/ @skgsergio
/homeassistant/components/foscam/ @skgsergio @krmarien
/tests/components/foscam/ @skgsergio @krmarien
/homeassistant/components/freebox/ @hacf-fr @Quentame
/tests/components/freebox/ @hacf-fr @Quentame
/homeassistant/components/freedompro/ @stefano055415
@@ -482,7 +505,10 @@ build.json @home-assistant/supervisor
/tests/components/google_travel_time/ @eifinger
/homeassistant/components/govee_ble/ @bdraco @PierreAronnax
/tests/components/govee_ble/ @bdraco @PierreAronnax
/homeassistant/components/gpsd/ @fabaff
/homeassistant/components/govee_light_local/ @Galorhallen
/tests/components/govee_light_local/ @Galorhallen
/homeassistant/components/gpsd/ @fabaff @jrieger
/tests/components/gpsd/ @fabaff @jrieger
/homeassistant/components/gree/ @cmroche
/tests/components/gree/ @cmroche
/homeassistant/components/greeneye_monitor/ @jkeljo
@@ -516,12 +542,14 @@ build.json @home-assistant/supervisor
/tests/components/history/ @home-assistant/core
/homeassistant/components/hive/ @Rendili @KJonline
/tests/components/hive/ @Rendili @KJonline
/homeassistant/components/hko/ @MisterCommand
/tests/components/hko/ @MisterCommand
/homeassistant/components/hlk_sw16/ @jameshilliard
/tests/components/hlk_sw16/ @jameshilliard
/homeassistant/components/holiday/ @jrieger @gjohansson-ST
/tests/components/holiday/ @jrieger @gjohansson-ST
/homeassistant/components/home_connect/ @DavidMStraub
/tests/components/home_connect/ @DavidMStraub
/homeassistant/components/home_plus_control/ @chemaaa
/tests/components/home_plus_control/ @chemaaa
/homeassistant/components/homeassistant/ @home-assistant/core
/tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_alerts/ @home-assistant/core
@@ -556,6 +584,8 @@ build.json @home-assistant/supervisor
/tests/components/humidifier/ @home-assistant/core @Shulyaka
/homeassistant/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/homeassistant/components/huum/ @frwickst
/tests/components/huum/ @frwickst
/homeassistant/components/hvv_departures/ @vigonotion
/tests/components/hvv_departures/ @vigonotion
/homeassistant/components/hydrawise/ @dknowles2 @ptcryan
@@ -639,8 +669,8 @@ build.json @home-assistant/supervisor
/tests/components/juicenet/ @jesserockz
/homeassistant/components/justnimbus/ @kvanzuijlen
/tests/components/justnimbus/ @kvanzuijlen
/homeassistant/components/jvc_projector/ @SteveEasley
/tests/components/jvc_projector/ @SteveEasley
/homeassistant/components/jvc_projector/ @SteveEasley @msavazzi
/tests/components/jvc_projector/ @SteveEasley @msavazzi
/homeassistant/components/kaiterra/ @Michsior14
/homeassistant/components/kaleidescape/ @SteveEasley
/tests/components/kaleidescape/ @SteveEasley
@@ -661,8 +691,6 @@ build.json @home-assistant/supervisor
/tests/components/knx/ @Julius2342 @farmio @marvin-w
/homeassistant/components/kodi/ @OnFreund
/tests/components/kodi/ @OnFreund
/homeassistant/components/komfovent/ @ProstoSanja
/tests/components/komfovent/ @ProstoSanja
/homeassistant/components/konnected/ @heythisisnate
/tests/components/konnected/ @heythisisnate
/homeassistant/components/kostal_plenticore/ @stegm
@@ -673,6 +701,8 @@ build.json @home-assistant/supervisor
/tests/components/kulersky/ @emlove
/homeassistant/components/lacrosse_view/ @IceBotYT
/tests/components/lacrosse_view/ @IceBotYT
/homeassistant/components/lamarzocco/ @zweckj
/tests/components/lamarzocco/ @zweckj
/homeassistant/components/lametric/ @robbiet480 @frenck @bachya
/tests/components/lametric/ @robbiet480 @frenck @bachya
/homeassistant/components/landisgyr_heat_meter/ @vpathuis
@@ -689,13 +719,13 @@ build.json @home-assistant/supervisor
/tests/components/lcn/ @alengwenus
/homeassistant/components/ld2410_ble/ @930913
/tests/components/ld2410_ble/ @930913
/homeassistant/components/leaone/ @bdraco
/tests/components/leaone/ @bdraco
/homeassistant/components/led_ble/ @bdraco
/tests/components/led_ble/ @bdraco
/homeassistant/components/lg_netcast/ @Drafteed
/homeassistant/components/lidarr/ @tkdrob
/tests/components/lidarr/ @tkdrob
/homeassistant/components/life360/ @pnbruckner
/tests/components/life360/ @pnbruckner
/homeassistant/components/light/ @home-assistant/core
/tests/components/light/ @home-assistant/core
/homeassistant/components/linear_garage_door/ @IceBotYT
@@ -732,8 +762,10 @@ build.json @home-assistant/supervisor
/homeassistant/components/luci/ @mzdrale
/homeassistant/components/luftdaten/ @fabaff @frenck
/tests/components/luftdaten/ @fabaff @frenck
/homeassistant/components/lupusec/ @majuss
/homeassistant/components/lutron/ @cdheiser
/homeassistant/components/lupusec/ @majuss @suaveolent
/tests/components/lupusec/ @majuss @suaveolent
/homeassistant/components/lutron/ @cdheiser @wilburCForce
/tests/components/lutron/ @cdheiser @wilburCForce
/homeassistant/components/lutron_caseta/ @swails @bdraco @danaues
/tests/components/lutron_caseta/ @swails @bdraco @danaues
/homeassistant/components/lyric/ @timmo001
@@ -803,6 +835,8 @@ build.json @home-assistant/supervisor
/tests/components/motion_blinds/ @starkillerOG
/homeassistant/components/motioneye/ @dermotduffy
/tests/components/motioneye/ @dermotduffy
/homeassistant/components/motionmount/ @RJPoelstra
/tests/components/motionmount/ @RJPoelstra
/homeassistant/components/mqtt/ @emontnemery @jbouwh
/tests/components/mqtt/ @emontnemery @jbouwh
/homeassistant/components/msteams/ @peroyvind
@@ -816,6 +850,8 @@ build.json @home-assistant/supervisor
/tests/components/mysensors/ @MartinHjelmare @functionpointer
/homeassistant/components/mystrom/ @fabaff
/tests/components/mystrom/ @fabaff
/homeassistant/components/myuplink/ @pajzo
/tests/components/myuplink/ @pajzo
/homeassistant/components/nam/ @bieniu
/tests/components/nam/ @bieniu
/homeassistant/components/nanoleaf/ @milanmeu
@@ -833,6 +869,7 @@ build.json @home-assistant/supervisor
/homeassistant/components/netgear/ @hacf-fr @Quentame @starkillerOG
/tests/components/netgear/ @hacf-fr @Quentame @starkillerOG
/homeassistant/components/netgear_lte/ @tkdrob
/tests/components/netgear_lte/ @tkdrob
/homeassistant/components/network/ @home-assistant/core
/tests/components/network/ @home-assistant/core
/homeassistant/components/nexia/ @bdraco
@@ -926,6 +963,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/oralb/ @bdraco @Lash-L
/tests/components/oralb/ @bdraco @Lash-L
/homeassistant/components/oru/ @bvlaicu
/homeassistant/components/osoenergy/ @osohotwateriot
/tests/components/osoenergy/ @osohotwateriot
/homeassistant/components/otbr/ @home-assistant/core
/tests/components/otbr/ @home-assistant/core
/homeassistant/components/ourgroceries/ @OnFreund
@@ -985,8 +1024,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/proximity/ @mib1185
/tests/components/proximity/ @mib1185
/homeassistant/components/proxmoxve/ @jhollowe @Corbeno
/homeassistant/components/prusalink/ @balloob
/tests/components/prusalink/ @balloob
/homeassistant/components/prusalink/ @balloob @Skaronator
/tests/components/prusalink/ @balloob @Skaronator
/homeassistant/components/ps4/ @ktnrg45
/tests/components/ps4/ @ktnrg45
/homeassistant/components/pure_energie/ @klaasnicolaas
@@ -1003,8 +1042,8 @@ build.json @home-assistant/supervisor
/tests/components/pvoutput/ @frenck
/homeassistant/components/pvpc_hourly_pricing/ @azogue
/tests/components/pvpc_hourly_pricing/ @azogue
/homeassistant/components/qbittorrent/ @geoffreylagaisse
/tests/components/qbittorrent/ @geoffreylagaisse
/homeassistant/components/qbittorrent/ @geoffreylagaisse @finder39
/tests/components/qbittorrent/ @geoffreylagaisse @finder39
/homeassistant/components/qingping/ @bdraco @skgsergio
/tests/components/qingping/ @bdraco @skgsergio
/homeassistant/components/qld_bushfire/ @exxamalte
@@ -1017,8 +1056,10 @@ build.json @home-assistant/supervisor
/homeassistant/components/qvr_pro/ @oblogic7
/homeassistant/components/qwikswitch/ @kellerza
/tests/components/qwikswitch/ @kellerza
/homeassistant/components/rachio/ @bdraco
/tests/components/rachio/ @bdraco
/homeassistant/components/rabbitair/ @rabbit-air
/tests/components/rabbitair/ @rabbit-air
/homeassistant/components/rachio/ @bdraco @rfverbruggen
/tests/components/rachio/ @bdraco @rfverbruggen
/homeassistant/components/radarr/ @tkdrob
/tests/components/radarr/ @tkdrob
/homeassistant/components/radio_browser/ @frenck
@@ -1030,6 +1071,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/raincloud/ @vanstinator
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
/tests/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
/homeassistant/components/rainforest_raven/ @cottsay
/tests/components/rainforest_raven/ @cottsay
/homeassistant/components/rainmachine/ @bachya
/tests/components/rainmachine/ @bachya
/homeassistant/components/random/ @fabaff
@@ -1046,6 +1089,8 @@ build.json @home-assistant/supervisor
/tests/components/recorder/ @home-assistant/core
/homeassistant/components/recovery_mode/ @home-assistant/core
/tests/components/recovery_mode/ @home-assistant/core
/homeassistant/components/refoss/ @ashionky
/tests/components/refoss/ @ashionky
/homeassistant/components/rejseplanen/ @DarkFox
/homeassistant/components/remote/ @home-assistant/core
/tests/components/remote/ @home-assistant/core
@@ -1058,6 +1103,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/repairs/ @home-assistant/core
/tests/components/repairs/ @home-assistant/core
/homeassistant/components/repetier/ @ShadowBr0ther
/homeassistant/components/rest_command/ @jpbede
/tests/components/rest_command/ @jpbede
/homeassistant/components/rflink/ @javicalle
/tests/components/rflink/ @javicalle
/homeassistant/components/rfxtrx/ @danielhiversen @elupus @RobBie1221
@@ -1078,6 +1125,8 @@ build.json @home-assistant/supervisor
/tests/components/roborock/ @humbertogontijo @Lash-L
/homeassistant/components/roku/ @ctalkington
/tests/components/roku/ @ctalkington
/homeassistant/components/romy/ @xeniter
/tests/components/romy/ @xeniter
/homeassistant/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/homeassistant/components/roon/ @pavoni
@@ -1243,13 +1292,17 @@ build.json @home-assistant/supervisor
/homeassistant/components/subaru/ @G-Two
/tests/components/subaru/ @G-Two
/homeassistant/components/suez_water/ @ooii
/tests/components/suez_water/ @ooii
/homeassistant/components/sun/ @Swamp-Ig
/tests/components/sun/ @Swamp-Ig
/homeassistant/components/sunweg/ @rokam
/tests/components/sunweg/ @rokam
/homeassistant/components/supla/ @mwegrzynek
/homeassistant/components/surepetcare/ @benleb @danielhiversen
/tests/components/surepetcare/ @benleb @danielhiversen
/homeassistant/components/swiss_hydrological_data/ @fabaff
/homeassistant/components/swiss_public_transport/ @fabaff
/homeassistant/components/swiss_public_transport/ @fabaff @miaucl
/tests/components/swiss_public_transport/ @fabaff @miaucl
/homeassistant/components/switch/ @home-assistant/core
/tests/components/switch/ @home-assistant/core
/homeassistant/components/switch_as_x/ @home-assistant/core
@@ -1272,34 +1325,46 @@ build.json @home-assistant/supervisor
/homeassistant/components/synology_srm/ @aerialls
/homeassistant/components/system_bridge/ @timmo001
/tests/components/system_bridge/ @timmo001
/homeassistant/components/tado/ @michaelarnauts @chiefdragon
/tests/components/tado/ @michaelarnauts @chiefdragon
/homeassistant/components/systemmonitor/ @gjohansson-ST
/tests/components/systemmonitor/ @gjohansson-ST
/homeassistant/components/tado/ @chiefdragon @erwindouna
/tests/components/tado/ @chiefdragon @erwindouna
/homeassistant/components/tag/ @balloob @dmulcahey
/tests/components/tag/ @balloob @dmulcahey
/homeassistant/components/tailscale/ @frenck
/tests/components/tailscale/ @frenck
/homeassistant/components/tailwind/ @frenck
/tests/components/tailwind/ @frenck
/homeassistant/components/tami4/ @Guy293
/tests/components/tami4/ @Guy293
/homeassistant/components/tankerkoenig/ @guillempages @mib1185
/tests/components/tankerkoenig/ @guillempages @mib1185
/homeassistant/components/tankerkoenig/ @guillempages @mib1185 @jpbede
/tests/components/tankerkoenig/ @guillempages @mib1185 @jpbede
/homeassistant/components/tapsaff/ @bazwilliams
/homeassistant/components/tasmota/ @emontnemery
/tests/components/tasmota/ @emontnemery
/homeassistant/components/tautulli/ @ludeeus @tkdrob
/tests/components/tautulli/ @ludeeus @tkdrob
/homeassistant/components/technove/ @Moustachauve
/tests/components/technove/ @Moustachauve
/homeassistant/components/tedee/ @patrickhilker @zweckj
/tests/components/tedee/ @patrickhilker @zweckj
/homeassistant/components/tellduslive/ @fredrike
/tests/components/tellduslive/ @fredrike
/homeassistant/components/template/ @PhracturedBlue @tetienne @home-assistant/core
/tests/components/template/ @PhracturedBlue @tetienne @home-assistant/core
/homeassistant/components/tesla_wall_connector/ @einarhauks
/tests/components/tesla_wall_connector/ @einarhauks
/homeassistant/components/teslemetry/ @Bre77
/tests/components/teslemetry/ @Bre77
/homeassistant/components/tessie/ @Bre77
/tests/components/tessie/ @Bre77
/homeassistant/components/text/ @home-assistant/core
/tests/components/text/ @home-assistant/core
/homeassistant/components/tfiac/ @fredrike @mellado
/homeassistant/components/thermobeacon/ @bdraco
/tests/components/thermobeacon/ @bdraco
/homeassistant/components/thermopro/ @bdraco
/tests/components/thermopro/ @bdraco
/homeassistant/components/thermopro/ @bdraco @h3ss
/tests/components/thermopro/ @bdraco @h3ss
/homeassistant/components/thethingsnetwork/ @fabaff
/homeassistant/components/thread/ @home-assistant/core
/tests/components/thread/ @home-assistant/core
@@ -1324,12 +1389,14 @@ build.json @home-assistant/supervisor
/tests/components/tomorrowio/ @raman325 @lymanepp
/homeassistant/components/totalconnect/ @austinmroczek
/tests/components/totalconnect/ @austinmroczek
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco @sdb9696
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco @sdb9696
/homeassistant/components/tplink_omada/ @MarkGodwin
/tests/components/tplink_omada/ @MarkGodwin
/homeassistant/components/traccar/ @ludeeus
/tests/components/traccar/ @ludeeus
/homeassistant/components/traccar_server/ @ludeeus
/tests/components/traccar_server/ @ludeeus
/homeassistant/components/trace/ @home-assistant/core
/tests/components/trace/ @home-assistant/core
/homeassistant/components/tractive/ @Danielhiversen @zhulik @bieniu
@@ -1360,6 +1427,7 @@ build.json @home-assistant/supervisor
/tests/components/ukraine_alarm/ @PaulAnnekov
/homeassistant/components/unifi/ @Kane610
/tests/components/unifi/ @Kane610
/homeassistant/components/unifi_direct/ @tofuSCHNITZEL
/homeassistant/components/unifiled/ @florisvdk
/homeassistant/components/unifiprotect/ @AngellusMortis @bdraco
/tests/components/unifiprotect/ @AngellusMortis @bdraco
@@ -1388,6 +1456,8 @@ build.json @home-assistant/supervisor
/tests/components/vacuum/ @home-assistant/core
/homeassistant/components/vallox/ @andre-richter @slovdahl @viiru-
/tests/components/vallox/ @andre-richter @slovdahl @viiru-
/homeassistant/components/valve/ @home-assistant/core
/tests/components/valve/ @home-assistant/core
/homeassistant/components/velbus/ @Cereal2nd @brefra
/tests/components/velbus/ @Cereal2nd @brefra
/homeassistant/components/velux/ @Julius2342
@@ -1396,8 +1466,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/versasense/ @imstevenxyz
/homeassistant/components/version/ @ludeeus
/tests/components/version/ @ludeeus
/homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey
/tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey
/homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja
/tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja
/homeassistant/components/vicare/ @CFenner
/tests/components/vicare/ @CFenner
/homeassistant/components/vilfo/ @ManneW
@@ -1516,7 +1586,7 @@ build.json @home-assistant/supervisor
/tests/components/zodiac/ @JulienTant
/homeassistant/components/zone/ @home-assistant/core
/tests/components/zone/ @home-assistant/core
/homeassistant/components/zoneminder/ @rohankapoorcom
/homeassistant/components/zoneminder/ @rohankapoorcom @nabbi
/homeassistant/components/zwave_js/ @home-assistant/z-wave
/tests/components/zwave_js/ @home-assistant/z-wave
/homeassistant/components/zwave_me/ @lawfulchaos @Z-Wave-Me @PoltoS

View File

@@ -1,9 +1,12 @@
# Automatically generated by hassfest.
#
# To update, run python3 -m script.hassfest -p docker
ARG BUILD_FROM
FROM ${BUILD_FROM}
# Synchronize with homeassistant/core.py:async_stop
ENV \
S6_SERVICES_GRACETIME=220000
S6_SERVICES_GRACETIME=240000
ARG QEMU_CPU
@@ -25,12 +28,19 @@ RUN \
&& if ls homeassistant/home_assistant_intents*.whl 1> /dev/null 2>&1; then \
pip3 install homeassistant/home_assistant_intents-*.whl; \
fi \
&& \
&& if [ "${BUILD_ARCH}" = "i386" ]; then \
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
linux32 pip3 install \
--only-binary=:all: \
-r homeassistant/requirements_all.txt; \
else \
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
pip3 install \
--only-binary=:all: \
-r homeassistant/requirements_all.txt
-r homeassistant/requirements_all.txt; \
fi
## Setup Home Assistant Core
COPY . homeassistant/

View File

@@ -16,6 +16,7 @@ RUN \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
# Additional library needed by some tests and accordingly by VScode Tests Discovery
bluez \
ffmpeg \
libudev-dev \
libavformat-dev \
libavcodec-dev \

View File

@@ -22,7 +22,7 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
.. |Chat Status| image:: https://img.shields.io/discord/330944238910963714.svg
:target: https://www.home-assistant.io/join-chat/
.. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/master/docs/screenshots.png
.. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-states.png
:target: https://demo.home-assistant.io
.. |screenshot-integrations| image:: https://raw.githubusercontent.com/home-assistant/core/dev/docs/screenshot-integrations.png
:target: https://home-assistant.io/integrations/
.. |screenshot-integrations| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-integrations.png
:target: https://home-assistant.io/integrations/

View File

@@ -1,10 +1,10 @@
image: ghcr.io/home-assistant/{arch}-homeassistant
build_from:
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
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2024.02.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2024.02.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2024.02.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2024.02.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2024.02.0
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io

View File

@@ -4,18 +4,27 @@ from __future__ import annotations
import asyncio
from collections import OrderedDict
from collections.abc import Mapping
from datetime import timedelta
from datetime import datetime, timedelta
from functools import partial
import time
from typing import Any, cast
import jwt
from homeassistant import data_entry_flow
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
from homeassistant.core import (
CALLBACK_TYPE,
HassJob,
HassJobType,
HomeAssistant,
callback,
)
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.event import async_track_point_in_utc_time
from homeassistant.util import dt as dt_util
from . import auth_store, jwt_wrapper, models
from .const import ACCESS_TOKEN_EXPIRATION, GROUP_ID_ADMIN
from .const import ACCESS_TOKEN_EXPIRATION, GROUP_ID_ADMIN, REFRESH_TOKEN_EXPIRATION
from .mfa_modules import MultiFactorAuthModule, auth_mfa_module_from_config
from .providers import AuthProvider, LoginFlow, auth_provider_from_config
@@ -47,6 +56,7 @@ async def auth_manager_from_config(
mfa modules exist in configs.
"""
store = auth_store.AuthStore(hass)
await store.async_load()
if provider_configs:
providers = await asyncio.gather(
*(
@@ -74,6 +84,7 @@ async def auth_manager_from_config(
module_hash[module.id] = module
manager = AuthManager(hass, store, provider_hash, module_hash)
manager.async_setup()
return manager
@@ -157,7 +168,22 @@ class AuthManager:
self._providers = providers
self._mfa_modules = mfa_modules
self.login_flow = AuthManagerFlowManager(hass, self)
self._revoke_callbacks: dict[str, list[CALLBACK_TYPE]] = {}
self._revoke_callbacks: dict[str, set[CALLBACK_TYPE]] = {}
self._expire_callback: CALLBACK_TYPE | None = None
self._remove_expired_job = HassJob(
self._async_remove_expired_refresh_tokens, job_type=HassJobType.Callback
)
@callback
def async_setup(self) -> None:
"""Set up the auth manager."""
hass = self.hass
hass.async_add_shutdown_job(
HassJob(
self._async_cancel_expiration_schedule, job_type=HassJobType.Callback
)
)
self._async_track_next_refresh_token_expiration()
@property
def auth_providers(self) -> list[AuthProvider]:
@@ -423,6 +449,11 @@ class AuthManager:
else:
token_type = models.TOKEN_TYPE_NORMAL
if token_type is models.TOKEN_TYPE_NORMAL:
expire_at = time.time() + REFRESH_TOKEN_EXPIRATION
else:
expire_at = None
if user.system_generated != (token_type == models.TOKEN_TYPE_SYSTEM):
raise ValueError(
"System generated users can only have system type refresh tokens"
@@ -454,48 +485,81 @@ class AuthManager:
client_icon,
token_type,
access_token_expiration,
expire_at,
credential,
)
async def async_get_refresh_token(
self, token_id: str
) -> models.RefreshToken | None:
@callback
def async_get_refresh_token(self, token_id: str) -> models.RefreshToken | None:
"""Get refresh token by id."""
return await self._store.async_get_refresh_token(token_id)
return self._store.async_get_refresh_token(token_id)
async def async_get_refresh_token_by_token(
@callback
def async_get_refresh_token_by_token(
self, token: str
) -> models.RefreshToken | None:
"""Get refresh token by token."""
return await self._store.async_get_refresh_token_by_token(token)
return self._store.async_get_refresh_token_by_token(token)
async def async_remove_refresh_token(
self, refresh_token: models.RefreshToken
) -> None:
@callback
def async_remove_refresh_token(self, refresh_token: models.RefreshToken) -> None:
"""Delete a refresh token."""
await self._store.async_remove_refresh_token(refresh_token)
self._store.async_remove_refresh_token(refresh_token)
callbacks = self._revoke_callbacks.pop(refresh_token.id, [])
callbacks = self._revoke_callbacks.pop(refresh_token.id, ())
for revoke_callback in callbacks:
revoke_callback()
@callback
def _async_remove_expired_refresh_tokens(self, _: datetime | None = None) -> None:
"""Remove expired refresh tokens."""
now = time.time()
for token in self._store.async_get_refresh_tokens():
if (expire_at := token.expire_at) is not None and expire_at <= now:
self.async_remove_refresh_token(token)
self._async_track_next_refresh_token_expiration()
@callback
def _async_track_next_refresh_token_expiration(self) -> None:
"""Initialise all token expiration scheduled tasks."""
next_expiration = time.time() + REFRESH_TOKEN_EXPIRATION
for token in self._store.async_get_refresh_tokens():
if (
expire_at := token.expire_at
) is not None and expire_at < next_expiration:
next_expiration = expire_at
self._expire_callback = async_track_point_in_utc_time(
self.hass,
self._remove_expired_job,
dt_util.utc_from_timestamp(next_expiration),
)
@callback
def _async_cancel_expiration_schedule(self) -> None:
"""Cancel tracking of expired refresh tokens."""
if self._expire_callback:
self._expire_callback()
self._expire_callback = None
@callback
def _async_unregister(
self, callbacks: set[CALLBACK_TYPE], callback_: CALLBACK_TYPE
) -> None:
"""Unregister a callback."""
callbacks.remove(callback_)
@callback
def async_register_revoke_token_callback(
self, refresh_token_id: str, revoke_callback: CALLBACK_TYPE
) -> CALLBACK_TYPE:
"""Register a callback to be called when the refresh token id is revoked."""
if refresh_token_id not in self._revoke_callbacks:
self._revoke_callbacks[refresh_token_id] = []
self._revoke_callbacks[refresh_token_id] = set()
callbacks = self._revoke_callbacks[refresh_token_id]
callbacks.append(revoke_callback)
@callback
def unregister() -> None:
if revoke_callback in callbacks:
callbacks.remove(revoke_callback)
return unregister
callbacks.add(revoke_callback)
return partial(self._async_unregister, callbacks, revoke_callback)
@callback
def async_create_access_token(
@@ -552,16 +616,15 @@ class AuthManager:
if provider := self._async_resolve_provider(refresh_token):
provider.async_validate_refresh_token(refresh_token, remote_ip)
async def async_validate_access_token(
self, token: str
) -> models.RefreshToken | None:
@callback
def async_validate_access_token(self, token: str) -> models.RefreshToken | None:
"""Return refresh token if an access token is valid."""
try:
unverif_claims = jwt_wrapper.unverified_hs256_token_decode(token)
except jwt.InvalidTokenError:
return None
refresh_token = await self.async_get_refresh_token(
refresh_token = self.async_get_refresh_token(
cast(str, unverif_claims.get("iss"))
)

View File

@@ -1,10 +1,9 @@
"""Storage for auth models."""
from __future__ import annotations
import asyncio
from collections import OrderedDict
from datetime import timedelta
import hmac
import itertools
from logging import getLogger
from typing import Any
@@ -19,6 +18,7 @@ from .const import (
GROUP_ID_ADMIN,
GROUP_ID_READ_ONLY,
GROUP_ID_USER,
REFRESH_TOKEN_EXPIRATION,
)
from .permissions import system_policies
from .permissions.models import PermissionLookup
@@ -43,44 +43,28 @@ class AuthStore:
def __init__(self, hass: HomeAssistant) -> None:
"""Initialize the auth store."""
self.hass = hass
self._users: dict[str, models.User] | None = None
self._groups: dict[str, models.Group] | None = None
self._perm_lookup: PermissionLookup | None = None
self._loaded = False
self._users: dict[str, models.User] = None # type: ignore[assignment]
self._groups: dict[str, models.Group] = None # type: ignore[assignment]
self._perm_lookup: PermissionLookup = None # type: ignore[assignment]
self._store = Store[dict[str, list[dict[str, Any]]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._lock = asyncio.Lock()
async def async_get_groups(self) -> list[models.Group]:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
assert self._groups is not None
return list(self._groups.values())
async def async_get_group(self, group_id: str) -> models.Group | None:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
assert self._groups is not None
return self._groups.get(group_id)
async def async_get_users(self) -> list[models.User]:
"""Retrieve all users."""
if self._users is None:
await self._async_load()
assert self._users is not None
return list(self._users.values())
async def async_get_user(self, user_id: str) -> models.User | None:
"""Retrieve a user by id."""
if self._users is None:
await self._async_load()
assert self._users is not None
return self._users.get(user_id)
async def async_create_user(
@@ -94,12 +78,6 @@ class AuthStore:
local_only: bool | None = None,
) -> models.User:
"""Create a new user."""
if self._users is None:
await self._async_load()
assert self._users is not None
assert self._groups is not None
groups = []
for group_id in group_ids or []:
if (group := self._groups.get(group_id)) is None:
@@ -145,10 +123,6 @@ class AuthStore:
async def async_remove_user(self, user: models.User) -> None:
"""Remove a user."""
if self._users is None:
await self._async_load()
assert self._users is not None
self._users.pop(user.id)
self._async_schedule_save()
@@ -161,8 +135,6 @@ class AuthStore:
local_only: bool | None = None,
) -> None:
"""Update a user."""
assert self._groups is not None
if group_ids is not None:
groups = []
for grid in group_ids:
@@ -171,7 +143,6 @@ class AuthStore:
groups.append(group)
user.groups = groups
user.invalidate_permission_cache()
for attr_name, value in (
("name", name),
@@ -195,10 +166,6 @@ class AuthStore:
async def async_remove_credentials(self, credentials: models.Credentials) -> None:
"""Remove credentials."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
found = None
@@ -221,6 +188,7 @@ class AuthStore:
client_icon: str | None = None,
token_type: str = models.TOKEN_TYPE_NORMAL,
access_token_expiration: timedelta = ACCESS_TOKEN_EXPIRATION,
expire_at: float | None = None,
credential: models.Credentials | None = None,
) -> models.RefreshToken:
"""Create a new token for a user."""
@@ -229,6 +197,7 @@ class AuthStore:
"client_id": client_id,
"token_type": token_type,
"access_token_expiration": access_token_expiration,
"expire_at": expire_at,
"credential": credential,
}
if client_name:
@@ -242,27 +211,17 @@ class AuthStore:
self._async_schedule_save()
return refresh_token
async def async_remove_refresh_token(
self, refresh_token: models.RefreshToken
) -> None:
@callback
def async_remove_refresh_token(self, refresh_token: models.RefreshToken) -> None:
"""Remove a refresh token."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
if user.refresh_tokens.pop(refresh_token.id, None):
self._async_schedule_save()
break
async def async_get_refresh_token(
self, token_id: str
) -> models.RefreshToken | None:
@callback
def async_get_refresh_token(self, token_id: str) -> models.RefreshToken | None:
"""Get refresh token by id."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
refresh_token = user.refresh_tokens.get(token_id)
if refresh_token is not None:
@@ -270,14 +229,11 @@ class AuthStore:
return None
async def async_get_refresh_token_by_token(
@callback
def async_get_refresh_token_by_token(
self, token: str
) -> models.RefreshToken | None:
"""Get refresh token by token."""
if self._users is None:
await self._async_load()
assert self._users is not None
found = None
for user in self._users.values():
@@ -287,6 +243,15 @@ class AuthStore:
return found
@callback
def async_get_refresh_tokens(self) -> list[models.RefreshToken]:
"""Get all refresh tokens."""
return list(
itertools.chain.from_iterable(
user.refresh_tokens.values() for user in self._users.values()
)
)
@callback
def async_log_refresh_token_usage(
self, refresh_token: models.RefreshToken, remote_ip: str | None = None
@@ -294,35 +259,34 @@ class AuthStore:
"""Update refresh token last used information."""
refresh_token.last_used_at = dt_util.utcnow()
refresh_token.last_used_ip = remote_ip
if refresh_token.expire_at:
refresh_token.expire_at = (
refresh_token.last_used_at.timestamp() + REFRESH_TOKEN_EXPIRATION
)
self._async_schedule_save()
async def _async_load(self) -> None:
async def async_load(self) -> None: # noqa: C901
"""Load the users."""
async with self._lock:
if self._users is not None:
return
await self._async_load_task()
if self._loaded:
raise RuntimeError("Auth storage is already loaded")
self._loaded = True
async def _async_load_task(self) -> None:
"""Load the users."""
dev_reg = dr.async_get(self.hass)
ent_reg = er.async_get(self.hass)
data = await self._store.async_load()
# Make sure that we're not overriding data if 2 loads happened at the
# same time
if self._users is not None:
return
perm_lookup = PermissionLookup(ent_reg, dev_reg)
self._perm_lookup = perm_lookup
self._perm_lookup = perm_lookup = PermissionLookup(ent_reg, dev_reg)
now_ts = dt_util.utcnow().timestamp()
if data is None or not isinstance(data, dict):
self._set_defaults()
return
users: dict[str, models.User] = OrderedDict()
groups: dict[str, models.Group] = OrderedDict()
credentials: dict[str, models.Credentials] = OrderedDict()
users: dict[str, models.User] = {}
groups: dict[str, models.Group] = {}
credentials: dict[str, models.Credentials] = {}
# Soft-migrating data as we load. We are going to make sure we have a
# read only group and an admin group. There are two states that we can
@@ -469,6 +433,14 @@ class AuthStore:
else:
last_used_at = None
if (
expire_at := rt_dict.get("expire_at")
) is None and token_type == models.TOKEN_TYPE_NORMAL:
if last_used_at:
expire_at = last_used_at.timestamp() + REFRESH_TOKEN_EXPIRATION
else:
expire_at = now_ts + REFRESH_TOKEN_EXPIRATION
token = models.RefreshToken(
id=rt_dict["id"],
user=users[rt_dict["user_id"]],
@@ -485,6 +457,7 @@ class AuthStore:
jwt_key=rt_dict["jwt_key"],
last_used_at=last_used_at,
last_used_ip=rt_dict.get("last_used_ip"),
expire_at=expire_at,
version=rt_dict.get("version"),
)
if "credential_id" in rt_dict:
@@ -494,20 +467,16 @@ class AuthStore:
self._groups = groups
self._users = users
self._async_schedule_save()
@callback
def _async_schedule_save(self) -> None:
"""Save users."""
if self._users is None:
return
self._store.async_delay_save(self._data_to_save, 1)
@callback
def _data_to_save(self) -> dict[str, list[dict[str, Any]]]:
"""Return the data to store."""
assert self._users is not None
assert self._groups is not None
users = [
{
"id": user.id,
@@ -564,6 +533,7 @@ class AuthStore:
if refresh_token.last_used_at
else None,
"last_used_ip": refresh_token.last_used_ip,
"expire_at": refresh_token.expire_at,
"credential_id": refresh_token.credential.id
if refresh_token.credential
else None,
@@ -582,9 +552,9 @@ class AuthStore:
def _set_defaults(self) -> None:
"""Set default values for auth store."""
self._users = OrderedDict()
self._users = {}
groups: dict[str, models.Group] = OrderedDict()
groups: dict[str, models.Group] = {}
admin_group = _system_admin_group()
groups[admin_group.id] = admin_group
user_group = _system_user_group()

View File

@@ -3,6 +3,7 @@ from datetime import timedelta
ACCESS_TOKEN_EXPIRATION = timedelta(minutes=30)
MFA_SESSION_EXPIRATION = timedelta(minutes=5)
REFRESH_TOKEN_EXPIRATION = timedelta(days=90).total_seconds()
GROUP_ID_ADMIN = "system-admin"
GROUP_ID_USER = "system-users"

View File

@@ -152,7 +152,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
"""Return list of notify services."""
unordered_services = set()
for service in self.hass.services.async_services().get("notify", {}):
for service in self.hass.services.async_services_for_domain("notify"):
if service not in self._exclude:
unordered_services.add(service)

View File

@@ -3,10 +3,12 @@ from __future__ import annotations
from datetime import datetime, timedelta
import secrets
from typing import NamedTuple
from typing import TYPE_CHECKING, Any, NamedTuple
import uuid
import attr
from attr import Attribute
from attr.setters import validate
from homeassistant.const import __version__
from homeassistant.util import dt as dt_util
@@ -14,6 +16,12 @@ from homeassistant.util import dt as dt_util
from . import permissions as perm_mdl
from .const import GROUP_ID_ADMIN
if TYPE_CHECKING:
from functools import cached_property
else:
from homeassistant.backports.functools import cached_property
TOKEN_TYPE_NORMAL = "normal"
TOKEN_TYPE_SYSTEM = "system"
TOKEN_TYPE_LONG_LIVED_ACCESS_TOKEN = "long_lived_access_token"
@@ -29,19 +37,27 @@ class Group:
system_generated: bool = attr.ib(default=False)
@attr.s(slots=True)
def _handle_permissions_change(self: User, user_attr: Attribute, new: Any) -> Any:
"""Handle a change to a permissions."""
self.invalidate_cache()
return validate(self, user_attr, new)
@attr.s(slots=False)
class User:
"""A user."""
name: str | None = attr.ib()
perm_lookup: perm_mdl.PermissionLookup = attr.ib(eq=False, order=False)
id: str = attr.ib(factory=lambda: uuid.uuid4().hex)
is_owner: bool = attr.ib(default=False)
is_active: bool = attr.ib(default=False)
is_owner: bool = attr.ib(default=False, on_setattr=_handle_permissions_change)
is_active: bool = attr.ib(default=False, on_setattr=_handle_permissions_change)
system_generated: bool = attr.ib(default=False)
local_only: bool = attr.ib(default=False)
groups: list[Group] = attr.ib(factory=list, eq=False, order=False)
groups: list[Group] = attr.ib(
factory=list, eq=False, order=False, on_setattr=_handle_permissions_change
)
# List of credentials of a user.
credentials: list[Credentials] = attr.ib(factory=list, eq=False, order=False)
@@ -51,40 +67,31 @@ class User:
factory=dict, eq=False, order=False
)
_permissions: perm_mdl.PolicyPermissions | None = attr.ib(
init=False,
eq=False,
order=False,
default=None,
)
@property
@cached_property
def permissions(self) -> perm_mdl.AbstractPermissions:
"""Return permissions object for user."""
if self.is_owner:
return perm_mdl.OwnerPermissions
if self._permissions is not None:
return self._permissions
self._permissions = perm_mdl.PolicyPermissions(
return perm_mdl.PolicyPermissions(
perm_mdl.merge_policies([group.policy for group in self.groups]),
self.perm_lookup,
)
return self._permissions
@property
@cached_property
def is_admin(self) -> bool:
"""Return if user is part of the admin group."""
if self.is_owner:
return True
return self.is_owner or (
self.is_active and any(gr.id == GROUP_ID_ADMIN for gr in self.groups)
)
return self.is_active and any(gr.id == GROUP_ID_ADMIN for gr in self.groups)
def invalidate_permission_cache(self) -> None:
"""Invalidate permission cache."""
self._permissions = None
def invalidate_cache(self) -> None:
"""Invalidate permission and is_admin cache."""
for attr_to_invalidate in ("permissions", "is_admin"):
# try is must more efficient than suppress
try: # noqa: SIM105
delattr(self, attr_to_invalidate)
except AttributeError:
pass
@attr.s(slots=True)
@@ -110,6 +117,8 @@ class RefreshToken:
last_used_at: datetime | None = attr.ib(default=None)
last_used_ip: str | None = attr.ib(default=None)
expire_at: float | None = attr.ib(default=None)
credential: Credentials | None = attr.ib(default=None)
version: str | None = attr.ib(default=__version__)

View File

@@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Any
import voluptuous as vol
import yarl
from . import config as conf_util, config_entries, core, loader
from . import config as conf_util, config_entries, core, loader, requirements
from .components import http
from .const import (
FORMAT_DATETIME,
@@ -27,6 +27,7 @@ from .const import (
from .exceptions import HomeAssistantError
from .helpers import (
area_registry,
config_validation as cv,
device_registry,
entity,
entity_registry,
@@ -38,7 +39,6 @@ from .helpers import (
from .helpers.dispatcher import async_dispatcher_send
from .helpers.typing import ConfigType
from .setup import (
DATA_SETUP,
DATA_SETUP_STARTED,
DATA_SETUP_TIME,
async_notify_setup_error,
@@ -105,6 +105,52 @@ STAGE_1_INTEGRATIONS = {
# Ensure supervisor is available
"hassio",
}
DEFAULT_INTEGRATIONS = {
# These integrations are set up unless recovery mode is activated.
#
# Integrations providing core functionality:
"application_credentials",
"frontend",
"hardware",
"logger",
"network",
"system_health",
#
# Key-feature:
"automation",
"person",
"scene",
"script",
"tag",
"zone",
#
# Built-in helpers:
"counter",
"input_boolean",
"input_button",
"input_datetime",
"input_number",
"input_select",
"input_text",
"schedule",
"timer",
}
DEFAULT_INTEGRATIONS_RECOVERY_MODE = {
# These integrations are set up if recovery mode is activated.
"frontend",
}
DEFAULT_INTEGRATIONS_SUPERVISOR = {
# These integrations are set up if using the Supervisor
"hassio",
}
DEFAULT_INTEGRATIONS_NON_SUPERVISOR = {
# These integrations are set up if not using the Supervisor
"backup",
}
CRITICAL_INTEGRATIONS = {
# Recovery mode is activated if these integrations fail to set up
"frontend",
}
async def async_setup_hass(
@@ -164,11 +210,11 @@ async def async_setup_hass(
_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 recovery mode")
elif any(domain not in hass.config.components for domain in CRITICAL_INTEGRATIONS):
_LOGGER.warning(
"Detected that %s did not load. Activating recovery mode",
",".join(CRITICAL_INTEGRATIONS),
)
# 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):
@@ -228,7 +274,7 @@ def open_hass_ui(hass: core.HomeAssistant) -> None:
)
async def load_registries(hass: core.HomeAssistant) -> None:
async def async_load_base_functionality(hass: core.HomeAssistant) -> None:
"""Load the registries and cache the result of platform.uname().processor."""
if DATA_REGISTRIES_LOADED in hass.data:
return
@@ -255,6 +301,7 @@ async def load_registries(hass: core.HomeAssistant) -> None:
hass.async_add_executor_job(_cache_uname_processor),
template.async_load_custom_templates(hass),
restore_state.async_load(hass),
hass.config_entries.async_initialize(),
)
@@ -269,8 +316,7 @@ async def async_from_config_dict(
start = monotonic()
hass.config_entries = config_entries.ConfigEntries(hass, config)
await hass.config_entries.async_initialize()
await load_registries(hass)
await async_load_base_functionality(hass)
# Set up core.
_LOGGER.debug("Setting up %s", CORE_INTEGRATIONS)
@@ -473,15 +519,22 @@ async def async_mount_local_lib_path(config_dir: str) -> str:
def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
"""Get domains of components to set up."""
# Filter out the repeating and common config section [homeassistant]
domains = {key.partition(" ")[0] for key in config if key != core.DOMAIN}
domains = {
domain for key in config if (domain := cv.domain_key(key)) != core.DOMAIN
}
# Add config entry domains
# Add config entry and default domains
if not hass.config.recovery_mode:
domains.update(DEFAULT_INTEGRATIONS)
domains.update(hass.config_entries.async_domains())
else:
domains.update(DEFAULT_INTEGRATIONS_RECOVERY_MODE)
# Make sure the Hass.io component is loaded
# Add domains depending on if the Supervisor is used or not
if "SUPERVISOR" in os.environ:
domains.add("hassio")
domains.update(DEFAULT_INTEGRATIONS_SUPERVISOR)
else:
domains.update(DEFAULT_INTEGRATIONS_NON_SUPERVISOR)
return domains
@@ -524,11 +577,13 @@ async def async_setup_multi_components(
config: dict[str, Any],
) -> None:
"""Set up multiple domains. Log on failure."""
# Avoid creating tasks for domains that were setup in a previous stage
domains_not_yet_setup = domains - hass.config.components
futures = {
domain: hass.async_create_task(
async_setup_component(hass, domain, config), f"setup component {domain}"
)
for domain in domains
for domain in domains_not_yet_setup
}
results = await asyncio.gather(*futures.values(), return_exceptions=True)
for idx, domain in enumerate(futures):
@@ -552,6 +607,8 @@ async def _async_set_up_integrations(
domains_to_setup = _get_domains(hass, config)
needed_requirements: set[str] = set()
# Resolve all dependencies so we know all integrations
# that will have to be loaded and start rightaway
integration_cache: dict[str, loader.Integration] = {}
@@ -567,6 +624,25 @@ async def _async_set_up_integrations(
).values()
if isinstance(int_or_exc, loader.Integration)
]
manifest_deps: set[str] = set()
for itg in integrations_to_process:
manifest_deps.update(itg.dependencies)
manifest_deps.update(itg.after_dependencies)
needed_requirements.update(itg.requirements)
if manifest_deps:
# If there are dependencies, try to preload all
# the integrations manifest at once and add them
# to the list of requirements we need to install
# so we can try to check if they are already installed
# in a single call below which avoids each integration
# having to wait for the lock to do it individually
deps = await loader.async_get_integrations(hass, manifest_deps)
for dependant_itg in deps.values():
if isinstance(dependant_itg, loader.Integration):
needed_requirements.update(dependant_itg.requirements)
resolve_dependencies_tasks = [
itg.resolve_dependencies()
for itg in integrations_to_process
@@ -588,6 +664,14 @@ async def _async_set_up_integrations(
_LOGGER.info("Domains to be set up: %s", domains_to_setup)
# Optimistically check if requirements are already installed
# ahead of setting up the integrations so we can prime the cache
# We do not wait for this since its an optimization only
hass.async_create_background_task(
requirements.async_load_installed_versions(hass, needed_requirements),
"check installed requirements",
)
# Initialize recorder
if "recorder" in domains_to_setup:
recorder.async_initialize_recorder(hass)

View File

@@ -0,0 +1,5 @@
{
"domain": "flexit",
"name": "Flexit",
"integrations": ["flexit", "flexit_bacnet"]
}

View File

@@ -0,0 +1,5 @@
{
"domain": "govee",
"name": "Govee",
"integrations": ["govee_ble", "govee_light_local"]
}

View File

@@ -0,0 +1,5 @@
{
"domain": "rainforest_automation",
"name": "Rainforest Automation",
"integrations": ["rainforest_eagle", "rainforest_raven"]
}

View File

@@ -0,0 +1,5 @@
{
"domain": "traccar",
"name": "Traccar",
"integrations": ["traccar", "traccar_server"]
}

View File

@@ -11,6 +11,7 @@ from __future__ import annotations
import logging
from homeassistant.core import HomeAssistant, split_entity_id
from homeassistant.helpers.group import expand_entity_ids
_LOGGER = logging.getLogger(__name__)
@@ -21,7 +22,7 @@ def is_on(hass: HomeAssistant, entity_id: str | None = None) -> bool:
If there is no entity id given we will check all.
"""
if entity_id:
entity_ids = hass.components.group.expand_entity_ids([entity_id])
entity_ids = expand_entity_ids(hass, [entity_id])
else:
entity_ids = hass.states.entity_ids()

View File

@@ -63,12 +63,12 @@ AUTOMATION_SCHEMA = vol.Schema({ATTR_ENTITY_ID: cv.entity_ids})
PLATFORMS = [
Platform.ALARM_CONTROL_PANEL,
Platform.BINARY_SENSOR,
Platform.LOCK,
Platform.SWITCH,
Platform.COVER,
Platform.CAMERA,
Platform.COVER,
Platform.LIGHT,
Platform.LOCK,
Platform.SENSOR,
Platform.SWITCH,
]

View File

@@ -17,8 +17,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from .const import DOMAIN
ICON = "mdi:security"
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
@@ -33,7 +31,6 @@ async def async_setup_entry(
class AbodeAlarm(AbodeDevice, alarm.AlarmControlPanelEntity):
"""An alarm_control_panel implementation for Abode."""
_attr_icon = ICON
_attr_name = None
_attr_code_arm_required = False
_attr_supported_features = (

View File

@@ -0,0 +1,9 @@
{
"entity": {
"switch": {
"automation": {
"default": "mdi:robot"
}
}
}
}

View File

@@ -27,7 +27,7 @@ ABODE_TEMPERATURE_UNIT_HA_UNIT = {
}
@dataclass
@dataclass(frozen=True)
class AbodeSensorDescriptionMixin:
"""Mixin for Abode sensor."""
@@ -35,7 +35,7 @@ class AbodeSensorDescriptionMixin:
native_unit_of_measurement_fn: Callable[[AbodeSense], str]
@dataclass
@dataclass(frozen=True)
class AbodeSensorDescription(SensorEntityDescription, AbodeSensorDescriptionMixin):
"""Class describing Abode sensor entities."""

View File

@@ -17,8 +17,6 @@ from .const import DOMAIN
DEVICE_TYPES = [CONST.TYPE_SWITCH, CONST.TYPE_VALVE]
ICON = "mdi:robot"
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
@@ -63,7 +61,7 @@ class AbodeSwitch(AbodeDevice, SwitchEntity):
class AbodeAutomationSwitch(AbodeAutomation, SwitchEntity):
"""A switch implementation for Abode automations."""
_attr_icon = ICON
_attr_translation_key = "automation"
async def async_added_to_hass(self) -> None:
"""Set up trigger automation service."""

View File

@@ -75,7 +75,7 @@ async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
await hass.config_entries.async_reload(entry.entry_id)
class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): # pylint: disable=hass-enforce-coordinator-module
"""Class to manage fetching AccuWeather data API."""
def __init__(

View File

@@ -45,14 +45,14 @@ from .const import (
PARALLEL_UPDATES = 1
@dataclass
@dataclass(frozen=True)
class AccuWeatherSensorDescriptionMixin:
"""Mixin for AccuWeather sensor."""
value_fn: Callable[[dict[str, Any]], str | int | float | None]
@dataclass
@dataclass(frozen=True)
class AccuWeatherSensorDescription(
SensorEntityDescription, AccuWeatherSensorDescriptionMixin
):

View File

@@ -66,12 +66,12 @@ class AcmedaBase(entity.Entity):
@property
def unique_id(self) -> str:
"""Return the unique ID of this roller."""
return self.roller.id
return self.roller.id # type: ignore[no-any-return]
@property
def device_id(self) -> str:
"""Return the ID of this roller."""
return self.roller.id
return self.roller.id # type: ignore[no-any-return]
@property
def device_info(self) -> dr.DeviceInfo:

View File

@@ -30,7 +30,7 @@ async def async_setup_entry(
current: set[int] = set()
@callback
def async_add_acmeda_covers():
def async_add_acmeda_covers() -> None:
async_add_acmeda_entities(
hass, AcmedaCover, config_entry, current, async_add_entities
)
@@ -95,7 +95,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
@property
def is_closed(self) -> bool:
"""Return if the cover is closed."""
return self.roller.closed_percent == 100
return self.roller.closed_percent == 100 # type: ignore[no-any-return]
async def async_close_cover(self, **kwargs: Any) -> None:
"""Close the roller."""

View File

@@ -1,6 +1,8 @@
"""Helper functions for Acmeda Pulse."""
from __future__ import annotations
from aiopulse import Roller
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import device_registry as dr
@@ -16,7 +18,7 @@ def async_add_acmeda_entities(
config_entry: ConfigEntry,
current: set[int],
async_add_entities: AddEntitiesCallback,
):
) -> None:
"""Add any new entities."""
hub = hass.data[DOMAIN][config_entry.entry_id]
LOGGER.debug("Looking for new %s on: %s", entity_class.__name__, hub.host)
@@ -34,7 +36,9 @@ def async_add_acmeda_entities(
async_add_entities(new_items)
async def update_devices(hass: HomeAssistant, config_entry: ConfigEntry, api):
async def update_devices(
hass: HomeAssistant, config_entry: ConfigEntry, api: dict[int, Roller]
) -> None:
"""Tell hass that device info has been updated."""
dev_registry = dr.async_get(hass)

View File

@@ -2,9 +2,12 @@
from __future__ import annotations
import asyncio
from collections.abc import Callable
import aiopulse
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.dispatcher import async_dispatcher_send
from .const import ACMEDA_ENTITY_REMOVE, ACMEDA_HUB_UPDATE, LOGGER
@@ -14,31 +17,29 @@ from .helpers import update_devices
class PulseHub:
"""Manages a single Pulse Hub."""
def __init__(self, hass, config_entry):
api: aiopulse.Hub
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None:
"""Initialize the system."""
self.config_entry = config_entry
self.hass = hass
self.api: aiopulse.Hub | None = None
self.tasks = []
self.current_rollers = {}
self.cleanup_callbacks = []
self.tasks: list[asyncio.Task[None]] = []
self.current_rollers: dict[int, aiopulse.Roller] = {}
self.cleanup_callbacks: list[Callable[[], None]] = []
@property
def title(self):
def title(self) -> str:
"""Return the title of the hub shown in the integrations list."""
return f"{self.api.id} ({self.api.host})"
@property
def host(self):
def host(self) -> str:
"""Return the host of this hub."""
return self.config_entry.data["host"]
return self.config_entry.data["host"] # type: ignore[no-any-return]
async def async_setup(self, tries=0):
async def async_setup(self, tries: int = 0) -> bool:
"""Set up a hub based on host parameter."""
host = self.host
hub = aiopulse.Hub(host)
self.api = hub
self.api = hub = aiopulse.Hub(self.host)
hub.callback_subscribe(self.async_notify_update)
self.tasks.append(asyncio.create_task(hub.run()))
@@ -46,7 +47,7 @@ class PulseHub:
LOGGER.debug("Hub setup complete")
return True
async def async_reset(self):
async def async_reset(self) -> bool:
"""Reset this hub to default state."""
for cleanup_callback in self.cleanup_callbacks:
@@ -66,7 +67,7 @@ class PulseHub:
return True
async def async_notify_update(self, update_type):
async def async_notify_update(self, update_type: aiopulse.UpdateType) -> None:
"""Evaluate entities when hub reports that update has occurred."""
LOGGER.debug("Hub {update_type.name} updated")

View File

@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/acmeda",
"iot_class": "local_push",
"loggers": ["aiopulse"],
"requirements": ["aiopulse==0.4.3"]
"requirements": ["aiopulse==0.4.4"]
}

View File

@@ -25,7 +25,7 @@ async def async_setup_entry(
current: set[int] = set()
@callback
def async_add_acmeda_sensors():
def async_add_acmeda_sensors() -> None:
async_add_acmeda_entities(
hass, AcmedaBattery, config_entry, current, async_add_entities
)
@@ -48,4 +48,4 @@ class AcmedaBattery(AcmedaBase, SensorEntity):
@property
def native_value(self) -> float | int | None:
"""Return the state of the device."""
return self.roller.battery
return self.roller.battery # type: ignore[no-any-return]

View File

@@ -24,7 +24,7 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
# convert title and unique_id to string
if config_entry.version == 1:
if isinstance(config_entry.unique_id, int):
hass.config_entries.async_update_entry(
hass.config_entries.async_update_entry( # type: ignore[unreachable]
config_entry,
unique_id=str(config_entry.unique_id),
title=str(config_entry.title),

View File

@@ -67,9 +67,14 @@ class AdaxDevice(ClimateEntity):
_attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
_attr_max_temp = 35
_attr_min_temp = 5
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) -> None:
"""Initialize the heater."""
@@ -137,7 +142,7 @@ class LocalAdaxDevice(ClimateEntity):
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, adax_data_handler, unique_id):
def __init__(self, adax_data_handler: AdaxLocal, unique_id: str) -> None:
"""Initialize the heater."""
self._adax_data_handler = adax_data_handler
self._attr_unique_id = unique_id

View File

@@ -36,7 +36,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
VERSION = 2
async def async_step_user(self, user_input=None):
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the initial step."""
data_schema = vol.Schema(
{
@@ -59,7 +61,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
return await self.async_step_local()
return await self.async_step_cloud()
async def async_step_local(self, user_input=None):
async def async_step_local(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the local step."""
data_schema = vol.Schema(
{vol.Required(WIFI_SSID): str, vol.Required(WIFI_PSWD): str}

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.3.0", "Adax-local==0.1.5"]
"requirements": ["adax==0.4.0", "Adax-local==0.1.5"]
}

View File

@@ -0,0 +1,75 @@
{
"entity": {
"sensor": {
"dns_queries": {
"default": "mdi:magnify"
},
"dns_queries_blocked": {
"default": "mdi:magnify-close"
},
"dns_queries_blocked_ratio": {
"default": "mdi:magnify-close"
},
"parental_control_blocked": {
"default": "mdi:human-male-girl"
},
"safe_browsing_blocked": {
"default": "mdi:shield-half-full"
},
"safe_searches_enforced": {
"default": "mdi:shield-search"
},
"average_processing_speed": {
"default": "mdi:speedometer"
},
"rules_count": {
"default": "mdi:counter"
}
},
"switch": {
"protection": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"parental": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"safe_search": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"safe_browsing": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"filtering": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"query_log": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
}
}
},
"services": {
"add_url": "mdi:link-plus",
"remove_url": "mdi:link-off",
"enable_url": "mdi:link-variant",
"disable_url": "mdi:link-variant-off",
"refresh": "mdi:refresh"
}
}

View File

@@ -22,7 +22,7 @@ SCAN_INTERVAL = timedelta(seconds=300)
PARALLEL_UPDATES = 4
@dataclass(kw_only=True)
@dataclass(frozen=True, kw_only=True)
class AdGuardHomeEntityDescription(SensorEntityDescription):
"""Describes AdGuard Home sensor entity."""
@@ -33,56 +33,48 @@ SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
AdGuardHomeEntityDescription(
key="dns_queries",
translation_key="dns_queries",
icon="mdi:magnify",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.dns_queries(),
),
AdGuardHomeEntityDescription(
key="blocked_filtering",
translation_key="dns_queries_blocked",
icon="mdi:magnify-close",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.blocked_filtering(),
),
AdGuardHomeEntityDescription(
key="blocked_percentage",
translation_key="dns_queries_blocked_ratio",
icon="mdi:magnify-close",
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda adguard: adguard.stats.blocked_percentage(),
),
AdGuardHomeEntityDescription(
key="blocked_parental",
translation_key="parental_control_blocked",
icon="mdi:human-male-girl",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_parental(),
),
AdGuardHomeEntityDescription(
key="blocked_safebrowsing",
translation_key="safe_browsing_blocked",
icon="mdi:shield-half-full",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safebrowsing(),
),
AdGuardHomeEntityDescription(
key="enforced_safesearch",
translation_key="safe_searches_enforced",
icon="mdi:shield-search",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safesearch(),
),
AdGuardHomeEntityDescription(
key="average_speed",
translation_key="average_processing_speed",
icon="mdi:speedometer",
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
value_fn=lambda adguard: adguard.stats.avg_processing_time(),
),
AdGuardHomeEntityDescription(
key="rules_count",
translation_key="rules_count",
icon="mdi:counter",
native_unit_of_measurement="rules",
value_fn=lambda adguard: adguard.filtering.rules_count(allowlist=False),
entity_registry_enabled_default=False,

View File

@@ -10,6 +10,9 @@
"username": "[%key:common::config_flow::data::username%]",
"ssl": "[%key:common::config_flow::data::ssl%]",
"verify_ssl": "[%key:common::config_flow::data::verify_ssl%]"
},
"data_description": {
"host": "The hostname or IP address of the device running your AdGuard Home."
}
},
"hassio_confirm": {

View File

@@ -21,7 +21,7 @@ SCAN_INTERVAL = timedelta(seconds=10)
PARALLEL_UPDATES = 1
@dataclass(kw_only=True)
@dataclass(frozen=True, kw_only=True)
class AdGuardHomeSwitchEntityDescription(SwitchEntityDescription):
"""Describes AdGuard Home switch entity."""
@@ -34,7 +34,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="protection",
translation_key="protection",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.protection_enabled,
turn_on_fn=lambda adguard: adguard.enable_protection,
turn_off_fn=lambda adguard: adguard.disable_protection,
@@ -42,7 +41,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="parental",
translation_key="parental",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.parental.enabled,
turn_on_fn=lambda adguard: adguard.parental.enable,
turn_off_fn=lambda adguard: adguard.parental.disable,
@@ -50,7 +48,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="safesearch",
translation_key="safe_search",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safesearch.enabled,
turn_on_fn=lambda adguard: adguard.safesearch.enable,
turn_off_fn=lambda adguard: adguard.safesearch.disable,
@@ -58,7 +55,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="safebrowsing",
translation_key="safe_browsing",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safebrowsing.enabled,
turn_on_fn=lambda adguard: adguard.safebrowsing.enable,
turn_off_fn=lambda adguard: adguard.safebrowsing.disable,
@@ -66,7 +62,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="filtering",
translation_key="filtering",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.filtering.enabled,
turn_on_fn=lambda adguard: adguard.filtering.enable,
turn_off_fn=lambda adguard: adguard.filtering.disable,
@@ -74,7 +69,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="querylog",
translation_key="query_log",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.querylog.enabled,
turn_on_fn=lambda adguard: adguard.querylog.enable,
turn_off_fn=lambda adguard: adguard.querylog.disable,

View File

@@ -8,6 +8,7 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_IP_ADDRESS, CONF_PORT, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.debounce import Debouncer
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import ADVANTAGE_AIR_RETRY, DOMAIN
@@ -18,14 +19,15 @@ PLATFORMS = [
Platform.BINARY_SENSOR,
Platform.CLIMATE,
Platform.COVER,
Platform.LIGHT,
Platform.SELECT,
Platform.SENSOR,
Platform.SWITCH,
Platform.UPDATE,
Platform.LIGHT,
]
_LOGGER = logging.getLogger(__name__)
REQUEST_REFRESH_DELAY = 0.5
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
@@ -51,6 +53,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
name="Advantage Air",
update_method=async_get,
update_interval=timedelta(seconds=ADVANTAGE_AIR_SYNC_INTERVAL),
request_refresh_debouncer=Debouncer(
hass, _LOGGER, cooldown=REQUEST_REFRESH_DELAY, immediate=False
),
)
await coordinator.async_config_entry_first_refresh()

View File

@@ -21,6 +21,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
ADVANTAGE_AIR_AUTOFAN_ENABLED,
ADVANTAGE_AIR_STATE_CLOSE,
ADVANTAGE_AIR_STATE_OFF,
ADVANTAGE_AIR_STATE_ON,
@@ -39,16 +40,6 @@ ADVANTAGE_AIR_HVAC_MODES = {
}
HASS_HVAC_MODES = {v: k for k, v in ADVANTAGE_AIR_HVAC_MODES.items()}
ADVANTAGE_AIR_FAN_MODES = {
"autoAA": FAN_AUTO,
"low": FAN_LOW,
"medium": FAN_MEDIUM,
"high": FAN_HIGH,
}
HASS_FAN_MODES = {v: k for k, v in ADVANTAGE_AIR_FAN_MODES.items()}
FAN_SPEEDS = {FAN_LOW: 30, FAN_MEDIUM: 60, FAN_HIGH: 100}
ADVANTAGE_AIR_AUTOFAN = "aaAutoFanModeEnabled"
ADVANTAGE_AIR_MYZONE = "MyZone"
ADVANTAGE_AIR_MYAUTO = "MyAuto"
ADVANTAGE_AIR_MYAUTO_ENABLED = "myAutoModeEnabled"
@@ -56,6 +47,7 @@ ADVANTAGE_AIR_MYTEMP = "MyTemp"
ADVANTAGE_AIR_MYTEMP_ENABLED = "climateControlModeEnabled"
ADVANTAGE_AIR_HEAT_TARGET = "myAutoHeatTargetTemp"
ADVANTAGE_AIR_COOL_TARGET = "myAutoCoolTargetTemp"
ADVANTAGE_AIR_MYFAN = "autoAA"
PARALLEL_UPDATES = 0
@@ -85,27 +77,30 @@ async def async_setup_entry(
class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
"""AdvantageAir AC unit."""
_attr_fan_modes = [FAN_LOW, FAN_MEDIUM, FAN_HIGH]
_attr_fan_modes = [FAN_LOW, FAN_MEDIUM, FAN_HIGH, FAN_AUTO]
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
_attr_name = None
_attr_hvac_modes = [
HVACMode.OFF,
HVACMode.COOL,
HVACMode.HEAT,
HVACMode.FAN_ONLY,
HVACMode.DRY,
]
_attr_supported_features = ClimateEntityFeature.FAN_MODE
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, instance: AdvantageAirData, ac_key: str) -> None:
"""Initialize an AdvantageAir AC unit."""
super().__init__(instance, ac_key)
self._attr_supported_features = (
ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
self._attr_hvac_modes = [
HVACMode.OFF,
HVACMode.COOL,
HVACMode.HEAT,
HVACMode.FAN_ONLY,
HVACMode.DRY,
]
# Set supported features and HVAC modes based on current operating mode
if self._ac.get(ADVANTAGE_AIR_MYAUTO_ENABLED):
# MyAuto
@@ -118,10 +113,6 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
# MyZone
self._attr_supported_features |= ClimateEntityFeature.TARGET_TEMPERATURE
# Add "ezfan" mode if supported
if self._ac.get(ADVANTAGE_AIR_AUTOFAN):
self._attr_fan_modes += [FAN_AUTO]
@property
def current_temperature(self) -> float | None:
"""Return the selected zones current temperature."""
@@ -151,7 +142,7 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
@property
def fan_mode(self) -> str | None:
"""Return the current fan modes."""
return ADVANTAGE_AIR_FAN_MODES.get(self._ac["fan"])
return FAN_AUTO if self._ac["fan"] == ADVANTAGE_AIR_MYFAN else self._ac["fan"]
@property
def target_temperature_high(self) -> float | None:
@@ -189,7 +180,11 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set the Fan Mode."""
await self.async_update_ac({"fan": HASS_FAN_MODES.get(fan_mode)})
if fan_mode == FAN_AUTO and self._ac.get(ADVANTAGE_AIR_AUTOFAN_ENABLED):
mode = ADVANTAGE_AIR_MYFAN
else:
mode = fan_mode
await self.async_update_ac({"fan": mode})
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set the Temperature."""
@@ -208,11 +203,16 @@ class AdvantageAirZone(AdvantageAirZoneEntity, ClimateEntity):
"""AdvantageAir MyTemp Zone control."""
_attr_hvac_modes = [HVACMode.OFF, HVACMode.HEAT_COOL]
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an AdvantageAir Zone control."""

View File

@@ -5,3 +5,4 @@ ADVANTAGE_AIR_STATE_OPEN = "open"
ADVANTAGE_AIR_STATE_CLOSE = "close"
ADVANTAGE_AIR_STATE_ON = "on"
ADVANTAGE_AIR_STATE_OFF = "off"
ADVANTAGE_AIR_AUTOFAN_ENABLED = "aaAutoFanModeEnabled"

View File

@@ -30,7 +30,7 @@ class AdvantageAirEntity(CoordinatorEntity):
async def update_handle(*values):
try:
if await func(*keys, *values):
await self.coordinator.async_refresh()
await self.coordinator.async_request_refresh()
except ApiError as err:
raise HomeAssistantError(err) from err

View File

@@ -40,6 +40,7 @@ async def async_setup_entry(
class AdvantageAirLight(AdvantageAirEntity, LightEntity):
"""Representation of Advantage Air Light."""
_attr_color_mode = ColorMode.ONOFF
_attr_supported_color_modes = {ColorMode.ONOFF}
_attr_name = None
@@ -82,7 +83,8 @@ class AdvantageAirLight(AdvantageAirEntity, LightEntity):
class AdvantageAirLightDimmable(AdvantageAirLight):
"""Representation of Advantage Air Dimmable Light."""
_attr_supported_color_modes = {ColorMode.ONOFF, ColorMode.BRIGHTNESS}
_attr_color_mode = ColorMode.BRIGHTNESS
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
def __init__(self, instance: AdvantageAirData, light: dict[str, Any]) -> None:
"""Initialize an Advantage Air Dimmable Light."""
@@ -106,13 +108,15 @@ class AdvantageAirLightDimmable(AdvantageAirLight):
class AdvantageAirThingLight(AdvantageAirThingEntity, LightEntity):
"""Representation of Advantage Air Light controlled by myThings."""
_attr_color_mode = ColorMode.ONOFF
_attr_supported_color_modes = {ColorMode.ONOFF}
class AdvantageAirThingLightDimmable(AdvantageAirThingEntity, LightEntity):
"""Representation of Advantage Air Dimmable Light controlled by myThings."""
_attr_supported_color_modes = {ColorMode.ONOFF, ColorMode.BRIGHTNESS}
_attr_color_mode = ColorMode.BRIGHTNESS
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
@property
def brightness(self) -> int:

View File

@@ -7,6 +7,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
ADVANTAGE_AIR_AUTOFAN_ENABLED,
ADVANTAGE_AIR_STATE_OFF,
ADVANTAGE_AIR_STATE_ON,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
@@ -29,6 +30,8 @@ async def async_setup_entry(
for ac_key, ac_device in aircons.items():
if ac_device["info"]["freshAirStatus"] != "none":
entities.append(AdvantageAirFreshAir(instance, ac_key))
if ADVANTAGE_AIR_AUTOFAN_ENABLED in ac_device["info"]:
entities.append(AdvantageAirMyFan(instance, ac_key))
if things := instance.coordinator.data.get("myThings"):
for thing in things["things"].values():
if thing["channelDipState"] == 8: # 8 = Other relay
@@ -62,6 +65,32 @@ class AdvantageAirFreshAir(AdvantageAirAcEntity, SwitchEntity):
await self.async_update_ac({"freshAirStatus": ADVANTAGE_AIR_STATE_OFF})
class AdvantageAirMyFan(AdvantageAirAcEntity, SwitchEntity):
"""Representation of Advantage Air MyFan control."""
_attr_icon = "mdi:fan-auto"
_attr_name = "MyFan"
_attr_device_class = SwitchDeviceClass.SWITCH
def __init__(self, instance: AdvantageAirData, ac_key: str) -> None:
"""Initialize an Advantage Air MyFan control."""
super().__init__(instance, ac_key)
self._attr_unique_id += "-myfan"
@property
def is_on(self) -> bool:
"""Return the MyFan status."""
return self._ac[ADVANTAGE_AIR_AUTOFAN_ENABLED]
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn MyFan on."""
await self.async_update_ac({ADVANTAGE_AIR_AUTOFAN_ENABLED: True})
async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn MyFan off."""
await self.async_update_ac({ADVANTAGE_AIR_AUTOFAN_ENABLED: False})
class AdvantageAirRelay(AdvantageAirThingEntity, SwitchEntity):
"""Representation of Advantage Air Thing."""

View File

@@ -18,7 +18,7 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
PLATFORMS,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
_LOGGER = logging.getLogger(__name__)

View File

@@ -1,6 +1,8 @@
"""Config flow for AEMET OpenData."""
from __future__ import annotations
from typing import Any
from aemet_opendata.exceptions import AuthError
from aemet_opendata.interface import AEMET, ConnectionOptions
import voluptuous as vol
@@ -8,6 +10,7 @@ import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.core import callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers import aiohttp_client, config_validation as cv
from homeassistant.helpers.schema_config_entry_flow import (
SchemaFlowFormStep,
@@ -29,7 +32,9 @@ OPTIONS_FLOW = {
class AemetConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Config flow for AEMET OpenData."""
async def async_step_user(self, user_input=None):
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle a flow initialized by the user."""
errors = {}

View File

@@ -59,8 +59,6 @@ ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
ATTR_API_CONDITION = "condition"
ATTR_API_FORECAST_CONDITION = "condition"
ATTR_API_FORECAST_DAILY = "forecast-daily"
ATTR_API_FORECAST_HOURLY = "forecast-hourly"
ATTR_API_FORECAST_PRECIPITATION = "precipitation"
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY = "precipitation_probability"
ATTR_API_FORECAST_TEMP = "temperature"
@@ -101,49 +99,6 @@ CONDITIONS_MAP = {
AOD_COND_SUNNY: ATTR_CONDITION_SUNNY,
}
FORECAST_MONITORED_CONDITIONS = [
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
]
MONITORED_CONDITIONS = [
ATTR_API_CONDITION,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
ATTR_API_RAIN_PROB,
ATTR_API_SNOW,
ATTR_API_SNOW_PROB,
ATTR_API_STATION_ID,
ATTR_API_STATION_NAME,
ATTR_API_STATION_TIMESTAMP,
ATTR_API_STORM_PROB,
ATTR_API_TEMPERATURE,
ATTR_API_TEMPERATURE_FEELING,
ATTR_API_TOWN_ID,
ATTR_API_TOWN_NAME,
ATTR_API_TOWN_TIMESTAMP,
ATTR_API_WIND_BEARING,
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
]
FORECAST_MODE_DAILY = "daily"
FORECAST_MODE_HOURLY = "hourly"
FORECAST_MODES = [
FORECAST_MODE_DAILY,
FORECAST_MODE_HOURLY,
]
FORECAST_MODE_ATTR_API = {
FORECAST_MODE_DAILY: ATTR_API_FORECAST_DAILY,
FORECAST_MODE_HOURLY: ATTR_API_FORECAST_HOURLY,
}
FORECAST_MAP = {
AOD_FORECAST_DAILY: {
AOD_CONDITION: ATTR_FORECAST_CONDITION,

View File

@@ -0,0 +1,85 @@
"""Weather data coordinator for the AEMET OpenData service."""
from __future__ import annotations
from asyncio import timeout
from datetime import timedelta
import logging
from typing import Any, Final, cast
from aemet_opendata.const import (
AOD_CONDITION,
AOD_FORECAST,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_TOWN,
)
from aemet_opendata.exceptions import AemetError
from aemet_opendata.helpers import dict_nested_value
from aemet_opendata.interface import AEMET
from homeassistant.components.weather import Forecast
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CONDITIONS_MAP, DOMAIN, FORECAST_MAP
_LOGGER = logging.getLogger(__name__)
API_TIMEOUT: Final[int] = 120
WEATHER_UPDATE_INTERVAL = timedelta(minutes=10)
class WeatherUpdateCoordinator(DataUpdateCoordinator):
"""Weather data update coordinator."""
def __init__(
self,
hass: HomeAssistant,
aemet: AEMET,
) -> None:
"""Initialize coordinator."""
self.aemet = aemet
super().__init__(
hass,
_LOGGER,
name=DOMAIN,
update_interval=WEATHER_UPDATE_INTERVAL,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update coordinator data."""
async with timeout(API_TIMEOUT):
try:
await self.aemet.update()
except AemetError as error:
raise UpdateFailed(error) from error
data = self.aemet.data()
return {
"forecast": {
AOD_FORECAST_DAILY: self.aemet_forecast(data, AOD_FORECAST_DAILY),
AOD_FORECAST_HOURLY: self.aemet_forecast(data, AOD_FORECAST_HOURLY),
},
"lib": data,
}
def aemet_forecast(
self,
data: dict[str, Any],
forecast_mode: str,
) -> list[Forecast]:
"""Return the forecast array."""
forecasts = dict_nested_value(data, [AOD_TOWN, forecast_mode, AOD_FORECAST])
forecast_map = FORECAST_MAP[forecast_mode]
forecast_list: list[dict[str, Any]] = []
for forecast in forecasts:
cur_forecast: dict[str, Any] = {}
for api_key, ha_key in forecast_map.items():
value = forecast[api_key]
if api_key == AOD_CONDITION:
value = CONDITIONS_MAP.get(value)
cur_forecast[ha_key] = value
forecast_list += [cur_forecast]
return cast(list[Forecast], forecast_list)

View File

@@ -8,7 +8,7 @@ from aemet_opendata.helpers import dict_nested_value
from homeassistant.components.weather import Forecast
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
class AemetEntity(CoordinatorEntity[WeatherUpdateCoordinator]):

View File

@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/aemet",
"iot_class": "cloud_polling",
"loggers": ["aemet_opendata"],
"requirements": ["AEMET-OpenData==0.4.6"]
"requirements": ["AEMET-OpenData==0.4.7"]
}

View File

@@ -1,6 +1,41 @@
"""Support for the AEMET OpenData service."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from datetime import datetime
from typing import Final
from aemet_opendata.const import (
AOD_CONDITION,
AOD_FEEL_TEMP,
AOD_FORECAST_CURRENT,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_HUMIDITY,
AOD_ID,
AOD_NAME,
AOD_PRECIPITATION,
AOD_PRECIPITATION_PROBABILITY,
AOD_PRESSURE,
AOD_RAIN,
AOD_RAIN_PROBABILITY,
AOD_SNOW,
AOD_SNOW_PROBABILITY,
AOD_STATION,
AOD_STORM_PROBABILITY,
AOD_TEMP,
AOD_TEMP_MAX,
AOD_TEMP_MIN,
AOD_TIMESTAMP,
AOD_TOWN,
AOD_WEATHER,
AOD_WIND_DIRECTION,
AOD_WIND_SPEED,
AOD_WIND_SPEED_MAX,
)
from aemet_opendata.helpers import dict_nested_value
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
@@ -18,7 +53,6 @@ from homeassistant.const import (
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
from .const import (
@@ -51,172 +85,270 @@ from .const import (
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
ATTRIBUTION,
CONDITIONS_MAP,
DOMAIN,
ENTRY_NAME,
ENTRY_WEATHER_COORDINATOR,
FORECAST_MODE_ATTR_API,
FORECAST_MODE_DAILY,
FORECAST_MODES,
FORECAST_MONITORED_CONDITIONS,
MONITORED_CONDITIONS,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
@dataclass(frozen=True, kw_only=True)
class AemetSensorEntityDescription(SensorEntityDescription):
"""A class that describes AEMET OpenData sensor entities."""
keys: list[str] | None = None
value_fn: Callable[[str], datetime | float | int | str | None] = lambda value: value
FORECAST_SENSORS: Final[tuple[AemetSensorEntityDescription, ...]] = (
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_CONDITION}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_CONDITION],
name="Daily forecast condition",
value_fn=CONDITIONS_MAP.get,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_CONDITION}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_CONDITION],
name="Hourly forecast condition",
value_fn=CONDITIONS_MAP.get,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_PRECIPITATION}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_PRECIPITATION],
name="Hourly forecast precipitation",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_PRECIPITATION_PROBABILITY}",
keys=[
AOD_TOWN,
AOD_FORECAST_DAILY,
AOD_FORECAST_CURRENT,
AOD_PRECIPITATION_PROBABILITY,
],
name="Daily forecast precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_PRECIPITATION_PROBABILITY}",
keys=[
AOD_TOWN,
AOD_FORECAST_HOURLY,
AOD_FORECAST_CURRENT,
AOD_PRECIPITATION_PROBABILITY,
],
name="Hourly forecast precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TEMP}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TEMP_MAX],
name="Daily forecast temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TEMP_LOW}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TEMP_MIN],
name="Daily forecast temperature low",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TIME,
name="Time",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_TEMP}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_TEMP],
name="Hourly forecast temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TIME}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TIMESTAMP],
name="Daily forecast time",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_TIME}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_TIMESTAMP],
name="Hourly forecast time",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_WIND_BEARING}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_WIND_DIRECTION],
name="Daily forecast wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_MAX_SPEED,
name="Wind max speed",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_BEARING}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_DIRECTION],
name="Hourly forecast wind bearing",
native_unit_of_measurement=DEGREE,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_MAX_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED_MAX],
name="Hourly forecast wind max speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_WIND_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED],
name="Daily forecast wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED],
name="Hourly forecast wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
)
WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
WEATHER_SENSORS: Final[tuple[AemetSensorEntityDescription, ...]] = (
AemetSensorEntityDescription(
key=ATTR_API_CONDITION,
keys=[AOD_WEATHER, AOD_CONDITION],
name="Condition",
value_fn=CONDITIONS_MAP.get,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_HUMIDITY,
keys=[AOD_WEATHER, AOD_HUMIDITY],
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.HUMIDITY,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_PRESSURE,
keys=[AOD_WEATHER, AOD_PRESSURE],
name="Pressure",
native_unit_of_measurement=UnitOfPressure.HPA,
device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_RAIN,
keys=[AOD_WEATHER, AOD_RAIN],
name="Rain",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_RAIN_PROB,
keys=[AOD_WEATHER, AOD_RAIN_PROBABILITY],
name="Rain probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_SNOW,
keys=[AOD_WEATHER, AOD_SNOW],
name="Snow",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_SNOW_PROB,
keys=[AOD_WEATHER, AOD_SNOW_PROBABILITY],
name="Snow probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_ID,
keys=[AOD_STATION, AOD_ID],
name="Station ID",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_NAME,
keys=[AOD_STATION, AOD_NAME],
name="Station name",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_TIMESTAMP,
keys=[AOD_STATION, AOD_TIMESTAMP],
name="Station timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STORM_PROB,
keys=[AOD_WEATHER, AOD_STORM_PROBABILITY],
name="Storm probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TEMPERATURE,
keys=[AOD_WEATHER, AOD_TEMP],
name="Temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TEMPERATURE_FEELING,
keys=[AOD_WEATHER, AOD_FEEL_TEMP],
name="Temperature feeling",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_ID,
keys=[AOD_TOWN, AOD_ID],
name="Town ID",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_NAME,
keys=[AOD_TOWN, AOD_NAME],
name="Town name",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_TIMESTAMP,
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_TIMESTAMP],
name="Town timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_BEARING,
keys=[AOD_WEATHER, AOD_WIND_DIRECTION],
name="Wind bearing",
native_unit_of_measurement=DEGREE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_MAX_SPEED,
keys=[AOD_WEATHER, AOD_WIND_SPEED_MAX],
name="Wind max speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_SPEED,
keys=[AOD_WEATHER, AOD_WIND_SPEED],
name="Wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
@@ -232,108 +364,46 @@ async def async_setup_entry(
) -> None:
"""Set up AEMET OpenData sensor entities based on a config entry."""
domain_data = hass.data[DOMAIN][config_entry.entry_id]
name = domain_data[ENTRY_NAME]
weather_coordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
name: str = domain_data[ENTRY_NAME]
coordinator: WeatherUpdateCoordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
unique_id = config_entry.unique_id
entities: list[AbstractAemetSensor] = [
AemetSensor(name, unique_id, weather_coordinator, description)
for description in WEATHER_SENSOR_TYPES
if description.key in MONITORED_CONDITIONS
]
entities.extend(
[
AemetForecastSensor(
f"{domain_data[ENTRY_NAME]} {mode} Forecast",
f"{unique_id}-forecast-{mode}",
weather_coordinator,
mode,
description,
entities: list[AemetSensor] = []
for description in FORECAST_SENSORS + WEATHER_SENSORS:
if dict_nested_value(coordinator.data["lib"], description.keys) is not None:
entities.append(
AemetSensor(
name,
coordinator,
description,
config_entry,
)
)
for mode in FORECAST_MODES
for description in FORECAST_SENSOR_TYPES
if description.key in FORECAST_MONITORED_CONDITIONS
]
)
async_add_entities(entities)
class AbstractAemetSensor(CoordinatorEntity[WeatherUpdateCoordinator], SensorEntity):
"""Abstract class for an AEMET OpenData sensor."""
class AemetSensor(AemetEntity, SensorEntity):
"""Implementation of an AEMET OpenData sensor."""
_attr_attribution = ATTRIBUTION
entity_description: AemetSensorEntityDescription
def __init__(
self,
name,
unique_id,
name: str,
coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
description: AemetSensorEntityDescription,
config_entry: ConfigEntry,
) -> None:
"""Initialize the sensor."""
super().__init__(coordinator)
self.entity_description = description
self._attr_name = f"{name} {description.name}"
self._attr_unique_id = unique_id
class AemetSensor(AbstractAemetSensor):
"""Implementation of an AEMET OpenData sensor."""
def __init__(
self,
name,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
) -> None:
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
self._attr_unique_id = f"{config_entry.unique_id}-{description.key}"
@property
def native_value(self):
"""Return the state of the device."""
return self.coordinator.data.get(self.entity_description.key)
class AemetForecastSensor(AbstractAemetSensor):
"""Implementation of an AEMET OpenData forecast sensor."""
def __init__(
self,
name,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
forecast_mode,
description: SensorEntityDescription,
) -> None:
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
self._forecast_mode = forecast_mode
self._attr_entity_registry_enabled_default = (
self._forecast_mode == FORECAST_MODE_DAILY
)
@property
def native_value(self):
"""Return the state of the device."""
forecast = None
forecasts = self.coordinator.data.get(
FORECAST_MODE_ATTR_API[self._forecast_mode]
)
if forecasts:
forecast = forecasts[0].get(self.entity_description.key)
if self.entity_description.key == ATTR_API_FORECAST_TIME:
forecast = dt_util.parse_datetime(forecast)
return forecast
value = self.get_aemet_value(self.entity_description.keys)
return self.entity_description.value_fn(value)

View File

@@ -38,8 +38,8 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
WEATHER_FORECAST_MODES,
)
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
from .weather_update_coordinator import WeatherUpdateCoordinator
async def async_setup_entry(

View File

@@ -1,558 +0,0 @@
"""Weather data coordinator for the AEMET OpenData service."""
from __future__ import annotations
from asyncio import timeout
from datetime import timedelta
import logging
from typing import Any, Final, cast
from aemet_opendata.const import (
AEMET_ATTR_DATE,
AEMET_ATTR_DAY,
AEMET_ATTR_DIRECTION,
AEMET_ATTR_ELABORATED,
AEMET_ATTR_FEEL_TEMPERATURE,
AEMET_ATTR_FORECAST,
AEMET_ATTR_HUMIDITY,
AEMET_ATTR_MAX,
AEMET_ATTR_MIN,
AEMET_ATTR_PRECIPITATION,
AEMET_ATTR_PRECIPITATION_PROBABILITY,
AEMET_ATTR_SKY_STATE,
AEMET_ATTR_SNOW,
AEMET_ATTR_SNOW_PROBABILITY,
AEMET_ATTR_SPEED,
AEMET_ATTR_STATION_DATE,
AEMET_ATTR_STATION_HUMIDITY,
AEMET_ATTR_STATION_PRESSURE,
AEMET_ATTR_STATION_PRESSURE_SEA,
AEMET_ATTR_STATION_TEMPERATURE,
AEMET_ATTR_STORM_PROBABILITY,
AEMET_ATTR_TEMPERATURE,
AEMET_ATTR_WIND,
AEMET_ATTR_WIND_GUST,
AOD_CONDITION,
AOD_FORECAST,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_TOWN,
ATTR_DATA,
)
from aemet_opendata.exceptions import AemetError
from aemet_opendata.forecast import ForecastValue
from aemet_opendata.helpers import (
dict_nested_value,
get_forecast_day_value,
get_forecast_hour_value,
get_forecast_interval_value,
)
from aemet_opendata.interface import AEMET
from homeassistant.components.weather import Forecast
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.util import dt as dt_util
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_DAILY,
ATTR_API_FORECAST_HOURLY,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_MAX_SPEED,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
ATTR_API_RAIN_PROB,
ATTR_API_SNOW,
ATTR_API_SNOW_PROB,
ATTR_API_STATION_ID,
ATTR_API_STATION_NAME,
ATTR_API_STATION_TIMESTAMP,
ATTR_API_STORM_PROB,
ATTR_API_TEMPERATURE,
ATTR_API_TEMPERATURE_FEELING,
ATTR_API_TOWN_ID,
ATTR_API_TOWN_NAME,
ATTR_API_TOWN_TIMESTAMP,
ATTR_API_WIND_BEARING,
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
CONDITIONS_MAP,
DOMAIN,
FORECAST_MAP,
)
_LOGGER = logging.getLogger(__name__)
API_TIMEOUT: Final[int] = 120
STATION_MAX_DELTA = timedelta(hours=2)
WEATHER_UPDATE_INTERVAL = timedelta(minutes=10)
def format_condition(condition: str) -> str:
"""Return condition from dict CONDITIONS_MAP."""
val = ForecastValue.parse_condition(condition)
return CONDITIONS_MAP.get(val, val)
def format_float(value) -> float | None:
"""Try converting string to float."""
try:
return float(value)
except (TypeError, ValueError):
return None
def format_int(value) -> int | None:
"""Try converting string to int."""
try:
return int(value)
except (TypeError, ValueError):
return None
class WeatherUpdateCoordinator(DataUpdateCoordinator):
"""Weather data update coordinator."""
def __init__(
self,
hass: HomeAssistant,
aemet: AEMET,
) -> None:
"""Initialize coordinator."""
self.aemet = aemet
super().__init__(
hass,
_LOGGER,
name=DOMAIN,
update_interval=WEATHER_UPDATE_INTERVAL,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update coordinator data."""
async with timeout(API_TIMEOUT):
try:
await self.aemet.update()
except AemetError as error:
raise UpdateFailed(error) from error
weather_response = self.aemet.legacy_weather()
return self._convert_weather_response(weather_response)
def _convert_weather_response(self, weather_response):
"""Format the weather response correctly."""
if not weather_response or not weather_response.hourly:
return None
elaborated = dt_util.parse_datetime(
weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_ELABORATED] + "Z"
)
now = dt_util.now()
now_utc = dt_util.utcnow()
hour = now.hour
# Get current day
day = None
for cur_day in weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
cur_day_date = dt_util.parse_datetime(cur_day[AEMET_ATTR_DATE])
if now.date() == cur_day_date.date():
day = cur_day
break
# Get latest station data
station_data = None
station_dt = None
if weather_response.station:
for _station_data in weather_response.station[ATTR_DATA]:
if AEMET_ATTR_STATION_DATE in _station_data:
_station_dt = dt_util.parse_datetime(
_station_data[AEMET_ATTR_STATION_DATE] + "Z"
)
if not station_dt or _station_dt > station_dt:
station_data = _station_data
station_dt = _station_dt
condition = None
humidity = None
pressure = None
rain = None
rain_prob = None
snow = None
snow_prob = None
station_id = None
station_name = None
station_timestamp = None
storm_prob = None
temperature = None
temperature_feeling = None
town_id = None
town_name = None
town_timestamp = dt_util.as_utc(elaborated)
wind_bearing = None
wind_max_speed = None
wind_speed = None
# Get weather values
if day:
condition = self._get_condition(day, hour)
humidity = self._get_humidity(day, hour)
rain = self._get_rain(day, hour)
rain_prob = self._get_rain_prob(day, hour)
snow = self._get_snow(day, hour)
snow_prob = self._get_snow_prob(day, hour)
station_id = self._get_station_id()
station_name = self._get_station_name()
storm_prob = self._get_storm_prob(day, hour)
temperature = self._get_temperature(day, hour)
temperature_feeling = self._get_temperature_feeling(day, hour)
town_id = self._get_town_id()
town_name = self._get_town_name()
wind_bearing = self._get_wind_bearing(day, hour)
wind_max_speed = self._get_wind_max_speed(day, hour)
wind_speed = self._get_wind_speed(day, hour)
# Overwrite weather values with closest station data (if present)
if station_data:
station_timestamp = dt_util.as_utc(station_dt)
if (now_utc - station_dt) <= STATION_MAX_DELTA:
if AEMET_ATTR_STATION_HUMIDITY in station_data:
humidity = format_float(station_data[AEMET_ATTR_STATION_HUMIDITY])
if AEMET_ATTR_STATION_PRESSURE_SEA in station_data:
pressure = format_float(
station_data[AEMET_ATTR_STATION_PRESSURE_SEA]
)
elif AEMET_ATTR_STATION_PRESSURE in station_data:
pressure = format_float(station_data[AEMET_ATTR_STATION_PRESSURE])
if AEMET_ATTR_STATION_TEMPERATURE in station_data:
temperature = format_float(
station_data[AEMET_ATTR_STATION_TEMPERATURE]
)
else:
_LOGGER.warning("Station data is outdated")
# Get forecast from weather data
forecast_daily = self._get_daily_forecast_from_weather_response(
weather_response, now
)
forecast_hourly = self._get_hourly_forecast_from_weather_response(
weather_response, now
)
data = self.aemet.data()
forecasts: list[dict[str, Forecast]] = {
AOD_FORECAST_DAILY: self.aemet_forecast(data, AOD_FORECAST_DAILY),
AOD_FORECAST_HOURLY: self.aemet_forecast(data, AOD_FORECAST_HOURLY),
}
return {
ATTR_API_CONDITION: condition,
ATTR_API_FORECAST_DAILY: forecast_daily,
ATTR_API_FORECAST_HOURLY: forecast_hourly,
ATTR_API_HUMIDITY: humidity,
ATTR_API_TEMPERATURE: temperature,
ATTR_API_TEMPERATURE_FEELING: temperature_feeling,
ATTR_API_PRESSURE: pressure,
ATTR_API_RAIN: rain,
ATTR_API_RAIN_PROB: rain_prob,
ATTR_API_SNOW: snow,
ATTR_API_SNOW_PROB: snow_prob,
ATTR_API_STATION_ID: station_id,
ATTR_API_STATION_NAME: station_name,
ATTR_API_STATION_TIMESTAMP: station_timestamp,
ATTR_API_STORM_PROB: storm_prob,
ATTR_API_TOWN_ID: town_id,
ATTR_API_TOWN_NAME: town_name,
ATTR_API_TOWN_TIMESTAMP: town_timestamp,
ATTR_API_WIND_BEARING: wind_bearing,
ATTR_API_WIND_MAX_SPEED: wind_max_speed,
ATTR_API_WIND_SPEED: wind_speed,
"forecast": forecasts,
"lib": data,
}
def aemet_forecast(
self,
data: dict[str, Any],
forecast_mode: str,
) -> list[Forecast]:
"""Return the forecast array."""
forecasts = dict_nested_value(data, [AOD_TOWN, forecast_mode, AOD_FORECAST])
forecast_map = FORECAST_MAP[forecast_mode]
forecast_list: list[dict[str, Any]] = []
for forecast in forecasts:
cur_forecast: dict[str, Any] = {}
for api_key, ha_key in forecast_map.items():
value = forecast[api_key]
if api_key == AOD_CONDITION:
value = CONDITIONS_MAP.get(value)
cur_forecast[ha_key] = value
forecast_list += [cur_forecast]
return cast(list[Forecast], forecast_list)
def _get_daily_forecast_from_weather_response(self, weather_response, now):
if weather_response.daily:
parse = False
forecast = []
for day in weather_response.daily[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
day_date = dt_util.parse_datetime(day[AEMET_ATTR_DATE])
if now.date() == day_date.date():
parse = True
if parse:
cur_forecast = self._convert_forecast_day(day_date, day)
if cur_forecast:
forecast.append(cur_forecast)
return forecast
return None
def _get_hourly_forecast_from_weather_response(self, weather_response, now):
if weather_response.hourly:
parse = False
hour = now.hour
forecast = []
for day in weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
day_date = dt_util.parse_datetime(day[AEMET_ATTR_DATE])
hour_start = 0
if now.date() == day_date.date():
parse = True
hour_start = now.hour
if parse:
for hour in range(hour_start, 24):
cur_forecast = self._convert_forecast_hour(day_date, day, hour)
if cur_forecast:
forecast.append(cur_forecast)
return forecast
return None
def _convert_forecast_day(self, date, day):
if not (condition := self._get_condition_day(day)):
return None
return {
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
day
),
ATTR_API_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_API_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_API_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
}
def _convert_forecast_hour(self, date, day, hour):
if not (condition := self._get_condition(day, hour)):
return None
forecast_dt = date.replace(hour=hour, minute=0, second=0)
return {
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
day, hour
),
ATTR_API_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_API_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_API_FORECAST_WIND_MAX_SPEED: self._get_wind_max_speed(day, hour),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
}
def _calc_precipitation(self, day, hour):
"""Calculate the precipitation."""
rain_value = self._get_rain(day, hour) or 0
snow_value = self._get_snow(day, hour) or 0
if round(rain_value + snow_value, 1) == 0:
return None
return round(rain_value + snow_value, 1)
def _calc_precipitation_prob(self, day, hour):
"""Calculate the precipitation probability (hour)."""
rain_value = self._get_rain_prob(day, hour) or 0
snow_value = self._get_snow_prob(day, hour) or 0
if rain_value == 0 and snow_value == 0:
return None
return max(rain_value, snow_value)
@staticmethod
def _get_condition(day_data, hour):
"""Get weather condition (hour) from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_SKY_STATE], hour)
if val:
return format_condition(val)
return None
@staticmethod
def _get_condition_day(day_data):
"""Get weather condition (day) from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_SKY_STATE])
if val:
return format_condition(val)
return None
@staticmethod
def _get_humidity(day_data, hour):
"""Get humidity from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_HUMIDITY], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_precipitation_prob_day(day_data):
"""Get humidity from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_PRECIPITATION_PROBABILITY])
if val:
return format_int(val)
return None
@staticmethod
def _get_rain(day_data, hour):
"""Get rain from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_PRECIPITATION], hour)
if val:
return format_float(val)
return None
@staticmethod
def _get_rain_prob(day_data, hour):
"""Get rain probability from weather data."""
val = get_forecast_interval_value(
day_data[AEMET_ATTR_PRECIPITATION_PROBABILITY], hour
)
if val:
return format_int(val)
return None
@staticmethod
def _get_snow(day_data, hour):
"""Get snow from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_SNOW], hour)
if val:
return format_float(val)
return None
@staticmethod
def _get_snow_prob(day_data, hour):
"""Get snow probability from weather data."""
val = get_forecast_interval_value(day_data[AEMET_ATTR_SNOW_PROBABILITY], hour)
if val:
return format_int(val)
return None
def _get_station_id(self):
"""Get station ID from weather data."""
if self.aemet.station:
return self.aemet.station.get_id()
return None
def _get_station_name(self):
"""Get station name from weather data."""
if self.aemet.station:
return self.aemet.station.get_name()
return None
@staticmethod
def _get_storm_prob(day_data, hour):
"""Get storm probability from weather data."""
val = get_forecast_interval_value(day_data[AEMET_ATTR_STORM_PROBABILITY], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_temperature(day_data, hour):
"""Get temperature (hour) from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_TEMPERATURE], hour)
return format_int(val)
@staticmethod
def _get_temperature_day(day_data):
"""Get temperature (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_TEMPERATURE], key=AEMET_ATTR_MAX
)
return format_int(val)
@staticmethod
def _get_temperature_low_day(day_data):
"""Get temperature (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_TEMPERATURE], key=AEMET_ATTR_MIN
)
return format_int(val)
@staticmethod
def _get_temperature_feeling(day_data, hour):
"""Get temperature from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_FEEL_TEMPERATURE], hour)
return format_int(val)
def _get_town_id(self):
"""Get town ID from weather data."""
if self.aemet.town:
return self.aemet.town.get_id()
return None
def _get_town_name(self):
"""Get town name from weather data."""
if self.aemet.town:
return self.aemet.town.get_name()
return None
@staticmethod
def _get_wind_bearing(day_data, hour):
"""Get wind bearing (hour) from weather data."""
val = get_forecast_hour_value(
day_data[AEMET_ATTR_WIND_GUST], hour, key=AEMET_ATTR_DIRECTION
)[0]
return ForecastValue.parse_wind_direction(val)
@staticmethod
def _get_wind_bearing_day(day_data):
"""Get wind bearing (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_WIND], key=AEMET_ATTR_DIRECTION
)
return ForecastValue.parse_wind_direction(val)
@staticmethod
def _get_wind_max_speed(day_data, hour):
"""Get wind max speed from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_WIND_GUST], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_wind_speed(day_data, hour):
"""Get wind speed (hour) from weather data."""
val = get_forecast_hour_value(
day_data[AEMET_ATTR_WIND_GUST], hour, key=AEMET_ATTR_SPEED
)[0]
if val:
return format_int(val)
return None
@staticmethod
def _get_wind_speed_day(day_data):
"""Get wind speed (day) from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_WIND], key=AEMET_ATTR_SPEED)
if val:
return format_int(val)
return None

View File

@@ -0,0 +1 @@
"""Virtual integration: AEP Ohio."""

View File

@@ -0,0 +1,6 @@
{
"domain": "aep_ohio",
"name": "AEP Ohio",
"integration_type": "virtual",
"supported_by": "opower"
}

View File

@@ -0,0 +1 @@
"""Virtual integration: AEP Texas."""

View File

@@ -0,0 +1,6 @@
{
"domain": "aep_texas",
"name": "AEP Texas",
"integration_type": "virtual",
"supported_by": "opower"
}

View File

@@ -10,7 +10,7 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow
from homeassistant.const import CONF_API_KEY, CONF_NAME
from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN
from homeassistant.data_entry_flow import AbortFlow, FlowResult
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
@@ -51,25 +51,6 @@ class AfterShipConfigFlow(ConfigFlow, domain=DOMAIN):
async def async_step_import(self, config: dict[str, Any]) -> FlowResult:
"""Import configuration from yaml."""
try:
self._async_abort_entries_match({CONF_API_KEY: config[CONF_API_KEY]})
except AbortFlow as err:
async_create_issue(
self.hass,
DOMAIN,
"deprecated_yaml_import_issue_already_configured",
breaks_in_ha_version="2024.4.0",
is_fixable=False,
issue_domain=DOMAIN,
severity=IssueSeverity.WARNING,
translation_key="deprecated_yaml_import_issue_already_configured",
translation_placeholders={
"domain": DOMAIN,
"integration_title": "AfterShip",
},
)
raise err
async_create_issue(
self.hass,
HOMEASSISTANT_DOMAIN,
@@ -84,6 +65,8 @@ class AfterShipConfigFlow(ConfigFlow, domain=DOMAIN):
"integration_title": "AfterShip",
},
)
self._async_abort_entries_match({CONF_API_KEY: config[CONF_API_KEY]})
return self.async_create_entry(
title=config.get(CONF_NAME, "AfterShip"),
data={CONF_API_KEY: config[CONF_API_KEY]},

View File

@@ -49,10 +49,6 @@
}
},
"issues": {
"deprecated_yaml_import_issue_already_configured": {
"title": "The {integration_title} YAML configuration import failed",
"description": "Configuring {integration_title} using YAML is being removed but the YAML configuration was already imported.\n\nRemove the YAML configuration and restart Home Assistant."
},
"deprecated_yaml_import_issue_cannot_connect": {
"title": "The {integration_title} YAML configuration import failed",
"description": "Configuring {integration_title} using YAML is being removed but there was an connection error importing your YAML configuration.\n\nEnsure connection to {integration_title} works and restart Home Assistant to try again or remove the {integration_title} YAML configuration from your configuration.yaml file and continue to [set up the integration]({url}) manually."

View File

@@ -18,8 +18,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import CONNECTION, DOMAIN as AGENT_DOMAIN
ICON = "mdi:security"
CONF_HOME_MODE_NAME = "home"
CONF_AWAY_MODE_NAME = "away"
CONF_NIGHT_MODE_NAME = "night"
@@ -41,7 +39,6 @@ async def async_setup_entry(
class AgentBaseStation(AlarmControlPanelEntity):
"""Representation of an Agent DVR Alarm Control Panel."""
_attr_icon = ICON
_attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY

View File

@@ -1,5 +1,6 @@
"""Config flow to configure Agent devices."""
from contextlib import suppress
from typing import Any
from agent import AgentConnectionError, AgentError
from agent.a import Agent
@@ -7,6 +8,7 @@ import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_HOST, CONF_PORT
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN, SERVER_URL
@@ -18,11 +20,9 @@ DEFAULT_PORT = 8090
class AgentFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle an Agent config flow."""
def __init__(self):
"""Initialize the Agent config flow."""
self.device_config = {}
async def async_step_user(self, user_input=None):
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle an Agent config flow."""
errors = {}
@@ -49,13 +49,15 @@ class AgentFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
}
)
self.device_config = {
device_config = {
CONF_HOST: host,
CONF_PORT: port,
SERVER_URL: server_origin,
}
return await self._create_entry(agent_client.name)
return self.async_create_entry(
title=agent_client.name, data=device_config
)
errors["base"] = "cannot_connect"
@@ -66,11 +68,6 @@ class AgentFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="user",
description_placeholders=self.device_config,
data_schema=vol.Schema(data),
errors=errors,
)
async def _create_entry(self, server_name):
"""Create entry for device."""
return self.async_create_entry(title=server_name, data=self.device_config)

View File

@@ -6,6 +6,9 @@
"data": {
"host": "[%key:common::config_flow::data::host%]",
"port": "[%key:common::config_flow::data::port%]"
},
"data_description": {
"host": "The IP address of the Agent DVR server."
}
}
},

View File

@@ -0,0 +1,7 @@
{
"entity_component": {
"_": {
"default": "mdi:air-filter"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"entity": {
"sensor": {
"caqi": {
"default": "mdi:air-filter"
}
}
}
}

View File

@@ -56,7 +56,7 @@ from .const import (
PARALLEL_UPDATES = 1
@dataclass
@dataclass(frozen=True)
class AirlySensorEntityDescription(SensorEntityDescription):
"""Class describing Airly sensor entities."""
@@ -66,7 +66,6 @@ class AirlySensorEntityDescription(SensorEntityDescription):
SENSOR_TYPES: tuple[AirlySensorEntityDescription, ...] = (
AirlySensorEntityDescription(
key=ATTR_API_CAQI,
icon="mdi:air-filter",
translation_key="caqi",
native_unit_of_measurement="CAQI",
suggested_display_precision=0,

View File

@@ -6,8 +6,17 @@ from pyairnow import WebServiceAPI
from pyairnow.errors import AirNowError, EmptyResponseError, InvalidKeyError
import voluptuous as vol
from homeassistant import config_entries, core, data_entry_flow, exceptions
from homeassistant import core
from homeassistant.config_entries import (
ConfigEntry,
ConfigFlow,
OptionsFlow,
OptionsFlowWithConfigEntry,
)
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_RADIUS
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
@@ -16,7 +25,7 @@ from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
async def validate_input(hass: core.HomeAssistant, data):
async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> bool:
"""Validate the user input allows us to connect.
Data has the keys from DATA_SCHEMA with values provided by the user.
@@ -46,12 +55,14 @@ async def validate_input(hass: core.HomeAssistant, data):
return True
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
class AirNowConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for AirNow."""
VERSION = 2
async def async_step_user(self, user_input=None):
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the initial step."""
errors = {}
if user_input is not None:
@@ -108,18 +119,18 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@core.callback
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> config_entries.OptionsFlow:
config_entry: ConfigEntry,
) -> OptionsFlow:
"""Return the options flow."""
return OptionsFlowHandler(config_entry)
return AirNowOptionsFlowHandler(config_entry)
class OptionsFlowHandler(config_entries.OptionsFlowWithConfigEntry):
class AirNowOptionsFlowHandler(OptionsFlowWithConfigEntry):
"""Handle an options flow for AirNow."""
async def async_step_init(
self, user_input: dict[str, Any] | None = None
) -> data_entry_flow.FlowResult:
) -> FlowResult:
"""Manage the options."""
if user_input is not None:
return self.async_create_entry(data=user_input)
@@ -141,13 +152,13 @@ class OptionsFlowHandler(config_entries.OptionsFlowWithConfigEntry):
)
class CannotConnect(exceptions.HomeAssistantError):
class CannotConnect(HomeAssistantError):
"""Error to indicate we cannot connect."""
class InvalidAuth(exceptions.HomeAssistantError):
class InvalidAuth(HomeAssistantError):
"""Error to indicate there is invalid auth."""
class InvalidLocation(exceptions.HomeAssistantError):
class InvalidLocation(HomeAssistantError):
"""Error to indicate the location is invalid."""

View File

@@ -1,11 +1,15 @@
"""DataUpdateCoordinator for the AirNow integration."""
from datetime import timedelta
import logging
from typing import Any
from aiohttp import ClientSession
from aiohttp.client_exceptions import ClientConnectorError
from pyairnow import WebServiceAPI
from pyairnow.conv import aqi_to_concentration
from pyairnow.errors import AirNowError
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import (
@@ -31,12 +35,19 @@ from .const import (
_LOGGER = logging.getLogger(__name__)
class AirNowDataUpdateCoordinator(DataUpdateCoordinator):
class AirNowDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""The AirNow update coordinator."""
def __init__(
self, hass, session, api_key, latitude, longitude, distance, update_interval
):
self,
hass: HomeAssistant,
session: ClientSession,
api_key: str,
latitude: float,
longitude: float,
distance: int,
update_interval: timedelta,
) -> None:
"""Initialize."""
self.latitude = latitude
self.longitude = longitude
@@ -46,7 +57,7 @@ class AirNowDataUpdateCoordinator(DataUpdateCoordinator):
super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
async def _async_update_data(self):
async def _async_update_data(self) -> dict[str, Any]:
"""Update data via library."""
data = {}
try:

View File

@@ -0,0 +1,18 @@
{
"entity": {
"sensor": {
"aqi": {
"default": "mdi:blur"
},
"pm25": {
"default": "mdi:blur"
},
"o3": {
"default": "mdi:blur"
},
"station": {
"default": "mdi:blur"
}
}
}
}

View File

@@ -51,7 +51,7 @@ ATTR_LEVEL = "level"
ATTR_STATION = "reporting_station"
@dataclass
@dataclass(frozen=True)
class AirNowEntityDescriptionMixin:
"""Mixin for required keys."""
@@ -59,7 +59,7 @@ class AirNowEntityDescriptionMixin:
extra_state_attributes_fn: Callable[[Any], dict[str, str]] | None
@dataclass
@dataclass(frozen=True)
class AirNowEntityDescription(SensorEntityDescription, AirNowEntityDescriptionMixin):
"""Describes Airnow sensor entity."""
@@ -77,7 +77,7 @@ def station_extra_attrs(data: dict[str, Any]) -> dict[str, Any]:
SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_AQI,
icon="mdi:blur",
translation_key="aqi",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.AQI,
value_fn=lambda data: data.get(ATTR_API_AQI),
@@ -94,7 +94,7 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
),
AirNowEntityDescription(
key=ATTR_API_PM25,
icon="mdi:blur",
translation_key="pm25",
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.PM25,
@@ -104,7 +104,6 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_O3,
translation_key="o3",
icon="mdi:blur",
native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda data: data.get(ATTR_API_O3),
@@ -113,7 +112,6 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_STATION,
translation_key="station",
icon="mdi:blur",
value_fn=lambda data: data.get(ATTR_API_STATION),
extra_state_attributes_fn=station_extra_attrs,
),

View File

@@ -4,7 +4,7 @@ from __future__ import annotations
import logging
from typing import Any
from aioairq import AirQ, InvalidAuth, InvalidInput
from aioairq import AirQ, InvalidAuth
from aiohttp.client_exceptions import ClientConnectionError
import voluptuous as vol
@@ -42,44 +42,32 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
errors: dict[str, str] = {}
session = async_get_clientsession(self.hass)
airq = AirQ(user_input[CONF_IP_ADDRESS], user_input[CONF_PASSWORD], session)
try:
airq = AirQ(user_input[CONF_IP_ADDRESS], user_input[CONF_PASSWORD], session)
except InvalidInput:
await airq.validate()
except ClientConnectionError:
_LOGGER.debug(
"%s does not appear to be a valid IP address or mDNS name",
(
"Failed to connect to device %s. Check the IP address / device"
" ID as well as whether the device is connected to power and"
" the WiFi"
),
user_input[CONF_IP_ADDRESS],
)
errors["base"] = "invalid_input"
errors["base"] = "cannot_connect"
except InvalidAuth:
_LOGGER.debug(
"Incorrect password for device %s", user_input[CONF_IP_ADDRESS]
)
errors["base"] = "invalid_auth"
else:
try:
await airq.validate()
except ClientConnectionError:
_LOGGER.debug(
(
"Failed to connect to device %s. Check the IP address / device"
" ID as well as whether the device is connected to power and"
" the WiFi"
),
user_input[CONF_IP_ADDRESS],
)
errors["base"] = "cannot_connect"
except InvalidAuth:
_LOGGER.debug(
"Incorrect password for device %s", user_input[CONF_IP_ADDRESS]
)
errors["base"] = "invalid_auth"
else:
_LOGGER.debug(
"Successfully connected to %s", user_input[CONF_IP_ADDRESS]
)
_LOGGER.debug("Successfully connected to %s", user_input[CONF_IP_ADDRESS])
device_info = await airq.fetch_device_info()
await self.async_set_unique_id(device_info["id"])
self._abort_if_unique_id_configured()
device_info = await airq.fetch_device_info()
await self.async_set_unique_id(device_info["id"])
self._abort_if_unique_id_configured()
return self.async_create_entry(
title=device_info["name"], data=user_input
)
return self.async_create_entry(title=device_info["name"], data=user_input)
return self.async_show_form(
step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors

View File

@@ -3,7 +3,6 @@ from typing import Final
DOMAIN: Final = "airq"
MANUFACTURER: Final = "CorantGmbH"
TARGET_ROUTE: Final = "average"
CONCENTRATION_GRAMS_PER_CUBIC_METER: Final = "g/m³"
ACTIVITY_BECQUEREL_PER_CUBIC_METER: Final = "Bq/m³"
UPDATE_INTERVAL: float = 10.0

View File

@@ -13,7 +13,7 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN, MANUFACTURER, TARGET_ROUTE, UPDATE_INTERVAL
from .const import DOMAIN, MANUFACTURER, UPDATE_INTERVAL
_LOGGER = logging.getLogger(__name__)
@@ -56,6 +56,4 @@ class AirQCoordinator(DataUpdateCoordinator):
hw_version=info["hw_version"],
)
)
data = await self.airq.get(TARGET_ROUTE)
return self.airq.drop_uncertainties_from_data(data)
return await self.airq.get_latest_data() # type: ignore[no-any-return]

View File

@@ -0,0 +1,24 @@
{
"entity": {
"sensor": {
"health_index": {
"default": "mdi:heart-pulse"
},
"absolute_humidity": {
"default": "mdi:water"
},
"oxygen": {
"default": "mdi:leaf"
},
"performance_index": {
"default": "mdi:head-check"
},
"radon": {
"default": "mdi:radioactive"
},
"virus_index": {
"default": "mdi:virus-off"
}
}
}
}

View File

@@ -7,5 +7,5 @@
"integration_type": "hub",
"iot_class": "local_polling",
"loggers": ["aioairq"],
"requirements": ["aioairq==0.2.4"]
"requirements": ["aioairq==0.3.2"]
}

View File

@@ -37,14 +37,14 @@ from .const import (
_LOGGER = logging.getLogger(__name__)
@dataclass
@dataclass(frozen=True)
class AirQEntityDescriptionMixin:
"""Class for keys required by AirQ entity."""
value: Callable[[dict], float | int | None]
@dataclass
@dataclass(frozen=True)
class AirQEntityDescription(SensorEntityDescription, AirQEntityDescriptionMixin):
"""Describes AirQ sensor entity."""
@@ -190,7 +190,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="health_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:heart-pulse",
value=lambda data: data.get("health", 0.0) / 10.0,
),
AirQEntityDescription(
@@ -206,7 +205,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_GRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("humidity_abs"),
icon="mdi:water",
),
AirQEntityDescription(
key="h2_M1000",
@@ -263,7 +261,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("oxygen"),
icon="mdi:leaf",
),
AirQEntityDescription(
key="o3",
@@ -277,7 +274,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="performance_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:head-check",
value=lambda data: data.get("performance", 0.0) / 10.0,
),
AirQEntityDescription(
@@ -293,7 +289,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm1"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pm2_5",
@@ -301,7 +296,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm2_5"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pm10",
@@ -309,7 +303,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm10"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pressure",
@@ -376,7 +369,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=ACTIVITY_BECQUEREL_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("radon"),
icon="mdi:radioactive",
),
AirQEntityDescription(
key="temperature",
@@ -405,7 +397,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="virus_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:virus-off",
value=lambda data: data.get("virus", 0.0),
),
]

View File

@@ -4,21 +4,23 @@ from __future__ import annotations
from datetime import timedelta
import logging
from airthings import Airthings, AirthingsError
from airthings import Airthings, AirthingsDevice, AirthingsError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.const import CONF_ID, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CONF_ID, CONF_SECRET, DOMAIN
from .const import CONF_SECRET, DOMAIN
_LOGGER = logging.getLogger(__name__)
PLATFORMS: list[Platform] = [Platform.SENSOR]
SCAN_INTERVAL = timedelta(minutes=6)
AirthingsDataCoordinatorType = DataUpdateCoordinator[dict[str, AirthingsDevice]]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airthings from a config entry."""
@@ -30,10 +32,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async_get_clientsession(hass),
)
async def _update_method():
async def _update_method() -> dict[str, AirthingsDevice]:
"""Get the latest data from Airthings."""
try:
return await airthings.update_devices()
return await airthings.update_devices() # type: ignore[no-any-return]
except AirthingsError as err:
raise UpdateFailed(f"Unable to fetch data: {err}") from err

View File

@@ -8,10 +8,11 @@ import airthings
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_ID
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import CONF_ID, CONF_SECRET, DOMAIN
from .const import CONF_SECRET, DOMAIN
_LOGGER = logging.getLogger(__name__)

View File

@@ -2,5 +2,4 @@
DOMAIN = "airthings"
CONF_ID = "id"
CONF_SECRET = "secret"

View File

@@ -1,10 +1,10 @@
{
"domain": "airthings",
"name": "Airthings",
"codeowners": ["@danielhiversen"],
"codeowners": ["@danielhiversen", "@LaStrada"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airthings",
"iot_class": "cloud_polling",
"loggers": ["airthings"],
"requirements": ["airthings-cloud==0.1.0"]
"requirements": ["airthings-cloud==0.2.0"]
}

View File

@@ -24,11 +24,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
)
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import AirthingsDataCoordinatorType
from .const import DOMAIN
SENSORS: dict[str, SensorEntityDescription] = {
@@ -108,7 +106,7 @@ async def async_setup_entry(
) -> None:
"""Set up the Airthings sensor."""
coordinator: DataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator: AirthingsDataCoordinatorType = hass.data[DOMAIN][entry.entry_id]
entities = [
AirthingsHeaterEnergySensor(
coordinator,
@@ -122,7 +120,9 @@ async def async_setup_entry(
async_add_entities(entities)
class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
class AirthingsHeaterEnergySensor(
CoordinatorEntity[AirthingsDataCoordinatorType], SensorEntity
):
"""Representation of a Airthings Sensor device."""
_attr_state_class = SensorStateClass.MEASUREMENT
@@ -130,7 +130,7 @@ class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
def __init__(
self,
coordinator: DataUpdateCoordinator,
coordinator: AirthingsDataCoordinatorType,
airthings_device: AirthingsDevice,
entity_description: SensorEntityDescription,
) -> None:
@@ -149,10 +149,10 @@ class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
identifiers={(DOMAIN, airthings_device.device_id)},
name=airthings_device.name,
manufacturer="Airthings",
model=airthings_device.device_type.replace("_", " ").lower().title(),
model=airthings_device.product_name,
)
@property
def native_value(self) -> StateType:
"""Return the value reported by the sensor."""
return self.coordinator.data[self._id].sensors[self.entity_description.key]
return self.coordinator.data[self._id].sensors[self.entity_description.key] # type: ignore[no-any-return]

View File

@@ -4,7 +4,8 @@ from __future__ import annotations
from datetime import timedelta
import logging
from airthings_ble import AirthingsBluetoothDeviceData
from airthings_ble import AirthingsBluetoothDeviceData, AirthingsDevice
from bleak_retry_connector import close_stale_connections_by_address
from homeassistant.components import bluetooth
from homeassistant.config_entries import ConfigEntry
@@ -30,6 +31,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
is_metric = hass.config.units is METRIC_SYSTEM
assert address is not None
await close_stale_connections_by_address(address)
ble_device = bluetooth.async_ble_device_from_address(hass, address)
if not ble_device:
@@ -37,13 +40,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
f"Could not find Airthings device with address {address}"
)
async def _async_update_method():
airthings = AirthingsBluetoothDeviceData(_LOGGER, elevation, is_metric)
async def _async_update_method() -> AirthingsDevice:
"""Get data from Airthings BLE."""
ble_device = bluetooth.async_ble_device_from_address(hass, address)
airthings = AirthingsBluetoothDeviceData(_LOGGER, elevation, is_metric)
try:
data = await airthings.update_device(ble_device)
data = await airthings.update_device(ble_device) # type: ignore[arg-type]
except Exception as err:
raise UpdateFailed(f"Unable to fetch data: {err}") from err

View File

@@ -0,0 +1,18 @@
{
"entity": {
"sensor": {
"radon_1day_avg": {
"default": "mdi:radioactive"
},
"radon_longterm_avg": {
"default": "mdi:radioactive"
},
"radon_1day_level": {
"default": "mdi:radioactive"
},
"radon_longterm_level": {
"default": "mdi:radioactive"
}
}
}
}

View File

@@ -24,5 +24,5 @@
"dependencies": ["bluetooth_adapters"],
"documentation": "https://www.home-assistant.io/integrations/airthings_ble",
"iot_class": "local_polling",
"requirements": ["airthings-ble==0.5.6-2"]
"requirements": ["airthings-ble==0.6.1"]
}

View File

@@ -1,6 +1,7 @@
"""Support for airthings ble sensors."""
from __future__ import annotations
import dataclasses
import logging
from airthings_ble import AirthingsDevice
@@ -51,24 +52,20 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
translation_key="radon_1day_avg",
native_unit_of_measurement=VOLUME_BECQUEREL,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:radioactive",
),
"radon_longterm_avg": SensorEntityDescription(
key="radon_longterm_avg",
translation_key="radon_longterm_avg",
native_unit_of_measurement=VOLUME_BECQUEREL,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:radioactive",
),
"radon_1day_level": SensorEntityDescription(
key="radon_1day_level",
translation_key="radon_1day_level",
icon="mdi:radioactive",
),
"radon_longterm_level": SensorEntityDescription(
key="radon_longterm_level",
translation_key="radon_longterm_level",
icon="mdi:radioactive",
),
"temperature": SensorEntityDescription(
key="temperature",
@@ -106,7 +103,6 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:cloud",
),
"illuminance": SensorEntityDescription(
key="illuminance",
@@ -167,10 +163,13 @@ async def async_setup_entry(
# we need to change some units
sensors_mapping = SENSORS_MAPPING_TEMPLATE.copy()
if not is_metric:
for val in sensors_mapping.values():
for key, val in sensors_mapping.items():
if val.native_unit_of_measurement is not VOLUME_BECQUEREL:
continue
val.native_unit_of_measurement = VOLUME_PICOCURIE
sensors_mapping[key] = dataclasses.replace(
val,
native_unit_of_measurement=VOLUME_PICOCURIE,
)
entities = []
_LOGGER.debug("got sensors: %s", coordinator.data.sensors)

View File

@@ -88,9 +88,13 @@ class AirtouchAC(CoordinatorEntity, ClimateEntity):
_attr_name = None
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, coordinator, ac_number, info):
"""Initialize the climate device."""
@@ -192,9 +196,14 @@ class AirtouchGroup(CoordinatorEntity, ClimateEntity):
_attr_has_entity_name = True
_attr_name = None
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_hvac_modes = AT_GROUP_MODES
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, coordinator, group_number, info):
"""Initialize the climate device."""

View File

@@ -12,6 +12,9 @@
"title": "Set up your AirTouch 4 connection details.",
"data": {
"host": "[%key:common::config_flow::data::host%]"
},
"data_description": {
"host": "The hostname or IP address of your AirTouch controller."
}
}
}

View File

@@ -0,0 +1,50 @@
"""The Airtouch 5 integration."""
from __future__ import annotations
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from .const import DOMAIN
PLATFORMS: list[Platform] = [Platform.CLIMATE]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airtouch 5 from a config entry."""
hass.data.setdefault(DOMAIN, {})
# Create API instance
host = entry.data[CONF_HOST]
client = Airtouch5SimpleClient(host)
# Connect to the API
try:
await client.connect_and_stay_connected()
except TimeoutError as t:
raise ConfigEntryNotReady() from t
# Store an API object for your platforms to access
hass.data[DOMAIN][entry.entry_id] = client
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
client: Airtouch5SimpleClient = hass.data[DOMAIN][entry.entry_id]
await client.disconnect()
client.ac_status_callbacks.clear()
client.connection_state_callbacks.clear()
client.data_packet_callbacks.clear()
client.zone_status_callbacks.clear()
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@@ -0,0 +1,379 @@
"""AirTouch 5 component to control AirTouch 5 Climate Devices."""
import logging
from typing import Any
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
from airtouch5py.packets.ac_ability import AcAbility
from airtouch5py.packets.ac_control import (
AcControl,
SetAcFanSpeed,
SetAcMode,
SetpointControl,
SetPowerSetting,
)
from airtouch5py.packets.ac_status import AcFanSpeed, AcMode, AcPowerState, AcStatus
from airtouch5py.packets.zone_control import (
ZoneControlZone,
ZoneSettingPower,
ZoneSettingValue,
)
from airtouch5py.packets.zone_name import ZoneName
from airtouch5py.packets.zone_status import ZonePowerState, ZoneStatusZone
from homeassistant.components.climate import (
FAN_AUTO,
FAN_DIFFUSE,
FAN_FOCUS,
FAN_HIGH,
FAN_LOW,
FAN_MEDIUM,
PRESET_BOOST,
PRESET_NONE,
ClimateEntity,
ClimateEntityFeature,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN, FAN_INTELLIGENT_AUTO, FAN_TURBO
from .entity import Airtouch5Entity
_LOGGER = logging.getLogger(__name__)
AC_MODE_TO_HVAC_MODE = {
AcMode.AUTO: HVACMode.AUTO,
AcMode.AUTO_COOL: HVACMode.AUTO,
AcMode.AUTO_HEAT: HVACMode.AUTO,
AcMode.COOL: HVACMode.COOL,
AcMode.DRY: HVACMode.DRY,
AcMode.FAN: HVACMode.FAN_ONLY,
AcMode.HEAT: HVACMode.HEAT,
}
HVAC_MODE_TO_SET_AC_MODE = {
HVACMode.AUTO: SetAcMode.SET_TO_AUTO,
HVACMode.COOL: SetAcMode.SET_TO_COOL,
HVACMode.DRY: SetAcMode.SET_TO_DRY,
HVACMode.FAN_ONLY: SetAcMode.SET_TO_FAN,
HVACMode.HEAT: SetAcMode.SET_TO_HEAT,
}
AC_FAN_SPEED_TO_FAN_SPEED = {
AcFanSpeed.AUTO: FAN_AUTO,
AcFanSpeed.QUIET: FAN_DIFFUSE,
AcFanSpeed.LOW: FAN_LOW,
AcFanSpeed.MEDIUM: FAN_MEDIUM,
AcFanSpeed.HIGH: FAN_HIGH,
AcFanSpeed.POWERFUL: FAN_FOCUS,
AcFanSpeed.TURBO: FAN_TURBO,
AcFanSpeed.INTELLIGENT_AUTO_1: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_2: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_3: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_4: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_5: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_6: FAN_INTELLIGENT_AUTO,
}
FAN_MODE_TO_SET_AC_FAN_SPEED = {
FAN_AUTO: SetAcFanSpeed.SET_TO_AUTO,
FAN_DIFFUSE: SetAcFanSpeed.SET_TO_QUIET,
FAN_LOW: SetAcFanSpeed.SET_TO_LOW,
FAN_MEDIUM: SetAcFanSpeed.SET_TO_MEDIUM,
FAN_HIGH: SetAcFanSpeed.SET_TO_HIGH,
FAN_FOCUS: SetAcFanSpeed.SET_TO_POWERFUL,
FAN_TURBO: SetAcFanSpeed.SET_TO_TURBO,
FAN_INTELLIGENT_AUTO: SetAcFanSpeed.SET_TO_INTELLIGENT_AUTO,
}
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Airtouch 5 Climate entities."""
client: Airtouch5SimpleClient = hass.data[DOMAIN][config_entry.entry_id]
entities: list[ClimateEntity] = []
# Add each AC (and remember what zones they apply to).
# Each zone is controlled by a single AC
zone_to_ac: dict[int, AcAbility] = {}
for ac in client.ac:
for i in range(ac.start_zone_number, ac.start_zone_number + ac.zone_count):
zone_to_ac[i] = ac
entities.append(Airtouch5AC(client, ac))
# Add each zone
for zone in client.zones:
entities.append(Airtouch5Zone(client, zone, zone_to_ac[zone.zone_number]))
async_add_entities(entities)
class Airtouch5ClimateEntity(ClimateEntity, Airtouch5Entity):
"""Base class for Airtouch5 Climate Entities."""
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = 1
_attr_name = None
_enable_turn_on_off_backwards_compatibility = False
class Airtouch5AC(Airtouch5ClimateEntity):
"""Representation of the AC unit. Used to control the overall HVAC Mode."""
def __init__(self, client: Airtouch5SimpleClient, ability: AcAbility) -> None:
"""Initialise the Climate Entity."""
super().__init__(client)
self._ability = ability
self._attr_unique_id = f"ac_{ability.ac_number}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"ac_{ability.ac_number}")},
name=f"AC {ability.ac_number}",
manufacturer="Polyaire",
model="AirTouch 5",
)
self._attr_hvac_modes = [HVACMode.OFF]
if ability.supports_mode_auto:
self._attr_hvac_modes.append(HVACMode.AUTO)
if ability.supports_mode_cool:
self._attr_hvac_modes.append(HVACMode.COOL)
if ability.supports_mode_dry:
self._attr_hvac_modes.append(HVACMode.DRY)
if ability.supports_mode_fan:
self._attr_hvac_modes.append(HVACMode.FAN_ONLY)
if ability.supports_mode_heat:
self._attr_hvac_modes.append(HVACMode.HEAT)
self._attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
)
if len(self.hvac_modes) > 1:
self._attr_supported_features |= (
ClimateEntityFeature.TURN_OFF | ClimateEntityFeature.TURN_ON
)
self._attr_fan_modes = []
if ability.supports_fan_speed_quiet:
self._attr_fan_modes.append(FAN_DIFFUSE)
if ability.supports_fan_speed_low:
self._attr_fan_modes.append(FAN_LOW)
if ability.supports_fan_speed_medium:
self._attr_fan_modes.append(FAN_MEDIUM)
if ability.supports_fan_speed_high:
self._attr_fan_modes.append(FAN_HIGH)
if ability.supports_fan_speed_powerful:
self._attr_fan_modes.append(FAN_FOCUS)
if ability.supports_fan_speed_turbo:
self._attr_fan_modes.append(FAN_TURBO)
if ability.supports_fan_speed_auto:
self._attr_fan_modes.append(FAN_AUTO)
if ability.supports_fan_speed_intelligent_auto:
self._attr_fan_modes.append(FAN_INTELLIGENT_AUTO)
# We can have different setpoints for heat cool, we expose the lowest low and highest high
self._attr_min_temp = min(
ability.min_cool_set_point, ability.min_heat_set_point
)
self._attr_max_temp = max(
ability.max_cool_set_point, ability.max_heat_set_point
)
@callback
def _async_update_attrs(self, data: dict[int, AcStatus]) -> None:
if self._ability.ac_number not in data:
return
status = data[self._ability.ac_number]
self._attr_current_temperature = status.temperature
self._attr_target_temperature = status.ac_setpoint
if status.ac_power_state in [AcPowerState.OFF, AcPowerState.AWAY_OFF]:
self._attr_hvac_mode = HVACMode.OFF
else:
self._attr_hvac_mode = AC_MODE_TO_HVAC_MODE[status.ac_mode]
self._attr_fan_mode = AC_FAN_SPEED_TO_FAN_SPEED[status.ac_fan_speed]
self.async_write_ha_state()
async def async_added_to_hass(self) -> None:
"""Add data updated listener after this object has been initialized."""
await super().async_added_to_hass()
self._client.ac_status_callbacks.append(self._async_update_attrs)
self._async_update_attrs(self._client.latest_ac_status)
async def async_will_remove_from_hass(self) -> None:
"""Remove data updated listener after this object has been initialized."""
await super().async_will_remove_from_hass()
self._client.ac_status_callbacks.remove(self._async_update_attrs)
async def _control(
self,
*,
power: SetPowerSetting = SetPowerSetting.KEEP_POWER_SETTING,
ac_mode: SetAcMode = SetAcMode.KEEP_AC_MODE,
fan: SetAcFanSpeed = SetAcFanSpeed.KEEP_AC_FAN_SPEED,
setpoint: SetpointControl = SetpointControl.KEEP_SETPOINT_VALUE,
temp: int = 0,
) -> None:
control = AcControl(
power,
self._ability.ac_number,
ac_mode,
fan,
setpoint,
temp,
)
packet = self._client.data_packet_factory.ac_control([control])
await self._client.send_packet(packet)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set new operation mode."""
set_power_setting: SetPowerSetting
set_ac_mode: SetAcMode
if hvac_mode == HVACMode.OFF:
set_power_setting = SetPowerSetting.SET_TO_OFF
set_ac_mode = SetAcMode.KEEP_AC_MODE
else:
set_power_setting = SetPowerSetting.SET_TO_ON
if hvac_mode not in HVAC_MODE_TO_SET_AC_MODE:
raise ValueError(f"Unsupported hvac mode: {hvac_mode}")
set_ac_mode = HVAC_MODE_TO_SET_AC_MODE[hvac_mode]
await self._control(power=set_power_setting, ac_mode=set_ac_mode)
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set new fan mode."""
if fan_mode not in FAN_MODE_TO_SET_AC_FAN_SPEED:
raise ValueError(f"Unsupported fan mode: {fan_mode}")
fan_speed = FAN_MODE_TO_SET_AC_FAN_SPEED[fan_mode]
await self._control(fan=fan_speed)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperatures."""
if (temp := kwargs.get(ATTR_TEMPERATURE)) is None:
_LOGGER.debug("Argument `temperature` is missing in set_temperature")
return
await self._control(temp=temp)
class Airtouch5Zone(Airtouch5ClimateEntity):
"""Representation of a Zone. Used to control the AC effect in the zone."""
_attr_hvac_modes = [HVACMode.OFF, HVACMode.FAN_ONLY]
_attr_preset_modes = [PRESET_NONE, PRESET_BOOST]
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.PRESET_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
def __init__(
self, client: Airtouch5SimpleClient, name: ZoneName, ac: AcAbility
) -> None:
"""Initialise the Climate Entity."""
super().__init__(client)
self._name = name
self._attr_unique_id = f"zone_{name.zone_number}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"zone_{name.zone_number}")},
name=name.zone_name,
manufacturer="Polyaire",
model="AirTouch 5",
)
# We can have different setpoints for heat and cool, we expose the lowest low and highest high
self._attr_min_temp = min(ac.min_cool_set_point, ac.min_heat_set_point)
self._attr_max_temp = max(ac.max_cool_set_point, ac.max_heat_set_point)
@callback
def _async_update_attrs(self, data: dict[int, ZoneStatusZone]) -> None:
if self._name.zone_number not in data:
return
status = data[self._name.zone_number]
self._attr_current_temperature = status.temperature
self._attr_target_temperature = status.set_point
if status.zone_power_state == ZonePowerState.OFF:
self._attr_hvac_mode = HVACMode.OFF
self._attr_preset_mode = PRESET_NONE
elif status.zone_power_state == ZonePowerState.ON:
self._attr_hvac_mode = HVACMode.FAN_ONLY
self._attr_preset_mode = PRESET_NONE
elif status.zone_power_state == ZonePowerState.TURBO:
self._attr_hvac_mode = HVACMode.FAN_ONLY
self._attr_preset_mode = PRESET_BOOST
else:
self._attr_hvac_mode = None
self.async_write_ha_state()
async def async_added_to_hass(self) -> None:
"""Add data updated listener after this object has been initialized."""
await super().async_added_to_hass()
self._client.zone_status_callbacks.append(self._async_update_attrs)
self._async_update_attrs(self._client.latest_zone_status)
async def async_will_remove_from_hass(self) -> None:
"""Remove data updated listener after this object has been initialized."""
await super().async_will_remove_from_hass()
self._client.zone_status_callbacks.remove(self._async_update_attrs)
async def _control(
self,
*,
zsv: ZoneSettingValue = ZoneSettingValue.KEEP_SETTING_VALUE,
power: ZoneSettingPower = ZoneSettingPower.KEEP_POWER_STATE,
value: float = 0,
) -> None:
control = ZoneControlZone(self._name.zone_number, zsv, power, value)
packet = self._client.data_packet_factory.zone_control([control])
await self._client.send_packet(packet)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set new operation mode."""
power: ZoneSettingPower
if hvac_mode is HVACMode.OFF:
power = ZoneSettingPower.SET_TO_OFF
elif self._attr_preset_mode is PRESET_BOOST:
power = ZoneSettingPower.SET_TO_TURBO
else:
power = ZoneSettingPower.SET_TO_ON
await self._control(power=power)
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Enable or disable Turbo. Done this way as we can't have a turbo HVACMode."""
power: ZoneSettingPower
if preset_mode == PRESET_BOOST:
power = ZoneSettingPower.SET_TO_TURBO
else:
power = ZoneSettingPower.SET_TO_ON
await self._control(power=power)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperatures."""
if (temp := kwargs.get(ATTR_TEMPERATURE)) is None:
_LOGGER.debug("Argument `temperature` is missing in set_temperature")
return
await self._control(
zsv=ZoneSettingValue.SET_TARGET_SETPOINT,
value=float(temp),
)
async def async_turn_on(self) -> None:
"""Turn the zone on."""
await self.async_set_hvac_mode(HVACMode.FAN_ONLY)
async def async_turn_off(self) -> None:
"""Turn the zone off."""
await self.async_set_hvac_mode(HVACMode.OFF)

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