Compare commits

..

2535 Commits

Author SHA1 Message Date
Paulus Schoutsen
88adc8801c Merge pull request #50507 from home-assistant/rc 2021-05-11 22:59:33 -07:00
Paulus Schoutsen
421e1b9956 Bumped version to 2021.5.3 2021-05-11 22:27:42 -07:00
Paulus Schoutsen
c477c31190 Bump aiohue to 2.3.1 (#50506) 2021-05-11 22:27:27 -07:00
Oliver
8a3514ed44 update denonavr version 0.10.8 (#50476) 2021-05-11 22:27:27 -07:00
Erik Montnemery
99044f5454 Include _StopScript.__cause__ in trace (#50441)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-05-11 22:27:26 -07:00
jjlawren
17c1031973 Hotfix for Sonos favorites race condition (#50495) 2021-05-11 21:55:32 -07:00
J. Nick Koston
2c492d71f7 Handle transport errors when updating media via events (#50480)
Co-authored-by: Jason Lawrence <jjlawren@users.noreply.github.com>
2021-05-11 21:55:10 -07:00
Paulus Schoutsen
5aaead54da Merge pull request #50417 from home-assistant/rc 2021-05-10 13:58:00 -07:00
Paulus Schoutsen
88574034b7 Bumped version to 2021.5.2 2021-05-10 10:50:07 -07:00
jjlawren
a670156352 Bump pysonos to 0.0.45 (#50407) 2021-05-10 10:49:59 -07:00
jjlawren
6f9c21e1c0 Fix location of current_play_mode (#50386) 2021-05-10 10:49:58 -07:00
Alan Tse
51c78e0085 Increase httpx timeout for Tesla (#50376) 2021-05-10 10:49:58 -07:00
Erik Montnemery
0dd247aed0 Bump hatasmota to 0.2.12 (#50372) 2021-05-10 10:49:57 -07:00
Jeff Irion
420161039e Bump androidtv to 0.0.59 (#50367) 2021-05-10 10:49:56 -07:00
Colin Robbins
0ce3bf0859 Support multiple disks in systemmonitor (#50362)
* Fix #50158 - add support for multiple disks

* Rework as a tuple
2021-05-10 10:49:55 -07:00
Brian Rogers
3362ac24f6 Revert Rachio to seconds instead of total_seconds (#50307)
* revert seconds

* Add comment

* Update comment to include max runtime
2021-05-10 10:49:54 -07:00
Franck Nijhof
e35fbde5fb Fix ESPHome timestamp sensor (#50305) 2021-05-10 10:49:54 -07:00
J. Nick Koston
03b786268e Fix tplink unloading when no switches are present (#50301) 2021-05-10 10:49:53 -07:00
Joakim Plate
7acefbefb3 Bump ha-philipsjs to 2.7.3 (#50293) 2021-05-10 10:49:52 -07:00
Oliver
0a1439d16b Update denonavr to version 0.10.7 (#50288) 2021-05-10 10:49:51 -07:00
Aidan Timson
989cee662d Update ovoenergy to 1.1.12 (#50268) 2021-05-10 10:49:51 -07:00
jjlawren
2d3b8fb329 Fix Sonos polling bug (#50265) 2021-05-10 10:49:50 -07:00
Ville Skyttä
83db35d2d6 Skip Huawei LTE device registry setup with no identifiers or connections (#50261)
Closes https://github.com/home-assistant/core/issues/50182
2021-05-10 10:49:49 -07:00
Julien "_FrnchFrgg_" Rivaud
1d5716b505 Fix amcrest detection of sensor reset (#50249)
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
2021-05-10 10:49:48 -07:00
Vladimír Záhradník
e482827975 Fix incorrect attribute checks in Modbus hub (#50241) 2021-05-10 10:49:47 -07:00
jan iversen
22e62fa61a Catch non payload modbus messages (#49910) 2021-05-10 10:49:46 -07:00
Franck Nijhof
808825dc42 Merge pull request #50243 from home-assistant/rc 2021-05-07 19:03:00 +02:00
Erik Montnemery
dabd398c6d Add color_mode to demo light (#49694)
* Update demo light with color mode support

* Add rgbw and rgbww color properties

* Update demo light

* Tweak

* Remove unneeded _clear_colors
2021-05-07 18:15:23 +02:00
Erik Montnemery
1e072b73f7 Fix light turn_on color conversion (#50251) 2021-05-07 17:09:49 +02:00
Franck Nijhof
dfc5d22c9b Bumped version to 2021.5.1 2021-05-07 15:19:11 +02:00
Tobias Sauerwein
a9bb905f05 Fix Netatmo climate (#50238) 2021-05-07 15:18:51 +02:00
David F. Mulcahey
193a0dfc02 support more alarm panels (#50235) 2021-05-07 15:18:48 +02:00
Paulus Schoutsen
ead7a90f9a Bump aiohue to 2.3.0 (#50217)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-05-07 15:18:45 +02:00
Aaron Bach
b144550a42 Allow SimpliSafe startup to retry on failure (#50211)
* Allow SimpliSafe startup to retry on failure

* Update __init__.py

* Black

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-05-07 15:18:41 +02:00
J. Nick Koston
cf7f277507 Ensure tesla setup is retried on timeout (#50202) 2021-05-07 15:18:38 +02:00
Raman Gupta
5c6b9c7e37 Add value map for Climacell V3 pollen sensors (#50200) 2021-05-07 15:18:34 +02:00
Martin Hjelmare
df740a7a18 Move not loaded websocket constant to zwave_js (#50188) 2021-05-07 15:18:31 +02:00
Erik Montnemery
27e0c0bbc8 Add color_mode support to group light (#50165)
* Add color_mode support to group light

* Lint

* Update tests
2021-05-07 15:18:27 +02:00
epenet
1e604fec7d Fix unique_id issue on onewire config entries (#50161) 2021-05-07 15:17:25 +02:00
Martin Hjelmare
bb3ebad92f Fix zwave_js websocket api KeyError on unloaded entry (#50154) 2021-05-07 15:13:49 +02:00
J. Nick Koston
d1a75b2fe0 Bump sqlalchemy to 1.4.13 (#50138) 2021-05-07 15:13:45 +02:00
Teemu R
70a7339279 Bump python-miio dependency (#50129) 2021-05-07 15:13:41 +02:00
Jan Bouwhuis
a7ef642721 Ignore empty output from MQTT fan's value template (#50122)
* Allow empty payload

* Add tests for ignoring empty payload

* logging on empty state and osccilation with tests

* Improve warning log when invalid value is received
2021-05-07 15:13:37 +02:00
Felipe Martins Diel
c75d99c883 Fix RM pro temperature sensor (#50098) 2021-05-07 15:13:33 +02:00
tkdrob
74b958df82 Fix group selector (#50088) 2021-05-07 15:13:29 +02:00
Oliver
2aafc88ab5 Denonavr bugfixes (#49984) 2021-05-07 15:13:25 +02:00
Sezer K
ca9a68535f Only initialize Nuki configurations (#49747)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-05-07 15:13:22 +02:00
Martin Hjelmare
66c9658cc7 Fix mysensors default persistence file on import (#48410) 2021-05-07 15:13:16 +02:00
Franck Nijhof
ccf92e4721 Merge pull request #50123 from home-assistant/rc 2021-05-05 19:00:33 +02:00
Franck Nijhof
3654d22af5 Bumped version to 2021.5.0 2021-05-05 18:17:06 +02:00
Erik Montnemery
418606d634 Fix Tasmota color scaling and RGBW lights (#50120) 2021-05-05 18:16:03 +02:00
Ben
d7d32cff95 Remove surepetcare usage of deprecated config options (#50113) 2021-05-05 18:15:59 +02:00
Dermot Duffy
1b9f7cdacf Bump motioneye-client to v0.3.6 . (#50096) 2021-05-05 13:31:10 +02:00
Vincent Le Bourlot
4b7100614b Fix fitbit RuntimeError: I/O must be done in the executor (#50058) 2021-05-05 13:31:06 +02:00
Erik Montnemery
d87c9c6ffe Add color_mode support to tasmota light (#49599) 2021-05-05 13:31:03 +02:00
Paulus Schoutsen
bb7b6e38e4 Bumped version to 2021.5.0b8 2021-05-04 15:12:30 -07:00
Bram Kragten
b6385cc4b3 Update frontend to 20210504.0 (#50093) 2021-05-04 15:12:22 -07:00
Shay Levy
445deec645 Catch Shelly set state exceptions when device is inaccessible (#50064) 2021-05-04 15:12:22 -07:00
Matthias Alphart
1b3489b107 Fix KNX climate unque_id (#50054) 2021-05-04 15:12:21 -07:00
J. Nick Koston
fa2a98fc96 Handle missing transport_state on media update in sonos (#50051) 2021-05-04 15:12:20 -07:00
Paulus Schoutsen
14e02b1bca Guard logbook assuming entity ID is a string (#50047) 2021-05-04 15:12:19 -07:00
Paulus Schoutsen
46a3b26b67 Bumped version to 2021.5.0b7 2021-05-03 10:34:45 -07:00
Bram Kragten
88b2425059 Update frontend to 20210503.0 (#50036) 2021-05-03 10:34:41 -07:00
bsmappee
398ebccbde Bump pysmappee to 0.2.25 (#50031) 2021-05-03 10:34:40 -07:00
Franck Nijhof
5679fbf219 Fix Nexia entity service schema (#50027) 2021-05-03 10:34:39 -07:00
Marius
b8b3e8f879 Mitigate NMBS key errors (#50026)
on Liveboard and connections as documented in issue #48824
2021-05-03 10:34:39 -07:00
Franck Nijhof
c3f757c1ae Fix Harmony entity service schema (#50025) 2021-05-03 10:34:38 -07:00
Franck Nijhof
5f0281f0ba Fix Genius Hub entity service schema (#50024) 2021-05-03 10:34:37 -07:00
Franck Nijhof
9e8d01893f Fix ELKM1 entity service schema (#50020) 2021-05-03 10:34:37 -07:00
Franck Nijhof
40f3bbe005 Fix Blink entity service schema (#50019) 2021-05-03 10:34:36 -07:00
Joakim Sørensen
0a4856b88b Handle Timeout exceptions in system_health (#50017) 2021-05-03 10:34:35 -07:00
Bram Kragten
4273a3d63f Fix saving a scene (#49980)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-05-03 10:34:34 -07:00
Matthias Alphart
33fa6cd794 Fix KNX light unique_id (#49967)
* migrate light unique_id

* review changes
2021-05-03 10:34:33 -07:00
Shay Levy
3681363418 Fix Shelly battery operated devices value rounding (#49966) 2021-05-03 10:34:33 -07:00
Paulus Schoutsen
5e2d30a170 Bumped version to 2021.5.0b6 2021-05-02 21:48:21 -07:00
J. Nick Koston
cd05195155 Check exception causes for matching strings during recorder migration (#49999) 2021-05-02 21:48:17 -07:00
Florian Gareis
8d2f6bd363 Upgrade yeelight to 0.6.2 (#49995) 2021-05-02 21:48:17 -07:00
Shay Levy
617e47cfa8 Fix Shelly external sensors invalid 999 value (#49994) 2021-05-02 21:48:16 -07:00
Paulus Schoutsen
b17b664c0b Handle different entity_id formats (#49969) 2021-05-02 21:48:15 -07:00
Bram Kragten
2a5adce0b9 Correct the selector for frontend.set_theme service (#49952) 2021-05-02 21:48:15 -07:00
Paulus Schoutsen
2f58b7d950 Bumped version to 2021.5.0b5 2021-05-01 17:25:34 -07:00
Aaron Bach
d927932c47 Fix KeyError in IQVIA (#49968) 2021-05-01 17:25:30 -07:00
J. Nick Koston
21a5d5959c Bump pysonos to 0.0.44 to fix client session race (#49964)
Fixes #49954
2021-05-01 17:25:29 -07:00
Aaron Bach
04ccbb92c1 Bump simplisafe-python to 9.6.10 (#49962) 2021-05-01 17:25:28 -07:00
Alexei Chetroi
bc88f6af09 Bump up ZHA dependencies (#49959) 2021-05-01 17:25:28 -07:00
Shay Levy
c2df82b044 Fix light services descriptions (#49951) 2021-05-01 17:25:27 -07:00
Shay Levy
9828a58d9a Shelly light color mode bugfix (#49948) 2021-05-01 17:25:26 -07:00
Alan Tse
1c75d5cb94 Bump Tesla dependency teslajsonpy to 0.18.3 (#49939)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-05-01 17:25:26 -07:00
HomeAssistant Azure
3542f58b18 [ci skip] Translation update 2021-04-30 15:00:52 -07:00
HomeAssistant Azure
35bca704f8 [ci skip] Translation update 2021-04-30 15:00:44 -07:00
Paulus Schoutsen
8189cf8c0b Bumped version to 2021.5.0b4 2021-04-30 14:59:50 -07:00
Paulus Schoutsen
c10d09f2f4 Iqvia to check bad fetch during setup (#49931) 2021-04-30 14:59:38 -07:00
Jason Hunter
cbd292491c Bump xbox-webapi to 2.0.11 (#49929) 2021-04-30 14:59:37 -07:00
Bram Kragten
adb00c1db1 Update frontend to 20210430.0 (#49928) 2021-04-30 14:59:36 -07:00
jjlawren
ea3978be98 Use header URI in Plex config flow (#49915) 2021-04-30 14:59:35 -07:00
David F. Mulcahey
1577276e87 Small ZHA code cleanup (#49908) 2021-04-30 14:59:35 -07:00
David F. Mulcahey
8951b9ede4 Move ZHA config panel section translations to the backend (#49816) 2021-04-30 14:59:34 -07:00
Franck Nijhof
2593dc507d Bumped version to 2021.5.0b3 2021-04-30 11:14:58 +02:00
Franck Nijhof
1e3d90ac0a Fix unexpected data in Google Travel Time config flow import (#49903) 2021-04-30 11:14:38 +02:00
Franck Nijhof
0ae392df75 Fix unexpected data in Waze config flow import (#49902) 2021-04-30 11:14:35 +02:00
Franck Nijhof
cd3633c48f Update frontend to 20210429.0 (#49896) 2021-04-30 11:14:32 +02:00
Raman Gupta
83ff5bfa37 Don't validate inputs on platform setup for Google/Waze travel time (#49886)
* Don't validate inputs on platform setup for Google/Waze travel time

* feedback from other PR
2021-04-30 11:14:29 +02:00
Tom Toor
aa46549be9 Reduced polling interval for mutesync integration (#49884) 2021-04-30 11:14:26 +02:00
Aaron Bach
41cf66c294 Remove no-longer-functioning SimpliSafe websocket support (#49876)
* Remove no-longer-functioning SimpliSafe websocket support

* Linting
2021-04-30 11:14:22 +02:00
Paulus Schoutsen
4087a173cd Bumped version to 2021.5.0b2 2021-04-29 14:34:47 -07:00
Bram Kragten
ff6396d9c2 Update frontend to 20210407.1 (#49882) 2021-04-29 14:34:36 -07:00
Franck Nijhof
615ee6c6c4 Fix jumpy Verisure Wallplug state (#49880) 2021-04-29 14:34:35 -07:00
Ville Skyttä
809bb4d5ed Restore missing Huawei LTE cleanup on HA stop (#49871)
Refs https://github.com/home-assistant/core/pull/49788#discussion_r623071013
2021-04-29 14:34:34 -07:00
Shay Levy
6bb738ee27 Add color modes to Shelly light (#49867) 2021-04-29 14:34:34 -07:00
Raman Gupta
eb17adf4fa Fix options flow bugs in Google/Waze Time Travel (#49866) 2021-04-29 14:34:33 -07:00
Maciej Bieniek
81712cbd0d Fix host_valid() logic in Vilfo config flow (#49862) 2021-04-29 14:34:32 -07:00
Raman Gupta
9574465acc Use EVENT_HOMEASSISTANT_STARTED instead of EVENT_HOMEASSISTANT_START (#49861) 2021-04-29 14:34:32 -07:00
Maciej Bieniek
fddbed944d Fix host_valid() logic in DuneHD config flow (#49860) 2021-04-29 14:34:31 -07:00
Maciej Bieniek
3e47d2abd2 Fix host_valid() logic in BraviaTV config flow (#49857) 2021-04-29 14:34:30 -07:00
Ruslan Sayfutdinov
560a7a3ed3 Rename FlowResultDict to FlowResult (#49847) 2021-04-29 14:34:29 -07:00
Franck Nijhof
735bd121e1 hassfest detect built-in domain override for custom integrations (#49845) 2021-04-29 14:34:29 -07:00
Raman Gupta
5c39fd5863 Improve Google Travel Time import and naming logic (#49839) 2021-04-29 14:34:28 -07:00
Raman Gupta
44aaa0499a Improve Waze Travel Time import and naming logic (#49838) 2021-04-29 14:34:27 -07:00
Aaron David Schneider
28fadad208 Fix Fritz device tracker multiple routers (#49808)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-29 14:34:26 -07:00
jan iversen
f459cef967 Catch missing/unavailable response from modbus (#49632)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-29 14:34:26 -07:00
Paulus Schoutsen
ba7b05442c Add auto_off to binary sensor template entity (#49615) 2021-04-29 14:34:25 -07:00
karliemeads
f009f251c9 Apply default light profile only when light is toggled from off to on (#49376)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-29 14:34:24 -07:00
Franck Nijhof
962ccc93eb Bumped version to 2021.5.0b1 2021-04-28 22:46:25 +02:00
Franck Nijhof
c4a2dd5c3d Remove DHT from Raspberry Pi machine builds (#49829) 2021-04-28 22:45:12 +02:00
Raman Gupta
92ce79675b Set ClimaCell API limit to 500 requests/day (#49828) 2021-04-28 22:45:09 +02:00
Aaron Bach
2288d60ce4 Bump pyairvisual to 5.0.8 (#49823) 2021-04-28 22:45:06 +02:00
Anders Melchiorsen
622db888ec Fix color setting in LIFX services (#49822) 2021-04-28 22:45:00 +02:00
Simone Chemelli
ca1cf64cc2 Add service target to Neato (#49803)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-04-28 22:44:52 +02:00
Franck Nijhof
e11ff6a15e Bumped version to 2021.5.0b0 2021-04-28 20:31:08 +02:00
Paulus Schoutsen
2908332a4e Bump frontend to 20210428.0 (#49821) 2021-04-28 11:21:51 -07:00
Robert Svensson
056f636568 Add tampering sensor to deCONZ integration (#49776) 2021-04-28 20:16:06 +02:00
tkdrob
883513e089 Add selectors to google services (#49796) 2021-04-28 19:58:53 +02:00
jjlawren
8c311cbaa0 Handle special Plex library sections (#49525) 2021-04-28 19:58:05 +02:00
Robert Svensson
5e07ab17b2 Add support for deCONZ alarm events in logbook (#49652)
* Add support for alarm events in logbook

* Update homeassistant/components/deconz/alarm_control_panel.py

Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
2021-04-28 19:46:15 +02:00
Joakim Sørensen
296dc9303f Add OS version and board type to analytics (#49725) 2021-04-28 19:13:09 +02:00
Robert Svensson
311e0e4185 Last minute tweaks to deCONZ alarm panel entity service(#49819)
Text for entry and exit delay was wrong
Remove functions that need a bit more investigating
2021-04-28 18:54:53 +02:00
Chris
e85d58c3a1 Fix white_value causing zwave-js to set non-existing values (#49799) 2021-04-28 09:23:48 -07:00
Pascal Vizeli
1e2f242220 Update base image to version 2021.04.3 (#49817) 2021-04-28 18:03:21 +02:00
J. Nick Koston
11a56df2cb Serialize websocket messages before placing them in the queue (#49582) 2021-04-28 08:55:18 -07:00
Joakim Sørensen
3088f063d2 Don't overwrite existing files when generating configuration (#49815) 2021-04-28 17:15:04 +02:00
Raman Gupta
795fe18a90 Add additional zwave_js WS API commands for nodes (#49509)
* Add zwave_js WS API commands for node.refresh_values and node.refresh_cc_values

* remove guard since API will be used by frontend

* add missing validation

* use get in case node ID is wrong

* use decorator

* add additional coverage
2021-04-28 10:22:18 -04:00
Matthias Alphart
78befcd3fd Fix KNX unique_id (#49677)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-28 15:50:01 +02:00
Erik Montnemery
e96cbccc92 Improve color conversion for RGBWW lights (#49807) 2021-04-28 15:46:41 +02:00
Martin Hjelmare
9e1042d9e0 Fix zwave_js flow set add-on options (#49813)
* Fix zwave_js flow set add-on options

* Improve and deduplicate error messages

* Add more call assertions

* Add final missing call assertion
2021-04-28 15:09:39 +02:00
Franck Nijhof
ded8297d27 Merge branch 'master' into dev 2021-04-28 15:06:10 +02:00
Erik Montnemery
3cb4ff8c4a Bump hatasmota to 0.2.11 (#49811) 2021-04-28 13:52:46 +02:00
tkdrob
be3e77c3e7 Add selector and target to pi_hole services (#49795) 2021-04-28 13:25:06 +02:00
Franck Nijhof
7d7b942dfa Small typing tweaks to Light component (#49718)
* Small typing tweaks to Light component

* Use abc collection
2021-04-28 12:04:59 +02:00
tkdrob
a6a85de2f8 Add selectors to icloud services (#49797) 2021-04-28 11:55:09 +02:00
J. Nick Koston
3f547e58d7 Fix zeroconf test inadvertently matching strings that start with name (#49578)
* Fix zeroconf test inadvertently matching strings that start with name

* adjust

* adjust
2021-04-28 11:47:36 +02:00
J. Nick Koston
14869483ca Fix scrape sensor auth with httpx (#49806) 2021-04-28 11:24:11 +02:00
J. Nick Koston
dcb5b9f8b5 Bump httpx to 0.18.0 and respx to 0.17.0 (#49805) 2021-04-28 11:22:09 +02:00
Raman Gupta
1cb907c2e3 Add zwave_js discovery schema for Vision Security ZL7432 (#49510)
* Add zwave_js discovery schema for Vision Security ZL7432

* add tests

* fix test

* add correct fixture

* Make discussed changes

* fix tests

* move event handler

* fix logic to get entity ID

* add test

* make discovery test more explicit

* remove domain from event data

* always provide entity_id key to make automations easier and translate value if possible

* formatting

* comment

* dont overwrite value
2021-04-28 10:22:54 +02:00
Erik Montnemery
d7247c2ace Correct conversion of RGB and XY colors to RGBW (#49802) 2021-04-28 10:12:20 +02:00
Angelo Gagliano
d6c01cc0e6 Convert DHT to use circuitpython library (#41525)
* Converts DHT to use circuitpython library

* Adds dht requirement to requirements_all

* Cleanup for isort,black and requirements

* Adds validation to prefix with D for PIN

* Sends name over to dhtclient

* Adds exceptions for broad-except

* Adds explict except for raised exception

* Removes unused var

* Moves setting dht var out of try

* Bump to 3.5.8

* Moves non-exception steps to else

* Bump library version

* Bumps version
2021-04-28 09:52:57 +02:00
Matt Zimmerman
17e9e4fa31 update python-smarttub dependency to 0.0.24 (#49800) 2021-04-27 18:06:08 -10:00
Alexei Chetroi
345873f94f Don't bind all clusters unconditionally (#49793) 2021-04-27 20:25:34 -04:00
Erik Montnemery
575b8340fc Fix entity_id change for Google Cast (#49743) 2021-04-28 01:40:41 +02:00
Bram Kragten
a30b21ad50 Update frontend to 20210427.0 (#49794) 2021-04-27 16:02:21 -07:00
Franck Nijhof
89e7983ee0 Add Blueprint foundation to Scripts (#48621)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-27 15:15:38 -07:00
Greg Dowling
cd84595429 Rework roon media player grouping to use media_player base services (#49667)
* Add group/join status attributes to roon player.

* Rework join/unjoin code to use base media_player services.

* Switch join and unjoin to be sync.
2021-04-27 23:55:29 +02:00
Dermot Duffy
3fda66d9e2 Change motionEye to use a two item device identifier tuple (#49774)
* Change to a two item device identifier tuple.

* Don't use join.
2021-04-27 23:48:27 +02:00
Maciej Bieniek
513685bbea Add dynamic update interval to Airly integration (#47505)
* Add dynamic update interval

* Update tests

* Improve tests

* Improve comments

* Add MAX_UPDATE_INTERVAL

* Suggested change

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

* Use async_fire_time_changed to test update interval

* Fix test_update_interval

* Patch dt_util in airly integration

* Cleaning

* Use total_seconds instead of seconds

* Fix update interval test

* Refactor update interval test

* Don't create new context manager

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-27 23:34:53 +02:00
Ville Skyttä
9db6d0cee4 Huawei LTE unload cleanups (#49788) 2021-04-27 23:08:14 +02:00
tkdrob
c193f8fd18 Clean up intent_script (#49770) 2021-04-27 22:55:26 +02:00
J. Nick Koston
f9a2c1cfd5 Reduce config entry setup/unload boilerplate V-Z (#49789) 2021-04-27 22:51:11 +02:00
Tom Toor
a57761103c Mutesync integration (#49679)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-27 13:44:59 -07:00
Kevin Worrel
41c6474249 Add Screenlogic IntelliChem and SCG data (#49689) 2021-04-27 10:43:48 -10:00
J. Nick Koston
4b74c57285 Reduce config entry setup/unload boilerplate T-U (#49786) 2021-04-27 22:19:57 +02:00
J. Nick Koston
87420627a8 Reduce config entry setup/unload boilerplate Q-S (#49778) 2021-04-27 22:10:04 +02:00
Erik Montnemery
d2fd504442 Limit precision when stringifying float states (#48822)
* Limit precision when stringifying float states

* Add test

* Fix typing

* Move StateType

* Update

* Move conversion to entity helper

* Address review comments

* Tweak precision

* Tweak

* Make _stringify_state an instance method
2021-04-27 21:48:24 +02:00
Ville Skyttä
5e00fdccfd Use ConfigEntry.async_on_unload in UpCloud (#49784) 2021-04-27 21:41:03 +02:00
tkdrob
458ca970c9 Add selectors to profiler services (#49781) 2021-04-27 21:02:48 +02:00
Ben
ebbcfb1bc7 Fix and upgrade surepetcare (#49223)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-27 20:58:52 +02:00
J. Nick Koston
3f3f77c6e6 Reduce config entry setup/unload boilerplate N-P (#49777) 2021-04-27 20:42:21 +02:00
tkdrob
6df19205da Add selectors to group services (#49779) 2021-04-27 20:37:59 +02:00
tkdrob
81264ff759 Add selectors to synology_dsm services (#49772) 2021-04-27 20:34:21 +02:00
tkdrob
046f02b7b8 Add selectors to device_tracker services (#49780) 2021-04-27 20:31:53 +02:00
Erik Montnemery
fdadacd158 Improve color conversion for RGBW lights (#49764) 2021-04-27 20:07:55 +02:00
tkdrob
ba76d9f977 Add selectors to zha services (#49773)
* Add selectors to zha services

* Use IEEE
2021-04-27 13:39:41 -04:00
Erik Montnemery
ce64690817 Make number of stored traces configurable (#49728) 2021-04-27 10:27:12 -07:00
J. Nick Koston
b10534359b Reduce config entry setup/unload boilerplate K-M (#49775) 2021-04-27 18:49:13 +02:00
tkdrob
b5cb9e4ade Clean up tellduslive constants (#49765) 2021-04-27 18:36:41 +02:00
tkdrob
d2d80093a1 Add selector to google assistant services (#49769) 2021-04-27 18:33:52 +02:00
Ruslan Sayfutdinov
2adc6d62e5 Replace .no-strict-typing with .strict-typing (#49762) 2021-04-27 09:13:11 -07:00
David F. Mulcahey
a644c2e8ba Add alarm control panel support to ZHA (#49080)
* start implementation of IAS ACE

* starting alarm control panel

* enums

* use new enums from zigpy

* fix import

* write state

* fix registries after rebase

* remove extra line

* cleanup

* fix deprecation warning

* updates to catch up with codebase evolution

* minor updates

* cleanup

* implement more ias ace functionality

* cleanup

* make config helper work for supplied section

* connect to configuration

* use ha async_create_task

* add some tests

* remove unused restore method

* update tests

* add tests from panel POV

* dynamically include alarm control panel config

* fix import

Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
2021-04-27 10:58:59 -04:00
jjlawren
d4ed65e0f5 Add power binary_sensor support to Sonos (#49730)
* Add power binary_sensor support to Sonos

* Prepare for future unloading of config entries

* Remove unnecessary calls to super() inits

* Add binary_sensor to tests, remove invalid test for empty battery payload

* Move sensor added_to_hass to common sensor class

* Avoid dispatching sensors if no battery

* Use proper attributes property

* Remove power source fallback

* Update homeassistant/components/sonos/speaker.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-27 04:52:05 -10:00
tkdrob
9742bfdf46 Add selectors to wake_on_lan services (#49767) 2021-04-27 16:41:37 +02:00
J. Nick Koston
a1fdf84dba Reduce config entry setup/unload boilerplate G-J (#49737) 2021-04-27 16:09:59 +02:00
tkdrob
157dd273da Use core constants for openalpr_cloud (#49755) 2021-04-27 10:05:14 -04:00
tkdrob
978d706b08 Clean up deconz constants (#49754) 2021-04-27 10:05:03 -04:00
tkdrob
664075962f Clean up profiler constants (#49752) 2021-04-27 10:04:45 -04:00
David F. Mulcahey
b91d2be00b Better ZHA device reconfiguration (#49672)
* initial take

* cleanup

* fix mock for configure_reporting
2021-04-27 10:04:22 -04:00
David F. Mulcahey
6bc0fb2e42 Bump ZHA quirks library (#49757) 2021-04-27 10:02:16 -04:00
Joakim Sørensen
f6be95eb4c Use machine in name for machine build (#49761) 2021-04-27 15:04:47 +02:00
Milan Meulemans
ff57a5bd7d Manifest cleanup (#49745)
* Remove empty homekit dict in guardian manifest

* Clean up srp_energy manifest
2021-04-27 13:52:13 +02:00
Vincent Le Bourlot
b5fdc05f5f Fix neato possible None state when creating entity (#49746) 2021-04-27 13:47:20 +02:00
Pascal Vizeli
4b8e1335bc Fix " on build pipeline (#49756) 2021-04-27 13:45:58 +02:00
dependabot[bot]
238198e05e Update actions/setup-python requirement to v2.2.2 (#49742)
Updates the requirements on [actions/setup-python](https://github.com/actions/setup-python) to permit the latest version.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](dc73133d4d)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-27 13:24:13 +02:00
Pascal Vizeli
d2c989ed93 Fix variable{1} on build pipeline (#49750) 2021-04-27 12:41:31 +02:00
Pascal Vizeli
b28a868fd0 Fix arch command on build pipeline for machine (#49748) 2021-04-27 12:37:41 +02:00
Erik Montnemery
96e7ae94f8 Fix config entry reference for Home Assistant Cast user (#49729)
* Fix config entry reference for Home Assistant Cast user

* Simplify config_entry lookup
2021-04-27 11:20:10 +02:00
Bram Kragten
b00ccf98f0 TP Link: Don't report HS when in CT mode (#49704)
* TP Link: Don't report HS when in CT mode

* Update tests
2021-04-27 11:19:21 +02:00
Pascal Vizeli
0d410209d2 Add dispatch - odroid c2 (#49744) 2021-04-27 11:17:40 +02:00
jan iversen
e5e215353d Add swap byte/word/byteword option to modbus sensor (#49719)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-27 10:49:41 +02:00
Pascal Vizeli
1b957a0ce0 Use ' instead of " for build if workflows (#49739) 2021-04-27 10:36:13 +02:00
J. Nick Koston
a67b9eff17 Reduce config entry setup/unload boilerplate D-F (#49733) 2021-04-26 20:46:49 -10:00
Robert Svensson
58ad3b61f7 Entities for secondary temperature values created by certain Xiaomi devices in deCONZ (#49724)
* Create sensors for secondary temperature values created by certain Xiaomi devices

* Fix tests
2021-04-27 08:43:06 +02:00
J. Nick Koston
b27e9e376d Use StaticPool for recorder and NullPool for all other threads with sqlite3 (#49693) 2021-04-26 19:20:31 -10:00
tkdrob
d9714e6b79 Use core constants for nad (#49709) 2021-04-26 21:21:41 -05:00
HomeAssistant Azure
cd7d3ed12a [ci skip] Translation update 2021-04-27 00:04:45 +00:00
jan iversen
677d8e9a89 Add restore last state test to modbus sensor (#49721) 2021-04-27 00:20:50 +02:00
Joakim Sørensen
9d3b5cd0de Change log severity from warn to error for custom integration version (#49726) 2021-04-26 15:04:39 -07:00
djtimca
2a2e573987 Bump omnilogic dependency to 0.4.5 (#49526) 2021-04-27 00:02:39 +02:00
jjlawren
dc50524f32 Cleanup implementation of new Sonos sensors (#49716) 2021-04-26 23:59:04 +02:00
Bram Kragten
9e7d83b2d5 Don't combine old and new value on scene update (#49248) 2021-04-26 23:38:30 +02:00
Pascal Vizeli
1527b9cad7 Build images on GitHub actions (#48318)
Co-authored-by: Joakim Sørensen <joasoe@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-26 22:19:40 +02:00
Franck Nijhof
9c3c67b71b Upgrade black to 21.4b0 (#49715) 2021-04-26 10:18:30 -10:00
J. Nick Koston
51be2f860a Reduce boilerplate to setup config entry platforms A-C (#49681)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-26 07:46:55 -10:00
tkdrob
922eec0909 Use core constants for kwb (#49708) 2021-04-26 17:12:36 +02:00
Doomic
41d6d64ca4 Add unique_id to WOL integration (#49604)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-26 15:55:41 +02:00
tkdrob
a7393cd8b4 Add selectors to plex services (#49706) 2021-04-26 15:47:25 +02:00
tkdrob
c4f0f818c7 Add selectors to frontend services (#49701)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-26 15:36:36 +02:00
tkdrob
5b1ed44613 Add selectors to ps4 services (#49702)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-26 15:35:45 +02:00
tkdrob
639dac1eaa Add selector to tts services (#49703) 2021-04-26 14:51:28 +02:00
Matthias Alphart
7acb16e2af KNX Schema improvements (#49678) 2021-04-26 14:36:01 +02:00
tkdrob
70be0561d0 Add selectors to cast services (#49684) 2021-04-26 14:29:38 +02:00
Ruslan Sayfutdinov
37466ae423 Don't ignore mypy errors by default (#49270) 2021-04-26 14:23:21 +02:00
tkdrob
0f220001a0 Add selectors to ecobee services (#49499) 2021-04-26 13:52:17 +02:00
J. Nick Koston
9a6402c1ae Only compile esphome icon schema once (#49688) 2021-04-26 12:37:13 +02:00
MarBra
1b14a2f54f Address late review comments for denonavr (#49666)
* denonavr: Add DynamicEQ and Audyssey service

* Remove useless return and entry.option in hass.data

* Remove duplicate translation
2021-04-26 11:22:07 +02:00
Fabian Affolter
940d28960b Upgrade TwitterAPI to 2.7.2 (#49680) 2021-04-26 07:43:52 +02:00
J. Nick Koston
9222d3e9f9 Ensure hue connection errors are passed to ConfigEntryNotReady (#49674)
- Limits log spam on retry
2021-04-25 16:42:45 -10:00
tkdrob
5a993a3ff3 Use core constants for apprise (#49683) 2021-04-25 20:22:01 -05:00
Alexei Chetroi
4a6bb96a0f Stop fast polling of a Zigbee device after a check-in command (#49685)
* Stop fast polling after a check-in

* Update tests
2021-04-25 21:15:04 -04:00
HomeAssistant Azure
e5e71c2026 [ci skip] Translation update 2021-04-26 00:04:21 +00:00
Kevin Worrel
6f1273cf1c Refactor screenlogic API data selection (#49682) 2021-04-25 13:17:42 -10:00
Milan Meulemans
73b7a68e97 Fix Rituals battery sensor KeyError (#49661) 2021-04-25 12:47:36 -10:00
J. Nick Koston
855559004b Drop unneeded async_setup from august (#49675) 2021-04-25 23:13:54 +02:00
jan iversen
33e8553d92 Fix frontend freeze due to modbus device not responding (#49651)
Changing the timeout from package default, secures SENDING will
timeout, and after 3 retries break off.

Remark: this commit is tested with pymodbus v2.5.1 the old version
v2.3.0 have several problems in this area.
self._value = await self.async_get_last_state()

pymodbus v2.5.1 is active on DEV (bumped in an earlier PR).
2021-04-25 23:11:01 +02:00
J. Nick Koston
9689e06d3c Bump async-upnp-client to 0.16.2 (#49671) 2021-04-25 10:32:39 -10:00
tkdrob
d24cbde913 Add target and selectors to sonos services (#49536) 2021-04-25 10:28:42 -10:00
Thibaut
f7b72669dc Don't mark Somfy devices as unavailable (#49662)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-25 10:28:31 -10:00
Michael
a5e25e519f Remove yaml configuration from fritzbox (#49663) 2021-04-25 09:49:08 -10:00
Ville Skyttä
631ab367e2 Fix typing.Any spelling (#49673) 2021-04-25 09:36:21 -10:00
Simone Chemelli
85438db1ec Fix Fritz unload (#49669) 2021-04-25 09:07:31 -10:00
Marc Mueller
7b33ed11c2 Fix missing default value in fritz scan_devices (#49668) 2021-04-25 20:28:40 +02:00
Marc Mueller
510a3ae915 Improve zeroconf test fixture (#49657) 2021-04-25 08:16:38 -10:00
jjlawren
3be8c9c1c0 Add battery support for Sonos speakers (#49441)
Co-authored-by: Walter Huf <hufman@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-25 07:20:21 -10:00
tkdrob
7ecd4f5eed Fix pylint failures caused by fritz (#49655)
* Fix test failures caused by fritz
* Fix typing.Any

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2021-04-25 15:48:03 +02:00
Dermot Duffy
3077363f44 Supplementary fixes to new motionEye integration (#49626) 2021-04-25 15:27:46 +02:00
jan iversen
914451d99c Remove dead code in modbus sensor and 100% test coverage (#49634) 2021-04-25 15:25:02 +02:00
J. Nick Koston
0862212942 Switch screenlogic discovery to use async version (#49650) 2021-04-25 12:41:40 +02:00
J. Nick Koston
3fa8ffa731 Enable mccabe complexity checks in flake8 (#49616)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-25 12:38:40 +02:00
Paulus Schoutsen
9f8e683ae3 Ask for IoT class during scaffold (#49647)
Co-authored-by: Milan Meulemans <milan.meulemans@live.be>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-25 12:13:22 +02:00
Simone Chemelli
b92f29997e Rework Fritz config_flow and device_tracker (#48287)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-25 00:10:33 -10:00
J. Nick Koston
376b787e4d Skip recorder commit if there is nothing to do (#49614) 2021-04-25 12:05:49 +02:00
starkillerOG
3e3cd0981d Reduce hue gamut warning to debug (#49624) 2021-04-25 11:50:08 +02:00
J. Nick Koston
e2837f08e8 Small cleanups for august (#49493) 2021-04-25 11:32:34 +02:00
Ville Skyttä
153d6e891e Use config_entries.SOURCE_* constants (#49631) 2021-04-25 11:27:40 +02:00
Shay Levy
34a588d1ba Fix Shelly button first trigger (#49635) 2021-04-24 21:47:18 -07:00
J. Nick Koston
aaba9766ff Bump scapy to 2.4.5 for dhcp (#49437) 2021-04-24 15:16:52 -10:00
Daniel Pervan
f11834d85c Fix August Type error (#49636) 2021-04-24 14:40:39 -10:00
Michael
a352516944 Implement DataUpdateCoordinator to fritzbox integration (#49611) 2021-04-24 14:40:12 -10:00
Marc Mueller
f1d48ddfe3 Update pylint to 2.8.0 (#49637) 2021-04-24 14:39:24 -10:00
HomeAssistant Azure
28eaa67986 [ci skip] Translation update 2021-04-25 00:04:46 +00:00
jan iversen
49c23bad29 Revert "Remove HomeAssistantType from typing.py as it is no...2 (#49617)
This reverts commit 39cb22374d.

Added comment that HomeAssistantType is not to be used, but only
kept in order not to break custom components.
2021-04-24 09:10:07 -10:00
Olivér Falvai
46ef85f471 Add new Huawei LTE sensor metadata, improve icons (#49436) 2021-04-24 18:41:15 +03:00
Paulus Schoutsen
dcee78b747 Template sensor/binary sensors without trigger now respect section unique id (#49613) 2021-04-24 07:14:31 -07:00
Robert Svensson
b0fecdcc3d Add entity service for deCONZ alarm control panel to control states used to help guide user transition between primary states (#49606) 2021-04-24 15:46:16 +02:00
Matthias Alphart
671148b6ca Update xknx to version 0.18.1 (#49609) 2021-04-24 14:18:14 +02:00
J. Nick Koston
9a7d500b80 Cancel august interval track at stop event (#49198) 2021-04-24 14:13:25 +02:00
Dermot Duffy
bbe58091a8 Create a motionEye integration (#48239) 2021-04-23 23:00:28 -07:00
Franck Nijhof
a380632384 Upgrade watchdog to 2.0.3 (#49594) 2021-04-23 18:12:08 -10:00
Jakub Bartkowiak
33d4d545a7 Fix charging error in Roomba integration (#49416) 2021-04-23 17:22:56 -10:00
Paulus Schoutsen
0072923fbe Bump frontend to 20210423.0 2021-04-23 20:10:58 -07:00
HomeAssistant Azure
32dfaccf1f [ci skip] Translation update 2021-04-24 00:03:34 +00:00
Daniel Hjelseth Høyer
694a163124 Update met.no library (#49607) 2021-04-23 11:29:20 -10:00
Joakim Sørensen
019484f148 Use dev endpoint for dev installations (#49597) 2021-04-23 20:57:10 +02:00
Erik Montnemery
8013eb0e08 Allow data entry flows to hint for additional steps (#49202) 2021-04-23 11:02:12 -07:00
Paulus Schoutsen
a6d87b7fae Batch Google Report State (#49511)
* Batch Google Report State

* Fix batching
2021-04-23 10:56:23 -07:00
Guido Schmitz
c6edc7ae4f Clean up devolo Home Control config flow (#49585) 2021-04-23 13:48:24 +02:00
tkdrob
50d2c3bfe3 Add target and selectors to remote services (#49384) 2021-04-23 11:25:53 +02:00
mariwing
28a909c463 Requesting data from last seven days (#49485) 2021-04-23 11:16:24 +02:00
jan iversen
39cb22374d Remove HomeAssistantType from typing.py as it is no longer used. (#49593) 2021-04-23 11:08:58 +02:00
Xuefer
7579a321df Encode ONVIF username password in URL (#49512)
* onvif: encode username password in url

Signed-off-by: Xuefer <xuefer@gmail.com>

* onvif: use yarl to set username password for steam url

Signed-off-by: Xuefer <xuefer@gmail.com>
2021-04-23 10:43:02 +02:00
jan iversen
d168749a51 Integrations: HomeAssistantType --> HomeAssistant. Last batch. (#49591) 2021-04-23 10:34:02 +02:00
Tsvi Mostovicz
968460099a Change Jewish calendar IOT class to calculated (#49571)
This integration doesn't poll at all, rather all values are calculated based on location and date, so I think this is the more correct value here
2021-04-23 10:19:43 +02:00
jan iversen
9685cefba4 Integrations h* - i*: Rename HomeAssistantType to HomeAssistant. (#49587) 2021-04-23 10:11:58 +02:00
Ville Skyttä
a396619251 Use disabled_by constants (#49584)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-23 09:56:42 +02:00
jan iversen
d52bc2373f Integrations i* - m*: Rename HomeAssistantType to HomeAssistant. (#49586) 2021-04-23 09:55:20 +02:00
jan iversen
017e32a0cb Integrations h*: Rename HomeAssistantType to HomeAssistant. (#49590) 2021-04-23 09:49:02 +02:00
Erik Montnemery
a5a3c98aff Make lights supporting rgbw and rgbww accept colors (#49565)
* Allow lights supporting rgbw and rgbww accepting colors

* Tweak, update tests
2021-04-23 09:25:37 +02:00
Paulus Schoutsen
265fdea83b Allow config entries to store a reason (#49581) 2021-04-23 09:23:43 +02:00
J. Nick Koston
c753606a74 Bump async-upnp-client to 0.16.1 (#49577) 2021-04-23 07:39:49 +02:00
Thomas Hollstegge
66dbb17a4a Fix opening cover via emulated_hue without specifying a position (#49570) 2021-04-22 19:12:52 -10:00
Matt Zimmerman
e6d94845dd SmartTub: use get_full_status() (#49580) 2021-04-22 18:55:58 -10:00
Matt Zimmerman
fec6ea3f76 SmartTub cleanup (#49579) 2021-04-22 18:54:55 -10:00
Milan Meulemans
48695869f9 Change dict[str, Any] to FlowResultDict (#49546) 2021-04-22 17:23:15 -10:00
HomeAssistant Azure
686c92097f [ci skip] Translation update 2021-04-23 00:03:48 +00:00
Erik Montnemery
2502e7669c Remove SUPPORT_WHITE_VALUE from ZHA light groups (#49569) 2021-04-22 16:59:41 -07:00
Erik Montnemery
b3c9d854f5 Correct min and max mired for light with color_mode support (#49572) 2021-04-22 16:47:33 -07:00
Erik Montnemery
d28b959a09 Improve sun condition trace (#49551) 2021-04-22 16:46:27 -07:00
Erik Montnemery
a9065f381d Use supported_color_modes in emulated_hue (#49175) 2021-04-22 16:42:28 -07:00
Paulus Schoutsen
1016d4ea28 Support trigger-based template binary sensors (#49504)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-22 14:54:28 -07:00
jan iversen
9410aefd0d Integrations m*: Rename HomeAssistantType to HomeAssistant. (#49567) 2021-04-22 14:53:37 -07:00
tikismoke
90ede05c82 Bump pyvlx to 0.2.19 (#49533)
* Update manifest.json

https://github.com/Julius2342/pyvlx/pull/59#issuecomment-824291298

* Update requirements_all.txt
2021-04-22 22:34:31 +02:00
J. Nick Koston
d4329e01ef Fix deadlock in async_get_integration_with_requirements after failed dep pip install (#49540) 2021-04-22 22:32:38 +02:00
jan iversen
d76993034e Replace HomeAssistantType with HomeAssistant for integrations m* - n* (#49566)
* Integration neato: rename HomeAssistantType to HomeAssistant.

* Integration mysensors: rename HomeAssistantType to HomeAssistant.

* Integration mobile_app: rename HomeAssistantType to HomeAssistant.

* Integration minecraft_server: rename HomeAssistantType to HomeAssistant.

* Clean up

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-22 22:23:36 +02:00
tkdrob
c3d9aaa896 Clean plex services.yaml (#49535) 2021-04-22 13:41:43 -05:00
Guido Schmitz
77372d9094 Add zeroconf detection to devolo Home Control (#47934)
Co-authored-by: Markus Bong <2Fake1987@gmail.com>
2021-04-22 08:38:56 -10:00
jan iversen
34b258e812 Rename HomeAssistantType —> HomeAssistant for integrations n* - p* (#49559) 2021-04-22 08:23:19 -10:00
jan iversen
c351098f04 HomeAssistantType —> HomeAssistant for Integrations p* - s* (#49558) 2021-04-22 19:58:02 +02:00
Paulus Schoutsen
9fe0c96474 Fix Hue activate scene (#49556) 2021-04-22 19:29:11 +02:00
jan iversen
9879b7becf Rename HomeAssistantType to HomeAssistant, integrations w* - z* (#49543)
* Integration zha: HomeAssistantType -> HomeAssistant.

* Integration zerproc: HomeAssistantType -> HomeAssistant.

* Integration xbox: HomeAssistantType -> HomeAssistant.

* Integration wunderground: HomeAssistantType -> HomeAssistant.

* Integration wled: HomeAssistantType -> HomeAssistant.

* Integration water_heater: HomeAssistantType -> HomeAssistant.

* Integration websocket_api: HomeAssistantType -> HomeAssistant.

* Integration wilight: HomeAssistantType -> HomeAssistant.
2021-04-22 11:04:28 -04:00
jan iversen
6992e24263 Rename HomeAssistantType —> HomeAssistant, integrations t* - v* (#49544)
* Integration vizio: HomeAssistantType -> HomeAssistant.

* Integration velbus: HomeAssistantType -> HomeAssistant.

* Integration vacuum: HomeAssistantType -> HomeAssistant.

* Integration upnp: HomeAssistantType -> HomeAssistant.

* Integration upcloud: HomeAssistantType -> HomeAssistant.

* Integration twinkly: HomeAssistantType -> HomeAssistant.

* Integration tts: HomeAssistantType -> HomeAssistant.

* Integration tradfri: HomeAssistantType -> HomeAssistant.

* Integration traccar: HomeAssistantType -> HomeAssistant.

* Integration tplink: HomeAssistantType -> HomeAssistant.
2021-04-22 10:53:57 -04:00
jan iversen
2e084f260e Rename HomeAssistantType —> HomeAssistant, integrations s* - t* (#49550) 2021-04-22 16:21:38 +02:00
D3v01dZA
c4c8c67a03 Bump snapcast to 2.1.3 (#49553) 2021-04-22 15:46:48 +02:00
Maciej Bieniek
e75233b279 Bump brother library to version 1.0.0 (#49547)
* Bump brother library

* Improve attributes generation
2021-04-22 13:20:14 +02:00
jan iversen
f67c0ce8bb Secure 100% test coverage for modbus, binary_sensor and sensor (#49521)
* Secure 100% test coverage for modbus/binary_sensor.

* Test that class constructor is called.
2021-04-22 11:54:40 +02:00
bsmappee
8b08134850 Support local Smappee Genius device (#48627)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-21 22:12:13 -10:00
Matt Zimmerman
8c52dfa1c5 Implement reauth for smarttub (#47628)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-21 21:28:24 -10:00
J. Nick Koston
c10836fcee Upgrade to sqlalchemy 1.4.11 (#49538) 2021-04-21 20:29:36 -10:00
corneyl
303ab36c54 Add Picnic integration (#47507)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: @tkdrob <tkdrob4390@yahoo.com>
2021-04-21 22:21:56 -07:00
J. Nick Koston
cb4558c088 Autodetect zeroconf interface selection when not set (#49529) 2021-04-21 22:10:34 -07:00
MarBra
9003dbfdf3 Add denonavr DynamicEQ and Audyssey service (#48694)
* denonavr: Add DynamicEQ and Audyssey service

* Remove debug print

* Syntax sugar

* Apply suggestions from code review

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

* Update homeassistant/components/denonavr/services.yaml

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

* Remove trailing whitespaces

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-21 15:55:30 -10:00
jan iversen
6a4f414236 Change HomeAssistantType to HomeAssistant (#49522) 2021-04-21 15:53:06 -10:00
HomeAssistant Azure
69c1721c2a [ci skip] Translation update 2021-04-22 00:02:50 +00:00
Kevin Worrel
dc24ce491b Add Screenlogic set_color_mode service (#49366) 2021-04-21 08:45:50 -10:00
Raman Gupta
99c5087c1e Add WS API command to capture zwave_js logs from server (#49444)
* Add WS API commands to capture zwave_js logs from server

* register commands

* create a task

* Update homeassistant/components/zwave_js/api.py

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

* Update homeassistant/components/zwave_js/api.py

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

* fix

* fixes and add test

* fix PR on rebase

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-21 07:37:35 -04:00
Charles Garwood
cad281b326 Add subscription for Z-Wave JS node re-interview status (#49024)
* Add subscription for interview status

* update test

* forward stage completed event

* add additional test

* additional tests

* return earlier
2021-04-21 07:35:16 -04:00
Brynley McDonald
5c6744d978 Fix typo in tuya config_flow (#49517) 2021-04-21 12:21:32 +02:00
Franck Nijhof
168b3c100c Remove HomeAssistantType alias - Part 4 (#49515) 2021-04-21 12:18:42 +02:00
Franck Nijhof
77ae4abc6e Upgrade isort to 5.8.0 (#49516) 2021-04-21 11:57:23 +02:00
jan iversen
c9bdc9609c Do not close non existing clients in modbus (#49489)
* Only close if _client is present.

* Remove del.
2021-04-21 11:46:40 +02:00
Raman Gupta
6e22251e1d Add support to enable/disable zwave_js data collection (#49440) 2021-04-20 21:40:54 -04:00
Paulus Schoutsen
a90d3a051f prefer total_seconds over seconds (#49505) 2021-04-20 17:41:36 -07:00
HomeAssistant Azure
020d456889 [ci skip] Translation update 2021-04-21 00:03:47 +00:00
Ville Skyttä
c825f88888 Support wired clients in Huawei LTE device tracker (#48987) 2021-04-20 12:26:09 -10:00
Raman Gupta
cf16e651cf Bump zwave_js dependency to 0.24.0 (#49445)
* Bump zwave_js dependency to 0.24.0

* fix bug in schema

* fix test
2021-04-20 23:44:26 +02:00
Guido Schmitz
208a17d0dc Add additional device classes to devolo Home Control (#49425) 2021-04-20 22:38:54 +02:00
Ville Skyttä
1c587d2e47 Fix and add some ScannerEntity property type hints (#49500) 2021-04-20 23:38:07 +03:00
Dermot Duffy
ccda903c17 Upgrade to the latest hyperion-py (#49448) 2021-04-20 22:08:08 +02:00
dfigus
d517d7232f Fix HmIP-HAP attributes unit (#49476) 2021-04-20 22:06:00 +02:00
Robert Svensson
12a9695798 Use config_entry.on_unload rather than local listener implementation in Axis (#49495) 2021-04-20 08:53:05 -10:00
Robert Svensson
63616a9e36 Use config_entry.on_unload rather than local listener implementation in UniFi (#49496) 2021-04-20 08:50:42 -10:00
J. Nick Koston
138226fa14 Bump codecov to 1.4.1 (#49497) 2021-04-20 08:49:58 -10:00
Caleb Mah
45b6dfce68 Bump yeelight dependency to 0.6.1 (#49490) 2021-04-20 08:26:42 -10:00
jan iversen
d24b3e0a3c Test pymodbus (#49053) 2021-04-20 11:25:37 -07:00
J. Nick Koston
f73d9fa572 Reduce broadlink executor jobs at setup time (#49447)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-20 08:22:10 -10:00
J. Nick Koston
df66f2a9da Cleanup history states tests that were converted to async tests (#49446) 2021-04-20 08:21:41 -10:00
Robert Svensson
3b64c574e3 Replace local listener implementation to using config_entry.on_unload in deCONZ (#49494) 2021-04-20 08:20:57 -10:00
Paulus Schoutsen
7e7267f822 Send only a single event per incoming Google command (#49449) 2021-04-20 09:21:52 -07:00
Martin Hjelmare
410f0e3604 Fix mysensors mqtt integration setup guard (#49423) 2021-04-20 09:21:38 -07:00
J. Nick Koston
20ead7902a Fix memory leak in ambient_station on reload (#49455) 2021-04-20 09:17:08 -07:00
J. Nick Koston
3164eef059 Limit executor jobs during custom_components load to match non-custom behavior (#49451) 2021-04-20 09:16:17 -07:00
J. Nick Koston
f600649016 Fix memory leak in onvif (#49473) 2021-04-20 09:15:17 -07:00
J. Nick Koston
e288afa7a3 Fix memory leak in plum_lightpad (#49472) 2021-04-20 09:15:04 -07:00
J. Nick Koston
76b59a3983 Fix memory leak in hangouts (#49471) 2021-04-20 09:14:48 -07:00
J. Nick Koston
8537076917 Fix memory leak in huawei_lte (#49470) 2021-04-20 09:14:34 -07:00
J. Nick Koston
7791670607 Fix memory leak in legacy nest (#49469) 2021-04-20 09:14:23 -07:00
J. Nick Koston
d858d2ff25 Fix memory leak in deconz (#49468) 2021-04-20 09:14:11 -07:00
J. Nick Koston
b2db9d3ca2 Fix memory leak in firmata (#49467) 2021-04-20 09:14:00 -07:00
J. Nick Koston
30c99ce954 Fix memory leak in insteon (#49466) 2021-04-20 09:13:50 -07:00
J. Nick Koston
1193c5360d Fix memory leak in tibber (#49465) 2021-04-20 09:13:41 -07:00
J. Nick Koston
786f3163ac Fix memory leak in freebox (#49463) 2021-04-20 09:13:28 -07:00
J. Nick Koston
7db5d50ce4 Fix memory leak in unifi on reload (#49456) 2021-04-20 09:13:07 -07:00
J. Nick Koston
052e935c2b Fix memory leak in fritzbox (#49462) 2021-04-20 09:12:54 -07:00
J. Nick Koston
c9fbdfbbbe Fix memory leak in heos (#49461) 2021-04-20 09:12:42 -07:00
J. Nick Koston
2279b5593d Fix memory leak in vera (#49459) 2021-04-20 09:12:32 -07:00
J. Nick Koston
11281e1cdb Fix memory leak in logi_circle (#49458) 2021-04-20 09:12:21 -07:00
J. Nick Koston
3cbfa36397 Fix memory leak on apple_tv reload (#49454) 2021-04-20 09:12:11 -07:00
J. Nick Koston
baa8de2f89 Fix homekit memory leak on entry reload (#49452) 2021-04-20 09:11:58 -07:00
J. Nick Koston
fd21c460a0 Fix memory leak in verisure (#49460) 2021-04-20 09:04:34 -07:00
Marc Mueller
c07646db5d Update typing syntax (#49480)
* Update typing syntax

* Replace typing imports with ones from collections where possible

* Changes after review
2021-04-20 17:40:41 +02:00
Robert Svensson
34245c3add Add alarm control panel support to deCONZ integration (#48736)
* Infrastructure in place

* Base implementation

* Add alarm event

* Add custom services to alarm control panel

* Add service descriptions

* Increase test coverage

* Simplified to one entity service with an options selector

* Remove everything but the essentials

* Add library with proper support

* Fix stale comments
2021-04-20 17:34:11 +02:00
J. Nick Koston
fa05e5a8a0 Fix memory leak in wemo on reload (#49457) 2021-04-20 17:13:27 +02:00
Jan Bouwhuis
ff367cfcb6 Mqtt cover avoid warnings on empty payload (#49253)
* No warnings on extra json values with templates

* ignore empty received payload
2021-04-20 15:47:40 +02:00
J. Nick Koston
05982ffc60 Ensure harmony callbacks run in the event loop (#49450) 2021-04-20 15:09:46 +02:00
jan iversen
c14e525ac3 Update modbus state when sensor fails (#49481) 2021-04-20 14:54:20 +02:00
Franck Nijhof
bc5add82e0 Fix/Workaround GitHub issue forms (#49475) 2021-04-20 12:01:19 +02:00
chpego
82152616bb Bump youtube-dl to 2021.04.17 (#49474) 2021-04-20 11:49:54 +02:00
J. Nick Koston
b557d20fbb Fix memory leak in netatmo (#49464) 2021-04-20 11:03:07 +02:00
René Klomp
12853438c5 SMA code quality improvement and bugfix (#49346)
* Minor code quality improvements
Thanks to @MartinHjelmare

* Convert legacy dict config to list

* Improved test

* Typo

* Test improvements

* Create fixtures in conftest.py
2021-04-20 10:59:02 +02:00
jan iversen
a278ebd37b Bump pymodbus version to 2.5.1 (#49401) 2021-04-20 10:43:14 +02:00
jjlawren
523a71ac20 Set temperature precision for Ecobee climate entities to tenths (#48697) 2021-04-19 17:41:30 -07:00
HomeAssistant Azure
f6a24e8d68 [ci skip] Translation update 2021-04-20 00:04:05 +00:00
Nathan Tilley
8305fbc0eb Bump faadelays to 0.0.7 (#49443) 2021-04-20 00:39:24 +02:00
Dermot Duffy
1560c00db1 Use Hyperion human-readable effect names instead of API identifiers (#45763) 2021-04-19 23:46:18 +02:00
jan iversen
8acc3f0b03 Fix modbus switch "old style" config problem (#49352)
Fix that using CONF_HUB in switch, changed the hub for all
subsequent switches.
2021-04-19 10:35:32 -07:00
Franck Nijhof
5ee373869a Merge pull request #49424 from home-assistant/rc 2021-04-19 18:09:01 +02:00
Franck Nijhof
44744dc0bc Bumped version to 2021.4.6 2021-04-19 17:32:43 +02:00
Bram Kragten
d61281b6fb Google report state: thermostatMode should be a string, not null (#49342) 2021-04-19 17:30:24 +02:00
Erik Montnemery
a5a62154d4 Fix deadlock when restarting scripts (#49410) 2021-04-19 17:24:10 +02:00
Joakim Sørensen
a5806b59f2 Raise HassioAPIError when error is returned (#49418)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-19 08:23:43 -07:00
J. Nick Koston
b8001b951b Avoid executor jumps in history stats when no update is needed (#49407) 2021-04-19 08:23:10 -07:00
J. Nick Koston
6d137d2316 Increase recorder test coverage (#49362)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-19 08:22:38 -07:00
Bram Kragten
b69b55987d Google report state: thermostatMode should be a string, not null (#49342) 2021-04-19 08:20:00 -07:00
jan iversen
eb9ba527d0 Add pymodbus exception handling and isolate pymodbus to class modbusHub (#49052) 2021-04-19 08:18:15 -07:00
J. Nick Koston
7ed8f00075 Fix exception in roomba discovery when the device does not respond on the first try (#49360) 2021-04-19 17:11:28 +02:00
Daniel Hjelseth Høyer
fc4c49ab83 Upgrade pyMetno to 0.8.2 (#49308)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2021-04-19 17:10:36 +02:00
jan iversen
fe2f4e2790 Apply Precision/Scale/Offset to struct in modbus sensor (#48544)
The single values in struct are corrected with presicion, scale and offset,
just as it is done with single values.
2021-04-19 17:08:36 +02:00
Vladimír Záhradník
05755c27f2 Log an error if modbus Cover is not initialized correctly (#48829) 2021-04-19 16:52:08 +02:00
Erik Montnemery
a968dea152 Fix deadlock when restarting scripts (#49410) 2021-04-19 14:45:01 +02:00
Daniel Rheinbay
83ecabe0a2 Bump fritzconnection to 1.4.2 (#49356) 2021-04-19 14:25:46 +02:00
J. Nick Koston
69932d4435 Add additional myq homekit models (#49381) 2021-04-19 14:03:31 +02:00
Franck Nijhof
2de257f85f Upgrade dsmr_parser to 0.29 (#49417) 2021-04-19 13:48:31 +02:00
J. Nick Koston
4361be613d Expose the hostname of the device in asuswrt (#49393) 2021-04-19 13:25:30 +02:00
dependabot[bot]
26cb511d02 Bump codecov/codecov-action from v1.3.2 to v1.4.0 (#49412)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.3.2 to v1.4.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.3.2...0e28ff86a50029a44d10df6ed4c308711925a6a8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-19 12:18:06 +02:00
Chris Browet
591d09c177 Use google assistant TemperatureControl trait to report sensor (#46491)
* CHG: use TemperatureControl trait to report sensor

* fixup: blacked

* fixup: flaked

* fixup: flaked

* Adjust tests

* fixup test and rebase

* test coverage
2021-04-19 11:41:30 +02:00
J. Nick Koston
7f6572893d Add services to the profiler to log threads and event loop schedule (#49327)
* Add services to the profiler to log threads and event loop schedule

* improve readability

* increase log debug

* bigger

* tweaks

* Update homeassistant/components/profiler/__init__.py

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

* Update homeassistant/components/profiler/__init__.py

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

* remove schema= and cleanup existing

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-19 11:39:34 +02:00
J. Nick Koston
e24f5831a2 Force recorder shutdown at final write event (#49145)
* Force recorder shutdown at EVENT_HOMEASSISTANT_FINAL_WRITE

* remove unreachable

* remove unreachable

* simplify

* cancel in async
2021-04-19 11:24:17 +02:00
J. Nick Koston
6048e88c8b Improve debuggability by providing job as an arg to loop.call_later (#49328)
Before
`<TimerHandle when=1523538.181864923 async_track_point_in_utc_time.<locals>.run_action() at /usr/src/homeassistant/homeassistant/helpers/event.py:1177>`

After
`<TimerHandle when=1524977.1818648616 async_track_point_in_utc_time.<locals>.run_action(<Job HassJobType.Coroutinefunction <bound method DataUpdateCoordinator._handle_refresh_interval of <homeassistant.components.roku.RokuDataUpdateCoordinator object at 0x7fcc978a51c0>>>) at /usr/src/homeassistant/homeassistant/helpers/event.py:1175>`
2021-04-19 11:02:17 +02:00
J. Nick Koston
0b26294fb0 Small cleanups to rachio (#49404)
- Remove unused async_step
- Reduce async callbacks from executor
2021-04-19 10:39:45 +02:00
Felipe Martins Diel
e98f27ead6 Use broadlink.hello() for direct discovery (#49405) 2021-04-19 10:16:03 +02:00
jan iversen
0f90678e0e Change HomeAssistantType -> HomeAssistant in modbus (#49400) 2021-04-18 22:13:32 -10:00
Guillermo Ruffino
cf51e07953 Fix esphome registering invalid service name (#49398) 2021-04-19 08:31:43 +02:00
J. Nick Koston
344717d07d Reduce time to first byte for frontend index (#49396)
Cache template and manifest.json generation
2021-04-18 21:17:30 -07:00
Felipe Martins Diel
6a3832484c Do not log error messages when discovering Broadlink devices (#49394) 2021-04-18 18:12:27 -10:00
HomeAssistant Azure
a67a45624d [ci skip] Translation update 2021-04-19 00:04:29 +00:00
Michael
a050c8827b Add battery sensor to fritzbox smart home devices (#49374) 2021-04-18 12:30:58 -10:00
J. Nick Koston
6e911ba19f Shutdown bond bpup and skip polling after the stop event (#49326) 2021-04-18 13:46:46 -07:00
Brent Petit
080c89c761 Only set fan state in ecobee set_fan_mode service (#48086) 2021-04-18 22:35:03 +02:00
J. Nick Koston
04a0ca14e0 Ensure shutdown does not deadlock (#49282) 2021-04-18 08:55:51 -10:00
Brett
afd79a675c Add set_myzone service to Advantage Air (#46934)
* Add set_myzone service requested on forums

* Add MyZone binary sensor for climate zones

* Fixed Black on binary_sensor.py

* Add the new entity

* Fix spelling

* Test myZone value

* MyZone Binary Sensor test

* Fixed new binary sensor tests

* Fix removed dependancy

* Correct fixture

* Update homeassistant/components/advantage_air/binary_sensor.py

Co-authored-by: Philip Allgaier <philip.allgaier@gmx.de>

* Updated services.yaml to use target

Co-authored-by: Philip Allgaier <philip.allgaier@gmx.de>
2021-04-18 10:36:34 +02:00
J. Nick Koston
b2c33c1373 Only fetch the local ip once per run (#49336)
Wrap get_local_ip in lru_cache
2021-04-18 10:04:45 +02:00
J. Nick Koston
252bcabbea Fix exception in roomba discovery when the device does not respond on the first try (#49360) 2021-04-18 09:48:02 +02:00
J. Nick Koston
e10c105058 Bump aiodiscover to 1.4.0 for dhcp (#49359)
- Switches to using dnspython to generate the queries/parse them from the wire
2021-04-18 09:46:39 +02:00
J. Nick Koston
e06bb3b5e7 Shutdown harmony connection on stop (#49335) 2021-04-18 09:44:29 +02:00
HomeAssistant Azure
f8a02c2762 [ci skip] Translation update 2021-04-18 00:04:57 +00:00
J. Nick Koston
46c28f349a Update mazda to use ConfigEntryAuthFailed (#49333) 2021-04-17 09:25:13 -10:00
Aidan Timson
18cbf3cdb2 Fix lyric heat cool setting (#47875) 2021-04-17 07:20:35 -10:00
Aidan Timson
912d5c347c Add reauth flow for lyric (#47863) 2021-04-17 07:20:16 -10:00
Milan Meulemans
ad967cfebb Rituals Perfume Genie improvements (#49277)
* Rituals Perfume Genie integration improvements

* Add return type FlowResultDict to async_step_user

* Rollback async_update_data

* Add return type to DiffuserEntity init

* check super().available too

* Merge iterations

* Use RitualsPerufmeGenieDataUpdateCoordinator
2021-04-17 15:41:45 +02:00
Franck Nijhof
006bcde435 Remove HomeAssistantType alias - Part 3 (#49339) 2021-04-17 12:48:03 +02:00
Ruslan Sayfutdinov
7a9385d857 Explicitly define all methods in ConfigFlow (#49341) 2021-04-17 12:42:31 +02:00
Brandon Rothweiler
189511724a Add device tracker platform to Mazda integration (#47974)
* Add device tracker platform for Mazda integration

* Split device tests into a separate file

* Address review comments
2021-04-17 11:26:07 +02:00
Ville Skyttä
3a0b0380c7 Remove some unneeded pylint disables, update ref to util.process one (#49314) 2021-04-17 09:25:20 +02:00
Franck Nijhof
7f29d028a3 Upgrade pre-commit to 2.12.1 (#49331) 2021-04-16 21:19:02 -10:00
J. Nick Koston
f96a6e878f Ensure restore state is not written after the stop event (#49329)
If everything lined up, the states could be written
while Home Assistant is shutting down after the stop
event because the interval tracker was not canceled on
the stop event.
2021-04-17 09:03:18 +02:00
Martin Hjelmare
41ed1f818c Exclude epson init module from coverage (#49316) 2021-04-17 08:57:21 +02:00
Ville Skyttä
970cbcbe15 Type hint improvements (#49320) 2021-04-17 08:35:21 +02:00
J. Nick Koston
f7b7a805f5 Bump pysonos to 0.0.43 (#49330)
- Downgrade asyncio log severity
2021-04-16 20:19:50 -10:00
J. Nick Koston
94c803d83b Cancel tuya updates on the stop event (#49324) 2021-04-16 21:01:24 -07:00
J. Nick Koston
673f542cde Do not wait for websocket response to be delivered before shutdown (#49323)
- Waiting was unreliable since the websocket response could take a few seconds to get delivered
- Alternate frontend fix is https://github.com/home-assistant/frontend/pull/8932
2021-04-16 20:57:28 -07:00
HomeAssistant Azure
343b8faf9b [ci skip] Translation update 2021-04-17 00:03:46 +00:00
Paulus Schoutsen
984962d985 Improve DHCP + Zeroconf manifest validation (#49321) 2021-04-16 13:32:12 -10:00
Paulus Schoutsen
f464663732 Add DHCP to MyQ (#49319) 2021-04-16 11:53:41 -10:00
J. Nick Koston
f026768725 Add dhcp discovery to tuya (#49312)
Newer tuya devices use their own OUI instead of espressif
2021-04-16 14:04:18 -07:00
Paulus Schoutsen
89f2996caa Bump frontend to 20210416.0 2021-04-16 13:36:47 -07:00
jan iversen
ea9641f980 Apply Precision/Scale/Offset to struct in modbus sensor (#48544)
The single values in struct are corrected with presicion, scale and offset,
just as it is done with single values.
2021-04-16 22:33:58 +02:00
Daniel Hjelseth Høyer
65d092f1cc Upgrade pyMetno to 0.8.2 (#49308)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2021-04-16 20:17:46 +02:00
Maciej Bieniek
e9cf8db302 Add device_info property to OpenWeatherMap entities (#49293) 2021-04-16 09:28:53 -07:00
Franck Nijhof
7264c95217 Clean up superfluous integration setup - part 6 (#49298) 2021-04-16 09:23:27 -07:00
Franck Nijhof
af80ca6795 Clean up superfluous integration setup - part 5 (#49296) 2021-04-16 09:22:56 -07:00
Franck Nijhof
969c147b77 Clean up superfluous integration setup - part 4 (#49295)
* Clean up superfluous integration setup - part 4

* Adjust tests
2021-04-16 17:46:49 +02:00
Franck Nijhof
77f14b63f5 Merge pull request #49302 from home-assistant/rc 2021-04-16 16:04:26 +02:00
Franck Nijhof
a08df4e18f Bumped version to 2021.4.5 2021-04-16 15:35:06 +02:00
Joakim Sørensen
58b743eec1 Mark camera as a base platform (#49297) 2021-04-16 15:34:17 +02:00
Franck Nijhof
41736c93a1 Fix Coronavirus integration robustness (#49287)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-16 15:34:14 +02:00
Martin Hjelmare
733a394c55 Fix mysensors sensor protocol version check (#49257) 2021-04-16 15:34:10 +02:00
Erik Montnemery
ba0d3aad1c Fix race when restarting script (#49247) 2021-04-16 15:34:07 +02:00
Franck Nijhof
5c3cb044d0 Upgrade spotipy to 2.18.0 (#49220) 2021-04-16 15:34:03 +02:00
Erik Montnemery
a3ca48c1bd Set deprecated supported_features for MQTT JSON light (#49167)
* Set deprecated supported_features for MQTT json light

* Update homeassistant/components/light/__init__.py

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

Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-16 15:30:39 +02:00
Erik Montnemery
5356ce2b6d Don't receive homeassistant_* events from MQTT eventstream (#49158) 2021-04-16 15:30:36 +02:00
J. Nick Koston
02def46991 Fix setting up remotes that lack a supported features list in homekit (#49152) 2021-04-16 15:30:33 +02:00
J. Nick Koston
3ae82c3cac Bump aiodiscover to 1.3.4 (#49142)
- Changelog: https://github.com/bdraco/aiodiscover/compare/v1.3.3...v1.3.4 (bumps pyroute2>=0.5.18 to fix https://github.com/svinota/pyroute2/issues/717)
2021-04-16 15:30:29 +02:00
Franck Nijhof
73a9cb6adb Deprecate GNTP (Growl) integration (#49273)
Co-authored-by: Joakim Sørensen <joasoe@gmail.com>
2021-04-16 15:03:15 +02:00
Joakim Sørensen
c98788edae Mark camera as a base platform (#49297) 2021-04-16 15:00:21 +02:00
Franck Nijhof
93dbc26db5 Fix Coronavirus integration robustness (#49287)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-16 10:53:19 +02:00
Franck Nijhof
ee37d8141a Upgrade flake8 to 3.9.1 (#49284) 2021-04-16 09:35:19 +02:00
Franck Nijhof
ec5c6e18ec Fix ignorability of AdGuard hassio discovery step (#49276) 2021-04-16 09:11:19 +02:00
Erik Montnemery
2c8b7c56f5 Fix race when restarting script (#49247) 2021-04-16 09:03:34 +02:00
J. Nick Koston
564e7fa53c Avoid sending empty integration list multiple times during subscribe_bootstrap_integrations (#49181) 2021-04-15 23:16:17 -07:00
Paulus Schoutsen
6604614c39 Move top-level av import behind type checking flag (#49281)
* Move top-level av import behind type checking flag

* Lint
2021-04-15 18:18:25 -07:00
HomeAssistant Azure
283342bafb [ci skip] Translation update 2021-04-16 00:03:57 +00:00
Franck Nijhof
eb008e533e Process AdGuard review comments (#49274) 2021-04-15 23:34:49 +02:00
Franck Nijhof
a981b86b15 Update issue form to use latest changes (#49272) 2021-04-15 22:49:13 +02:00
Lau1406
b213b55ca9 Add missing target field to media_seek (#49031) 2021-04-15 22:48:39 +02:00
Raman Gupta
898a1a17be Add sensors for other ClimaCell data (#49259)
* Add sensors for other ClimaCell data

* add tests and add rounding

* docstrings

* fix pressure

* Update homeassistant/components/climacell/sensor.py

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

* Update homeassistant/components/climacell/sensor.py

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

* review comments

* add another abstractmethod

* use superscript

* remove mypy ignore

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-15 16:31:59 -04:00
J. Nick Koston
5fb36ad9e1 Add missing typing to data_entry_flow (#49271) 2021-04-15 09:59:52 -10:00
Kevin Eifinger
5a01addd67 Add support for multiple AdGuard instances (#49116) 2021-04-15 21:32:52 +02:00
Erik Montnemery
3d90d6073e Add common light helpers to test for feature support (#49199) 2021-04-15 20:32:27 +02:00
Mike Degatano
236d274351 Add search and match as Jinja tests (#49229) 2021-04-15 20:13:27 +02:00
Shay Levy
38f0c201c2 Fix Tasmota Wifi Signal Strength unit (#49263) 2021-04-15 19:53:03 +02:00
Shay Levy
31c519b26d Fix shelly RSSI sensor unit (#49265) 2021-04-15 19:52:06 +02:00
Ruslan Sayfutdinov
80f66f301b Define data flow result type (#49260)
* Define data flow result type

* Revert explicit definitions

* Fix tests

* Specific mypy ignore
2021-04-15 07:17:07 -10:00
J. Nick Koston
dafc7a072c Cancel discovery flows that are initializing at shutdown (#49241) 2021-04-15 07:13:42 -10:00
Angeliki Papadopoulou
a529a12745 Remove redundant text from documentation (#49262)
I found an extra "when" in the documentation text.
2021-04-15 18:05:07 +02:00
Erik Montnemery
ec56ae2cbc Set deprecated supported_features for MQTT JSON light (#49167)
* Set deprecated supported_features for MQTT json light

* Update homeassistant/components/light/__init__.py

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

Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-15 17:24:21 +02:00
Martin Hjelmare
1b5148a3af Fix mysensors sensor protocol version check (#49257) 2021-04-15 16:12:49 +02:00
bouni
4f5c745492 Fix broken swiss_hydrological_data integration (#49119)
* update requirements_all.txt

* 🚑 Fix broken JSON

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-04-15 12:40:23 +02:00
J. Nick Koston
7a40d0f1c2 Disconnect roomba on stop event (#49235) 2021-04-15 11:24:43 +02:00
J. Nick Koston
2887eeb32f Only enable envoy inverters when the user has access (#49234) 2021-04-15 11:17:32 +02:00
J. Nick Koston
d71f913a12 Ensure original log handlers are restored at close (#49230)
Error messages after close were not being logged
2021-04-15 10:53:48 +02:00
Franck Nijhof
055cdc64c0 Add support for IoT class in manifest (#46935) 2021-04-15 10:21:38 +02:00
Matthias Alphart
985b4a581a Create KNX switch entity directly from config (#49238) 2021-04-15 09:47:43 +02:00
J. Nick Koston
e234fc6e7e Disconnect homekit_controller devices on the stop event (#49244) 2021-04-14 21:47:15 -10:00
J. Nick Koston
54322f84c5 Do not schedule future ping device tracker updates once hass is stopping (#49236) 2021-04-15 08:49:28 +02:00
HomeAssistant Azure
e86aad34b9 [ci skip] Translation update 2021-04-15 00:02:56 +00:00
J. Nick Koston
8bee25c938 Fix stop listener memory leak in DataUpdateCoordinator on retry (#49186)
* Fix stop listener leak in DataUpdateCoordinator

When an integration retries setup it will add a new stop listener

* Skip scheduled refreshes when hass is stopping

* Update homeassistant/helpers/update_coordinator.py

* ensure manual refresh after stop
2021-04-14 12:16:59 -10:00
Franck Nijhof
63fa9f7dd8 Upgrade colorlog to 5.0.1 (#49221) 2021-04-14 23:56:32 +02:00
Franck Nijhof
6269449507 Upgrade spotipy to 2.18.0 (#49220) 2021-04-14 23:52:10 +02:00
Steven Looman
555f508b8c Reinitialize upnp device on config change (#49081)
* Store coordinator at Device

* Use DeviceUpdater to follow config/location changes

* Cleaning up

* Fix unit tests + review changes

* Don't test internals
2021-04-14 23:39:44 +02:00
Milan Meulemans
ed54494b69 Add binary sensor platform to Rituals Perfume Genie Integration (#49207)
* Add binary sensor platform to Rituals

* Sort platforms
2021-04-14 23:10:35 +02:00
J. Nick Koston
403c6b9e26 Stop ssdp scans when stop event happens (#49140) 2021-04-14 22:23:15 +02:00
Unai
aaa600e00a Add unique-ids to maxcube component (#49196) 2021-04-14 22:19:24 +02:00
Khole
8ce74e598d Allow debugging of integration dependancies (#49211) 2021-04-14 19:26:37 +02:00
Jeff Irion
81d46828ad Bump androidtv (0.0.58) and adb-shell (0.3.1) (#49209) 2021-04-14 18:44:39 +02:00
Hmmbob
7ffd4fa83d Support all available Google Cloud TTS languages (#49208) 2021-04-14 18:14:24 +02:00
Diogo Gomes
e4a7260384 Bump pykmtronic to 0.3.0 (#49191) 2021-04-14 18:11:51 +02:00
Tobias Sauerwein
9d4ad1821e Fix logic of entity id extraction (#49164)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-14 14:12:26 +02:00
Carmen Sanchez
fe1e57e76f Added Spanish US voice to Google Cloud TTS (#49200)
See https://cloud.google.com/text-to-speech/docs/voices
2021-04-14 11:00:32 +02:00
Erik Montnemery
1230c46e1e Use supported_color_modes in alexa (#49174) 2021-04-14 09:18:49 +02:00
Erik Montnemery
e0ac12bd56 Use supported_color_modes in homekit (#49177) 2021-04-14 09:18:34 +02:00
Erik Montnemery
1a5068f71d Use supported_color_modes in google_assistant (#49176)
* Use supported_color_modes in google_assistant

* Fix tests
2021-04-14 09:18:22 +02:00
J. Nick Koston
44beff31c2 Cancel config entry retry, platform retry, and polling at the stop event (#49138) 2021-04-13 16:16:26 -10:00
HomeAssistant Azure
0b4b071c02 [ci skip] Translation update 2021-04-14 00:03:17 +00:00
J. Nick Koston
81e6ad0744 Replace http startup logic with async_when_setup_or_start (#48784) 2021-04-13 14:10:58 -07:00
J. Nick Koston
d7ac4bd653 Cancel sense updates on the stop event (#49187) 2021-04-13 14:03:46 -07:00
Julien "_FrnchFrgg_" Rivaud
5a9c3fea70 Enable passing Amcrest/Dahua signals through as HA events (#49004)
Some of the compatible hardware sends event signals that wouldn't map
well to entities, e.g. NTP sync notifications, SIP registering
information, or « doorbell button pressed » events with no « return to
rest state » matching event to have a properly behaved binary sensor.

Instead of only monitoring specific events, subscribe to all of them,
and pass them through (in addition to handling them as before if they
correspond to a configured binary sensor).

Also bump python-amcrest to 1.7.2. Digest of the changes:

* The library now passes through the event data instead of just presence of a
 "Start" member in in.
* Connection to some devices has been fixed by not throwing the towel on
  minor errors.

https://github.com/tchellomello/python-amcrest/compare/1.7.1...1.7.2
2021-04-13 21:33:46 +02:00
puddly
5d57e5c06c Enable the custom quirks path ZHA config option (#49143) 2021-04-13 13:14:53 -04:00
Paulus Schoutsen
ba93a033a5 Cloud to set up Alexa conditionally (#49136) 2021-04-13 09:31:41 -07:00
Paulus Schoutsen
28347e19c5 Fix Hue service being removed on entry reload (#48663) 2021-04-13 09:31:23 -07:00
Paulus Schoutsen
05aeff5591 Describe Google Assistant events (#49141)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-13 09:31:01 -07:00
René Klomp
926c2489f0 Implement SMA config flow (#48003)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Johann Kellerman <kellerza@gmail.com>
2021-04-13 06:21:01 -10:00
Andreas Oberritter
e9f0891354 Add edl21 OBIS IDs for Holley DTZ541-ZEBA (#49170) 2021-04-13 17:49:28 +02:00
Raman Gupta
0f454bc456 Don't assert the device registry entry in zwave_js (#49178) 2021-04-13 11:32:17 -04:00
Paulus Schoutsen
beea2dd35f Internally work with modern config syntax for template binary sensor platform config (#48981) 2021-04-13 07:58:44 -07:00
J. Nick Koston
82790cd28d Do not compile static templates (#49148)
self._compiled_code is unreachable if self.is_static
2021-04-13 16:51:56 +02:00
Raman Gupta
fe6d6895aa Migrate existing zwave_js entities if endpoint has changed (#48963)
* Migrate existing zwave_js entities if endpoint has changed

* better function name

* cleanup code

* return as early as we can

* use defaultdict instead of setdefault

* PR comments

* re-add missing logic

* set defaultdict outside of for loop

* additional cleanup

* parametrize tests

* fix reinterview logic

* test that we skip migration when multiple entities are found

* Update tests/components/zwave_js/test_init.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-13 16:37:55 +02:00
Franck Nijhof
de569982a4 Fix services for Armcrest & Logi Circle (#49166) 2021-04-13 16:32:39 +02:00
muppet3000
0ca3186caf Add 'mix' system support for Growatt integration (#49026)
* Added 'mix' system support for Growatt integration

* Changed Growatt "Last Data Update" to a timestamp

* Changed Growatt "Last Data Update" to UTC

* Accepted suggested change for Growatt  "Last Data Update"

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-13 15:40:30 +02:00
Erik Montnemery
916ba0be11 Don't receive homeassistant_* events from MQTT eventstream (#49158) 2021-04-13 15:09:50 +02:00
Raman Gupta
769923e8dd Raise exception for invalid call to DeviceRegistry.async_get_or_create (#49038)
* Raise exception instead of returning None for DeviceRegistry.async_get_or_create

* fix entity_platform logic
2021-04-13 14:18:51 +02:00
Tobias Sauerwein
2b79c91813 Clean up camera service schema (#49151) 2021-04-13 13:07:05 +02:00
J. Nick Koston
5365fb6c72 Fix setting up remotes that lack a supported features list in homekit (#49152) 2021-04-13 12:44:07 +02:00
J. Nick Koston
51a7a724d6 Bump aiodiscover to 1.3.4 (#49142)
- Changelog: https://github.com/bdraco/aiodiscover/compare/v1.3.3...v1.3.4 (bumps pyroute2>=0.5.18 to fix https://github.com/svinota/pyroute2/issues/717)
2021-04-13 12:31:55 +02:00
J. Nick Koston
91821fa6ad Name the dhcp watcher thread (#49144)
When getting py-spy reports, it is helpful to get thread names
to make it easier to track down issues.
2021-04-13 12:29:30 +02:00
J. Nick Koston
2cc9ae1af1 Use named constants for core shutdown timeouts (#49146)
This is intended to make them easier to reference outside the core
code base.
2021-04-13 12:21:52 +02:00
dependabot[bot]
0742b046b9 Bump actions/cache from v2.1.4 to v2.1.5 (#49157)
Bumps [actions/cache](https://github.com/actions/cache) from v2.1.4 to v2.1.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2.1.4...1a9e2138d905efd099035b49d8b7a3888c653ca8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 12:11:42 +02:00
dependabot[bot]
c71a1a34fa Bump actions/setup-python from v2.2.1 to v2.2.2 (#49156)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from v2.2.1 to v2.2.2.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2.2.1...dc73133d4da04e56a135ae2246682783cc7c7cb6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 12:10:30 +02:00
Clifford Roche
4ce6d00a22 Improve the discovery process for Gree (#45449)
* Add support for async device discovery

* FIx missing dispatcher cleanup breaking integration reload

* Update homeassistant/components/gree/climate.py

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

* Update homeassistant/components/gree/switch.py

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

* Update homeassistant/components/gree/bridge.py

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

* Working on feedback

* Improving load/unload tests

* Update homeassistant/components/gree/__init__.py

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

* Working on more feedback

* Add tests covering async discovery scenarios

* Remove unnecessary shutdown

* Update homeassistant/components/gree/__init__.py

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

* Code refactor from reviews

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-13 11:54:03 +02:00
Dermot Duffy
63d42867e8 Add Hyperion device support (#47881)
* Add Hyperion device support.

* Update to the new typing annotations.

* Add device cleanup logic.

* Fixes based on the excellent feedback from emontnemery
2021-04-13 10:35:38 +02:00
Paulus Schoutsen
b5548c57fb Merge pull request #49139 from home-assistant/rc 2021-04-12 17:45:38 -07:00
Mike O'Driscoll
5bf3469ffc ZHA support Quotra LED On quirk (#49137)
The Quotra-Vision QV-RGBCCT doesn't support the move_to_level_with_onoff
command in ZCL spec. Force on with this device.
2021-04-12 20:32:36 -04:00
Raman Gupta
cc40e681e2 Lazy load zwave_js platforms when the first entity needs to be created (#49016)
* Lazy load zwave_js platforms when the first entity needs to be created

* switch order to make things easier to understand

* await task instead of using wait_for_done callback

* gather tasks

* switch from asyncio.create_task to hass.async_create_task

* unsubscribe from callbacks before unloading platforms

* Clean up as much as possible during entry unload, even if a platform unload fails
2021-04-12 20:26:49 -04:00
J. Nick Koston
53853f035d Prevent calling stop or restart services during db upgrade (#49098) 2021-04-12 17:18:38 -07:00
Paulus Schoutsen
65126cec3e Allow top level non-trigger template entities (#48976) 2021-04-12 17:15:50 -07:00
Paulus Schoutsen
e5281051a3 Bumped version to 2021.4.4 2021-04-13 00:10:42 +00:00
jjlawren
346ae78a8e Check all endpoints for zwave_js.climate hvac_action (#49115) 2021-04-13 00:09:51 +00:00
Unai
b5650bdd52 Upgrade maxcube-api to 0.4.2 (#49106)
Upgrade to maxcube-api 0.4.2 to fix pending issues in HA 2021.4.x:
 - Interpret correctly S command error responses (https://github.com/home-assistant/core/issues/49075)
 - Support application timezone configuration (https://github.com/home-assistant/core/issues/49076)
2021-04-13 00:09:50 +00:00
J. Nick Koston
bf28268732 Downgrade logger message about homekit id missing (#49079)
This can happen if the TXT record is received after the PTR record and
should not generate a warning since it will get processed later
2021-04-13 00:09:49 +00:00
Kevin Worrel
4eb794ae84 Catch unknown equipment values (#49073)
* Catch unknown equipment values

* Catch unknown equipment values

* Remove warning spam.
2021-04-13 00:09:48 +00:00
Jan Bouwhuis
21b5551506 mqtt fan percentage to speed_range and received speed_state fix (#49060)
* percentage to speed_range and get speed state fix

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-13 00:07:27 +00:00
Erik Montnemery
e0131f726f Quote media_source paths (#49054)
* Quote path in async_sign_path

* Address review comments, add tests

* Update tests/testing_config/media/Epic Sax Guy 10 Hours.mp4

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-13 00:07:27 +00:00
Erik Montnemery
e685b1a1e3 Fix cast options flow overwriting data (#49051) 2021-04-13 00:07:26 +00:00
J. Nick Koston
0d00e49dfc Bump aiohomekit to 0.2.61 (#49044) 2021-04-13 00:07:25 +00:00
Chris Talkington
36e08e770b Resolve potential roku setup memory leaks (#49025)
* resolve potential roku setup memory leaks

* Update __init__.py
2021-04-13 00:07:24 +00:00
Franck Nijhof
e3b3d136d8 Fix use search instead of match to filter logs (#49017) 2021-04-13 00:07:23 +00:00
Joakim Plate
0a5a5ff053 Bump ha-philipsjs to 2.7.0 (#49008)
This has some improvements to not consider the TV
off due to some exceptions that is related to API
being buggy rather than off.
2021-04-13 00:07:22 +00:00
Shay Levy
0bb7592fab Fix Shelly brightness offset (#49007) 2021-04-13 00:07:21 +00:00
Aidan Timson
d081ac8d4a Set Lyric hold time to use local time instead of utc (#48994) 2021-04-13 00:07:20 +00:00
J. Nick Koston
b96e0e69f2 Bump nexia to 0.9.6 (#48982)
- Now returns None when a humidity sensor cannot be read instead of throwing an exception
2021-04-13 00:07:20 +00:00
Erik Montnemery
82cca8fb1c Move cast config flow tests to test_config_flow (#48362) 2021-04-13 00:07:19 +00:00
HomeAssistant Azure
93c68f8be6 [ci skip] Translation update 2021-04-13 00:04:04 +00:00
Shay Levy
5c71ba578d Fix Shelly brightness offset (#49007) 2021-04-12 15:52:51 -07:00
Unai
ff8e4fb77f Upgrade maxcube-api to 0.4.2 (#49106)
Upgrade to maxcube-api 0.4.2 to fix pending issues in HA 2021.4.x:
 - Interpret correctly S command error responses (https://github.com/home-assistant/core/issues/49075)
 - Support application timezone configuration (https://github.com/home-assistant/core/issues/49076)
2021-04-13 00:14:29 +02:00
starkillerOG
88d2fb4aa6 Bump yeelight version to 0.6.0 (#49111) 2021-04-13 00:06:52 +02:00
treylok
7256e333e4 Add Ecobee humidifier (#45003) 2021-04-12 23:44:13 +02:00
Ludovico de Nittis
de4b1eebdd iAlarm small code quality improvements (#49126) 2021-04-12 23:24:15 +02:00
Raman Gupta
b98ca49a56 Add min and max temp properties to zwave_js.climate (#49125) 2021-04-12 22:12:38 +02:00
Erik Montnemery
ff5fbea1fb Improve trace of template conditions (#49101)
* Improve trace of template conditions

* Refactor

* Fix wait_template trace

* Update tests
2021-04-12 20:22:28 +02:00
Marc Mueller
106dc4d28a Don't import stdlib typing types from helpers.typing (#49104) 2021-04-12 18:43:14 +02:00
Erik Montnemery
f5545badac Quote media_source paths (#49054)
* Quote path in async_sign_path

* Address review comments, add tests

* Update tests/testing_config/media/Epic Sax Guy 10 Hours.mp4

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-12 18:32:12 +02:00
jjlawren
dbb771e19c Check all endpoints for zwave_js.climate hvac_action (#49115) 2021-04-12 12:29:45 -04:00
Abílio Costa
ebc2bec08d Reduce reporting delta for ZHA humidity channel (#49070) 2021-04-12 12:02:59 -04:00
Marc Mueller
885f528711 Replace old style type comments (#49103) 2021-04-12 17:07:18 +02:00
Marc Mueller
05468a50f4 Fix xbox type hint (#49102) 2021-04-12 13:57:30 +02:00
David F. Mulcahey
fe80afdb86 Add support for custom configurations in ZHA (#48423)
* initial configuration options

* first crack at saving the data

* constants

* implement initial options

* make more dynamic

* fix unload and reload of the config entry

* update unload
2021-04-12 07:08:42 -04:00
Zero King
9c11f6547a Fix forecast pressure unit in OpenWeatherMap (#49069) 2021-04-12 11:56:35 +02:00
William Scanlon
06a8ffe94d Bump pyeconet to 0.1.14 (#49067)
* Bump pyeconet to fix crash

* Bump pyeconet from beta version

* Update requirements_all
2021-04-12 10:41:20 +02:00
J. Nick Koston
73f227b651 Use shared httpx client in enphase_envoy (#48709)
* Use shared httpx client in enphase_envoy

* test fix

* f

* bump version
2021-04-12 10:31:25 +02:00
Franck Nijhof
a610076001 Support min()/max() as template function (#48996) 2021-04-12 10:02:04 +02:00
J. Nick Koston
9368891b1b Live db migrations and recovery (#49036)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-11 20:43:54 -10:00
Paulus Schoutsen
2d5edeb1ef Set hass when adding template attribute (#49094) 2021-04-11 22:49:09 -07:00
Corbeno
eac1041277 Create DataUpdateCoordinator for each proxmoxve vm/container (#45171)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-11 17:14:11 -10:00
Phil Bruckner
f538ea1827 Release ownership of amcrest integration (#49086)
I no longer use this integration and others have taken over maintenance.
2021-04-11 21:44:22 -05:00
HomeAssistant Azure
c7d19d5115 [ci skip] Translation update 2021-04-12 00:04:19 +00:00
Joakim Sørensen
9585defca0 Add device_tracker scanners to hass.config.components (#49063) 2021-04-11 13:54:43 -10:00
Erik Montnemery
1145856c45 Fix cast options flow overwriting data (#49051) 2021-04-11 13:53:44 -10:00
Jan Bouwhuis
74d7293ab8 mqtt fan percentage to speed_range and received speed_state fix (#49060)
* percentage to speed_range and get speed state fix

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

* Update homeassistant/components/mqtt/fan.py

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-11 13:53:07 -10:00
Kevin Worrel
41ff6fc278 Catch unknown equipment values (#49073)
* Catch unknown equipment values

* Catch unknown equipment values

* Remove warning spam.
2021-04-11 18:12:59 -04:00
mptei
1d28f485d3 Patch ip interface instead of XKNX in knx (#49064)
* knx: Deeper tests.

* Set rate_limit to 0; removed waiting for queue
2021-04-11 23:01:30 +02:00
Milan Meulemans
71e0e42792 Add Rituals Perfume Genie sensor platform (#48270)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-11 10:36:44 -10:00
J. Nick Koston
b86bba246a Downgrade logger message about homekit id missing (#49079)
This can happen if the TXT record is received after the PTR record and
should not generate a warning since it will get processed later
2021-04-11 10:36:26 -10:00
Nathan Spencer
eb2949a20f Add set_wait_time command support to Litter-Robot (#48300)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-11 10:35:25 -10:00
Ludovico de Nittis
30618aae94 Reintroduce iAlarm integration (#43525)
The previous iAlarm integration has been removed because it used
webscraping #43010.

Since then, the pyialarm library has been updated to use the iAlarm API
instead.

With this commit I reintroduce the iAlarm integration, leveraging the
new HA config flow.

Signed-off-by: Ludovico de Nittis <ludovico.denittis@collabora.com>
2021-04-11 10:35:04 -10:00
Chris Talkington
f7b6d3164a Resolve potential roku setup memory leaks (#49025)
* resolve potential roku setup memory leaks

* Update __init__.py
2021-04-11 12:35:42 -05:00
J. Nick Koston
a261bb35eb Bump aiohomekit to 0.2.61 (#49044) 2021-04-11 06:42:46 -10:00
Ruslan Sayfutdinov
9997ae6932 Type data parameter as Mapping in async_create_entry (#49050) 2021-04-11 16:56:33 +02:00
Raman Gupta
34a1dd4120 Add new attributes to Climacell (#48707)
* Add new attributes to Climacell

* fix logic

* test new properties
2021-04-11 11:59:42 +02:00
Phil Hollenback
e38fce98c4 Fix non-metric atmospheric pressure in Open Weather Map (#49030)
The openweathermap component retrieves atmospheric pressure from the
openweathermap api and passes it along without checking the units.
The api returns pressure in metric (hPa).  If you the use the weather
forecast card on a non-metric home assistant install, you will then
see the pressure reported as something like '1019 inHg', which is an
incorrect combination of metric value and non-metric label.

To fix this, check when retrieving the pressure if this is a metric
system.  If not, convert the value to non-metric inHg before sending
it along.

Weirdly, this isn't a problem for temperature, so I suspect temp is
getting converted somewhere else.
2021-04-11 11:13:07 +02:00
Nicolas Braem
71a410c742 Correct vicare power production device class (#49040) 2021-04-11 10:52:28 +02:00
Joakim Plate
62182ea460 Bump ha-philipsjs to 2.7.0 (#49008)
This has some improvements to not consider the TV
off due to some exceptions that is related to API
being buggy rather than off.
2021-04-11 08:42:32 +02:00
Ben Hale
e68678e336 Upgrade aioambient to 1.2.4 (#49035) 2021-04-10 20:19:31 -06:00
HomeAssistant Azure
45a92f5791 [ci skip] Translation update 2021-04-11 00:04:41 +00:00
Nicolas Braem
42156bafe0 Change vicare unit of power production current to POWER_WATT (#49000) 2021-04-10 23:02:08 +02:00
Franck Nijhof
5983fac5c2 Fix use search instead of match to filter logs (#49017) 2021-04-10 22:03:44 +02:00
Franck Nijhof
654a532641 Upgrade wakonlan to 2.0.1 (#48995) 2021-04-10 21:50:12 +02:00
Aidan Timson
3cd40ac79c Set Lyric hold time to use local time instead of utc (#48994) 2021-04-10 21:48:33 +02:00
Andreas Oberritter
e1d4d65ac4 Bump pysml to 0.0.5 (#49014) 2021-04-10 20:16:28 +02:00
Marvin Wichmann
21744790d3 Add KNX source address to Sensor and BinarySensor (#48857)
* Add source address to Sensor and BinarySensor

* Fix typing

* Review: Always use UTC time in state attributes

* Review: Add missing UTC conversion in sensor
2021-04-10 18:12:43 +02:00
Adrien Brault
676af205e4 Fix light template invalid color temp message (#48337) 2021-04-10 17:22:15 +02:00
amitfin
f8690c29cd Bump libhdate dependency (#48695) 2021-04-10 17:20:08 +02:00
dynasticorpheus
7ef17bf175 Add support for event type closed to integration folder_watcher (#48226) 2021-04-10 17:04:43 +02:00
Simone Chemelli
fcf86e59cc Log zone cleaning (#47912) 2021-04-10 16:55:28 +02:00
Simone Chemelli
157c1d0ed2 Fix Zeroconf manifest schema in hassfest script (#49006) 2021-04-10 16:45:53 +02:00
EetuRasilainen
e7a3308efa Improve schema of media_player.join service (#48342)
Co-authored-by: eetu <EetuRasilainen@users.noreply.github.com>
2021-04-10 16:32:41 +02:00
Marc Mueller
1a38d2089d Bump python-typing-update to v0.3.3 (#48992)
* Bump python-typing-update to 0.3.3
* Changes after update
2021-04-10 15:21:11 +02:00
J. Nick Koston
a0a8638a2d Bump nexia to 0.9.6 (#48982)
- Now returns None when a humidity sensor cannot be read instead of throwing an exception
2021-04-10 12:42:42 +02:00
Martin Hjelmare
7e30ab2fb2 Add missing internal quality scale label (#48947)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-04-10 12:37:20 +02:00
Erik Montnemery
7e4be921a8 Add helper to get an entity's supported features (#48825)
* Add helper to check entity's supported features

* Move get_supported_features to helpers/entity.py, add tests

* Fix error handling and improve tests
2021-04-10 08:19:16 +02:00
J. Nick Koston
4cd7f9bd8b Raise ConfigEntryAuthFailed during setup or coordinator update to start reauth (#48962) 2021-04-09 19:41:29 -10:00
Jason
7cc857a298 Add custom JSONEncoder for subscribe_trigger WS endpoint (#48664) 2021-04-09 20:47:10 -07:00
Matt Zimmerman
a9602e7a08 Update python-smarttub to 0.0.23 (#48978) 2021-04-10 03:38:13 +00:00
Matt Zimmerman
c08ae64085 Update python-smarttub to 0.0.23 (#48978) 2021-04-10 03:37:10 +00:00
Matt Zimmerman
324dd12db8 Update python-smarttub to 0.0.23 (#48978) 2021-04-09 20:36:57 -07:00
Paulus Schoutsen
01e558430a Merge pull request #48977 from home-assistant/rc 2021-04-09 20:35:34 -07:00
Abílio Costa
5c7408cdce Remove uneeded check in ZHA battery voltage attrib (#48968) 2021-04-09 21:30:32 -04:00
Paulus Schoutsen
31b061e8f1 Bumped version to 2021.4.3 2021-04-10 00:30:34 +00:00
Shay Levy
4ca40367d1 Fix Shelly button device triggers (#48974) 2021-04-10 00:30:24 +00:00
J. Nick Koston
12da88cae9 Prevent ping id allocation conflict with device_tracker (#48969)
* Prevent ping id allocation conflict with device_tracker

- Solves id conflict resulting unexpected home state

* Update homeassistant/components/ping/device_tracker.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-10 00:30:23 +00:00
Paulus Schoutsen
0520ce5ed3 Fix config forwarding (#48967) 2021-04-10 00:30:22 +00:00
Guido Schmitz
995e22d3bb Bump devolo Home Control to support old websocket-client versions again (#48960) 2021-04-10 00:30:21 +00:00
Jan Bouwhuis
6296d78e58 Implement percentage_step and preset_mode is not not speed fix for MQTT fan (#48951) 2021-04-10 00:30:20 +00:00
Joakim Sørensen
2c7fd30029 Add TTS engines in config.components (#48939)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-10 00:30:20 +00:00
Ville Skyttä
4149cc9662 Huawei LTE cleanups (#48959) 2021-04-09 17:08:13 -07:00
Guido Schmitz
441c304f11 Bump devolo Home Control to support old websocket-client versions again (#48960) 2021-04-09 17:07:04 -07:00
HomeAssistant Azure
a36712509b [ci skip] Translation update 2021-04-10 00:03:44 +00:00
Shay Levy
98396e13af Fix Shelly button device triggers (#48974) 2021-04-09 16:58:44 -07:00
J. Nick Koston
9b0b2d9168 Prevent ping id allocation conflict with device_tracker (#48969)
* Prevent ping id allocation conflict with device_tracker

- Solves id conflict resulting unexpected home state

* Update homeassistant/components/ping/device_tracker.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-09 16:56:15 -07:00
Jan Bouwhuis
28ad5b5514 Implement percentage_step and preset_mode is not not speed fix for MQTT fan (#48951) 2021-04-09 16:14:48 -07:00
Joakim Sørensen
eef7faa1e4 Add TTS engines in config.components (#48939)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-09 16:13:07 -07:00
Paulus Schoutsen
6d5c34f2dc Fix config forwarding (#48967) 2021-04-10 01:12:40 +02:00
Paulus Schoutsen
9f06639ecc Bump hass-nabucasa 0.43 (#48964) 2021-04-09 13:43:38 -07:00
Erik Montnemery
16196e2e16 Don't log template errors from developer tool (#48933) 2021-04-09 12:10:02 -07:00
Paulus Schoutsen
7b7cfd71de Merge pull request #48954 from home-assistant/rc 2021-04-09 12:03:40 -07:00
Bram Kragten
d5d9a5ff11 Update frontend to 20210407.3 (#48957) 2021-04-09 18:53:45 +00:00
Bram Kragten
43335953a2 Update frontend to 20210407.3 (#48957) 2021-04-09 11:53:20 -07:00
Paulus Schoutsen
3f744bcbef Bumped version to 2021.4.2 2021-04-09 17:39:03 +00:00
jjlawren
92746aa60c Fix Plex live TV handling (#48953) 2021-04-09 17:38:54 +00:00
Ph-Wagner
4da77b9768 Extend Google Cast media source URL expiry to 24h (#48937)
* Extend media source URL expiry to 12h

closes #46280
After checking out https://github.com/home-assistant/core/pull/48912 I just think why not.

* Update homeassistant/components/cast/media_player.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-09 17:38:53 +00:00
David F. Mulcahey
b800bb0202 Bump ZHA quirks library (#48931) 2021-04-09 17:38:52 +00:00
Tobias Sauerwein
b41e611cb5 Bump pykodi to 0.2.5 (#48930) 2021-04-09 17:38:52 +00:00
Philip Allgaier
ee78c9b08a Fix "notify.events" trim() issue + add initial tests (#48928)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-09 17:38:51 +00:00
Joakim Sørensen
29bb6d76f1 Change discovery timeout from 10 to 60 (#48924) 2021-04-09 17:38:50 +00:00
Joakim Sørensen
38a1c65ab7 Handle exceptions when looking for new version (#48922) 2021-04-09 17:38:49 +00:00
Tobias Sauerwein
1ca087b4d0 Bump pykodi to 0.2.4 (#48913) 2021-04-09 17:38:48 +00:00
Erik Montnemery
1f21b19eae Extend media source URL expiry to 24h (#48912) 2021-04-09 17:38:47 +00:00
Milan Meulemans
6746fbadef Catch expected errors and log them in rituals perfume genie (#48870)
* Add update error logging

* Move try available to else

* Remove TimeoutError
2021-04-09 17:38:46 +00:00
Hans Kröner
41fe8b9494 Account for openweathermap 'dew_point' not always being present (#48826) 2021-04-09 17:38:45 +00:00
jjlawren
2e32589741 Fix Plex live TV handling (#48953) 2021-04-09 10:38:01 -07:00
Philip Allgaier
7e2c8a2737 Fix "notify.events" trim() issue + add initial tests (#48928)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-09 10:36:13 -07:00
J. Nick Koston
ac02f7c88a Bump boto3 to 1.16.52 (#47772) 2021-04-09 10:16:59 -07:00
J. Nick Koston
40450b9cfd Detach aiohttp.ClientSession created by config entry setup on unload (#48908) 2021-04-09 10:14:33 -07:00
Marc Mueller
8e2b5b36b5 Bump pyupgrade to 2.12.0 (#48943) 2021-04-09 09:58:27 -07:00
Tobias Sauerwein
ee0c87df1c Bump pykodi to 0.2.5 (#48930) 2021-04-09 09:54:39 -07:00
Joakim Sørensen
af3b18c40a Handle exceptions when looking for new version (#48922) 2021-04-09 09:54:24 -07:00
David F. Mulcahey
f2f0331309 Bump ZHA quirks library (#48931) 2021-04-09 12:08:56 -04:00
Ph-Wagner
b66c4a9dca Extend Google Cast media source URL expiry to 24h (#48937)
* Extend media source URL expiry to 12h

closes #46280
After checking out https://github.com/home-assistant/core/pull/48912 I just think why not.

* Update homeassistant/components/cast/media_player.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-09 18:02:06 +02:00
Erik Montnemery
346af58f27 Extend media source URL expiry to 24h (#48912) 2021-04-09 17:19:23 +02:00
Joakim Sørensen
65c39bbd92 Change discovery timeout from 10 to 60 (#48924) 2021-04-09 16:44:02 +02:00
RenierM26
155322584d Update Ezviz Component (#45722)
* Update Ezviz Component

* Update Ezviz for pylint test

* Update Ezviz component pylint tests

* Update Ezviz component tests

* Update Ezviz Component tests

* Update Ezviz component pylint error

* Fix ezviz component config flow tests

* Update ezviz component

* Update Ezviz component

* Add sensor platforms

* issue with requirements file

* Update binary_sensor to include switches

* Updates to Ezviz sensors

* Removed enum private method.

* Fix switch args

* Update homeassistant/components/ezviz/switch.py

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

* config flow checks login info

* Config_flow now imports ezviz from camera platform

* Update test

* Updated config_flow with unique_id and remove period from logging

* Added two camera services and clarified service descryptions in services.yaml

* Fixed variable name mistake with new service

* Added french integration translation

* Config_flow add camera rtsp credentials as seperate entities, with user step and import step

* rerun hassfest after rebase

* Removed region from legacy config schema, removed logging in camera platform setup that could contain credentials, removed unused constant.

* Regenerate requirements

* Fix tests and add config_flow import config test

* Added addition test to config_flow to test successfull camera entity create.

* Add to tests method to end in create entry, config_flow cleanup, use entry instead of entry.data

* Removed all services, sorted platforms in init file.

* Changed RTSP logging to debug from warning. (Forgot to change this before commit)

* Cleanup typing, change platform order, bump pyezviz version

* Added types to entries, allow creation of main entry if deleted by validating existance of type

* Config_flow doesn't store serial under entry data, camera rtsp read from entry and not stored in hass, removed duplicate abort if unique id from config flow

* Fix test of config_flow

* Update tests/components/ezviz/test_config_flow.py

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

* Update tests/components/ezviz/test_config_flow.py

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

* Update tests/components/ezviz/test_config_flow.py

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

* Bumped pyezviz api version, added api pyezvizerror exception raised in api (on HTTPError), cleanup unused imports.

* rebase

* cleanup coordinator, bump pyezviz api version, move async_setup_entry to add entry options to camera entries. (order change)

* Added discovery step in config_flow if cameras detected without rtsp config entry

* Reload main integration after addition or completion of camera rtsp config entry

* Add tests for discovery config_flow, added a few other output asserts

* Camera platform call discover flow with hass.async_create_task. Fixes to config_flow for discovery step

* Fix config_flow discovery, add check to legacy yaml camera platform import, move camera private method to camera import step

* Remove not needed check from config_flow import step.

* Cleanup config_flow

* Added config_flow description for discovered camera

* Reordered description in config_flow confim step.

* Added serial to flow_step description for discovered camera, readded camera attributes for rtsp stream url (allows user to check RTSP cred), added local ip and firmware upgade available.

* Bumped pyezviz version and changed region code to region url. (Russia uses a completly different url). PyEzviz adds a Local IP sensor, removed camera entity attributes.

* Add RSTP describe auth check from API to config_flow

* url as vol.in options in Config_flow

* Config_flow changes to discovery step, added exceptions, fixed tests, added rtsp config validate module mock to test disovery confirm step

* Add test for config_flow step user_camera

* Added tests for abort flow

* Extend tests on custom url flow step

* Fix exceptions in config_flow, fix test for discovery import exception test

* Bump pyezviz api version

* Bump api version, added config_flow function to wake hybernating camera before testing credentials, removed "user camera" step from config flow not needed as cameras are discovered.

* Create pyezviz Api instance for config_flow wake hybernating camera, fixed tests and added fixture to mock method

* Added alarm_control_panel with support to arm/disarm all cameras, fixed camera is available attribute (returns 2 if unavailable, 1 if available)

* Skip ignored entities when setup up camera RTSP stream

* Remove alarm_control_panel, add additional config_flow tests

* Cleanup tests, add tests for discovery_step.

* Add test for config_flow rtsp test step1 exceptions

* Removed redundant except from second step in test RTSP method

* All tests to CREATE or ABORT, added step exception for general HTTP error so user can retry in case of trasient network condition

* Ammended tests with output checks for step_id, error, data, create entry method calls.

* bumped ezviz api now rases library exceptions. Config_flow, coordiantor and init raises library exceptions. Updated test sideeffect for library exceptions

* Bump api version, Create mock ezviz cloud account on discovery tests first to allow more complete testing of step.

* Add abort to rtsp verification method if cloud account was deleted and add tests

* Update tests/components/ezviz/__init__.py

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

* Update homeassistant/components/ezviz/const.py

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

* Update tests/components/ezviz/__init__.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Undo config import change to password key for yaml, move hass.data.setdefault to async_setup_entry and remove async_setup

* Fixed tests by removing _patch_async_setup as this was removed from init.

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Update homeassistant/components/ezviz/camera.py

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

* Changed L67 on camera config to complete suggestion for cleanup

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-09 12:39:19 +02:00
Álvaro Fernández Rojas
e30cf88459 AEMET town timestamp should be UTC (#48916)
AEMET OpenData doesn't clarify if the hourly data timestamp is UTC or not, but
after correctly formatting the town timestamp in ISO format, it is clear that
the timestamp is provided as UTC value.
Therefore, the only values not provided as UTC are the ones related to the
specific daily and hourly forecast values.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-04-09 12:37:46 +02:00
amitfin
2391134d26 Update "issur_melacha_in_effect" via time tracking (#42485) 2021-04-09 12:26:55 +02:00
Brandon Rothweiler
52e8c7166b Allow template covers to have opening and closing states (#47925) 2021-04-09 11:36:02 +02:00
Tobias Sauerwein
f396804f54 Bump pykodi to 0.2.4 (#48913) 2021-04-09 11:27:43 +02:00
Robert Svensson
31ae121645 Add fixtures for Axis rtsp client and adapt tests to use them (#47901)
* Add a fixture for rtsp client and adapt tests to use it

* Better fixtures for RTSP events and signals
2021-04-09 10:56:53 +02:00
Phil Hollenback
e7e53b879e Fix cpu temperature reporting for Armbian on Odroid (#48903)
Some systems expose cpu temperatures differently in
psutil. Specifically, running armbian on the Odroid xu4 sbc gives the
following temerature output:

>>> pp.pprint(psutil.sensors_temperatures())
{   'cpu0-thermal':
    [   shwtemp(label='', current=54.0, high=115.0, critical=115.0)],
    'cpu1-thermal':
    [   shwtemp(label='', current=56.0, high=115.0, critical=115.0)],
    'cpu2-thermal':
    [   shwtemp(label='', current=58.0, high=115.0, critical=115.0)],
    'cpu3-thermal':
    [   shwtemp(label='', current=56.0, high=115.0, critical=115.0)],
}

Since the cpu number is embedded inside the name, the current code
can't find it.

To fix this, check both the name and the constructed label for matches
against CPU_SENSOR_PREFIXES, and add the appropriate label
cpu0-thermal in the prefix list.

While this is slightly less efficient that just generating the label
and checking it, it results in easier to understand code.
2021-04-09 10:25:03 +02:00
Erik Montnemery
d1df6e6fba Don't get code_context when calling inspect.stack (#48849)
* Don't get code_context when calling inspect.stack

* Update homeassistant/helpers/config_validation.py
2021-04-09 07:26:09 +02:00
J. Nick Koston
19e047e801 Fix logic reversal in sonos update_media_radio (#48900) 2021-04-09 07:24:35 +02:00
HomeAssistant Azure
23dd57a562 [ci skip] Translation update 2021-04-09 00:03:15 +00:00
Milan Meulemans
bdbc38c937 Catch expected errors and log them in rituals perfume genie (#48870)
* Add update error logging

* Move try available to else

* Remove TimeoutError
2021-04-09 01:43:41 +02:00
Paulus Schoutsen
f4c3bdad7d Merge pull request #48896 from home-assistant/rc 2021-04-08 15:35:17 -07:00
Paulus Schoutsen
3bf693e352 Bumped version to 2021.4.1 2021-04-08 21:35:53 +00:00
Bram Kragten
7051cc04bd Update frontend to 20210407.2 (#48888) 2021-04-08 21:35:37 +00:00
Franck Nijhof
d9c1c391bc Fix optional data payload in Prowl messaging service (#48868) 2021-04-08 21:35:35 +00:00
Franck Nijhof
02cd2619bb Fix possibly missing changed_by in Verisure Alarm (#48867) 2021-04-08 21:35:35 +00:00
starkillerOG
f791142c75 Fix motion_blinds gateway signal strength sensor (#48866)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-08 21:35:34 +00:00
Bram Kragten
1c939fc9be Correct wrong x in frontend manifest (#48865) 2021-04-08 21:35:33 +00:00
Philip Allgaier
0ad4736349 Bump speedtest-cli to 2.1.3 (#48861) 2021-04-08 21:35:32 +00:00
Erik Montnemery
3f0d63c1ab Validate supported_color_modes for MQTT JSON light (#48836) 2021-04-08 21:35:32 +00:00
Martin Hjelmare
f39afa60ae Fix mysensor cover closed state (#48833) 2021-04-08 21:35:31 +00:00
Erik Montnemery
cf11d9a2df Replace redacted stream recorder credentials with '****' (#48832) 2021-04-08 21:35:30 +00:00
Niccolo Zapponi
dd2a73b363 Fix iCloud extra attributes (#48815) 2021-04-08 21:35:29 +00:00
Johan Nenzén
99ef870908 Add missing super call in Verisure Camera entity (#48812) 2021-04-08 21:35:29 +00:00
Raman Gupta
8d738cff41 Check all endpoints for zwave_js.climate fan mode and operating state (#48800)
* Check all endpoints for zwave_js.climate fan mode and operating state

* fix test
2021-04-08 21:35:28 +00:00
Paulus Schoutsen
a59460a233 Test that we do not initialize bad configuration (#48872)
* Test that we do not initialize bad configuration

* Simplify test as we are not calling a service
2021-04-08 22:04:39 +02:00
Erik Montnemery
b0aa64d59c Replace redacted stream recorder credentials with '****' (#48832) 2021-04-08 12:44:17 -07:00
starkillerOG
2dc46d4516 Fix motion_blinds gateway signal strength sensor (#48866)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-08 12:42:56 -07:00
Bram Kragten
aaa9367554 Update frontend to 20210407.2 (#48888) 2021-04-08 12:41:40 -07:00
Erik Montnemery
5e8559e3cc Validate supported_color_modes for MQTT JSON light (#48836) 2021-04-08 12:40:48 -07:00
Martin Hjelmare
e988062034 Fix mysensor cover closed state (#48833) 2021-04-08 12:39:03 -07:00
J. Nick Koston
493bd4cdca Add manufacturer matching support to zeroconf (#48810)
We plan on matching with _airplay which means we need
to able to limit to specific manufacturers to avoid
generating flows for integrations with the wrong
manufacturer
2021-04-08 09:03:10 -10:00
Khole
c2d98f1905 Add hive boost off functionality (#48701)
* Add boost off functionality

* Added backwards compatibility

* Update homeassistant/components/hive/services.yaml

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

* Update homeassistant/components/hive/climate.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-08 20:51:00 +02:00
Raman Gupta
3ca69f5568 Raise an exception when event_type exceeds the max length (#48115)
* raise an exception when event_type exceeds the max length that the recorder supports

* add test

* use max length constant in recorder

* update config entry reloaded service name

* remove exception string function because it's not needed

* increase limit to 64 and revert event name change

* fix test

* assert exception args

* fix test

* add comment about migration
2021-04-08 20:46:28 +02:00
J. Nick Koston
1f80c756ab Fix subscribe_bootstrap_integrations to send events (#48754) 2021-04-08 07:30:33 -10:00
Laszlo Magyar
c7e4857d2c Let recorder deal with event names longer than 32 chars (#47748) 2021-04-08 07:08:49 -10:00
Franck Nijhof
1dafea705d Fix possibly missing changed_by in Verisure Alarm (#48867) 2021-04-08 19:03:11 +02:00
Franck Nijhof
e475b6b9c3 Fix optional data payload in Prowl messaging service (#48868) 2021-04-08 18:02:29 +02:00
Bram Kragten
94fc7b8aed Correct wrong x in frontend manifest (#48865) 2021-04-08 08:54:13 -07:00
Philip Allgaier
50bc037819 Bump speedtest-cli to 2.1.3 (#48861) 2021-04-08 17:35:02 +02:00
Johan Nenzén
e70111b93c Add missing super call in Verisure Camera entity (#48812) 2021-04-08 17:00:49 +02:00
Raman Gupta
2768f202b6 Check all endpoints for zwave_js.climate fan mode and operating state (#48800)
* Check all endpoints for zwave_js.climate fan mode and operating state

* fix test
2021-04-08 16:53:20 +02:00
Philip Allgaier
f1c4072d3c Return TP-Link sensor & light attributes as float rather than string (#48828) 2021-04-08 16:51:59 +02:00
Marvin Wichmann
91837f08ce Update xknx to version 0.18.0 (#48799) 2021-04-08 14:54:43 +02:00
Niccolo Zapponi
9377a45d8a Fix iCloud extra attributes (#48815) 2021-04-08 13:50:46 +02:00
starkillerOG
78dabc83ec Add Xiaomi Miio zhimi.airpurifier.mc2 (#48840)
* add zhimi.airpurifier.mc2

* fix issort
2021-04-08 13:40:29 +02:00
Hans Kröner
2765256b61 Account for openweathermap 'dew_point' not always being present (#48826) 2021-04-08 13:39:53 +02:00
Aaron Bach
e70d7327f9 Store Recollect Waste pickup dates in UTC (#48690)
* Store Recollect Waste pickup dates in UTC

* Code review

* Code review
2021-04-08 07:34:47 +02:00
HomeAssistant Azure
8e6238ff61 [ci skip] Translation update 2021-04-08 00:03:23 +00:00
J. Nick Koston
cdb151e8c9 Remove doorbird recorder test workaround (#48781)
Apparently this is no longer needed
2021-04-07 09:27:47 -10:00
Franck Nijhof
8bdcdfb8e6 Merge pull request #48782 from home-assistant/rc 2021-04-07 19:07:10 +02:00
Franck Nijhof
341531146d Bumped version to 2021.4.0 2021-04-07 18:31:01 +02:00
Bram Kragten
49178d6865 Update frontend to 20210407.1 (#48778) 2021-04-07 18:17:15 +02:00
Erik Montnemery
b4636f17fb Reject nan, inf from generic_thermostat sensor (#48771) 2021-04-07 18:17:11 +02:00
Erik Montnemery
61b38baf2e Reject nan, inf from generic_thermostat sensor (#48771) 2021-04-07 09:00:42 -07:00
Bram Kragten
f2ef9e7505 Update frontend to 20210407.1 (#48778) 2021-04-07 08:57:45 -07:00
Daniel Sack
c732749640 Update __init__.py (#48659)
This change solves that HMIP-RCV-1 is not found when used in a service call to invoke a virtual key (case-sensitivity problem).
- https://community.home-assistant.io/t/homematic-hmip-rcv-50-not-working-with-virtual-key-any-more/249000
- https://github.com/danielperna84/pyhomematic/issues/368
2021-04-07 15:51:35 +02:00
dependabot[bot]
fa8436889a Bump actions/upload-artifact from v2.2.2 to v2.2.3 (#48761)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.2.2 to v2.2.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.2...ee69f02b3dfdecd58bb31b4d133da38ba6fe3700)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-07 13:20:00 +02:00
Franck Nijhof
0fb4f31bde Bumped version to 2021.4.0b6 2021-04-07 12:43:04 +02:00
Bram Kragten
b382de96c6 Update frontend to 20210407.0 (#48765) 2021-04-07 12:40:14 +02:00
Erik Montnemery
c9f8861303 Fix whitespace error in cast (#48763) 2021-04-07 12:40:08 +02:00
Erik Montnemery
32511409a9 Remove login details before logging SQL errors (#48758) 2021-04-07 12:40:04 +02:00
Daniel Hjelseth Høyer
e366961ddb Met.no - only update data if coordinates changed (#48756) 2021-04-07 12:40:00 +02:00
J. Nick Koston
bfb8141f55 Solve cast delaying startup when discovered devices are slow to setup (#48755)
* Solve cast delaying startup when devices are slow to setup

* Update homeassistant/components/cast/media_player.py

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

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-07 12:39:57 +02:00
Joakim Sørensen
537d6412dd Add custom integrations to analytics (#48753) 2021-04-07 12:39:54 +02:00
Stefan Agner
a093cd8ac2 Use microsecond precision for datetime values on MariaDB/MySQL (#48749)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-07 12:39:51 +02:00
Franck Nijhof
322458ee49 Rename hassio config entry title to Supervisor (#48748) 2021-04-07 12:39:48 +02:00
Joakim Sørensen
b573fb49b7 Generate a seperate UUID for the analytics integration (#48742) 2021-04-07 12:39:45 +02:00
Franck Nijhof
15e00b8d18 Do not activate Met.no without setting a Home coordinates (#48741) 2021-04-07 12:39:41 +02:00
Raman Gupta
caaa62a7f9 Clean up google travel time code (#48708) 2021-04-07 12:39:27 +02:00
Erik Montnemery
2555b10d49 Remove login details before logging SQL errors (#48758) 2021-04-07 12:15:56 +02:00
Maciej Bieniek
5be1eacde9 Set AsusWRT mac_address and ip_address properties (#48764) 2021-04-07 12:08:22 +02:00
Bram Kragten
ab190f36ac Update frontend to 20210407.0 (#48765) 2021-04-07 11:42:12 +02:00
Erik Montnemery
46371a9e87 Fix whitespace error in cast (#48763) 2021-04-07 11:12:31 +02:00
Franck Nijhof
06381f5619 Upgrade pre-commit to 2.12.0 (#48731) 2021-04-07 10:40:53 +02:00
Franck Nijhof
6ec8e17e7b Do not activate Met.no without setting a Home coordinates (#48741) 2021-04-07 09:39:39 +02:00
J. Nick Koston
5f8fcca5ad Solve cast delaying startup when discovered devices are slow to setup (#48755)
* Solve cast delaying startup when devices are slow to setup

* Update homeassistant/components/cast/media_player.py

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

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-07 09:39:04 +02:00
Daniel Hjelseth Høyer
b558f20ad2 Met.no - only update data if coordinates changed (#48756) 2021-04-07 09:27:58 +02:00
stegm
589f2240b1 New integration for Kostal Plenticore solar inverters (#43404)
* New integration for Kostal Plenticore solar inverters.

* Fix errors from github pipeline.

* Fixed test for py37.

* Add more test for test coverage check.

* Try to fix test coverage check.

* Fix import sort order.

* Try fix test code coverage .

* Mock api client for tests.

* Fix typo.

* Fix order of rebased code from dev.

* Add new data point for home power.

* Modifications to review.
Remove service for write access (for first pull request). Refactor
update coordinator to not use the entity API.

* Fixed mock imports.

* Ignore new python module on coverage.

* Changes after review.

* Fixed unit test because of config title.

* Fixes from review.

* Changes from review (unique id and mocking of tests)

* Use async update method. Change unique id. Remove _dict

* Remove _data field.

* Removed login flag from PlenticoreUpdateCoordinator.

* Removed Dynamic SoC sensor because it should be a binary sensor.

* Remove more sensors because they are binary sensors.
2021-04-07 09:18:07 +02:00
Stefan Agner
815db999da Use microsecond precision for datetime values on MariaDB/MySQL (#48749)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-07 09:13:55 +02:00
Joakim Sørensen
191c01a611 Add custom integrations to analytics (#48753) 2021-04-06 19:33:08 -07:00
Joakim Sørensen
89f2f458d2 Generate a seperate UUID for the analytics integration (#48742) 2021-04-07 02:34:49 +02:00
HomeAssistant Azure
82cc5148d7 [ci skip] Translation update 2021-04-07 00:04:06 +00:00
Franck Nijhof
e63e8b6ffe Rename hassio config entry title to Supervisor (#48748) 2021-04-07 00:46:47 +02:00
J. Nick Koston
d417dcb8f4 Bump pysonos to 0.0.42 to fix I/O in event loop (#48743)
fixes #48732

Changelog: https://github.com/amelchio/pysonos/compare/v0.0.41...v0.0.42
2021-04-07 00:15:36 +02:00
Philip Allgaier
030e9d314d Fix systemmonitor IP address look-up logic (#48740) 2021-04-06 22:58:35 +02:00
Pascal Reeb
fb1444c414 Add doorsensor + coordinator to nuki (#40933)
* implemented coordinator + doorsensor

* added async_unload_entry

* small fixes + reauth_flow

* update function

* black

* define _data inside __init__

* removed unused property

* await on update & coverage for binary_sensor

* keep reauth seperate from validate

* setting entities unavailable when connection goes down

* add unknown error when entity is not present

* override extra_state_attributes()

* removed unnecessary else

* moved to locks & openers variables

* removed doorsensorState attribute

* changed config entry reload to a task

* wait for reload
2021-04-06 21:20:57 +02:00
Paulus Schoutsen
2db60a3c56 Bumped version to 2021.4.0b5 2021-04-06 19:12:33 +00:00
Paulus Schoutsen
ed90e22421 Updated frontend to 20210406.0 (#48734) 2021-04-06 19:12:28 +00:00
Paulus Schoutsen
d61780dbac Allow reloading top-level template entities (#48733) 2021-04-06 19:12:27 +00:00
Justin Paupore
315e910bfe Fix infinite recursion in LazyState (#48719)
If LazyState cannot parse the attributes of its row as JSON, it prints
a message to the logger. Unfortunately, it passes `self` as a format
argument to that message, which causes its `__repr__` method to be
called, which then tries to retrieve `self.attributes` in order to
display them. This leads to an infinite recursion and a crash of the
entire core.

To fix, send the database row to be printed in the log message, rather
than the LazyState object that wraps around it.
2021-04-06 19:12:26 +00:00
Erik Montnemery
a7523777ba Flag brightness support for MQTT RGB lights (#48718) 2021-04-06 19:12:25 +00:00
Erik Montnemery
7ae65832eb Bump pychromecast to 9.1.2 (#48714) 2021-04-06 19:12:24 +00:00
Erik Montnemery
0df9a8ec38 Improve warnings on undefined template errors (#48713) 2021-04-06 19:12:23 +00:00
J. Nick Koston
5f2a666e76 Abort discovery for unsupported doorbird accessories (#48710) 2021-04-06 19:12:23 +00:00
Paulus Schoutsen
26b9017905 Fix verisure deadlock (#48691) 2021-04-06 19:12:22 +00:00
Raman Gupta
bdd68cd413 Bump zwave_js dependency to 0.23.1 (#48682) 2021-04-06 19:12:21 +00:00
Alexei Chetroi
c512ab7ec9 Implement Ignore list for poll control configuration on Ikea devices (#48667)
Co-authored-by: Hmmbob <33529490+hmmbob@users.noreply.github.com>
2021-04-06 19:12:21 +00:00
mburget
edf41e8425 Fix Raspi GPIO binary_sensor produces unreliable responses (#48170)
* Fix for issue #10498 Raspi GPIO binary_sensor produces unreliable responses ("Doorbell Scenario")

Changes overtaken from PR#31788 which was somehow never finished

* Fix for issue #10498 Raspi GPIO binary_sensor produces unreliable response. Changes taken over from PR31788 which was somehow never finished

* Remove unused code (pylint warning)
2021-04-06 19:12:20 +00:00
Erik Montnemery
9f5db2ce3f Improve warnings on undefined template errors (#48713) 2021-04-06 12:11:42 -07:00
Paulus Schoutsen
09635678bc Allow reloading top-level template entities (#48733) 2021-04-06 12:10:39 -07:00
Justin Paupore
c4f9489d61 Fix infinite recursion in LazyState (#48719)
If LazyState cannot parse the attributes of its row as JSON, it prints
a message to the logger. Unfortunately, it passes `self` as a format
argument to that message, which causes its `__repr__` method to be
called, which then tries to retrieve `self.attributes` in order to
display them. This leads to an infinite recursion and a crash of the
entire core.

To fix, send the database row to be printed in the log message, rather
than the LazyState object that wraps around it.
2021-04-06 11:39:54 -07:00
Paulus Schoutsen
42d2039560 Updated frontend to 20210406.0 (#48734) 2021-04-06 20:14:54 +02:00
Martin Hjelmare
ae67f300b2 Fix sync api use in alarm control panel test (#48725) 2021-04-06 16:50:15 +02:00
J. Nick Koston
46b673cdc6 Abort discovery for unsupported doorbird accessories (#48710) 2021-04-06 13:32:14 +02:00
dependabot[bot]
11ed2f4c30 Bump codecov/codecov-action from v1.3.1 to v1.3.2 (#48716)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.3.1 to v1.3.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.3.1...9b0b9bbe2c64e9ed41413180dd7398450dfeee14)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 12:49:47 +02:00
Erik Montnemery
9f2fb37e17 Flag brightness support for MQTT RGB lights (#48718) 2021-04-06 12:39:29 +02:00
Erik Montnemery
b57d02d786 Bump pychromecast to 9.1.2 (#48714) 2021-04-06 09:55:47 +02:00
J. Nick Koston
2a15ae13a7 Small improvements for emonitor (#48700)
- Check reason for config abort
- Abort if unique id is already configured on user flow
- remove unneeded pylint
2021-04-05 17:22:49 -10:00
Michael
b47a90a9d8 Add AMD Ryzen processor temperatur capability to systemmonitor (#48705) 2021-04-05 17:07:22 -10:00
HomeAssistant Azure
e8cbdea881 [ci skip] Translation update 2021-04-06 00:04:07 +00:00
Raman Gupta
5305d083ec Add config flow for Waze Travel Time (#43419)
* Add config flow for Waze Travel Time

* update translations

* setup entry is async

* fix update logic during setup

* support old config method in the interim

* fix requirements

* fix requirements

* add abort string

* changes based on @bdraco review

* fix tests

* add device identifier

* Update homeassistant/components/waze_travel_time/__init__.py

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

* fix tests

* Update homeassistant/components/waze_travel_time/sensor.py

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

* log warning for deprecation message

* PR feedback

* fix tests and bugs

* re-add name to config schema to avoid breaking change

* handle if we get name from config in entry title

* fix name logic

* always set up options with defaults

* Update homeassistant/components/waze_travel_time/sensor.py

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

* Update config_flow.py

* Update sensor.py

* handle options updates by getting options on every update

* patch library instead of sensor

* fixes and make sure first update writes the state

* validate config entry data during config flow and entry setup

* fix input parameters

* fix tests

* invert if statement

* remove unnecessary else

* exclude helpers from coverage

* remove async_setup because it's no longer needed

* fix patch statements

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-05 19:25:52 -04:00
Dylan Gore
f3399aa8aa Add a new weather integration - Met Éireann (#39429)
* Added a new weather integration - Met Éireann

* Fix codespell error

* Update met_eireann to use CoordinatorEntity

* Remove deprecated platform setup

* Fix merge conflict

* Remove unnecessary onboarding/home tracking code

* Use common strings for config flow

* Remove unnecessary code

* Switch to using unique IDs in config flow

* Use constants where possible

* Fix failing tests

* Fix isort errors

* Remove unnecessary DataUpdateCoordinator class

* Add device info

* Explicitly define forecast data

* Disable hourly forecast entity by default

* Update config flow to reflect requested changes

* Cleanup code

* Update entity naming to match other similar components

* Convert forecast time to UTC

* Fix test coverage

* Update test coverage

* Remove elevation conversion

* Update translations for additional clarity

* Remove en-GB translation
2021-04-05 23:23:57 +02:00
J. Nick Koston
c28d4e8e01 Clean and optimize systemmonitor (#48699)
- Remove unneeded excinfo to _LOGGER.exception
- Use f-strings
- Switch last_boot to utc
- Cache psutil/os calls used by multiple attributes in the same update cycle
2021-04-05 21:50:22 +02:00
Raman Gupta
d0b3f76a6f Add ClimaCell v4 API support (#47575)
* Add ClimaCell v4 API support

* fix tests

* use constants

* fix logic and update tests

* revert accidental changes and enable hourly and nowcast forecast entities in test

* use variable instead of accessing dictionary multiple times

* only grab necessary fields

* add _translate_condition method ot base class

* bump pyclimacell again to fix bug

* switch typehints back to new format

* more typehint fixes

* fix tests

* revert merge conflict change

* handle 'migration' in async_setup_entry so we don't have to bump config entry versions

* parametrize timestep test
2021-04-05 13:39:39 -04:00
Paulus Schoutsen
0f757c3db2 Fix verisure deadlock (#48691) 2021-04-05 12:22:25 +02:00
J. Nick Koston
0544d94bd0 Update all systemmonitor sensors in one executor call (#48689)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-04 22:11:57 -10:00
J. Nick Koston
12e3bc8101 Provide api to see which integrations are being loaded (#48274)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-04 22:11:44 -10:00
J. Nick Koston
e925fd2228 Add emonitor integration (#48310)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-04 22:11:23 -10:00
J. Nick Koston
94fde73add Add config flow for enphase envoy (#48517)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-04 22:11:06 -10:00
Alexei Chetroi
6204765835 Implement Ignore list for poll control configuration on Ikea devices (#48667)
Co-authored-by: Hmmbob <33529490+hmmbob@users.noreply.github.com>
2021-04-04 21:21:47 -07:00
J. Nick Koston
6dc1414b69 Fix sonos volume always showing 0 (#48685) 2021-04-04 20:26:55 -07:00
J. Nick Koston
30382c3dbe Limit log spam from rest and include reason in platform retry (#48666)
- Each retry was logging the error again
- Now we set the cause of the PlatformNotReady to allow Home Assistant to log as needed
2021-04-04 20:26:18 -07:00
Robert Svensson
9ba66fe232 Add more device triggers to deCONZ integration (#48680) 2021-04-04 20:25:57 -07:00
HomeAssistant Azure
d5e5450540 [ci skip] Translation update 2021-04-05 00:05:16 +00:00
J. Nick Koston
32daa63265 Use shared aiohttp.ClientSession in bond (#48669) 2021-04-05 00:12:58 +02:00
Franck Nijhof
9553ae8196 Upgrade wakonlan to 2.0.0 (#48683) 2021-04-04 23:44:43 +02:00
J. Nick Koston
e008e80bcf Cleanup sonos (#48684)
- Remove unused code
- Use async_add_executor_job
- Enforce typing
2021-04-04 23:28:29 +02:00
Raman Gupta
95e1daa451 Bump zwave_js dependency to 0.23.1 (#48682) 2021-04-04 16:09:07 -04:00
jan iversen
d5ef382fd5 Add modbus write coils (#48676)
* Add missing function in class.

write_coils was missing.

* Remove dead code.

The HA configuration secures that CONF_TYPE only contains legal values,
so having an empty assert to catch unknown values is dead code.

An empty assert is not informative.
2021-04-04 21:53:52 +02:00
Franck Nijhof
b34cc7ef2c Remove Social Blade integration (ADR-0004) (#48677)
* Remove Social Blade integration (ADR-0004)

* Cleanup coveragerc
2021-04-04 20:40:08 +02:00
jan iversen
2511e1f229 Remove modbus duplicate strings (#48654)
* Reuse HA constants for serial configuration.

Reusing HA consts reduces the need for translation.

Sort/group constants in const.

* Change const name ATTR_* to CONF_*

* Correct wrong import

* ATTR_* for service and CONF_* for schemas.

* Revert change to service call.

* Rename CONF_TEMPERATURE -> ATTR_TEMPERATURE

Avoid possible division problem in set_temperature.
2021-04-04 14:02:47 +02:00
Franck Nijhof
d75f825530 Upgrade holidays to 0.11.1 (#48673) 2021-04-04 13:28:08 +02:00
Franck Nijhof
1876e84d71 Upgrade pytest to 6.2.3 (#48672) 2021-04-04 13:06:49 +02:00
J. Nick Koston
b5c679f3d0 Apply ConfigEntryNotReady improvements to PlatformNotReady (#48665)
* Apply ConfigEntryNotReady improvements to PlatformNotReady

- Limit log spam #47201
- Log exception reason #48449
- Prevent startup blockage #48660

* coverage
2021-04-04 12:31:58 +02:00
mburget
ecec3c8ab9 Fix Raspi GPIO binary_sensor produces unreliable responses (#48170)
* Fix for issue #10498 Raspi GPIO binary_sensor produces unreliable responses ("Doorbell Scenario")

Changes overtaken from PR#31788 which was somehow never finished

* Fix for issue #10498 Raspi GPIO binary_sensor produces unreliable response. Changes taken over from PR31788 which was somehow never finished

* Remove unused code (pylint warning)
2021-04-04 12:22:43 +02:00
J. Nick Koston
3bc583607f Optimize storage collection entity operations with asyncio.gather (#48352) 2021-04-03 23:35:33 -10:00
Paulus Schoutsen
1850b92b36 Bumped version to 2021.4.0b4 2021-04-04 00:36:15 +00:00
J. Nick Koston
7b1ea46653 Prevent config entry retry from blocking startup (#48660)
- If there are two integrations doing long retries async_block_till_done() will never be done
2021-04-04 00:36:07 +00:00
Álvaro Fernández Rojas
a8cd6228cf Fix AEMET town timestamp format (#48647)
Datetime should be converted to ISO format.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-04-04 00:36:07 +00:00
J. Nick Koston
9eb4397837 Only listen for zeroconf when the esphome device cannot connect (#48645) 2021-04-04 00:36:06 +00:00
J. Nick Koston
311f624adc Bump aiodiscover to 1.3.3 for dhcp (#48644)
fixes #48615
2021-04-04 00:36:05 +00:00
J. Nick Koston
c1e788e665 Only listen for zeroconf when the esphome device cannot connect (#48645) 2021-04-03 17:11:32 -07:00
J. Nick Koston
bc06100dd8 Make sonos event asyncio (#48618) 2021-04-03 17:10:48 -07:00
HomeAssistant Azure
d3b4a30e18 [ci skip] Translation update 2021-04-04 00:04:56 +00:00
J. Nick Koston
cfe2df9ebd Prevent config entry retry from blocking startup (#48660)
- If there are two integrations doing long retries async_block_till_done() will never be done
2021-04-03 17:00:22 -07:00
epenet
86176f1bf9 Add retry mechanism on onewire sysbus devices (#48614)
* Add retry mechanism on sysbus

* Update tests

* Move to async

* Move blocking calls on the executor
2021-04-03 23:08:35 +02:00
Petro31
545fe7a7be Add Compensation Integration (#41675)
* Add Compensation Integration

Adds the Compensation Integration

* Add Requirements

add missing requirements to compensation integration

* Fix for tests

Fix files after tests

* Fix isort

ran isort

* Handle ADR-0007

Change the configuration to deal with ADR-0007

* fix flake8

Fix flake8

* Added Error Trapping

Catch errors.
Raise Rank Warnings but continue.
Fixed bad imports

* fix flake8 & pylint

* fix isort.... again

* fix tests & comments

fix tests and comments

* fix flake8

* remove discovery message

* Fixed Review changes

* Fixed review requests.
* Added test to test get more coverage.

* Roll back numpy requirement

Roll back numpy requirement to match other integrations.

* Fix flake8

* Fix requested changes

Removed some necessary comments.
Changed a test case to be more readable.

* Fix doc strings and continue

* Fixed a few test case doc strings
* Removed a continue/else

* Remove periods from logger

Removed periods from _LOGGER errors.

* Fixes

changed name to unqiue_id.
implemented suggested changes.

* Add name and fix unique_id

* removed conf name and auto construct it
2021-04-03 22:42:09 +02:00
jan iversen
23fae255ff Make modbus WRITE_COIL use write_coils in case of an array (#48633)
* WRITE_COIL uses write_coils in case of an array.

WRITE_REGISTER uses write_register/write_registers depending
on whether value is singular or an array.

WRITE_COIL is modified to be similar and uses
write_coil/write_coils depending on whether value is singular or an
array.

* Update SERVICE_WRITE_COIL to allow list.
2021-04-03 13:15:01 +02:00
J. Nick Koston
b7ae06f1bb Bump aiodiscover to 1.3.3 for dhcp (#48644)
fixes #48615
2021-04-03 11:33:45 +02:00
Álvaro Fernández Rojas
2c61c0f258 Fix AEMET town timestamp format (#48647)
Datetime should be converted to ISO format.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-04-03 11:17:17 +02:00
jan iversen
cee43b0670 Add modbus CONF_VERIFY_STATE to new switch config (#48632)
Missed CONF_VERIFY_STATE in new switch config, when
copying from old switch config.
2021-04-03 11:00:06 +02:00
Paulus Schoutsen
dcb43b474f Bumped version to 2021.4.0b3 2021-04-03 00:05:20 +00:00
HomeAssistant Azure
176b6daf2a [ci skip] Translation update 2021-04-03 00:03:39 +00:00
Bram Kragten
396a8a3a10 Updated frontend to 20210402.1 (#48639) 2021-04-02 23:57:55 +00:00
Paulus Schoutsen
2a1f6d7e8f Support modern config for the trigger based template entity (#48635) 2021-04-02 23:57:55 +00:00
Paulus Schoutsen
da31328150 Fix trigger template entities without a unique ID (#48631) 2021-04-02 23:57:54 +00:00
Shay Levy
cec80210a3 Bump aioshelly to 0.6.2 (#48620) 2021-04-02 23:57:53 +00:00
Paulus Schoutsen
e882460933 Support modern config for the trigger based template entity (#48635) 2021-04-02 16:57:16 -07:00
Bram Kragten
cffdbfe13c Updated frontend to 20210402.1 (#48639) 2021-04-02 23:11:39 +02:00
jan iversen
0d7168a667 Remove duplicate test case in modbus switch (#48636) 2021-04-02 22:09:27 +02:00
Oliver
eed3bfc762 Going async with denonavr (#47920)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-04-02 07:47:16 -10:00
Paulus Schoutsen
212d9aa748 Fix trigger template entities without a unique ID (#48631) 2021-04-02 10:24:38 -07:00
Paulus Schoutsen
bdbb4f939f Add variables to execute script (#48613) 2021-04-02 06:27:41 -07:00
Shay Levy
e76b653246 Bump aioshelly to 0.6.2 (#48620) 2021-04-02 11:48:57 +02:00
HomeAssistant Azure
a5dfbf9c44 [ci skip] Translation update 2021-04-02 00:04:54 +00:00
Paulus Schoutsen
74357d9760 Bumped version to 2021.4.0b2 2021-04-01 23:33:37 +00:00
Erik Montnemery
231a55d416 Include blueprint input in automation trace (#48575) 2021-04-01 23:33:04 +00:00
Erik Montnemery
e760c23f37 Include script script_execution in script and automation traces (#48576) 2021-04-01 23:32:47 +00:00
Paulus Schoutsen
39f68de5fa Bumped version to 2021.4.0b1 2021-04-01 23:23:47 +00:00
Robert Svensson
68b189cf9f Increase time out for http requests done in Axis integration (#48610) 2021-04-01 23:23:31 +00:00
Bram Kragten
8d0941ba65 Update frontend to 20210402.0 (#48609) 2021-04-01 23:23:29 +00:00
Paulus Schoutsen
d1a48c7c5c Clean up mobile app (#48607)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-01 23:23:28 +00:00
Franck Nijhof
f0f8b79be0 Fix websocket search for related (#48603)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-01 23:23:26 +00:00
Franck Nijhof
c2d17a72b7 Allow templatable service target to support scripts (#48600) 2021-04-01 23:23:25 +00:00
Franck Nijhof
f0bd3c577f Upgrade numpy to 1.20.2 (#48597) 2021-04-01 23:23:24 +00:00
Erik Montnemery
947ac514b9 Return config entry details for 1-step config flows (#48585) 2021-04-01 23:23:22 +00:00
epenet
5df90b32fc Cleanup orphan devices in onewire integration (#48581)
* Cleanup orphan devices (https://github.com/home-assistant/core/issues/47438)

* Refactor unit testing

* Filter device entries for this config entry

* Update logging

* Cleanup check
2021-04-01 23:23:20 +00:00
Robert Svensson
f08e7dccdf Don't care about DPI entries when looking for clients to be restored from UniFi (#48579)
* DPI switches shouldnt be restored, they're not part of clients to be restored

* Only care about Block and POE switch entries
2021-04-01 23:23:20 +00:00
Aaron Bach
3982849275 Fix incorrect constant import in Ambient PWS (#48574) 2021-04-01 23:23:17 +00:00
Joakim Sørensen
07827ca55d Remove analytics from default_config (#48566) 2021-04-01 23:23:16 +00:00
youknowjack0
16da181692 Fix timer.finish to cancel callback (#48549)
Timer.finish doesn't cancel the callback, which can lead to incorrect early cancellation of the timer if it is subsequently restarted. 

Bug reported here: https://community.home-assistant.io/t/timer-component-timer-stops-before-time-is-up/96038
2021-04-01 23:23:15 +00:00
Robert Svensson
a61d93adc2 Increase time out for http requests done in Axis integration (#48610) 2021-04-01 16:22:36 -07:00
Paulus Schoutsen
051531d9c1 Clean up mobile app (#48607)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-01 16:22:08 -07:00
Bram Kragten
34ddea536e Update frontend to 20210402.0 (#48609) 2021-04-01 16:19:57 -07:00
Khole
6482800724 Add hive heat on demand (#48591) 2021-04-02 01:14:40 +02:00
Raman Gupta
ebb369e008 Add zwave_js WS API command to call node.refresh_info (#48564) 2021-04-02 00:35:13 +02:00
Franck Nijhof
ceeb060c05 Fix websocket search for related (#48603)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-04-01 15:31:19 -07:00
FMKaiba
09eb74fd9d Upgrade Astral to 2.2 (#48573) 2021-04-02 00:29:08 +02:00
Franck Nijhof
e76503ddc3 Remove Geizhals integration (ADR-0004) (#48594) 2021-04-02 00:04:52 +02:00
Franck Nijhof
da54b9237b Typing improvements for SolarEdge (#48596) 2021-04-01 23:59:26 +02:00
Erik Montnemery
76d0f93ec1 Include blueprint input in automation trace (#48575) 2021-04-01 13:34:47 -07:00
Franck Nijhof
528095b9b6 Upgrade numpy to 1.20.2 (#48597) 2021-04-01 13:32:49 -07:00
Franck Nijhof
4e3c12883e Allow templatable service target to support scripts (#48600) 2021-04-01 13:10:01 -07:00
Martin Hjelmare
c9cd6b0fbb Clean lazytox script (#48583) 2021-04-01 11:34:01 -07:00
Alan Tse
125161df6b Only raise integrationnotfound for dependencies (#48241)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-04-01 11:30:52 -07:00
MatthewFlamm
f8f0495319 Add nws sensor platform (#45027)
* Resolve rebase conflict.

Remove logging

* lint: fix elif after return

* fix attribution

* add tests for None valuea

* Remove Entity import

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

* Import SensorEntity

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

* Inherit SensorEntity

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

* remove unused logging

* Use CoordinatorEntity

* Use type instead of name.

* add all entities

* add nice rounding to temperature and humidity

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-04-01 18:50:37 +02:00
Erik Montnemery
9f481e1642 Include script script_execution in script and automation traces (#48576) 2021-04-01 09:42:23 -07:00
youknowjack0
9d085778c2 Fix timer.finish to cancel callback (#48549)
Timer.finish doesn't cancel the callback, which can lead to incorrect early cancellation of the timer if it is subsequently restarted. 

Bug reported here: https://community.home-assistant.io/t/timer-component-timer-stops-before-time-is-up/96038
2021-04-01 09:32:59 -07:00
Robert Svensson
6ce96dcb63 Don't care about DPI entries when looking for clients to be restored from UniFi (#48579)
* DPI switches shouldnt be restored, they're not part of clients to be restored

* Only care about Block and POE switch entries
2021-04-01 18:02:28 +02:00
Erik Montnemery
d26d2a8446 Return config entry details for 1-step config flows (#48585) 2021-04-01 16:20:53 +02:00
Erik Montnemery
2bf91fa359 Move cast config flow tests to test_config_flow (#48362) 2021-04-01 15:13:58 +02:00
epenet
81bdd41fdc Cleanup orphan devices in onewire integration (#48581)
* Cleanup orphan devices (https://github.com/home-assistant/core/issues/47438)

* Refactor unit testing

* Filter device entries for this config entry

* Update logging

* Cleanup check
2021-04-01 15:06:47 +02:00
Martin Hjelmare
fdbef90a57 Remove device class timestamp from device condition and trigger (#48431)
* Remove unit from garmin connect

* Remove unit from hvv departures

* Remove device class timestamp from device condition and trigger

* Remove unit from systemmonitor

* Use device class constant for timestamp in ring
2021-04-01 15:05:10 +02:00
Aaron Bach
efa6079c62 Fix incorrect constant import in Ambient PWS (#48574) 2021-04-01 08:00:39 +02:00
HomeAssistant Azure
a0483165da [ci skip] Translation update 2021-04-01 00:03:55 +00:00
Joakim Sørensen
1de6fed4b6 Remove analytics from default_config (#48566) 2021-04-01 01:58:48 +02:00
Franck Nijhof
b58d6a6293 Bump version to 2021.5.0dev0 (#48559) 2021-03-31 23:16:50 +02:00
Raman Gupta
aae0ccc588 Add config flow support to google_travel_time (#43509)
* add config flow support to google_travel_time

* fix bugs and add strings

* fix import and add new test

* address comments in #43419 since this is a similar PR

* fix default name and test

* add unique ID and device info

* fix test

* feedback from waze PR

* continue incorporating feedback from waze PR

* final fixes and update tests

* call update in lambda

* Update homeassistant/components/google_travel_time/sensor.py

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

* additional fixes

* validate config entry data during config flow and config entry setup

* don't store entity

* patch dependency instead of HA code

* fixes

* improve tests by moving all patching to fixtures

* use self.hass instead of setting self._hass

* invert if

* remove unnecessary else

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-31 22:10:24 +02:00
Franck Nijhof
75908f38f3 Bumped version to 2021.4.0b0 2021-03-31 21:32:05 +02:00
Robert Svensson
bc5d828554 Provide the improved service UX with deCONZ services (#48382)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-31 20:14:26 +02:00
Erik Montnemery
c06ac9e12b Improve automation trace tests (#48542) 2021-03-31 10:51:29 -07:00
J. Nick Koston
6cf57da89f Use SOURCE_REAUTH constant for starting reauth flows (#48553) 2021-03-31 19:48:32 +02:00
arturdobo
68801ae5f7 Add Qingping Air Monitor Lite support support (#48181)
* Add cgllc.airm.cgdn1 support

* review remarks

* removed unnecessary lambdas
2021-03-31 19:47:42 +02:00
Ruslan Sayfutdinov
a6759d731d Use Mapping[str, Any] instead of dict in Entity (#48421) 2021-03-31 19:34:00 +02:00
Simone Chemelli
bb7f64596c Add operation sensor to Shelly Gas (#48462) 2021-03-31 09:46:39 -07:00
jjlawren
be71d626c8 Improve Plex device handling (#48369) 2021-03-31 09:37:16 -07:00
Bram Kragten
2f37a5727c Update frontend to 20210331.0 (#48552) 2021-03-31 09:23:12 -07:00
J. Nick Koston
9790f3f609 Create homekit locks according to spec (#48453)
Any accessories, regardless of transport, that enable physical access to the home, such as door locks, must not be bridged.
2021-03-31 09:22:30 -07:00
Franck Nijhof
3acacf435a Merge branch 'master' into dev 2021-03-31 17:54:27 +02:00
LJU
93920704d0 Remove Hass.io terms in strings.json (#48541)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-31 17:19:18 +02:00
Michael
949cd4714a Fix update of surveillance_station data in Synology DSM (#47966) 2021-03-31 17:18:58 +02:00
Mario Limonciello
9fd6980144 Avoid divide by zero errors in tplink light integration (#48235) 2021-03-31 17:16:24 +02:00
Marvin Wichmann
9e1a17c62e Update xknx to version 0.17.5 (#48522)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-31 17:04:22 +02:00
jjlawren
7dfe63e06f Set Plex sensor availability properly (#48546) 2021-03-31 17:02:23 +02:00
Erik Montnemery
e2f8bce0a0 Improve error handling for WS API trace/get (#48502) 2021-03-31 15:58:36 +02:00
Philip Allgaier
6fe04f40a2 Ensure HA script and Python script services have a name (#47204)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-03-31 15:09:45 +02:00
J. Nick Koston
bee55a0494 Prevent ping integration from delaying startup (#43869) 2021-03-31 15:06:49 +02:00
Erik Montnemery
b26779a27a Add id to automation triggers (#48464) 2021-03-31 14:56:04 +02:00
Philip Allgaier
450f3740cd Use consolidated constant for "description" (#48490) 2021-03-31 14:12:15 +02:00
jjlawren
d62297a28b Add Plex library count sensors (#48339) 2021-03-31 13:57:16 +02:00
Vincent Le Bourlot
93498ec831 Add missing neato error status (#48508) 2021-03-31 13:48:04 +02:00
Joakim Sørensen
4d8ef115a3 Bump pyhaversion from 3.4.2 to 21.3.0 (#48537) 2021-03-31 12:46:14 +02:00
Nicolas Braem
96857b7466 Add vicare fuelcell (#47167) 2021-03-31 11:29:24 +02:00
Erik Montnemery
c7584a1f92 Add color_mode support to MQTT JSON light (#47993) 2021-03-31 11:28:45 +02:00
jan iversen
64d5dd1f6b Remove if/else from modbus test cases (#48514) 2021-03-31 11:20:14 +02:00
Franck Nijhof
d4d8f74858 Deprecate SolarEdge YAML configuration (#48533) 2021-03-31 10:31:12 +02:00
Robert Svensson
c80f34a754 Add support for ZHADoorLock locks to deCONZ integration(#48516) 2021-03-31 09:36:06 +02:00
Anders Melchiorsen
96c391af09 Fix Sonos Line-in favorites (#48524) 2021-03-31 07:22:54 +02:00
uvjustin
379843eb54 Shield async httpx call in generic (#47852)
* Shield async httpx call

* Don't set last_url/last_image on cancellation

* Add test
2021-03-31 12:46:10 +08:00
Steven Looman
7a6c88feeb Bump async_upnp_client to 0.16.0 (#48521) 2021-03-30 15:36:18 -10:00
Quentame
c1ff4197d1 Bump Freebox to 0.0.10 (#48526) 2021-03-30 15:21:11 -10:00
Quentame
7f9c5d7a13 Bump Météo-France to 1.0.2 (#48527) 2021-03-30 15:20:46 -10:00
Quentame
bae337554f Bump Synology DSM to 1.0.2 (#48528) 2021-03-31 02:13:56 +02:00
HomeAssistant Azure
919247f256 [ci skip] Translation update 2021-03-31 00:04:33 +00:00
Joakim Sørensen
52974e1f64 Add target version to log about missing version (#48520)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-03-31 01:08:59 +02:00
Bram Kragten
d1a1e70726 Search for areas used in automations and scripts (#48499)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-30 15:01:56 -07:00
Michael
309c3a8d82 Fix init for first added shelly device (#48411) 2021-03-30 23:52:02 +02:00
David F. Mulcahey
aa0292974a support feedback for ZHA device reconfiguration (#48447) 2021-03-30 16:35:51 -04:00
Joakim Sørensen
78cff36f96 Remove analytics from updater (#48518) 2021-03-30 22:22:03 +02:00
jugla
76d9c62900 Evaluate AirVisual interval on reboot (#48392)
* Reevaluate interval on reboot (and periodically)

* AirVisual update interval periodically

* AirVisual : update periodically interval request

* AirVisual : update sever request interval periodically

* AirVisual : periodically update interval for server requests

* AirVisual : periodic update for server interval

* Airvisual : periodic update of server interval

* AirVisual : periodic update of server interval

* AirVisual : periodic update of interval request

* Periodic interval update of server request

* AirVisual : periodic update of interval request

* Reassess interval request on periodic event

* ReAssess interval between 2 requests during update

* ReAssess interval between 2 requests periodically

* Reassess interval of server requests periodically

* Reassess the interval between 2 server requests

* Reassess interval between 2 server requests

* Reassess server requests interval periodically

* Assess interval request after inserting instance
2021-03-30 11:03:35 -06:00
Jacob Shufro
f5d9713bd5 Add regex-based filters to logger component (#48439)
* Add regex-based filters to logger component

* Switch logger filter tests to use caplog for more coverage, add a scoping test
2021-03-30 06:53:02 -10:00
Ruslan Sayfutdinov
82c94826fb Enable strict typing for zeroconf (#48450)
* Enable strict typing for zeroconf

* Fix lutron_caseta

* Fix pylint warning

* Fix tests

* Fix xiaomi_aqara test

* Add __init__.py in homeassistant.generated module

* Restore add_job with type: ignore
2021-03-30 06:48:04 -10:00
Matthias Alphart
338be8c70b KNX passive group addresses (#48009) 2021-03-30 18:14:38 +02:00
J. Nick Koston
e9f2062f1b Fix duplicates and unexpected failures during roomba discovery (#48492) 2021-03-30 17:54:36 +02:00
Franck Nijhof
cdd0624629 Correct FAA Delays integration domain in manifest (#48512) 2021-03-30 17:52:29 +02:00
Ruslan Sayfutdinov
575a460c65 Fix local mypy workflow (#48433)
* Fix local mypy workflow

* Run mypy directly
2021-03-30 17:18:29 +02:00
David F. Mulcahey
4dc885dcc3 Add discovery for Tube's Zigbee coordinators to ZHA (#48420)
* add discovery for tube zigbee gateways

* update discovery

* add test

* another test

* develop translations

* review comments
2021-03-30 11:13:26 -04:00
Philip Allgaier
9043a1f5aa Raise Spotify exception if no active device found (#48486) 2021-03-30 16:54:33 +02:00
Erik Montnemery
9d8521169b Add 'for' to lock device triggers (#48504)
* Add 'for' to lock device triggers

* Update tests/components/lock/test_device_trigger.py

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

* Update test_device_trigger.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-30 16:40:57 +02:00
Erik Montnemery
04a09d9215 Add 'for' to media_player device triggers (#48505)
* Add 'for' to media_player device triggers

* Update tests/components/media_player/test_device_trigger.py

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

* Update test_device_trigger.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-30 16:40:26 +02:00
Erik Montnemery
225d79c216 Add 'for' to vacuum device triggers (#48506)
* Add 'for' to vacuum device triggers

* Apply suggestions from code review

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

* Update test_device_trigger.py

* Update test_device_trigger.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-30 16:40:08 +02:00
J. Nick Koston
f91de1c8b9 Add support for capturing renewals to dhcp discovery (#48242) 2021-03-30 15:41:12 +02:00
Erik Montnemery
b3b0904b94 Simplify device trigger code (#48507) 2021-03-30 13:54:27 +02:00
Erik Montnemery
9526701e57 Add 'for' to alarm device triggers (#48503) 2021-03-30 13:49:23 +02:00
Marc Mueller
ee55657ae9 Update pylint to 2.7.4 (#48500) 2021-03-30 12:23:59 +02:00
Joakim Sørensen
f98ce2dd71 Add myself as codeowner to analytics (#48498) 2021-03-30 11:40:11 +02:00
Raman Gupta
bc3881db29 Add zwave_js.set_value service (#48487)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-30 11:13:48 +02:00
J. Nick Koston
f8265f44be Include platform only integrations in analytics (#48493) 2021-03-30 10:46:02 +02:00
David McClosky
e47d576ee7 Use MAX_VOLUME constant in vlc_telnet (#48491)
We also don't need to call `int()` anymore due to underlying fixes in
the python-vlc-telnet library.

I believe this is the last item extracted from PR #44776.
2021-03-30 09:57:53 +02:00
J. Nick Koston
0082eca932 Bump yalexs to 1.1.10 for august (#48494)
- Remove workaround for broken reconnect logic in pubnub
2021-03-30 09:37:19 +02:00
Martidjen
99ab084cdd Add opentherm_gw option for setpoint override mode (#48465)
* Adding option for setpoint override mode

Temporary setpoint override mode can now be set on or off. 'Constant' setpoint override mode will be used when Temporary is set to off

* Changes after review comment

Added default value for the setpoint override mode
2021-03-30 09:35:29 +02:00
Niccolo Zapponi
fc8dc038e2 Fixed auth issue for non-2FA iCloud accounts (#48455) 2021-03-29 19:09:27 -10:00
Guido Schmitz
2fbe352ad5 Make devolo home control more robust against connection losts (#48328) 2021-03-29 19:08:08 -10:00
Alan Tse
984fb12fa4 Create new websession if more than one entry in Tesla (#47886)
* Create new websession if more than one entry
closes #47506

* Remove extraneous count

* Always create new session

* Update docs
2021-03-30 06:50:41 +02:00
Marc Mueller
2956eb0902 Update pylint to 2.7.3 (#48488)
* Update pylint to 2.7.3

* Add class-const-naming-style

* Remove unused-import message

* Additional cleanup
2021-03-29 18:02:56 -10:00
Raman Gupta
9a75019a65 Add zwave_js.bulk_set_partial_config_parameters service (#48306)
* Add zwave_js.bulk_set_partial_config_parameters service

* update to handle command status

* add test for awake node

* test using a device in service call
2021-03-29 23:07:55 -04:00
Paulus Schoutsen
114a97bf52 Bump frontend to 20210329.0 2021-03-30 00:33:17 +00:00
Tobias Sauerwein
467bd91c80 Add image proxy to Kodi media browser (#47315) 2021-03-29 17:30:51 -07:00
Joakim Sørensen
09c51da3a2 Add analytics integration (#48256)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-29 17:20:11 -07:00
J. Nick Koston
6b7bcbbc96 Bump aiodiscoer to 1.3.2 for dhcp (#48489)
- Removes unused code in the library
- Cleanup a small slow memory leak
2021-03-29 17:18:54 -07:00
HomeAssistant Azure
a1472b174c [ci skip] Translation update 2021-03-30 00:03:46 +00:00
Kevin Worrel
42a060ad33 Add asyncio locks to screenlogic api access points (#48457) 2021-03-29 13:27:17 -10:00
Franck Nijhof
c1d5638739 Remove HomeAssistantType alias from entity components - Part 2 (#48468) 2021-03-29 13:24:56 -10:00
Franck Nijhof
855b68faa1 Remove HomeAssistantType alias from entity components - Part 1 (#48467) 2021-03-29 13:24:36 -10:00
Franck Nijhof
bb9da22a84 Clean up superfluous integration setup - part 3 (#48484) 2021-03-29 13:23:44 -10:00
Franck Nijhof
6ec3234ccc Clean up superfluous integration setup - part 2 (#48478) 2021-03-29 13:23:07 -10:00
Franck Nijhof
8393a215e9 Clean up superfluous integration setup - part 1 (#48476) 2021-03-29 13:22:33 -10:00
J. Nick Koston
a851bff95a Create async_config_entry_first_refresh to reduce coordinator boilerplate (#48451) 2021-03-29 12:51:39 -10:00
J. Nick Koston
569c536a8e Bump aiodiscover to 1.3.0 to improve performance (#48482) 2021-03-30 00:37:38 +02:00
Erik Montnemery
fe4ca18881 Refactor fan device triggers to use ToggleEntity triggers (#48321) 2021-03-30 00:09:41 +02:00
Erik Montnemery
8ad3c65645 Allow MQTT entities to be disabled by default (#48284)
* Allow MQTT entities to be disabled by default

* Tweak
2021-03-30 00:09:14 +02:00
Franck Nijhof
0805467c47 Clean up icons & device classes for Toon (#48471) 2021-03-29 14:17:25 -07:00
Erik Montnemery
7534b54e4e Merge condition and action traces (#48461) 2021-03-29 14:06:49 -07:00
Erik Montnemery
c459789c09 Add 'for' to cover device triggers (#48324) 2021-03-29 13:57:30 -07:00
Franck Nijhof
52475c108f Make integration setup optional (#48381) 2021-03-29 13:53:47 -07:00
Raman Gupta
dda9f957b6 Bump zwave-js-server-python to 0.23.0 to support zwave-js 7 (#48094)
* Bump zwave-js-server-python to 0.23.0 and update integration to support schema changes

* refactor notification evenets a bit

* fix tests and bug fixes

* additional changes due to new PR

* add command class and command name

* use new event names so we can retain event property names

* handle command status being returned from async_set_config_parameter

* bump dependency version

* adjust log message to be consistent

* disable pylint warning

* Update homeassistant/components/zwave_js/services.py

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

* add test for awake node

* switch async_get_registry to async_get

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-29 16:28:55 -04:00
Bram Kragten
cf6352e93c Add screenshot to manifest (#48475) 2021-03-29 13:13:42 -07:00
Jan Bouwhuis
d8a4cf63f4 Command template support for MQTT fan (#48413)
* Command template support

* Fix typo in abbreviations

* Update homeassistant/components/mqtt/fan.py

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

* Fix initialize templates

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-29 20:41:51 +02:00
Bram Kragten
03b7b1305c Cloud: Expose if google is registered in status + check on login (#48260)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-29 19:26:51 +02:00
Paulus Schoutsen
022f56f54d Allow specifying template entities based on triggers (#48169)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-29 09:57:51 -07:00
David McClosky
f815ebe9cd Fix unmute bug in vlc_telnet (#48441)
If volume was muted and media_player.volume_up is fired, VLC would still
show up as muted.

PR extracted from #44776.
2021-03-29 18:23:26 +02:00
Franck Nijhof
81ae0ee451 Add support for Selectors in Script service fields (#48469) 2021-03-29 18:05:45 +02:00
J. Nick Koston
6023105c6a Do not load ignored or disabled integrations at startup (#48355)
config_entries.async_setup will skip ignored and disabled integrations
but bootstrap would still load them in memory even though they would
never be setup.
2021-03-29 13:06:44 +02:00
J. Nick Koston
1fb9008488 Include platform only integrations in the manifest list api (#48269) 2021-03-29 12:51:48 +02:00
Pim
e2d3c0ea8f Don't write 0 to next modbus register (#48378) 2021-03-29 12:45:44 +02:00
J. Nick Koston
cb1b45d31a Log the reason a config entry failed to setup (#48449)
If we pass a string to ConfigEntryNotReady or raise it from
another exception we now log the string passed or the
string generated by the original exception.

With #47201 this makes it easy for developers to still show
the reason why setup failed without having to worry about log
spam from additional attempts by rasing ConfigEntryNotReady
from the original exception.
2021-03-29 12:25:40 +02:00
mptei
dd538bd291 Fix knx tests (#48407) 2021-03-29 12:17:54 +02:00
Erik Montnemery
0c6a1c29ec Fix broken trace tests (#48458) 2021-03-29 10:06:22 +02:00
J. Nick Koston
564688af25 Fix template fan default speed count (#48389)
* Fix template fan default speed count

The default speed count was defaulting to 3 when percentage
was implemented instead of the documented value of 100

* Increase coverage

* remove unreachable code
2021-03-29 09:33:56 +02:00
J. Nick Koston
7063306cd8 Bump aiodiscover to 1.2.0 in for dhcp (#48456)
- Additional optimizations
2021-03-29 09:17:30 +02:00
J. Nick Koston
2796a58ead Speed up bond setup with gather (#48454) 2021-03-29 08:58:48 +02:00
Erik Montnemery
14ef0531f0 Address review comments from trace refactoring PRs (#48288) 2021-03-29 08:09:14 +02:00
Paulus Schoutsen
ee81869c05 Bump frontend to 20210328.0 2021-03-29 03:14:29 +00:00
HomeAssistant Azure
357dedf5ef [ci skip] Translation update 2021-03-29 00:04:31 +00:00
SukramJ
cc38db6a89 Remove myself as codeowner of HomematicIP Cloud (#48437) 2021-03-28 19:18:59 -04:00
J. Nick Koston
47156151ab Bump aiodiscover to 1.1.2 for dhcp (#48445) 2021-03-28 13:12:31 -10:00
J. Nick Koston
a7d0fc2f86 Bump HAP-python to 3.4.1 for homekit (#48444) 2021-03-28 11:57:39 -10:00
Raman Gupta
08db248983 Fallback to current temperature unit for zwave_js climate (#48347)
* Fallback to current temperature unit for zwave_js climate

* don't use unit for N/A setpoint

* update comment

* add tests
2021-03-28 22:18:17 +02:00
J. Nick Koston
2ff94c8ed9 Add additional data source to dhcp (#48430) 2021-03-28 09:47:28 -10:00
David McClosky
23c7c4c977 Fallback to filename for title in vlc_telnet (#48438)
PR extracted from #44776.
2021-03-28 19:39:36 +02:00
David McClosky
48c0cfb25c Detect when media position is stale in vlc_telnet (#48434)
PR extracted from #44776.
2021-03-28 18:19:05 +02:00
Robert Delpeut
4487565232 Add dsmr monthly and yearly totals (#48253)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-28 16:37:27 +02:00
David McClosky
70e3fc430c Fix bug in vlc_telnet seeking (#48425)
Seems the code assumed a different `vlc_telnet` API.

Note that this doesn't address issues in `update()`, which will be
handled in a different PR.

PR extracted from #44776.
2021-03-28 11:58:11 +02:00
J. Nick Koston
958c4764f7 Handle routers that convert hostnames to lowercase in dhcp (#48429)
Some routers will lowercase all the hostnames. Since we
already lowercase hostnames for matching purposes, we now
pass the lowercased hostname to the integration.

Currently only roomba cared about this, and has been adjusted.
2021-03-28 11:23:06 +02:00
HomeAssistant Azure
ce3e00d018 [ci skip] Translation update 2021-03-28 00:05:04 +00:00
Unai
0706ae70dc Simplify maxcube integration (#48403)
* Simplify maxcube integration

Device objects returned by maxcube-api dependency are stable, so
we do not need to resolve from the device address every time.

Also, refactor and unify how maxcube integration sets temperature & mode.

* Raise ValueError if missing parameters for set_temperature method

Raise a ValueError exception If set_temperature does not receive
a temperature parameter.

Also, document properly _set_target method.

* Use Type | None instead of Optional[Type] annotation

* Protect set_hvac_mode and set_preset_mode from unsupported parameters
2021-03-28 00:21:20 +01:00
jan iversen
ffdfc521b9 Allow discovery configuration of modbus platforms (#46591)
* Change modbus configuration to new style.

The old (frozen) configuration is still supported, but when detected a big
warning is issued that it will soon be removed. This allows users to change
their configuration at their pace.

Clean configuration SCHEMAs and move common modbus parts
to MODBUS_SCHEMA (renamed from BASE_SCHEMA).

Add BASE_COMPONENT_SCHEMA to ensure common configuration of components.
All component define e.g. NAME, move these to a common schema.
change components (binary_sensor, sensor, switch) to new config

Add test set for modbus itself (old config and discovery_info).
Add test of devices discovery_info configuration

* Update discovery_info configuration for binary_sensor.

* Update discovery_info configuration for sensor.

* Update discovery_info configuration for switch.

* Review comments.

* update due to change in core

* flake8 problem.

* Correct log message.

* add should_poll property.

* Fix polling for Modbus binary sensor

* Fix polling for Modbus sensor

* Fix polling for Modbus switch

* Fix switch.

* Fix pytest errors.

* Update homeassistant/components/modbus/binary_sensor.py

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

* Update homeassistant/components/modbus/binary_sensor.py

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

* Update homeassistant/components/modbus/modbus.py

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

* Update homeassistant/components/modbus/sensor.py

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

* Update homeassistant/components/modbus/sensor.py

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

* Update homeassistant/components/modbus/sensor.py

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

* Update homeassistant/components/modbus/switch.py

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

* Update homeassistant/components/modbus/switch.py

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

* Update homeassistant/components/modbus/switch.py

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

* ToogleEntity -> SwitchEntity and add abastract

* Update homeassistant/components/modbus/switch.py

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

* Update tests/components/modbus/test_init.py

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

* removed if/else in test.

* Remove other if.

Co-authored-by: Vladimir Zahradnik <vladimir@zahradnik.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-27 22:48:06 +01:00
Álvaro Fernández Rojas
23d7330a2f Discard outdated data reported by AEMET stations (#48417)
* aemet: achieve 100% test coverage

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

* aemet: discard outdated station data

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

* aemet: fix AemetSensor/AemetForecastSensor inheritance

AbstractAemetSensor already inherits SensorEntity.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-03-27 22:33:24 +01:00
Matthias Alphart
051f29f9b6 Remove KNX type alias for homeassistant.core types (#48422) 2021-03-27 22:20:11 +01:00
David F. Mulcahey
3aa2591b0a Bump ZHA quirks to 0.0.55 (#48418)
* bump quirks version

* call new setup method in quirks
2021-03-27 15:59:31 -04:00
J. Nick Koston
35a5f110bd Update mac address in broadlink test to match mocked device (#48415)
* Update mac address in broadlink test to match mocked device

* Update tests/components/broadlink/test_config_flow.py
2021-03-27 20:47:47 +01:00
Jesse Campbell
67791fa4df ZHA lock code services and events (#47208)
* ZHA lock code services and events

* ZHA Locks: A few more services, use the library functions

* Catch exception when command id is not in command list

* Add tests for lock code services

* Add tests for enable/disable

* Better document code slot ID shifting

* Simplify cluster commands
2021-03-27 15:23:40 -04:00
Christian Soltenborn
955804bf58 Add template support for remaining attributes of weather entity (#47736)
* added template support for remaining attributes of weather entity

* wind bearing is now angle (number)
2021-03-27 18:53:35 +00:00
J. Nick Koston
388815b81a Add broadlink dhcp discovery (#48408) 2021-03-27 08:40:19 -10:00
Raman Gupta
fbc3f97097 Add support for selective config parameter entity discovery (#48336)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-27 18:14:06 +01:00
conflipper
56abe25c1f Add Ambient Station PM25 indoor sensor (#47970) 2021-03-27 18:01:33 +01:00
Jonathan Keslin
11596afdfc Address late review of vesync light (#48130) 2021-03-27 17:50:35 +01:00
J. Nick Koston
938a4cc1b6 Bump yalexs to 1.1.9 (#48383)
* Bump yalexs to workaround pubnub reconnect bug

* bump to 1.1.9 to loosen version requirement for pubnub
2021-03-27 15:55:18 +01:00
Franck Nijhof
cebcd7a202 Fix entity service calls on WLED master light (#48402) 2021-03-27 13:04:30 +01:00
Franck Nijhof
02182bfa86 Fix ability to ignore AdGuard hassio discovery (#48401) 2021-03-27 12:59:22 +01:00
Franck Nijhof
38d14702fa Remove HomeAssistantType alias from helpers (#48400) 2021-03-27 12:55:24 +01:00
Unai
4a353efdfb Add Maxcube unit tests (#47872)
* Simplify maxcube integration

Device objects returned by maxcube-api dependency are stable, so
we do not need to resolve from the device address every time.

Also, refactor and unify how maxcube integration sets temperature & mode.

* Add tests for maxcube component

* Use homeassistant.util.utcnow to retrieve current time

* Revert "Simplify maxcube integration"

This reverts commit 84d231d5bdfda9b7744d371d3025986b637a6a8b.

* Make test pass again after rolling back integration changes
2021-03-27 12:42:23 +01:00
Franck Nijhof
0d595a2845 Merge of nested IF-IF cases - E-G (#48367) 2021-03-27 12:39:37 +01:00
Franck Nijhof
786023fce4 Merge of nested IF-IF cases - H-J (#48368) 2021-03-27 11:30:29 +01:00
Franck Nijhof
db355f9b23 Merge of nested IF-IF cases - A-C (#48365) 2021-03-27 10:58:38 +01:00
Franck Nijhof
8d5ce53098 Merge of nested IF-IF cases - S-W (#48372) 2021-03-27 10:54:59 +01:00
Franck Nijhof
3aed84560f Merge of nested IF-IF cases - O-R (#48371) 2021-03-27 10:38:57 +01:00
Ville Skyttä
3cd52b695d Upgrade flake8 and dependencies, enable flake8-noqa (#48393)
* Upgrade flake8 to 3.9.0

https://flake8.pycqa.org/en/latest/release-notes/3.9.0.html

* Upgrade pydocstyle to 6.0.0

https://www.pydocstyle.org/en/latest/release_notes.html#september-13th-2020
https://www.pydocstyle.org/en/latest/release_notes.html#march-18th-2021

* Upgrade flake8-docstrings to 1.6.0, enable flake8-noqa

https://gitlab.com/pycqa/flake8-docstrings/-/blob/1.6.0/HISTORY.rst
https://github.com/plinss/flake8-noqa/issues/1

* Upgrade/pin pyflakes to 2.3.1

https://github.com/PyCQA/pyflakes/blob/2.3.1/NEWS.rst

* Pin pycodestyle to 2.7.0
2021-03-27 10:22:11 +01:00
Franck Nijhof
86212db71d Merge of nested IF-IF cases - K-N (#48370) 2021-03-27 10:03:15 +01:00
J. Nick Koston
9737480742 Lazy load broadlink storage (#48391)
With many broadlink devices, the storage load overwhelmed the
executor at startup. Delay loading storage until it is needed.
2021-03-27 09:32:30 +01:00
Franck Nijhof
45f77ccccf Merge of nested IF-IF cases - Core (#48364) 2021-03-27 09:23:32 +01:00
Franck Nijhof
ad13a9295e Merge multiple context managers in tests (#48146) 2021-03-27 09:17:15 +01:00
J. Nick Koston
79af18a8ab Bump httpx to 0.17.1 (#48388)
* Bump httpx to 0.17.1

* git add

* typing

* add test

* tweak
2021-03-27 09:02:01 +01:00
J. Nick Koston
b50dcef94f Block detectable I/O in the event loop (#48387)
We added a warning when this happens last April and gave developers
a year to fix the instability. We now prevent the instability by
raising RuntimeError when code attempts to do known I/O in the
event loop instead of the executor.

We now provide a suggestion on how to fix the code that is causing
the issue.
2021-03-27 08:54:49 +01:00
Paulus Schoutsen
63e3012380 Fix script default trace (#48390) 2021-03-26 23:56:40 -07:00
Franck Nijhof
387e166447 Remove HomeAssistantType alias from AdGuard integration (#48377) 2021-03-26 18:52:01 -10:00
HomeAssistant Azure
99874cd993 [ci skip] Translation update 2021-03-27 00:03:21 +00:00
Erik Montnemery
374dcde487 Return config entry details after creation (#48316) 2021-03-26 18:31:29 +01:00
Erik Montnemery
c6a20d0fc1 Improve traces for nested script runs (#48366) 2021-03-26 10:14:01 -07:00
Franck Nijhof
bbbc3a5f50 Merge of nested IF-IF case in elkm1 test (#48374) 2021-03-26 06:54:16 -10:00
Paulus Schoutsen
00683d3caa Create FUNDING.yml (#48375) 2021-03-26 09:48:02 -07:00
Franck Nijhof
f4cc4a0896 Merge of nested IF-IF cases - X-Z (#48373) 2021-03-26 17:08:05 +01:00
Matthias Alphart
8fa935234a Type check KNX integration __init__ and knx_entity (#48044) 2021-03-26 16:10:55 +01:00
Franck Nijhof
d2d78d6205 Extend typing on scaffold templates (#48232) 2021-03-26 15:19:44 +01:00
Tobias Sauerwein
3bc6497cbd Add Netatmo schedule event handling (#46573)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-26 15:08:41 +01:00
mptei
02b0a4ca1f Xknx unneeded expose (#48311) 2021-03-26 14:51:36 +01:00
J. Nick Koston
ae8afb69e7 Improve august reconnect logic when service become unreachable (#48349)
This is a different error than internet down.
2021-03-26 13:47:32 +01:00
J. Nick Koston
c4f98a3084 Small speed up to adding entities (#48353) 2021-03-26 12:05:19 +01:00
D3v01dZA
8f40c87069 Bump snapcast to 2.1.2 (#48343) 2021-03-26 12:03:38 +01:00
Tobias Sauerwein
1ba54ac2bb Refactor Netatmo tests (#48277) 2021-03-26 11:13:27 +01:00
Erik Montnemery
4fbc3da196 Validate device action schemas once (#48351) 2021-03-26 08:46:26 +01:00
Jan Bouwhuis
5b17aaf9d5 Percentage and preset mode support for MQTT fan (#47944)
* git push --all origin

* Fix percentage to ordered list conversion

* Tests for mqtt fan and fixes

* Improve tests and error handling base config

* Additional tests

* Tests completed, small fixes

* Allow preset mode and percentages combined

* Remove raise in setup and update tests

* Alignment with fan entity mode

* Fix pylint for len-as-condition

* Remove python binary cache file from PR

* Additional tests on async_turn_on and fix

* Added comments for deprecation of speeds

* Schema checks before init

* Optimize pre schema checks

* Correct schema checks

* Update homeassistant/components/mqtt/abbreviations.py

Comment speeds for mqtt fan are deprecated not needed here

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

* Update homeassistant/components/mqtt/fan.py

Comment speeds for mqtt fan are deprecated not needed here

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

* Update homeassistant/components/mqtt/fan.py

Comment speeds for mqtt fan are deprecated not needed here

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

* Update homeassistant/components/mqtt/fan.py

Comment speeds for mqtt fan are deprecated not needed here

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

* Update homeassistant/components/mqtt/fan.py

Comment speeds for mqtt fan are deprecated not needed here

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

* Warnings for exceptions - testing speed_range

* Update homeassistant/components/mqtt/abbreviations.py

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

* Update homeassistant/components/mqtt/fan.py

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

* Update homeassistant/components/mqtt/fan.py

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

* Update homeassistant/components/mqtt/fan.py

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

* Update homeassistant/components/mqtt/fan.py

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

* Update homeassistant/components/mqtt/fan.py

* Save with black

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-26 08:37:47 +01:00
Franck Nijhof
da2fecb312 Pre-calculate Verisure alarm states (#48340)
* Pre-calculate Verisure alarm states

* Correct super call
2021-03-26 08:21:11 +01:00
Erik Montnemery
72281f4718 Validate device trigger schemas once (#48319) 2021-03-26 08:09:21 +01:00
Matthias Alphart
de1fa706a0 xknx 0.17.4 (#48350) 2021-03-26 08:07:57 +01:00
Simone Chemelli
2b24f8b735 Remove timedate manipulation from Neato attributes (#48150)
* Remove timedate manipulation to get timezone back

* Updated camera to new format
2021-03-26 05:11:08 +01:00
Garrett
a019f076c0 Subaru integration code quality changes (#48193)
* Apply changes from code review

* Update sensor tests

* Fix pylint error

* Apply suggestions from code review

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

Co-authored-by: Brandon Rothweiler <brandonrothweiler@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-26 04:24:37 +01:00
Franck Nijhof
24dee01599 Use async with in Acmeda config flow (#48291) 2021-03-26 04:21:27 +01:00
Franck Nijhof
b90c620c5e Address huisbaasje review comments (#48313)
* Address huisbaasje review comments

* Update homeassistant/components/huisbaasje/config_flow.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-26 04:18:46 +01:00
starkillerOG
b4d39d517f Update in 1 minute on unavailable Motion blinds (#47800)
* if unavailable request update in 1 minute

* fix styling

* improve changing update interval

* remove unused import

* try to fix

* remove unused pass

* add const

* fix missing timedelta

* update to motionblinds 0.4.10

* improve update coordinator

* fix linting errors

* remove unused import

* move update functions within the DataUpdateCoordinator

* fix white space
2021-03-25 20:06:40 -07:00
HomeAssistant Azure
d5afd0afb3 [ci skip] Translation update 2021-03-26 00:04:15 +00:00
Marc Mueller
1dc25a5864 Bump python-typing-update to 0.3.2 (#48303)
* Bump python-version-update to 0.3.2
* Changes after update
* Fix pylint issues
2021-03-25 21:09:06 +01:00
Robert Svensson
88b5eff726 Fix late comment to PR adding percentage support to deCONZ fan platform (#48333) 2021-03-25 20:02:17 +01:00
Alexey Kustov
056f7d493c Support overriding token in notifify.event service (#47133)
* Add opportunity to define token for each message

* Update homeassistant/components/notify_events/notify.py

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

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-25 19:15:24 +01:00
jjlawren
e42ca35c94 Bump plexwebsocket to 0.0.13 (#48330) 2021-03-25 19:12:12 +01:00
Tobias Sauerwein
ec1334099e Add tests for Netatmo data handler (#46373)
* Add tests for Netatmo data handler

* Clean up coveragerc

* Move block to fixture

* Minor update

* Remove tests of implementation details for data handler

* Update homeassistant/components/netatmo/data_handler.py

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

* Update homeassistant/components/netatmo/data_handler.py

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

* Import callback

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-25 19:07:45 +01:00
Franck Nijhof
f0e5e616a7 Fix device discovery of OAuth2 config flows (#48326) 2021-03-25 10:35:01 -07:00
William Scanlon
4f4a6fd6a5 Add econet thermostat support and use getattr for sensors (#45564)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-25 17:06:51 +01:00
Martin Hjelmare
9f07ca069d Fix zha manual flow test (#48317) 2021-03-25 09:19:32 -04:00
chemaaa
1b60c8efb8 Add Homepluscontrol integration (#46783)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-25 14:12:31 +01:00
Erik Montnemery
3188f796f9 Add allowed UUIDs and ignore CEC to Google Cast options flow (#47269) 2021-03-25 14:06:01 +01:00
Matthias Alphart
6b2a2740f1 Type check KNX integration climate (#48054) 2021-03-25 09:47:49 +01:00
Zixuan Wang
21c72fa559 Fix missing glances temperature sensors (#46086)
* Fix missing glances temperature sensors (#44899)

* Revert matching rules for Glances

* Shorter if statement

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

* Revert long-line if statement

* Update if statement

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-25 09:19:11 +01:00
Boris Gulay
642bb91a9a Add metrics upload by UDP to graphite (#43751) 2021-03-25 09:18:10 +01:00
jjlawren
20485eb132 Bump plexapi to 4.5.1 (#48307) 2021-03-25 08:41:21 +01:00
J. Nick Koston
da7fd8a294 Listen on the default interface by default for zeroconf (#48302) 2021-03-24 15:04:55 -10:00
Raman Gupta
058d232c57 Determine zwave_js sensor device class during initialization (#48304) 2021-03-24 20:08:16 -04:00
HomeAssistant Azure
6660fb7478 [ci skip] Translation update 2021-03-25 00:03:36 +00:00
J. Nick Koston
c340a39275 Handle range conversions that do not start at 1 (#48298) 2021-03-24 12:33:44 -10:00
djtimca
cc12d29f6d Bump omnilogic to 0.4.3 to fix API certificate issue (#48296)
* Bump omnilogic to 0.4.3 to fix API certificate issue.

* Updated requirements files.
2021-03-24 22:58:03 +01:00
Marc Mueller
6fc3406c93 Ignore python-typing-update for pre-commit requirements (#48292) 2021-03-24 20:05:53 +01:00
scyto
a9ccba44ed Add support for Roomba 980 discovery (#47696)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-24 08:46:11 -10:00
Erik Montnemery
8896ae0d56 Add support for tracing script execution (#48276)
* Add support for tracing script execution

* Tweak
2021-03-24 17:56:22 +01:00
Franck Nijhof
0be6a868e0 Fix Core bug report issue form (#48279) 2021-03-24 10:20:49 +01:00
Matt Zimmerman
5265aabf92 Clean up SmartTub reminders (#48033)
* remove "date" state attribute

* remove unused constant
2021-03-24 08:39:23 +01:00
jjlawren
879c82ebf8 Improve Plex GDM client connections (#48272) 2021-03-24 07:57:45 +01:00
Tobias Sauerwein
0d699bb768 Add tests for Netatmo sensor (#46393)
* Add tests for Netatmo sensor

* Fix coveragerc

* Remove freezegun dependency

* Use f-strings instead of string concatenation

* Update tests/components/netatmo/test_sensor.py

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

* Address comment on config options test

* Replace deprecated call to async_get_registry()

* Fix public weather sensor update test

* Clean up

* Prevent division by zero

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-24 07:17:51 +01:00
Paulus Schoutsen
3dec394cad Migrate template to register reload service on async_setup (#48273) 2021-03-23 20:35:15 -07:00
Paulus Schoutsen
b58dd7d047 Bump frontend to 20210324.0 2021-03-24 00:23:29 +00:00
HomeAssistant Azure
c4e5af8081 [ci skip] Translation update 2021-03-24 00:03:09 +00:00
Bram Kragten
b1d0b37d2c Google assistant: disconnect user agent when not found in google (#48233) 2021-03-23 15:04:32 -07:00
Erik Montnemery
9f8b697e64 Refactor tracing: Prepare for tracing of scripts (#48231) 2021-03-23 14:53:38 -07:00
jjlawren
195d4de6cd Bump plexapi to 4.5.0 (#48264) 2021-03-23 22:47:00 +01:00
Robert Svensson
70d9e8a582 Add proper percentage support to deCONZ fan integration (#48187)
* Add proper percentage support to deCONZ fan integration

* Properly convert speed to percentage

* Remove disabled method

* Replace convert_speed with a dict
2021-03-23 22:29:55 +01:00
Joakim Sørensen
49b47fe648 Install requirements.txt while building dev Dockerfile (#48268) 2021-03-23 14:04:15 -07:00
Diogo Gomes
fd5916e067 datetime must be a string (#47809) 2021-03-23 20:19:47 +01:00
Fredrik Erlandsson
d129b8e1e1 Update pypoint to 2.1.0 (#48223)
* update pypoint to 2.1.0

* Add properties and device_classes to constant

* Fix unique_ids for binary_sensors

* Update device icon

* Fallback to device_class icon.

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

* Just use known events

* Use DEVICE_CLASS_SOUND

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-23 20:03:54 +01:00
Franck Nijhof
cc73cbcace Update issue form to use latest changes (#48250) 2021-03-23 18:45:40 +01:00
Alexei Chetroi
269608d1af Bump up ZHA dependencies (#48257) 2021-03-23 11:03:16 -04:00
Erik Montnemery
a09c8eecb7 Fix some sensor classes (#48254)
* Fix some sensor classes

* Tweak

* Tweak
2021-03-23 15:56:33 +01:00
Franck Nijhof
6932cf9534 Use contextlib.suppress where possible (#48189) 2021-03-23 14:36:43 +01:00
Tobias Sauerwein
9656f260a4 Add tests for Netatmo (#46372)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-23 14:28:35 +01:00
Robert Svensson
1095d93892 Increase test coverage of deCONZ device triggers (#48126)
* Increase test coverage of deCONZ device triggers

* Revert removed new line

* Found a way to explicitly assert that exceptions are raised

* Remove unnecessary block till done

* Fix unnecessary elif

* Fix review comments

* Remove helper tests
2021-03-23 13:49:44 +01:00
Fabian Affolter
e0e3495849 Upgrade pylast to 4.2.0 (#48245) 2021-03-23 12:18:03 +01:00
J. Nick Koston
7bd876beaf Add dhcp discovery support to blink (#48243) 2021-03-23 12:00:06 +01:00
J. Nick Koston
6e07279257 Add august doorbells to dhcp discovery (#48244) 2021-03-23 11:59:04 +01:00
David Keijser
95370ac84b Change nanoleaf name to configured name instead of hostname (#46407)
* nanoleaf: Key config by device id

Rather than host which is not stable

* nanoleaf: Use pretty name instead of hostname
2021-03-23 10:28:19 +01:00
Kevin Fronczak
8900b38c7f Add Blink config migration (#46671) 2021-03-23 09:24:42 +01:00
Dewet Diener
fb03d79daf Bump nanoleaf to 0.1.0, add unique IDs (#48135)
* bump pynanoleaf and expose model/serial as unique_id

* addressed PR feedback
2021-03-23 09:18:48 +01:00
uvjustin
cd455e296e Remove login details before logging stream source (#45398)
* Remove login details before logging stream source

* Convert to str before re

* Use compiled RE

* Add tests and filter log message in worker

* Update import

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

* isort

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-23 07:30:45 +01:00
HomeAssistant Azure
55b689b464 [ci skip] Translation update 2021-03-23 00:03:29 +00:00
Paulus Schoutsen
19ab7306ec Clean up AsusWRT (#48012) 2021-03-22 23:21:33 +01:00
Erik Montnemery
9e9ba53f0e Move SensorEntity last in the inheritance tree (#48230) 2021-03-22 20:05:13 +01:00
plomosits
18e6816373 Improve Docker and Kubernetes support for KNX (#48065)
Co-authored-by: Matthias Alphart <farmio@alphart.net>
2021-03-22 20:03:57 +01:00
Erik Montnemery
fdf97eaca3 Migrate integrations i-m to extend SensorEntity (#48213) 2021-03-22 19:59:03 +01:00
Erik Montnemery
64bc9a8196 Migrate integrations r-s to extend SensorEntity (#48215) 2021-03-22 19:54:14 +01:00
Erik Montnemery
0c086b5067 Migrate integrations w-z to extend SensorEntity (#48217) 2021-03-22 19:50:29 +01:00
Erik Montnemery
783b453bbe Migrate integrations t-v to extend SensorEntity (#48216) 2021-03-22 19:47:44 +01:00
Erik Montnemery
c900e3030b Migrate integrations n-q to extend SensorEntity (#48214) 2021-03-22 19:46:46 +01:00
Erik Montnemery
339a56e434 Migrate integrations f-h to extend SensorEntity (#48212) 2021-03-22 19:45:17 +01:00
Erik Montnemery
a49989241a Refactor tracing: Move trace support to its own integration (#48224) 2021-03-22 19:19:38 +01:00
Dermot Duffy
781084880b Add an option to hide selected Hyperion effects (#45689) 2021-03-22 15:59:12 +01:00
Philip Allgaier
286217f771 Fix condition extra fields for climate and humidifier (#48184) 2021-03-22 14:59:40 +01:00
MatsNl
53a9c117ee Add jobstate parser to Onvif integration (#46589) 2021-03-22 14:43:46 +01:00
starkillerOG
a583f56bd8 Add identification for YAML imports (#48162) 2021-03-22 14:35:24 +01:00
Franck Nijhof
dc15f243e6 Upgrade pyupgrade to v2.11.0 (#48220) 2021-03-22 13:29:39 +01:00
Erik Montnemery
272dffc384 Improve script tracing (#48100)
* Improve script tracing

* Fix test
2021-03-22 13:15:45 +01:00
unaiur
3fb323b745 Fix maxcube temperature for thermostat auto mode (#48047)
maxcube-api dependency now supports using None as the
target temperature: in that case, it uses the scheduled
temperature in auto mode and current temperature in all
other modes.

We will use that feature when changing hvac_mode to auto and
selecting PRESET_NONE.
2021-03-22 13:13:06 +01:00
Franck Nijhof
b7ad5ff032 Upgrade pre-commit to 2.11.1 (#48219) 2021-03-22 13:11:06 +01:00
Franck Nijhof
6cead320de Bump colorlog to 4.8.0 (#48218) 2021-03-22 13:10:01 +01:00
Erik Montnemery
23b562386f Migrate integrations d-e to extend SensorEntity (#48211) 2021-03-22 12:52:29 +01:00
Erik Montnemery
e0cd7072d6 Migrate integrations a-c to extend SensorEntity (#48210) 2021-03-22 12:37:16 +01:00
Sean Wilson
1bb29bffbb Update aqualogic library to v2.6 (#48119) 2021-03-22 12:12:14 +01:00
Greg Dowling
834fc1ae14 Remove vera should_poll (#48209) 2021-03-22 12:01:17 +01:00
J. Nick Koston
136ac88bed Bump yalexs to 1.1.5 for august (#48205)
Turns on auto-reconnect support
2021-03-22 11:19:05 +01:00
Paulus Schoutsen
f67e8b4369 Populate trigger variable when manually triggering automation (#48202)
* Populate trigger variable when manually triggering automation

* Update tests/components/automation/test_init.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-22 08:22:32 +01:00
J. Nick Koston
6b93c4073d Ensure homekit yaml config works when there is an ignored config entry (#48175) 2021-03-21 21:17:04 -10:00
J. Nick Koston
a2c4b438ea Convert august to be push instead of poll (#47544) 2021-03-21 22:35:12 -07:00
J. Nick Koston
8e4c0e3ff7 Increase config entries test coverage (#48203) 2021-03-21 19:29:48 -10:00
J. Nick Koston
7a447c4209 Exclude homekit accessories created by the homekit integration from homekit_controller (#48201) 2021-03-21 22:18:24 -07:00
jjlawren
e5893ca42c Trigger Plex GDM scans regularly (#48041) 2021-03-21 22:14:09 -07:00
Erik Montnemery
40ce25800c Test that homeassistant stop and restart do not block WS (#48081) 2021-03-21 22:12:56 -07:00
Erik Montnemery
73e546e2b8 Improve condition trace tests (#48152) 2021-03-21 22:09:59 -07:00
Emily Mills
8557b856a4 Fix Kulersky and Zerproc config unloading (#47572) 2021-03-21 22:08:09 -07:00
J. Nick Koston
f35641ae8e Make sure include_ignore=False always works with _async_current_entries (#48196)
If the step was anything other than SOURCE_USER,
include_ignore=False would not be honored
2021-03-21 21:57:49 -07:00
J. Nick Koston
fd310e1f41 Update homekit to improve representation of activity based remotes (#47261) 2021-03-21 21:55:20 -07:00
J. Nick Koston
3f2ca16ad7 Index config entries by id (#48199) 2021-03-21 21:44:29 -07:00
HomeAssistant Azure
6fab4a2c82 [ci skip] Translation update 2021-03-22 00:08:34 +00:00
Nate Clark
2912db84d7 Handle switch state updates from Konnected device (#48167)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-22 00:16:34 +01:00
xonestonex
9739707f62 Preset support for MOES thermostat valves (#48178) 2021-03-21 18:03:23 -04:00
Ikko Ashimine
7473f25afd Fix typo in homekit strings.json (#48176)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-21 12:39:33 +01:00
Kevin Worrel
fb48fd7d10 ScreenLogic cleanups (#48136)
* ScreenLogic cleanup.
Bump screenlogicpy to 0.2.0.
Move heating functions from water_heater to climate platform.
Address notes from original PR.

* Fix temperature attribute

* Addressing notes.
Bump screenlogicpy to 0.2.1.
Made device_types constants.
Made (known) equipment flags constants.
Used dict.get() in places where None is the default.
Return fast with good _last_preset.

* Update homeassistant/components/screenlogic/climate.py

Let base entity handle state property.

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

* Patch integration setup functions.

* Exception, ATTR_TEMPERATURE notes

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-21 11:56:46 +01:00
Erik Montnemery
346a724ac3 Mark base components' state_attribute @final, rename others to extra_state_attributes (#48161)
* Mark base state_attributes @final, rename others to extra_state_attributes

* Fix calendar, update tests
2021-03-21 10:38:24 +01:00
javicalle
668d018e9c Make Rflink handle set_level command for dimmable devices (#46499)
* Added handle_event for set_level command in dimmable devices

* refactor common code for dimmable devices

* Force tests

Silly change to force tests execution

* fix super()

* add rflink dim utils
2021-03-21 08:43:38 +01:00
Franck Nijhof
87499989a0 Small code styling tweaks for HomeKit (#48163) 2021-03-20 17:08:49 -10:00
javicalle
99d2d72d13 Update RFLink tests (#48149) 2021-03-21 03:27:24 +01:00
Otto Winter
0193f16ae9 ESPHome trigger reconnect immediately when mDNS record received (#48129) 2021-03-20 14:49:03 -10:00
HomeAssistant Azure
46a3b80a2d [ci skip] Translation update 2021-03-21 00:05:03 +00:00
Philip Allgaier
3ae9460131 Use domain const in config_flow (#48168) 2021-03-21 00:34:46 +01:00
David F. Mulcahey
01fcc41aa0 only block coord removal if it is active (#48147) 2021-03-20 17:26:23 -04:00
Franck Nijhof
08870690a6 Fix a collection of tests with missing asserts (#48127)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-20 17:23:55 +01:00
Erik Montnemery
f8755a52c2 Warn on undefined variables in templates (#48140)
* Warn on undefined variables in templates

* Add test

* fix tests

* fix tests
2021-03-20 15:16:04 +01:00
Robert Svensson
863f75e65e Improve test coverage of deconz_device (#48141) 2021-03-20 14:22:01 +01:00
Franck Nijhof
5a2b5fe7c5 Yoda assertion style removed is (#48142) 2021-03-20 13:55:10 +01:00
Tobias Sauerwein
365e8a74ee Add tests for Netatmo webhook handler (#46396)
* Add tests for Netatmo webhook handler

* Add async prefix

* Remove freezegun dependency

* Clean up
2021-03-20 08:26:11 +01:00
Jonathan Keslin
0f16d4f1e7 Update pyvesync to 1.3.1 (#48128) 2021-03-19 19:50:52 -05:00
Franck Nijhof
fb849b81b5 Rewrite of not a == b occurances (#48132) 2021-03-20 01:27:04 +01:00
Thiago Oliveira
26bceae99d Set zwave_js climate precision to tenths for F (#48133) 2021-03-20 01:20:09 +01:00
HomeAssistant Azure
098c53e8b5 [ci skip] Translation update 2021-03-20 00:04:10 +00:00
Franck Nijhof
e47d8da3b4 Remove defunct test from percentage util (#48125) 2021-03-19 17:16:45 -05:00
Matthias Alphart
70bebc51f2 Type check KNX integration cover (#48046) 2021-03-19 22:25:20 +01:00
Matthias Alphart
16a4f05e27 Type check KNX integration fan (#48056) 2021-03-19 20:55:08 +01:00
Greg Dowling
b03c97cdd0 Make Vera should_poll static rather than dynamic (#47854)
* Make should_poll static.

* Address review comments.

* Fix black error.
2021-03-19 20:27:56 +01:00
Robert Svensson
24e067782a Improve sensor coverage by verifying daylight sensor attributes (#48090) 2021-03-19 16:51:44 +01:00
sycx2
bc0eb9bf32 Improve uvc test camera (#41438)
* Improve uvc test camera

* Clean setup full config

* Clean setup partial config

* Set more camera defaults

* Clean setup partial config v31x

* Clean setup incomplete config

* Clean setup nvr errors during indexing

* Clean setup nvr errors during initialization

* Clean properties

* Fix motion recording mode properties

* Clean stream

* Clean login

* Clean login v31x

* Clean login tries both addres and caches

* Clean login fails both properly

* Remove not needed test

* Clean camera image error

* Test snapshot login retry

* Clean up

* Test enable and disable motion detection

* Times must be UTC

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-19 15:54:07 +01:00
javicalle
e798f415a4 Wait for switch startup in generic_thermostat (#45253)
* Better status control on restore

* Better status control on restore

* fix code coverage

* Rollback hvac_mode initialization

I think I have better understood the handling of the `hvac_mode`.
I change the approach. Now the thermostat doesn't initialize until the switch is available.

* fix pyupgrade

* fix black

* Delete test_turn_on_while_restarting

HVAC mode should not be modified by the switch.
IMHO, this test does not make sense because if the switch is turned on the thermostat is not turning on (and not changing HVAC_MODE)

* Re add turn off if HVAC is off

If HVAC_MODE is off thermostat will not control heater switch. This can be because `initial_hvac_mode`, because state defaults to or because old_state.
IMHO it is preferable to be excessively cautious.

* Update climate.py

* Change warning message

* Fix black

* Fix black
2021-03-19 15:42:45 +01:00
J. Nick Koston
c820dd4cb5 Have pylint warn when user visible log messages do not start with capital letter or end with a period (#48064)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-19 09:26:36 -05:00
Martin Hjelmare
3742f175ad Add missing oauth2 error abort reason (#48112) 2021-03-19 14:27:26 +01:00
Franck Nijhof
8a56dbf587 Add flake8 comprehensions checks to pre-commit & CI (#48111) 2021-03-19 13:41:09 +01:00
Robert Svensson
fa5ce70af1 Improve test coverage of deCONZ config flow (#48091) 2021-03-19 13:37:22 +01:00
Franck Nijhof
6e0c0afde2 Upgrade RPi.GPIO to 0.7.1a4 (#48106) 2021-03-19 13:36:44 +01:00
Erik Montnemery
703c073e53 Improve websocket debug log 2021-03-19 13:30:16 +01:00
Michael Cicogna
b1626f0091 Fix Homematic transition function on light devices with multiple channels (#45725)
* Update light.py

Fix Transition function on devices with multiple channels

* Update light.py

fix Flake8 Warning W293 blank line contains whitespace
2021-03-19 12:36:03 +01:00
Andreas Brett
993261e7f5 Add "timestamp" attribute to seventeentrack (#47960)
* bump py17track to 3.0.1

* Make aiohttp ClientSession optional

as introduced in py17track v3.0.0 (https://github.com/bachya/py17track/releases/tag/3.0.0)

* Update manifest.json

* add new attribute timestamp

introduced in 3.1.0

* Update requirements.txt

* Update requirements_all.txt

* Update requirements.txt

* Update requirements_test_all.txt

* Update sensor.py

* Update sensor.py

* Update manifest.json

* provide timezone configuration

user config to pre-define timezone of package status timestamps

* Update requirements_all.txt

* Update requirements_test_all.txt

* linting

* use hass.config.time_zone

* Update sensor.py

* Update test_sensor.py

* Update test_sensor.py

* black

* Update manifest.json

* adjust changes to session param

* added test against latest dev branch

* make isort happy

* make black happy

* make flake8 happy

* make black happy

* bump to 3.2.1

* 3.2.1

* Update typing 15
2021-03-19 12:34:06 +01:00
Tobias Sauerwein
4ee4d674d8 Add tests for Netatmo camera (#46380)
* Add test for Netatmo camera

* Improve docstrings

* Remove light tests

* Remove freezegun from tests

* Update camera tests

* Remove freezegun dependency

* Update tests/components/netatmo/test_camera.py

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

* Update tests/components/netatmo/test_camera.py

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

* Deduplication of the fake webhook payload

* Mock pyatmo instead of checking the logs

* Clean up

* Further deduplication

* Assert function arguments

* Rename mocked functions

* Update .coveragerc

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-19 12:19:57 +01:00
Tobias Sauerwein
aaafe399a1 Add tests for Netatmo light (#46381)
* Add tests for Netatmo light

* Improve docstring

* Register the camera data class for the light platform

* Remove freezegun dependency

* Update tests

* Update tests/components/netatmo/test_light.py

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

* Deduplicate webhook test data

* Mock pytest to verify it is called

* Don't test internals

* Rename

* Assert light still on with erroneous event data

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-19 12:19:27 +01:00
Maciej Bieniek
7858b59944 Use device class voltage in NUT integration (#48096) 2021-03-19 10:25:17 +01:00
Matthias Alphart
66b537c0e3 Type check KNX integration factory and schema (#48045)
these are used non-optional anyway
get them per config[] notation
2021-03-19 10:23:50 +01:00
Matthias Alphart
e522b311ce Type check KNX integration binary_sensor, sensor and switch (#48050) 2021-03-19 10:22:18 +01:00
Matthias Alphart
fb1e76db8c Type check KNX integration light (#48053)
* type check light

* review changes
2021-03-19 10:21:06 +01:00
Matthias Alphart
943ce8afaf Type check KNX integration weather, notify and scene (#48051) 2021-03-19 10:16:27 +01:00
Matthias Alphart
987c2d1612 Type check KNX integration expose (#48055) 2021-03-19 10:12:55 +01:00
Tobias Sauerwein
2f15957707 Refactor Netatmo test (#48097)
* Refactor webhook simulate

* Update test_climate.py
2021-03-19 09:57:11 +01:00
HomeAssistant Azure
d77a28b8a1 [ci skip] Translation update 2021-03-19 00:03:03 +00:00
Martidjen
8a37b616bf Add Opentherm Gateway current and setpoint precision (#47484)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-19 00:47:59 +01:00
Marc Mueller
7def367467 Update pyupgrade to v2.10.1 (#48089) 2021-03-19 00:03:27 +01:00
Marc Mueller
314a5518f1 Add python-typing-update to pre-commit-config (#48088) 2021-03-18 23:20:25 +01:00
Marc Mueller
4cb7718192 Update typing 16 (#48087) 2021-03-18 22:58:19 +01:00
Maciej Bieniek
0f5efca76b Fix Shelly sleeping device initialization after reconfiguration (#48076) 2021-03-18 13:26:20 -07:00
Erik Montnemery
7b717bc437 Correct trace for repeat script actions (#48031) 2021-03-18 13:14:06 -07:00
bestlibre
98d7e6b898 Add images support to matrix notify (#37625)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-18 11:30:38 -07:00
Dan Klaffenbach
5174f63fd8 Add definitions for grouping media players (#41193)
* Add definitions for grouping media players

See https://github.com/home-assistant/architecture/issues/364

* Fix Google Assistant tests

* Define sync versions of async_join_players/async_unjoin

* Don't use async API in synchronous test methods

* Fix tests and make pylint happy

The method name `unjoin` is used by another component, so let's use
`unjoin_player` instead.

* Fix emulated_hue tests

The new media player entity in the `demo` component requires a tiny
adjustment in the emulated_hue tests.

* Use "target:" in service description

* Also use "name:" in service descriptions

Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-03-18 18:19:28 +01:00
Raman Gupta
9fca001eed Bump zwave-js-server-python to 0.22.0 (#48085) 2021-03-18 18:12:33 +01:00
elyobelyob
53687c766d Add URL input for Prowl (#46427)
Co-authored-by: Joakim Sørensen <hi@ludeeus.dev>
2021-03-18 17:02:38 +01:00
Marc Mueller
54d1e9985f Update typing 15 (#48079) 2021-03-18 15:13:22 +01:00
Marc Mueller
dcca29ef68 Update typing 14 (#48078) 2021-03-18 15:08:35 +01:00
Tobias Sauerwein
7d196abc4a Add tests for Netatmo oauth2 api (#46375)
* Add Netatmo tests for api

* Update tests/components/netatmo/test_api.py

* Update .coveragerc

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-18 14:55:39 +01:00
Marc Mueller
b67b9b94f9 Update typing 13 (#48077) 2021-03-18 14:43:52 +01:00
Marc Mueller
a3cd1854f6 Update typing 12 (#48073) 2021-03-18 14:31:38 +01:00
Berni Moses
6cd6ad6904 Ignore not implemented lg_soundbar source/equaliser. (#45868) 2021-03-18 14:06:17 +01:00
Marc Mueller
3d2b81a401 Update typing 11 (#48072) 2021-03-18 13:21:46 +01:00
Raj Laud
99f9f8dec0 Allow hdmi_cec to recover from lost connection to adapter without restart (#40714)
* Only update CecDevice state when there is new data

* Replace CecDevice with CecEntity

* Support for losing and reconnecting to pycec TcpAdapter

* Register listener in async_added_to_hass

* Rename hdmi_cec watchdog

* Only update CecDevice state when there is new data

* Fix flake8 docstring error

* Fix linter error

* Bump pycec version to 0.5.0

* Bump pycec version to 0.5.1

* Fixe merge mistake

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-03-18 13:07:35 +01:00
Marc Mueller
25a13d1554 Update typing 10 (#48071) 2021-03-18 13:07:04 +01:00
Andreas
00dca88024 Amcrest add support for CrossLineDetection (#44582)
Co-authored-by: andreas-amlabs <andreas-amlabs@users.noreply.github.com>
2021-03-18 12:32:08 +01:00
javicalle
c8950870a2 Propagate RFLink 'send_command' event (#43588)
* propagate send_command event

* propagate send_command event
2021-03-18 12:25:00 +01:00
Robert Svensson
8b8a54b367 Improve deCONZ services and scenes tests (#47829)
Use patch.dict rather than deep copy to change DECONZ_WEB_REQUEST
2021-03-18 11:57:56 +01:00
Robert Svensson
ad5dbebc03 Use websocket fixture in deCONZ switch tests (#47831)
Localize test data
Improve asserts
2021-03-18 11:44:52 +01:00
Robert Svensson
a4b2dff58d Use websocket fixture in deCONZ sensor tests (#47830)
Localize test data
Improve asserts
2021-03-18 11:41:27 +01:00
Robert Svensson
a21d0cadf8 Use websocket fixture in deCONZ lock tests (#47827)
Localize test data
Improve asserts
2021-03-18 11:06:44 +01:00
Robert Svensson
3f2d3bd1b2 Use websocket fixture in deCONZ light tests (#47826)
Localize test data
Improve asserts#
2021-03-18 11:01:32 +01:00
Robert Svensson
7350215b4e Use websocket fixture in deCONZ fan tests (#47824)
Localize test data
Improve asserts
2021-03-18 10:49:48 +01:00
Robert Svensson
7ff9610e67 Use websocket fixture in deCONZ event related tests (#47823)
Localize test data
Improve asserts
2021-03-18 10:44:31 +01:00
Robert Svensson
a57d340037 Use websocket fixture in deCONZ cover tests (#47822)
Localize test data
Improve asserts
2021-03-18 10:07:11 +01:00
Marc Mueller
283b4abe67 Update typing 09 (#48059) 2021-03-18 10:02:00 +01:00
Robert Svensson
2ab640aaef Use websocket fixture in deCONZ climate tests (#47821)
Localize test data
Improve asserts
2021-03-18 09:57:27 +01:00
J. Nick Koston
fea0e39fa0 Reduce rest setup code (#48062)
- Switch to storing each platform config/rest data in a list
2021-03-18 09:55:38 +01:00
Robert Svensson
333f5da036 Use websocket fixture in deCONZ binary sensor tests (#47820)
Localize test data
Improve asserts
2021-03-18 09:51:42 +01:00
Marc Mueller
5cdd945f44 Update typing 08 (#48058) 2021-03-18 09:25:40 +01:00
Marc Mueller
9e1a6610dc Update typing 07 (#48057) 2021-03-18 08:02:55 +01:00
J. Nick Koston
08db262972 Add a service to reload config entries that can easily be called though automations (#46762) 2021-03-17 21:27:21 -07:00
corneyl
6fb0e49335 Upgraded aiopylgtv to v0.4.0 (#47014)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-17 20:59:48 -07:00
Tobias Haber
f785cc7d9a Google has deprecated a comma separated list for modes changed it to array (#48029) 2021-03-17 20:59:06 -07:00
HomeAssistant Azure
f625e324dd [ci skip] Translation update 2021-03-18 00:07:07 +00:00
Marc Mueller
91df3fa904 Update typing 06 (#48039) 2021-03-17 23:49:01 +01:00
Marc Mueller
7c0734bdd5 Update typing 05 (#48038) 2021-03-17 23:43:55 +01:00
Marc Mueller
76199c0eb2 Update typing 04 (#48037) 2021-03-17 23:34:25 +01:00
Guillermo Ruffino
02619ca2cd Add service schema for ESPHome api services (#47426) 2021-03-17 22:50:21 +01:00
J. Nick Koston
dd56cc8010 Fix rest sensor data misalignment with multiple sensors (#48043)
If there were multiple rest data sources, the index needed
to be incremented by type instead of by data source/type
2021-03-17 22:47:42 +01:00
Marc Mueller
fabd73f08b Update typing 03 (#48015) 2021-03-17 21:46:07 +01:00
Marc Mueller
6fb2e63e49 Update typing 02 (#48014) 2021-03-17 18:34:19 +01:00
Hans Kröner
86d3baa34e Improve OWM Precipitation sensors (#47945) 2021-03-17 17:39:47 +01:00
Marc Mueller
e55702d635 Update typing 01 (#48013) 2021-03-17 17:34:55 +01:00
Matthew Donoughe
9011a54e7f Switch history tests to pytest (#42318)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-17 15:32:44 +01:00
schiermi
6a24ec7a30 Fix workday sensor to honor timezone (#47927) 2021-03-17 15:32:18 +01:00
Marc Mueller
a1ff45cbf2 Update metadata license string (#46899) 2021-03-17 14:32:13 +01:00
sycx2
009e44ed9b Rewrite tests for Template Light (#41163) 2021-03-17 11:30:44 +01:00
Nathan Tilley
6f7f4955a3 Add Logger Check Before Adding Another (#47954) 2021-03-17 11:11:39 +01:00
dependabot[bot]
4f3b7f917f Bump codecov/codecov-action from v1.2.2 to v1.3.1 (#48020)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.2.2 to v1.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.2.2...fcebab03f26c7530a22baa63f06b3e0515f0c7cd)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-17 09:52:17 +01:00
Jim Ekman
ecf93e09e8 Add support for percentage based fan model in esphome (#46712) 2021-03-17 08:50:34 +01:00
Nathan Spencer
bdc8a2878f Fix issue with setting sleep mode during DST (#48001) 2021-03-17 08:23:54 +01:00
Philip Allgaier
470b0b8b87 Fix historic attributes for input_datetime (#45208) 2021-03-16 22:40:20 -07:00
HomeAssistant Azure
4306c8fbb4 [ci skip] Translation update 2021-03-17 00:03:55 +00:00
Paulus Schoutsen
529b23d8af Bump frontend to 20210316.0 2021-03-16 23:43:16 +00:00
Kevin Worrel
d21d9951ba Add Pentair ScreenLogic integration (#47933)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-16 13:32:02 -10:00
J. Nick Koston
f605a3c149 Remove YAML support from August (#47615) 2021-03-16 13:22:07 -10:00
Abílio Costa
d49a436573 Delay ZHA group updates to ensure all members are updated first (#46861)
* Delay ZHA group updates to ensure all members are updated first

After turning off a group, when the first device reports "off", the
other devices may still be "on". If HA processes the group state update
quickly enough, the group will see that some devices are on, so the
state of the group will revert back to "on", and then "off" when the
remaining devices all report "off". That would cause the UI toggle to go
back and forward quickly, and automations that trigger with "state: on"
to fire when the user turns the group off.

This PR fixes that by delaying the group state update, giving time for
all the devices to report their states first.

* Fix zha group tests

* Reorder sleeping.

* Update tests/components/zha/common.py

Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
2021-03-16 17:38:16 -04:00
Paulus Schoutsen
f1c274b3dd Add run_id to automation logbook event (#47980) 2021-03-16 14:37:26 -07:00
Matthias Alphart
a4075d9e11 KNX sensor: float no longer valid for type (#48005) 2021-03-16 21:33:56 +01:00
Joakim Plate
d39aa9f80b Bump philips_js with backported fixes (#47959) 2021-03-16 21:24:01 +01:00
Alan Tse
f86e7535e0 Add location details to deprecation warning (#47155) 2021-03-16 21:16:07 +01:00
chpego
f3c74948c3 Upgrade youtube_dl to version 2021.03.14 (#48000) 2021-03-16 21:02:05 +01:00
Kevin Eifinger
14d3e29e64 Add missing "pin" field in step "pair" for philips_js (#47802) 2021-03-16 20:56:49 +01:00
billsq
55db855f91 Add support for Xiaomi Air Purifier Pro H (#47601) 2021-03-16 20:54:13 +01:00
Matt Zimmerman
73c6728e98 Add binary_sensor entities for SmartTub reminders (#47583) 2021-03-16 17:38:09 +01:00
Alexei Chetroi
6a66ccef1b Bump up ZHA dependencies (#47997) 2021-03-16 12:21:08 -04:00
Ron Heft
bbd98e196b Fix withings InvalidParamsException (#47975)
* Bump withings_api to 2.3.1 (fixes #47329)

* Fix NotifyAppli calls to be compatible with withings_api 2.3.1

* Fix errors with withings_api 2.2+ using pydantic

* Bump withings_api to 2.3.2
2021-03-16 17:15:22 +01:00
Klaas Schoute
0097169dd3 Add aliases to actions in automation blueprints (#47940) 2021-03-16 17:14:07 +01:00
Erik Montnemery
389891d13d Improve JSONEncoder test coverage (#47935) 2021-03-16 17:12:51 +01:00
Matthias Alphart
7ed9e5b2c2 Update xknx to 0.17.3 (#47996) 2021-03-16 16:43:11 +01:00
Franck Nijhof
f695155af5 Add device classes to Verisure sensors (#47990) 2021-03-16 16:30:04 +01:00
Antoine Meillet
4dc0cdbb5f Ignore STATE_UNKNOWN in prometheus (#47840)
Giving a value of 0 by default can lead to erroneous
data being exported. For example, if a MQTT temperature
sensor is in `STATE_UNKNOWN` (which can happen after a
HASS restart), a temperature of 0°C will be exported.
Some user might prefer no value rather than a wrong one.
2021-03-16 16:11:51 +01:00
David F. Mulcahey
673ebe2911 Guard extra call in ZHA lights (#47832)
* add flag to prevent sending an on command

* fix condition

* add constant for default transition

* make groups work with new force on flag

* reorder light entity creation

* rearrange logic

* update test

* remove failed attempt at group light flag

* fix flag
2021-03-16 10:02:26 -04:00
Erik Montnemery
9647eeb2e0 Add custom JSONEncoder for automation traces (#47942)
* Add custom JSONEncoder for automation traces

* Add tests

* Update default case to include type

* Tweak

* Refactor

* Tweak

* Lint

* Update websocket_api.py
2021-03-16 14:21:05 +01:00
Erik Montnemery
5f2326fb57 Add support for light color modes (#47720)
* Add support for light color modes

* Update tests

* Update comments

* Fix bugs, add tests

* Suppress lint errors

* Don't suppress brightness when state is ambiguous

* Improve reproduce_state + add tests

* Add comment

* Change COLOR_MODE_* constants, rename COLOR_MODE_DIMMER to COLOR_MODE_BRIGHTNESS

* Fix tests

* Tweaks
2021-03-16 12:51:39 +01:00
Erik Montnemery
333e6a215a Add execute_script WS API (#47964)
* Add execute_script WS API

* Improve tests
2021-03-16 08:51:00 +01:00
Erik Montnemery
1cde1074c9 Correct trace for choose and repeat script actions (#47973)
* Correct trace for choose and repeat script actions

* only choose-wrap the choices

* Update tests

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-16 08:49:16 +01:00
Franck Nijhof
354c0a7fd1 Add reauthentication to Verisure (#47972)
* Add reauthentication to Verisure

* Update translations

* Correct translation step key

* Address pylint warning

* = is not :
2021-03-16 08:41:41 +01:00
Guido Schmitz
2230b03888 Add voltage device class to devolo Home Control (#47967) 2021-03-16 08:13:03 +01:00
SoCalix
0e368df023 Fix xmpp notify for muc rooms (#46715) 2021-03-16 02:07:54 +01:00
HomeAssistant Azure
c11b85af2f [ci skip] Translation update 2021-03-16 00:04:36 +00:00
Erik Montnemery
f82e59c32a Make it possible to list debug traces for a specific automation (#47744) 2021-03-15 16:51:04 -07:00
Franck Nijhof
5f627df6f8 Add devices to Verisure integration (#47913)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-15 23:59:41 +01:00
Franck Nijhof
9fd973d8e8 Move Verisure services to entity services (#47905) 2021-03-15 22:50:28 +01:00
Martin Hjelmare
40c12997ed Add zwave_js sensor humidity device class (#47953) 2021-03-15 20:51:24 +01:00
Franck Nijhof
059e9e8307 Add config flow to Verisure (#47880)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-15 12:30:44 -07:00
RadekHvizdos
9f4c2f6260 Add suggested_area to MQTT discovery (#47903)
* Add suggested_area to MQTT Discovery

This adds suggested_area to MQTT discovery, so that the discovered devices could be automatically added to the proper area.

* Add abbreviation for MQTT suggested_area

* Remove extra whitespace

* Remove extra whitespace #2

* Added tests for MQTT Dicovery of suggested_area

* Fix test for MQTT suggested_area

* Better tests of MQTT suggested_area

Changes made as per feedback from @emontnemery
2021-03-15 20:02:02 +01:00
Michael
07c197687f improve debug logging (#47858) 2021-03-15 19:42:13 +01:00
Joakim Sørensen
8b3dccb1b4 Use ClientTimeout for hassio send_command (#47957) 2021-03-15 11:31:34 -07:00
J. Nick Koston
28c80c1133 Ensure recorder purge tests can handle multiple purge cycle (#47956)
Since a purge can generate another purge task, we now wait for
three recorder queue completions by default.
2021-03-15 11:19:19 -07:00
Mick Vleeshouwer
9e05aa2d1f Update state translation strings for water_heater (#46588) 2021-03-15 18:20:10 +01:00
Nathan Tilley
93c38551d3 Implement Wake On Lan Dummy State (#47719)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-15 17:20:47 +01:00
Maciej Bieniek
8239fb76d1 Bump brother library (#47949) 2021-03-15 16:42:28 +01:00
Franck Nijhof
5d5a110a20 None optional hass typing in base entity and notify (#47528) 2021-03-15 15:11:41 +01:00
Martin Hjelmare
b9a26cf539 Add zwave_js dev docs readme (#47621) 2021-03-15 15:08:45 +01:00
David McClosky
37c53e0a04 Sort supported features in vlc_telnet (#46800) 2021-03-15 15:07:36 +01:00
Franck Nijhof
48808dc2ad Upgrade vsure to 1.7.3 (#47946) 2021-03-15 14:43:32 +01:00
Andre Lengwenus
50b7b1cc7a Migrate LCN configuration to ConfigEntry (Part 1) (#44090) 2021-03-15 13:45:13 +01:00
Aidan Timson
fb34d1a56e Clean up Lyric (#47899) 2021-03-15 13:06:57 +01:00
Colin O'Dell
b645dabd66 Upgrade qnapstats library to 0.3.1 (#47907)
Fixes #47674
2021-03-15 12:53:45 +01:00
Bram Kragten
87d62cbbb8 Fix target of WLED services (#47938) 2021-03-15 12:50:19 +01:00
Tobias Sauerwein
6b98583bc1 Add tests for Netatmo climate (#46392)
* Add tests for Netatmo climate

* Add comments and fake webhook events

* Split tests

* Split tests

* Clean up

* Fix coveragerc

* Fix requirements

* Remove freezegun dependency

* Move async_block_till_done to

* Call async_handle_webhook directly

* Use async_handle_webhook directly p2

* Exclude helper.py from

* Remove assertion of implementation details

* Use the webhook integration handler

* Extract function
2021-03-15 12:45:36 +01:00
Khole
cfeb8eb06a Add Hive config flow (#47300)
* Add Hive UI

* Fix tests and review updates

* Slimmed down config_flow

* Fix tests

* Updated Services.yaml with extra ui attributes

* cleanup config flow

* Update config entry

* Remove ATTR_AVAILABLE

* Fix Re-Auth  Test

* Added more tests.

* Update tests
2021-03-15 12:27:10 +01:00
starkillerOG
1aa4fd4cc9 Make Xiaomi Miio unavailable device independent (#47795)
* make unavailable independent

* fix data is None

* process review comments
2021-03-15 12:25:11 +01:00
starkillerOG
b2efcb3c22 Support all Xiaomi Miio gateway switches (#46657)
* Support all gateway switches

* fix checks

* process revieuw

* Update homeassistant/components/xiaomi_miio/switch.py

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

* generilize variable matching

* fix styling

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-15 12:15:34 +01:00
Drzony
99d1e3e71d MQTT Light: Use flash attribute in async_turn_off (#47919) 2021-03-15 11:24:07 +01:00
Paulus Schoutsen
7fe3c472e9 Improve bad JSON data reporting (#47932)
* Improve bad data reporting

* Fix tests

Co-authored-by: Erik <erik@montnemery.com>
2021-03-15 10:41:25 +01:00
Patrick Decat
9ec4c07753 Update openwrt-luci-rpc from 1.1.6 to 1.1.8 (#47848) 2021-03-14 22:57:56 -07:00
Brandon Rothweiler
fbf3225234 Address review comments and minor fix for Mazda integration (#47702)
* Address comments from code review

* Fix handling of missing sensor values

* Use default timeout for get_vehicles

* Fix test_update_auth_failure
2021-03-15 06:57:39 +01:00
Allen Porter
bcadccf7aa Invalidate HLS Stream on nest url refresh failure (#47869)
This will ensure that the HLS stream is re-created and fetches a new url.
2021-03-14 22:49:21 -07:00
unaiur
e91be3f9f5 Upgrade to maxcube-api-0.4.1 (#47910)
This new version implements a workaround for a hardware bug
that causes a factory reset of the full MAX! service.

See https://github.com/hackercowboy/python-maxcube-api/issues/12
for more details.
2021-03-14 22:45:14 -07:00
Maciej Bieniek
be2be4e867 Bump gios library (#47917) 2021-03-14 22:44:13 -07:00
Maciej Bieniek
0be1389cf4 Bump accuweather library (#47915) 2021-03-14 22:44:04 -07:00
J. Nick Koston
8795608ae3 Add suggested area support to august (#47930) 2021-03-14 22:42:49 -07:00
J. Nick Koston
15aa00d6cc Fix homekit checking for port cleanup too many times (#47836)
* Fix homekit checking for port cleanup too many times

The loop should have terminated as soon as the port was available

* coverage

* tweak homekit shutdown wait
2021-03-15 05:14:46 +01:00
J. Nick Koston
61a2460c87 Improve error reporting in recorder purge test (#47929) 2021-03-14 19:46:21 -07:00
Paulus Schoutsen
9dabc988fb Bump frontend to 20210314.0 2021-03-14 23:48:47 +00:00
Daniel Perna
d32c364d7f Update pyhomematic to 0.1.72 (#47906) 2021-03-14 18:52:47 +01:00
jugla
4d61f6f8c2 Reduce number of iqair request (#47890) 2021-03-14 09:04:08 -06:00
Daniel Hjelseth Høyer
fea944bcea Upgrade Tibber library to 0.16.2 (#47892) 2021-03-14 13:44:07 +01:00
starkillerOG
50b5fc4860 Add Xiaomi Miio subdevice lightbulb support (#46660)
* Xiaomi Miio: add subdevice lightbulb support

* fix tests

* process revieuw comments

* bump python-miio to 0.5.5

* bump python-miio to 0.5.5

* fix imports
2021-03-14 12:32:19 +01:00
Franck Nijhof
60838cf7ed Verisure: Remove JSONPath, unique IDs, small cleanups (#47870)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-14 10:38:09 +01:00
Aidan Timson
984f02882b Add HVAC action to Lyric climate platform (#47876) 2021-03-13 22:05:47 -10:00
Aidan Timson
47114c5f4f Update service config for lyric (#47857) 2021-03-13 22:04:49 -10:00
Martin Hjelmare
c53a462b3d Fix zwave_js preset mode lookup (#47851) 2021-03-13 22:27:05 +01:00
Alexei Chetroi
7d8eb49d88 Bump up ZHA dependency (#47873) 2021-03-13 16:06:07 -05:00
Pierre Ståhl
518c86a0ab Add device_info to Apple TV entities (#47837) 2021-03-13 10:39:04 -10:00
Aidan Timson
263023a152 Update aiolyric to v1.0.6 (#47871) 2021-03-13 10:32:38 -10:00
tdorsey
eddb97b6fd Fix spelling of automatically in roomba/lutron_caseta components (#47856) 2021-03-13 10:26:48 -10:00
Raman Gupta
c7b9a0715d Fix zwave_js preset supported feature (#47819) 2021-03-13 12:43:03 +01:00
Allen Porter
02a82d3f00 Add timeouts in stream tests to prevent possible hangs (#47545)
* Add timeouts on recving packets

Add a timeout when recving packets from the worker thread in case it hangs.
Add an exit condition just in case the while loop goes on forever.

* Add a timeout to recorder thread join.

* Wait for recorder thread to be invoked in tests

Remove the while loop and instead wait for segments to be produced by the background worker thread.

* Allow worker to resume before stopping to fix timeouts

* Lower test timeout further

* Remove test_stream_ended since it is flaky

This test doesn't really add additional value on top of other tests.
2021-03-13 01:53:26 -08:00
Raj Laud
30f99177c7 Fix missing integer cast in squeezebox config flow (#47846) 2021-03-13 08:34:20 +01:00
Paulus Schoutsen
eccdf85b29 Bump frontend to 20210313.0 (#47844) 2021-03-12 21:21:24 -08:00
David F. Mulcahey
547fd7d352 fix exception on device removal (#47803) 2021-03-12 21:06:37 -05:00
Erik Montnemery
2178e27fb4 Fix unclean shutdown of recorder test (#47791) 2021-03-12 14:17:27 -08:00
Paulus Schoutsen
6ed01463c3 Merge pull request #47835 from home-assistant/rc 2021-03-12 14:00:52 -08:00
Paulus Schoutsen
a024343a15 Bumped version to 2021.3.4 2021-03-12 21:01:15 +00:00
Tobias Sauerwein
926b0d8491 Fix Netatmo event handling (#47792) 2021-03-12 21:01:06 +00:00
J. Nick Koston
108d9eab1a Ensure homekit reset accessory service can target any entity (#47787) 2021-03-12 21:01:02 +00:00
jjlawren
72ef88693a Bump plexapi to 4.4.1 (#47766) 2021-03-12 21:00:59 +00:00
J. Nick Koston
81336809e8 Adjust insteon fan speed range to valid upper bound (#47765) 2021-03-12 21:00:55 +00:00
Chris
726eb69b40 Fix zwave_js target_temp_low (#47762) 2021-03-12 21:00:53 +00:00
mtl010957
544844d865 Cover Tilt Position Bugfix (#47682)
* Report tilt position properly when inverting using tilt_max < tilt_min

* Add warning per review comment

* Add test for inverted tilt position configuration

* Separate non-numeric and out of range warnings per review comment

* Fix out of range message and add tests for not numeric and out of range messages
2021-03-12 21:00:50 +00:00
Aaron Bach
ed37c31630 Write SimpliSafe alarm control panel state after arming/disarming (#47649)
* Write SimpliSafe alarm control panel state after arming/disarming

* Include locks
2021-03-12 21:00:49 +00:00
Tobias Sauerwein
07aeb8d160 Fix Netatmo event handling (#47792) 2021-03-12 12:57:02 -08:00
Hans Kröner
362e7226e9 Additional sensors for OpenWeatherMap (#47806) 2021-03-12 12:55:13 -08:00
Klaas Schoute
7826f6e3f8 Update cloud integration to 0.42.0 (#47818) 2021-03-12 12:52:43 -08:00
Robert Svensson
786cbcc1d6 Introduction of deCONZ websocket fixture (#47812) 2021-03-12 12:03:29 -08:00
Robert Svensson
6b03c8d126 Improve deCONZ init tests (#47825)
Use patch.dict rather than deep copy to change DECONZ_WEB_REQUEST
2021-03-12 12:02:15 -08:00
Robert Svensson
597bf67f5a UniFi has changed to not report uptime in epoch form (#47492) 2021-03-12 11:55:11 -08:00
Mick Vleeshouwer
9a98dcf432 Add HomeKit support for new CO / CO2 device class (#47737) 2021-03-12 09:03:47 -10:00
Charles Garwood
13cd2f52d8 Return property_key in zwave_js get_config_parameters websocket (#47808) 2021-03-12 13:49:59 -05:00
Erik Montnemery
3115bf9aab Add temperature sensor for gogogate2 wireless door sensor (#47754)
* Add temperature sensor for gogogate2 wireless door sensor

* Chain sensor generators
2021-03-12 19:04:56 +01:00
Michael
72cb1f5480 Add ambient sensors to nut integration (#47411) 2021-03-12 07:19:55 -10:00
Paulus Schoutsen
04b335afe9 Allow filtering the logbook by context_id (#47783) 2021-03-12 09:04:02 -08:00
Pierre Ståhl
bf5028df2b Bump pyatv to 0.7.7 (#47798)
* Bump pyatv to 0.7.7

* Change to assume name always exist in config entry
2021-03-12 16:19:14 +01:00
Erik Montnemery
514516bacc Remove unused COVER_SCHEMA from gogogate2 cover (#47170) 2021-03-12 13:52:46 +01:00
J. Nick Koston
40c28aa38a Ensure homekit reset accessory service can target any entity (#47787) 2021-03-12 11:41:01 +01:00
Guido Schmitz
6610e821bc Bump devolo_home_control_api to 0.17.0 (#47790) 2021-03-12 11:37:39 +01:00
Paulus Schoutsen
ff94e920e4 Do not use AsyncTrackStates (#47255) 2021-03-11 23:18:09 -08:00
Paulus Schoutsen
2a22c54fcb Store the correct context in the trace (#47785) 2021-03-12 08:12:26 +01:00
MatsNl
fa0c544bf5 Improve Atag integration and bump version to 0.3.5.3 (#47778)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-11 22:15:45 -08:00
J. Nick Koston
f4b775b125 Cleanup homekit and remove aid storage from hass.data (#47488) 2021-03-11 22:05:03 -08:00
J. Nick Koston
33c4eb3434 Log the full exception when the recorder fails to setup (#47770) 2021-03-11 21:52:04 -08:00
James Nimmo
7f60edd7e7 Bump pyIntesisHome to v1.7.6 (#47500) 2021-03-11 21:39:44 -08:00
J. Nick Koston
e2f0b18427 Adjust insteon fan speed range to valid upper bound (#47765) 2021-03-11 21:35:24 -08:00
Felipe Martins Diel
9ca0cd5464 Bump broadlink from 0.16.0 to 0.17.0 (#47779) 2021-03-11 21:34:56 -08:00
Marc Mueller
92852b9c10 Add apply_filter attribute to recorder.purge service (#45826) 2021-03-11 17:03:30 -10:00
Franck Nijhof
66605b5994 Upgrade adguardhome to v0.5.0 (#47774) 2021-03-12 00:37:34 +01:00
jjlawren
daab9f9810 Bump plexapi to 4.4.1 (#47766) 2021-03-12 00:35:11 +01:00
Chris
7ca5e969cc Fix zwave_js target_temp_low (#47762) 2021-03-12 00:28:38 +01:00
Henning Claßen
3ebc262b7f Upgrade numato-gpio to 0.10.0 (#47539)
This adds support for devices sending '\n\r' end-of-line sequences.
2021-03-11 22:54:27 +01:00
Philip Allgaier
4bafd03dff Consistent spelling of "PIN" (#47771) 2021-03-11 16:18:16 -05:00
Erik Montnemery
14ff6d4d1f Update integrations p-s to override extra_state_attributes() (#47759) 2021-03-11 21:23:20 +01:00
Erik Montnemery
1fc8e32d86 Update integrations t-z to override extra_state_attributes() (#47760) 2021-03-11 20:16:26 +01:00
Erik Montnemery
14a59d290a Update integrations j-o to override extra_state_attributes() (#47758) 2021-03-11 20:11:25 +01:00
Franck Nijhof
1095905f8c Add DataUpdateCoordinator to Verisure (#47574) 2021-03-11 19:41:01 +01:00
Marc Mueller
10848b9bdf Recorder improvements (#47739) 2021-03-11 07:52:07 -10:00
Erik Montnemery
af4d06b12e Update integrations f-i to override extra_state_attributes() (#47757) 2021-03-11 16:57:47 +01:00
Erik Montnemery
6c084ae6ce Update integrations a-e to override extra_state_attributes() (#47756) 2021-03-11 16:51:03 +01:00
Aaron Bach
f92b75cbb2 Write SimpliSafe alarm control panel state after arming/disarming (#47649)
* Write SimpliSafe alarm control panel state after arming/disarming

* Include locks
2021-03-11 15:22:35 +01:00
starkillerOG
cf4954fead Add Xiaomi Miio light config flow (#47161)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-11 14:09:21 +01:00
mtl010957
b162c45e0a Cover Tilt Position Bugfix (#47682)
* Report tilt position properly when inverting using tilt_max < tilt_min

* Add warning per review comment

* Add test for inverted tilt position configuration

* Separate non-numeric and out of range warnings per review comment

* Fix out of range message and add tests for not numeric and out of range messages
2021-03-11 13:49:10 +01:00
Kristian Heljas
9e487eb260 Hoist mqtt name property and add icon support to MqttEntity (#47165)
* hoist common MqttEntity properties

* remove default name for MqttEntity

Default naming is sensible enough

* disable overriding common MqttEntity schema

* merge common MqttEntity schemas into MQTT_ENTITY_COMMON_SCHEMA
2021-03-11 13:42:13 +01:00
starkillerOG
724574d336 Add Xiaomi Miio sensor config flow (#46964)
* add config flow

* fix styling

* Add air_quality platform

* fix imports

* fix black

* Update homeassistant/components/xiaomi_miio/sensor.py

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

* Update homeassistant/components/xiaomi_miio/air_quality.py

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

* process revieuw feedback

* remove unused import

* fix formatting

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-11 11:48:48 +01:00
Erik Montnemery
b9c2f80cab Fix light brightness_step on multiple entities (#47746)
* Fix light brightness_step on multiple entities

* Fix comment

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-11 11:46:32 +01:00
Philip Allgaier
7e615cb7fd Fixed string typos in Lutron and Roomba (#47745) 2021-03-11 10:16:52 +01:00
J. Nick Koston
9a686d148e Ensure startup can proceed when there is package metadata cruft (#47706)
If a package fails to install or partially installed importlib
version can return None. We now try pkg_resources first, then
try importlib, and handle the case where version unexpectedly
returns None
2021-03-10 21:12:02 -10:00
Paulus Schoutsen
00bd591238 Verify get_zones webhook works (#47741) 2021-03-11 01:08:12 +01:00
Erik Montnemery
a9a9e1f199 Tweak automation tracing (#47721) 2021-03-10 14:42:13 -08:00
hung2kgithub
15da1c4785 Add missing clear-night weather condition (#47666) 2021-03-10 10:48:06 -10:00
Matthias Alphart
54a9b69ecb Update xknx to 0.17.2 (#47732) 2021-03-10 10:32:22 -10:00
Álvaro Fernández Rojas
ff09643b33 Add Tado weather support (#44807) 2021-03-10 10:31:37 -10:00
Franck Nijhof
10535018cc Improve HomeKit discovered Hue config flow (#47729) 2021-03-10 11:20:51 -08:00
Paulus Schoutsen
3ad4c26f98 Allow SSDP discovery modern Hue hubs (#47725) 2021-03-10 19:21:51 +01:00
Mike Keesey
78c974d527 Refactor Harmony tests to better follow Home Assistant conventions (#47141) 2021-03-10 08:19:04 -10:00
CurrentThread
7c8851264f Use LONGTEXT column instead of TEXT for MySQL/MariaDB and migrate existing databases (#47026) 2021-03-10 08:12:58 -10:00
David Bonnes
2103335323 Bump incomfort client to 0.4.4 (#47718)
* bump incomfort client

* bump client to 0.4.4

* restore launch.json
2021-03-10 18:58:37 +01:00
David Bonnes
d53f1e98ac bump client library (#47722) 2021-03-10 18:58:04 +01:00
Mick Vleeshouwer
461e766a93 Add device class CO2 to various integrations (#47676)
* Add device class CO2 to Fibaro

* Add device class CO2 to Awair

* Add device class CO2 to Tasmota

* Add device class CO2 to Netatmo

* Add device class CO2 to Ambient Station

* Update Tasmota tests

* Remove icon
2021-03-10 12:52:55 +01:00
Álvaro Fernández Rojas
5bc0e9a50f Fix aemet temperatures with a value of 0 (#47680)
* aemet: catch TypeError exceptions

format_float() and format_int() should also catch possible TypeError
exceptions.

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

* aemet: correctly parse temperatures with a value of 0

Right now, when a temperature with a value of 0 is provided by the API, the if
condition isn't satisfied, return None instead of 0.

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

* aemet: group format int/float exceptions

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-03-10 10:25:04 +01:00
dependabot[bot]
5c70dd8ab4 Bump codecov/codecov-action from v1.2.1 to v1.2.2 (#47707)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.2.1 to v1.2.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.2.1...1f8f3abcccf7960749744fd13547965f0e7d1bdd)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-10 09:40:03 +01:00
Paulus Schoutsen
a50e9812cb Fix automations with traces. (#47705) 2021-03-09 22:40:17 -08:00
Erik Montnemery
704000c049 Add support for breakpoints in scripts (#47632) 2021-03-09 21:23:11 -08:00
Sam Steele
bf64421be9 Use the local timezone when parsing Todoist due dates (#45994) 2021-03-09 20:52:32 -08:00
Franck Nijhof
62e49e545b Add confirm only for Elgato (#47684) 2021-03-10 01:53:00 +01:00
Matt Zimmerman
7840db0598 Restore switch.turn_on and switch.turn_off functionality for SmartTub pumps (#47586)
Revert "Remove turn_on and turn_off from SmartTub pump switches (#47184)"

This reverts commit bab66a5cb9.
2021-03-10 01:26:54 +01:00
J. Nick Koston
a060acc2b1 Fix recorder with MSSQL (#46678)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2021-03-09 11:16:19 -10:00
Paulus Schoutsen
46e593485e Handle zeroconf updated events (#47683) 2021-03-09 10:14:00 -10:00
Paulus Schoutsen
ed679b263b Improve logging elgato (#47681) 2021-03-09 19:52:53 +01:00
Erik Montnemery
fd1add8f15 Rename AutomationTrace.runid to AutomationTrace.run_id (#47669) 2021-03-09 15:49:41 +01:00
Marc Mueller
0c61cb555c Add TYPE_CHECKING to coverage excludes (#47668) 2021-03-09 14:57:44 +01:00
Erik Montnemery
84226da404 Update tests i-o to use async_get() instead of async_get_registry() (#47653) 2021-03-09 14:32:08 +01:00
Erik Montnemery
87e7cebd36 Update tests c-h to use registry async_get (#47652) 2021-03-09 14:31:17 +01:00
Erik Montnemery
ba2978c693 Update tests p-s to use async_get() instead of async_get_registry() (#47654) 2021-03-09 14:28:32 +01:00
Erik Montnemery
b3fecb1c95 Update tests t-z to use async_get() instead of async_get_registry() (#47655) 2021-03-09 14:25:03 +01:00
Erik Montnemery
78b21b1ad1 Update tests a-b to use async_get() instead of async_get_registry() (#47651) 2021-03-09 14:24:34 +01:00
Erik Montnemery
3a054c3be7 Replace Entity.device_state_attributes with Entity.extra_state_attributes (#47304) 2021-03-09 13:58:43 +01:00
Shay Levy
19f67335ec Revert Shelly temperature sensor name change (#47664) 2021-03-09 13:45:58 +01:00
Paulus Schoutsen
34b9e6f6fc Shelly: set confirm only (#47608) 2021-03-09 13:13:43 +01:00
Paulus Schoutsen
a8844ff24a Merge pull request #47645 from home-assistant/rc 2021-03-08 17:40:16 -08:00
Michael
8e58c3aa7b Add error message to options flow if connection fails for nut integration (#46972) 2021-03-08 14:12:52 -10:00
J. Nick Koston
5d7b53603f Harmony: set confirm only (#47617) 2021-03-08 15:44:55 -08:00
Paulus Schoutsen
b80c2d426c Bumped version to 2021.3.3 2021-03-08 23:23:04 +00:00
Raman Gupta
b352c5840f Update zwave_js supported features list to be static (#47623) 2021-03-08 23:22:47 +00:00
Shay Levy
9f6007b4e2 Fix Shelly logbook exception when missing COAP (#47620) 2021-03-08 23:22:47 +00:00
J. Nick Koston
58573dc74d Fix turning off scene in homekit (#47604) 2021-03-08 23:22:46 +00:00
J. Nick Koston
a51ad137a1 Fix insteon fan speeds (#47603) 2021-03-08 23:22:45 +00:00
J. Nick Koston
9601cb7445 Ensure template fan value_template always determines on state (#47598) 2021-03-08 23:22:44 +00:00
J. Nick Koston
96b266b2e8 Fix turn on without speed in homekit controller (#47597) 2021-03-08 23:22:44 +00:00
Bram Kragten
3c1aac1034 Update frontend to 20210302.6 (#47592) 2021-03-08 23:22:43 +00:00
J. Nick Koston
0f115f6937 Ensure bond devices recover when wifi disconnects and reconnects (#47591) 2021-03-08 23:22:42 +00:00
Raman Gupta
f1fc6c4b25 Add fallback zwave_js entity name using node ID (#47582)
* add fallback zwave_js entity name using node ID

* add new fixture and test for name that was failing
2021-03-08 23:22:12 +00:00
Tony Roman
37f486941a Allow running and restarting with both ozw and zwave active (#47566)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-08 23:21:14 +00:00
Diogo Gomes
69f63129aa Correct weather entities forecast time (#47565) 2021-03-08 23:21:14 +00:00
Martin Hjelmare
56efae3cb5 Fix mysensors unload clean up (#47541) 2021-03-08 23:21:13 +00:00
Martin Hjelmare
a2e00324a8 Fix mysensors device tracker (#47536) 2021-03-08 23:21:12 +00:00
Martin Hjelmare
e63f766c20 Bump pymysensors to 0.21.0 (#47530) 2021-03-08 23:21:11 +00:00
ollo69
e7717694a3 Fix AsusWRT wrong api call (#47522) 2021-03-08 23:21:11 +00:00
Martin Hjelmare
ba2b62305b Fix mysensors notify platform (#47517) 2021-03-08 23:21:10 +00:00
Anders Melchiorsen
b25f846136 Fix Sonos polling mode (#47498) 2021-03-08 23:21:09 +00:00
J. Nick Koston
c1a5a18b53 Bump HAP-python to 3.4.0 (#47476)
* Bump HAP-python to 3.3.3

* bump

* fix mocking
2021-03-08 23:21:09 +00:00
Nathan Spencer
3b05a12e62 Adjust litterrobot tests and code to match guidelines (#47060)
* Use SwitchEntity instead of ToggleEntity and adjust test patches as recommended

* Move async_create_entry out of try block in config_flow

* Patch pypi package instead of HA code

* Bump pylitterbot to 2021.2.6, fix tests, and implement other code review suggestions

* Bump pylitterbot to 2021.2.8, remove sleep mode start/end time from vacuum, adjust and add sensors for sleep mode start/end time

* Move icon helper back to Litter-Robot component and isoformat times on time sensors
2021-03-08 23:21:08 +00:00
J. Nick Koston
1dd35ff059 Catch dhcp setup permission errors sooner (#47639)
This solves an unexpected thread exception on macs when running as
a user intead of root
2021-03-08 15:15:22 -08:00
unaiur
10eca5b986 Fix maxcube thermostat transition from off to heat mode (#47643)
Transition from HVAC_MODE_OFF to HVAC_MODE_HEAT are not executed because
target temperature is kept at OFF_TEMPERATURE, turning it into a no-op.

This change ensures that we increase the target temperature to at least
the minimum temperature when transitioning to HVAC_MODE_HEAT mode.
2021-03-08 15:14:24 -08:00
Raman Gupta
797ee81fc9 Update zwave_js supported features list to be static (#47623) 2021-03-08 15:11:54 -08:00
J. Nick Koston
d9ffb65898 Fix insteon fan speeds (#47603) 2021-03-08 14:20:21 -08:00
J. Nick Koston
6af754a7d3 Fix turning off scene in homekit (#47604) 2021-03-08 14:19:05 -08:00
Franck Nijhof
efe415f225 Upgrade aiohttp to 3.7.4.post0 (#47627) 2021-03-08 23:18:55 +01:00
Franck Nijhof
fbf8b68488 Upgrade sentry-sdk to 1.0.0 (#47626) 2021-03-08 23:13:18 +01:00
Diogo Gomes
ee25723468 Add option to reverse switch behaviour in KMTronic (#47532) 2021-03-08 22:56:24 +01:00
Oliver
520c4a8ee3 Update attrs to 20.3.0 (#47642) 2021-03-08 11:49:54 -10:00
Erik Montnemery
ea4f3e31d5 Include changed variables in automation trace (#47549)
* Include changed variables in automation trace

* Deduplicate some code

* Tweak

* Apply suggestions from code review

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

* Fix format

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-08 22:48:36 +01:00
Philip Allgaier
665e2c3473 Ensure bond light follows proper typing (#47641) 2021-03-08 21:53:44 +01:00
Shay Levy
215ab5fd40 Add type hints to LightEntity (#47024) 2021-03-08 21:21:45 +01:00
Erik Montnemery
a243adc551 Add WS command to get a summary of automation traces (#47557)
* Add WS command to get a summary of automation traces

* Update tests

* Correct rebase mistake, update tests
2021-03-08 20:30:52 +01:00
uvjustin
d9bf63103f Fix I-frame interval in stream test video (#47638) 2021-03-08 11:23:57 -08:00
Paulus Schoutsen
67effbc8c4 Config flow to allow marking itself as confirm only (#47607) 2021-03-08 10:54:51 -08:00
J. Nick Koston
573c40cb11 Ensure bond devices recover when wifi disconnects and reconnects (#47591) 2021-03-08 10:44:28 -08:00
J. Nick Koston
b315fcab11 Fix turn on without speed in homekit controller (#47597) 2021-03-08 10:43:22 -08:00
ollo69
32476a3fed Fix AsusWRT wrong api call (#47522) 2021-03-08 10:34:12 -08:00
Tony Roman
f9e33a4a0d Allow running and restarting with both ozw and zwave active (#47566)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-08 10:26:08 -08:00
J. Nick Koston
65776ef980 Remove self as code owner for mylink (#46242)
Sadly these devices turn out to be so unreliable that I
gave up on them and replaced them with bond (bondhome.io)
devices which have been rock solid
2021-03-08 07:40:39 -10:00
J. Nick Koston
9d14ff8105 Add suggested_area support to Apple TV (#47015) 2021-03-08 07:39:57 -10:00
Czapla
8018097c54 Add title key to allow mobile app title translation to other languages (#46593) 2021-03-08 18:37:37 +01:00
J. Nick Koston
53952b9662 Ensure template fan value_template always determines on state (#47598) 2021-03-08 18:34:34 +01:00
Erik Montnemery
8fe51b8ea7 Store automation traces indexed by run_id (#47509)
* Store traces indexed by run_id

* Format

* Add test

* Add test

* Clarify comment
2021-03-08 18:04:41 +01:00
B-Hartley
ee2658f9e6 Add (some) of ZCL concentration clusters to ZHA component (#47590)
* Update registries.py

Add concentration clusters recently added to zigpy

* Update measurement.py

Add concentration clusters recently added to ZigPy

* Update sensor.py

Add concentration clusters recently added to ZigPy

* Update sensor.py

remove unnecessary tabs

* Update measurement.py

remove unnecessary tabs

* Update sensor.py

Just adding CO and CO2 for now.

* Update registries.py

Just adding CO2 and CO for now.

* Update measurement.py

Just adding CO2 and CO for now

* Update sensor.py

import const CONCENTRATION_PARTS_PER_MILLION

* Update registries.py

removed trailing whitespace

* Update sensor.py

added extra blank lines and removed trailing whitespace

* Update measurement.py

added extra blank lines and removed trailing whitespace

* Update sensor.py

add device classes for CO and CO2
2021-03-08 11:22:13 -05:00
Shay Levy
24db0ff956 Fix Shelly logbook exception when missing COAP (#47620) 2021-03-08 15:59:54 +01:00
Franck Nijhof
197687399d Upgrade pillow to 8.1.2 (#47619) 2021-03-08 14:26:52 +01:00
Matt Zimmerman
9774ada4aa Code cleanup for SmartTub integration (#47584) 2021-03-08 14:05:39 +01:00
Evgeny
cf507b51cb Add feels like temperature sensor to OpenWeatherMap (#47559) 2021-03-08 13:51:26 +01:00
Alexei Chetroi
f3c71a69f0 Allow 10mV precision for ZHA battery sensor entities (#47520) 2021-03-08 07:37:33 -05:00
Adam Ernst
ad86eb4be3 Add support for Flo "pucks" (#47074)
So far the Flo integration only supports shutoff valves. Add support for Flo leak detector pucks, which measure temperature and humidity in addition to providing leak alerts.
2021-03-08 07:36:03 -05:00
Franck Nijhof
d37fb7d88d Upgrade pre-commit to 2.11.0 (#47618) 2021-03-08 13:03:39 +01:00
Franck Nijhof
457db1d0c3 Upgrade elgato to 2.0.1 (#47616) 2021-03-08 12:57:27 +01:00
Chris Talkington
597d8eaa4c Update rokuecp to 0.8.1 (#47589) 2021-03-08 12:15:08 +01:00
dependabot[bot]
629700c97c Bump actions/stale from v3.0.17 to v3.0.18 (#47612)
Bumps [actions/stale](https://github.com/actions/stale) from v3.0.17 to v3.0.18.
- [Release notes](https://github.com/actions/stale/releases)
- [Commits](https://github.com/actions/stale/compare/v3.0.17...3b3c3f03cd4d8e2b61e179ef744a0d20efbe90b4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-08 10:37:42 +01:00
Raman Gupta
1d387e12cc Add fallback zwave_js entity name using node ID (#47582)
* add fallback zwave_js entity name using node ID

* add new fixture and test for name that was failing
2021-03-08 09:08:17 +01:00
Bram Kragten
683425876f Update frontend to 20210302.6 (#47592) 2021-03-07 21:45:15 -08:00
Alex
a066f84828 Remove @newAM from hdmi_cec codeowners (#47542) 2021-03-07 12:49:13 -05:00
Austin Mroczek
7050c71524 Round miles in myChevy sensors (#46879) 2021-03-07 07:46:14 -10:00
Diogo Gomes
d3bd2378ba Correct weather entities forecast time (#47565) 2021-03-07 16:07:02 +01:00
Martin Hjelmare
d85d1a65a7 Fix mysensors unload clean up (#47541) 2021-03-07 14:20:21 +01:00
tkdrob
13d4d7039e Clean up kmtronic (#47537) 2021-03-07 14:15:43 +01:00
tkdrob
07fd1b3b43 Clean up Lutron Caseta (#47534) 2021-03-07 14:14:15 +01:00
Jan-Philipp Litza
4018d0a152 Correctly close lacrosse on homeassistant stop (#47555)
Since lacrosse.close() takes no arguments, but was directly added as a
listener to EVENT_HOMEASSISTANT_STOP, the following occured on shutdown:

Traceback (most recent call last):
  File "/usr/lib/python/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
TypeError: close() takes 1 positional argument but 2 were given
2021-03-07 13:53:48 +01:00
Robert Svensson
48f1a55a28 Improve common structure in UniFi device tracker tests (#47526) 2021-03-07 13:20:04 +01:00
Anders Melchiorsen
c8c394ef91 Increase ESPHome log level on first connection failure (#47547) 2021-03-07 11:36:28 +01:00
J. Nick Koston
0d07dae3bc Change default homekit ports to 21063 and 21064 (#47491)
We previously used a value in the linux default ephemerial port range
which meant that if something else happened to use that port HomeKit
would not start up.  We now use a value below 32768 to ensure that
the port is not randomly unavailable
2021-03-06 21:41:56 -10:00
J. Nick Koston
2e89f152ba Bump HAP-python to 3.4.0 (#47476)
* Bump HAP-python to 3.3.3

* bump

* fix mocking
2021-03-07 01:30:57 +01:00
Alexei Chetroi
79b5ca9415 Add device classes for CO and CO2 measurements (#47487) 2021-03-07 00:52:43 +01:00
N1c093
9101ed2732 Add precipitation probability forecast to owm (#47284)
* Add precipitation probability forecast to owm

* Update weather_update_coordinator.py

Reformat the code based on black
2021-03-07 00:48:22 +01:00
Martin Hjelmare
f542b360d5 Fix mysensors device tracker (#47536) 2021-03-06 23:41:43 +01:00
Franck Nijhof
b01a6367cc Complete typing on AdGuard Home integration (#47477) 2021-03-06 23:19:03 +01:00
Martin Hjelmare
d944bbbc52 Bump pymysensors to 0.21.0 (#47530) 2021-03-06 23:06:50 +01:00
Martin Hjelmare
1600207f5c Fix mysensors notify platform (#47517) 2021-03-06 18:33:55 +01:00
Nathan Spencer
e9052233a6 Adjust litterrobot tests and code to match guidelines (#47060)
* Use SwitchEntity instead of ToggleEntity and adjust test patches as recommended

* Move async_create_entry out of try block in config_flow

* Patch pypi package instead of HA code

* Bump pylitterbot to 2021.2.6, fix tests, and implement other code review suggestions

* Bump pylitterbot to 2021.2.8, remove sleep mode start/end time from vacuum, adjust and add sensors for sleep mode start/end time

* Move icon helper back to Litter-Robot component and isoformat times on time sensors
2021-03-06 17:28:33 +01:00
uvjustin
14f85d8731 Disable audio stream when ADTS AAC detected (#47441)
* Disable audio stream when ADTS AAC detected

* Use context manager for memoryview

* Fix tests

* Add test

* Fix tests

* Change FakePacket bytearray size to 3
2021-03-06 16:40:49 +01:00
Erik Montnemery
2f9d03d115 Merge action and condition traces (#47373)
* Merge action and condition traces

* Update __init__.py

* Add typing to AutomationTrace

* Make trace_get prepare a new trace by default

* Correct typing of trace_cv

* Fix tests
2021-03-06 12:57:21 +01:00
Ville Skyttä
022184176a Upgrade upcloud-api to 1.0.1 (#47501)
https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/0.4.6
https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/v1.0.0
https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/v1.0.1
2021-03-06 12:36:20 +01:00
FidgetyRat
4cade4b736 Add OPENING & CLOSING state to MySensors cover (#47285)
* Added OPENING & CLOSING State Support

Added support for OPENING and CLOSING states using a combination of
the required V_ variables. Simplified the determination of the
cover's state by use of a new enumeration and single method allowing
the state to be used by all three HomeAssistant query methods.

* Fixes for HomeAssistant Style

Corrections to style to allow flake8, isort, and black to pass.

* Peer Review Changes

Added @unique to the main enumeration. Removed unnecessary parens from
door state logic. Reordered CLOSING and CLOSED in the enumeration.
2021-03-06 10:26:04 +01:00
Anders Melchiorsen
c7718f2b3b Fix Sonos polling mode (#47498) 2021-03-06 10:21:00 +01:00
Paulus Schoutsen
1145c30c4b Merge pull request #47490 from home-assistant/rc 2021-03-05 16:22:59 -08:00
Paulus Schoutsen
939da2403f Bumped version to 2021.3.2 2021-03-05 23:38:27 +00:00
Franck Nijhof
10dae253e5 Complete typing on Verisure integration (#47482) 2021-03-05 15:37:56 -08:00
Phil Bruckner
ef79d24a8c Bump amcrest package version to 1.7.1 (#47483) 2021-03-05 23:37:55 +00:00
Raman Gupta
55c1b67de4 Update zwave_js.refresh_value service description (#47469) 2021-03-05 23:37:54 +00:00
Paulus Schoutsen
90e0801c1b Raise error instead of crashing when template passed to call service target (#47467) 2021-03-05 23:37:54 +00:00
Raman Gupta
65859b4107 Bump zwave-js-server-python to 0.21.1 (#47464) 2021-03-05 23:37:52 +00:00
functionpointer
6c45a7d533 Use conn_made callback in MySensors (#47463) 2021-03-05 23:37:52 +00:00
Bram Kragten
ddc6cd6da1 Update frontend to 20210302.5 (#47462) 2021-03-05 23:37:51 +00:00
Joakim Plate
a4369fc352 Bump version with fix for v1 (#47458) 2021-03-05 23:37:50 +00:00
Franck Nijhof
d11da43551 Fix Hue scene overriding Hue default transition times (#47454) 2021-03-05 23:37:49 +00:00
Tobias Sauerwein
f99ef25f88 Fix issue at Netatmo startup (#47452) 2021-03-05 23:37:49 +00:00
mvn23
9fa0de8600 Update pyotgw to 1.1b1 (#47446) 2021-03-05 23:37:48 +00:00
Paulus Schoutsen
4c181bbfe5 Raise error instead of crashing when template passed to call service target (#47467) 2021-03-05 15:34:18 -08:00
Franck Nijhof
8f31b09b55 Complete typing on TwenteMilieu integration (#47480) 2021-03-05 15:33:26 -08:00
Phil Bruckner
2472dad1fa Bump amcrest package version to 1.7.1 (#47483) 2021-03-05 15:05:36 -08:00
ollo69
292f4262aa Move AsusWrt sensors update logic in router module (#46606) 2021-03-05 23:40:04 +01:00
Alexei Chetroi
a12b98e30e Update ZHA dependencies (#47479) 2021-03-05 17:01:54 -05:00
Robert Svensson
50d3aae418 Improve restoring UniFi POE entity state (#47148)
* Improve restoring data and better handling when the restore data is empty
Improve readability of some logic related to POE clients

* There is no need to check clients_all in Switch platform

* Add better tests when restoring state

* Port except handling shouldn't be needed anymore

* Walrusify get_last_state
2021-03-05 22:09:05 +01:00
Franck Nijhof
02e723f206 Typing tweak to the Elgato integration (#47471) 2021-03-05 21:48:02 +01:00
Tobias Sauerwein
b3c33fc1be Fix issue at Netatmo startup (#47452) 2021-03-05 21:41:55 +01:00
Robert Svensson
793929f2ea Increase test coverage of UniFi integration (#46347)
* Increase coverage of init

* Increase coverage of config_flow

* Improve coverage of controller

* Minor improvement to switch test

* Fix review comment

* Mock websocket class

* Replace the rest of the old websocket event tests

* Improve websocket fixture for cleaner tests

* Fix typing

* Improve connection state signalling based on Martins feedback

* Improve tests of reconnection_mechanisms based on Martins review comments

* Fix unload entry

* Fix isort issue after rebase

* Fix martins comment on not using caplog

* Fix wireless clients test

* Fix martins comments on wireless clients test
2021-03-05 21:28:41 +01:00
Emily Mills
7c08592b5a Convert kulersky to use new async backend (#47403) 2021-03-05 14:24:55 -06:00
Raman Gupta
6debf52e9b Update zwave_js.refresh_value service description (#47469) 2021-03-05 20:57:06 +01:00
Franck Nijhof
61be29117d Deprecate HomeKit auto start (#47470) 2021-03-05 11:51:49 -08:00
mvn23
ab0a5bccab Update pyotgw to 1.1b1 (#47446) 2021-03-05 20:22:40 +01:00
functionpointer
a2ee7d598b Use conn_made callback in MySensors (#47463) 2021-03-05 20:21:24 +01:00
Emily Mills
a547d0fea2 Prevent Zerproc leaving open unnecessary connections (#47401)
* Zerproc: Prevent leaving open unnecessary connections

* Fix config entry unloading
2021-03-05 13:14:03 -06:00
tkdrob
3baeed3684 Clean up constants (#47323) 2021-03-05 19:08:04 +01:00
Franck Nijhof
cc99fd5e32 Fix Hue scene overriding Hue default transition times (#47454) 2021-03-05 09:43:26 -08:00
Joakim Plate
f2a2dbb561 Bump version with fix for v1 (#47458) 2021-03-05 09:42:20 -08:00
Bram Kragten
a6c5e79de2 Update frontend to 20210302.5 (#47462) 2021-03-05 09:42:08 -08:00
Raman Gupta
cad5e67588 Bump zwave-js-server-python to 0.21.1 (#47464) 2021-03-05 09:41:36 -08:00
Anders Melchiorsen
79ebe930e3 Limit log spam by ESPHome (#47456) 2021-03-05 16:16:07 +01:00
uvjustin
864380e77c Add allenporter to stream codeowners (#47431) 2021-03-05 15:51:07 +01:00
Paul Dee
6a4b755faf Spellcheck on Synology component (#47451) 2021-03-05 15:36:07 +01:00
Paulus Schoutsen
91ac4554a2 Merge pull request #47422 from home-assistant/rc 2021-03-04 17:17:29 -08:00
Martin Hjelmare
d9542c2efe Only create snapshot if add-on update will be done (#47424) 2021-03-05 00:38:53 +00:00
Martin Hjelmare
0350a6ed21 Only create snapshot if add-on update will be done (#47424) 2021-03-04 16:38:33 -08:00
Paulus Schoutsen
915ee2f4ee Bumped version to 2021.3.1 2021-03-05 00:22:31 +00:00
Franck Nijhof
ff86f64806 Fix older Roborock models (#47412) 2021-03-05 00:21:55 +00:00
Raman Gupta
25ff2e745d Bump zwave-js-server-python to 0.21.0 (#47408)
Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2021-03-05 00:18:18 +00:00
Raman Gupta
f53cff49d5 Don't convert Climacell forecast temperatures to celsius because platform does it automatically (#47406) 2021-03-05 00:18:17 +00:00
Aaron Bach
36a2521799 Fix AirVisual exception when config entry contains old integration type (#47405) 2021-03-05 00:18:16 +00:00
Raman Gupta
ee55a04b4b Fix Climacell timezone issue with daily forecasts (#47402) 2021-03-05 00:18:15 +00:00
Sebastian Muszynski
6724d86565 Fix measurement unit (Closes: #47390) (#47398) 2021-03-05 00:18:14 +00:00
J. Nick Koston
14dca8e783 Map silent as a preset mode for fan backcompat (#47396)
The original change did not map silent as a preset mode
because it was not clear if it was a speed or a preset.
2021-03-05 00:18:14 +00:00
Christophe Painchaud
1817147995 Fix RFLink TCP KeepAlive error log (#47395) 2021-03-05 00:18:13 +00:00
Eric Severance
0bf3dea40c Revert "Speed-up wemo discovery (#46821)" (#47392)
This reverts commit 6e52b26c06.
2021-03-05 00:18:12 +00:00
Bram Kragten
5685b4aa33 Update frontend to 20210302.4 (#47383) 2021-03-05 00:18:11 +00:00
Martin Hjelmare
ef9b9663c5 Fix access of missing zwave_js climate unit value (#47380) 2021-03-05 00:18:11 +00:00
Franck Nijhof
d83ccdc97a Don't raise on known non-matching states in numeric state condition (#47378) 2021-03-05 00:18:10 +00:00
Martin Hjelmare
c0840e22dc Fix zwave_js manual reconfiguration of add-on managed entry (#47364) 2021-03-05 00:18:09 +00:00
Anders Melchiorsen
33c3566106 Catch ConditionError in generic_thermostat climate (#47359) 2021-03-05 00:18:09 +00:00
Martin Hjelmare
d175ac8e0d Make zwave_js add-on manager more flexible (#47356) 2021-03-05 00:18:08 +00:00
starkillerOG
c2f7a38d09 Fix Xiaomi Miio setup of switch entity for lumi.acpartner.v3 (#47345) 2021-03-05 00:18:07 +00:00
Raman Gupta
ee69e93b46 Bump zwave-js-server-python to 0.21.0 (#47408)
Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2021-03-04 16:15:50 -08:00
Christophe Painchaud
a1faba29f0 Fix RFLink TCP KeepAlive error log (#47395) 2021-03-05 01:09:54 +01:00
Cooper Dale
35d5522e79 Fix typo in docs link for forked_daapd (#47413)
corrected link to existing site
2021-03-05 00:58:42 +01:00
Tobias Sauerwein
c3bddc0fa6 Update browse_media.py (#47414) 2021-03-04 23:35:39 +01:00
Martin Hjelmare
682943511a Make zwave_js add-on manager more flexible (#47356) 2021-03-04 14:14:24 -08:00
Petru Paler
7ed80d6c39 Update Solax library to 0.2.6 (#47384) 2021-03-04 22:29:19 +01:00
Franck Nijhof
6f7179dce9 Fix older Roborock models (#47412) 2021-03-04 13:27:59 -08:00
Raman Gupta
74746125ce Fix Climacell timezone issue with daily forecasts (#47402) 2021-03-04 13:21:56 -08:00
Aaron Bach
fa8ded5ad8 Fix AirVisual exception when config entry contains old integration type (#47405) 2021-03-04 13:20:08 -08:00
Raman Gupta
972baa2ce4 Don't convert Climacell forecast temperatures to celsius because platform does it automatically (#47406) 2021-03-04 13:15:27 -08:00
Sebastian Muszynski
541e166317 Fix measurement unit (Closes: #47390) (#47398) 2021-03-04 13:12:04 -08:00
Martin Hjelmare
5ced7395f3 Fix access of missing zwave_js climate unit value (#47380) 2021-03-04 13:11:38 -08:00
Martin Hjelmare
d64fe6ea32 Fix zwave_js manual reconfiguration of add-on managed entry (#47364) 2021-03-04 13:11:07 -08:00
Bram Kragten
cea4808db8 Update frontend to 20210302.4 (#47383) 2021-03-04 13:09:51 -08:00
Franck Nijhof
7a8b7224c8 Don't raise on known non-matching states in numeric state condition (#47378) 2021-03-04 13:09:08 -08:00
Eric Severance
f05f60c4c4 Revert "Speed-up wemo discovery (#46821)" (#47392)
This reverts commit 6e52b26c06.
2021-03-04 13:07:42 -08:00
J. Nick Koston
62d8e47c51 Map silent as a preset mode for fan backcompat (#47396)
The original change did not map silent as a preset mode
because it was not clear if it was a speed or a preset.
2021-03-04 13:02:50 -08:00
starkillerOG
b58f9ce33a Fix Xiaomi Miio setup of switch entity for lumi.acpartner.v3 (#47345) 2021-03-04 21:53:09 +01:00
Anders Melchiorsen
b49a672fd5 Catch ConditionError in generic_thermostat climate (#47359) 2021-03-04 21:47:24 +01:00
Franck Nijhof
208a104e96 Fix secrets in files included via include_dir_list (#47350) 2021-03-04 09:33:35 -08:00
Erik Montnemery
17401cbc29 Initial automation tracing (#46755)
* Initial prototype of automation tracing

* Small fixes

* Lint

* Move trace helpers to its own file

* Improve trace for state and numeric_state conditions

* Tweaks + apply suggestions from code review

* Index traces by automation_id, trace while script is running

* Refactor condition tracing

* Improve WS API to get traces for single automation

* Add tests

* Fix imports

* Fix imports

* Address review comments

* Cap logging of loops

* Remove unused ContextVar action_config
2021-03-04 14:16:24 +01:00
Chris
6d478804e7 Add LZW36 device schema to zwave_js discovery (#47314)
* Add LZW26 device schema to discovery

Co-authored-by: @kpine

* Update homeassistant/components/zwave_js/discovery.py

Co-authored-by: kpine <keith.pine@gmail.com>

* Add tests

* Fix test

Co-authored-by: kpine <keith.pine@gmail.com>
2021-03-04 00:32:37 +01:00
tkdrob
53e62a897b Fix grammar in pi_hole logs (#47324) 2021-03-04 00:20:35 +01:00
Franck Nijhof
e9785fcd3d Merge pull request #47319 from home-assistant/rc 2021-03-03 20:05:36 +01:00
Franck Nijhof
b711686e10 Bumped version to 2021.3.0 2021-03-03 19:17:17 +01:00
Paulus Schoutsen
584ad07567 Simplify switch light (#47317) 2021-03-03 19:16:25 +01:00
Erik Montnemery
a89ba0ed8e Improve behaviour when disabling or enabling config entries (#47301) 2021-03-03 19:16:21 +01:00
Paulus Schoutsen
e6a6b2a680 Simplify switch light (#47317) 2021-03-03 10:13:04 -08:00
Erik Montnemery
504e5b77ca Improve behaviour when disabling or enabling config entries (#47301) 2021-03-03 10:12:37 -08:00
Joakim Plate
7626aa5c94 Philips JS correct post review comments (#47247) 2021-03-03 18:51:58 +01:00
Bram Kragten
15c89ebada Update frontend to 20210302.3 (#47310) 2021-03-03 16:01:30 +01:00
Raman Gupta
24919e99b8 Correct climacell device info (#47292) 2021-03-03 16:01:26 +01:00
Martin Hjelmare
099c9c59cb Fix Supervisor platform coordinator data lookup (#47308) 2021-03-03 14:37:36 +01:00
Bram Kragten
c192a44e87 Update frontend to 20210302.3 (#47310) 2021-03-03 14:35:58 +01:00
Nick Adams
cc72cf0c0d Update izone services.yaml and remove entity_id from schema. (#47305)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-03 11:51:40 +01:00
Erik Montnemery
b147ba1377 Correct gogogate2 battery sensor attributes (#47302) 2021-03-03 10:20:48 +01:00
Milan Meulemans
8f3c2573e2 Remove name from keenetic-ndms2 strings (#47113) 2021-03-03 10:12:26 +01:00
Matt Zimmerman
9022b90945 bump python-smarttub to 0.0.19 (#47294) 2021-03-03 07:04:17 +01:00
J. Nick Koston
32fe4fa378 Add activity properties to remote entity model (#47237) 2021-03-02 17:57:36 -10:00
Raman Gupta
6019bcf9d1 Correct climacell device info (#47292) 2021-03-03 01:55:10 +01:00
Matthias Alphart
ce8871ef59 KNX remove custom deprecation warnings (#47238) 2021-03-03 00:50:40 +01:00
Paulus Schoutsen
da2c7dc743 Bumped version to 2021.3.0b7 2021-03-02 22:37:27 +00:00
Raman Gupta
f74b88a29c Bump zwave-js-server-python to 0.20.1 (#47289) 2021-03-02 22:36:52 +00:00
Raman Gupta
eb981fb007 Convert climacell forecast timestamp to isoformat so that UI shows the right times (#47286) 2021-03-02 22:36:51 +00:00
Alexei Chetroi
39b9ad0ca0 Update ZHA dependencies (#47282) 2021-03-02 22:36:50 +00:00
Bram Kragten
ebb9008c27 Update frontend to 20210302.0 (#47278) 2021-03-02 22:36:49 +00:00
Tobias Sauerwein
4b9c148989 Fix issue when setting boost preset for a turned off Netatmo thermostat (#47275) 2021-03-02 22:36:49 +00:00
Aaron Bach
b8bc0a7fe9 Bump simplisafe-python to 9.6.9 (#47273) 2021-03-02 22:36:48 +00:00
Erik Montnemery
7a6edf9725 Make MQTT number respect retain setting (#47270) 2021-03-02 22:36:47 +00:00
Raman Gupta
6c5c3233f1 Add raw values to zwave_js value notification event (#47258)
* add value_raw to value notification event that always shows the untranslated state value

* add property key and property to event params
2021-03-02 22:36:46 +00:00
Paulus Schoutsen
d7f4416421 Fix Alexa doorbells (#47257) 2021-03-02 22:36:45 +00:00
Martin Hjelmare
23049955f8 Add zwave_js add-on manager (#47251)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-02 22:36:45 +00:00
Franck Nijhof
d88ee3bf4a Upgrade pillow to 8.1.1 (#47223) 2021-03-02 22:36:44 +00:00
Simone Chemelli
dddf28b138 Limit log spam by ConfigEntryNotReady (#47201) 2021-03-02 22:36:42 +00:00
HomeAssistant Azure
13516aa90c [ci skip] Translation update 2021-03-02 22:35:04 +00:00
HomeAssistant Azure
d81155327a [ci skip] Translation update 2021-03-02 22:35:04 +00:00
HomeAssistant Azure
3b459cd59a [ci skip] Translation update 2021-03-02 22:35:03 +00:00
HomeAssistant Azure
be4de15a10 [ci skip] Translation update 2021-03-02 22:35:03 +00:00
HomeAssistant Azure
ab5173c4cf [ci skip] Translation update 2021-03-02 22:35:03 +00:00
Martin Hjelmare
d3721bcf26 Add zwave_js add-on manager (#47251)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-03-02 14:22:42 -08:00
Raman Gupta
e443597b46 Bump zwave-js-server-python to 0.20.1 (#47289) 2021-03-02 23:09:50 +01:00
Raman Gupta
c327f3fc42 Convert climacell forecast timestamp to isoformat so that UI shows the right times (#47286) 2021-03-02 13:25:09 -08:00
Raman Gupta
42af775f53 Add raw values to zwave_js value notification event (#47258)
* add value_raw to value notification event that always shows the untranslated state value

* add property key and property to event params
2021-03-02 16:10:30 -05:00
Tobias Sauerwein
d20659d2ee Fix issue when setting boost preset for a turned off Netatmo thermostat (#47275) 2021-03-02 13:02:59 -08:00
Franck Nijhof
1926941d8e Upgrade pillow to 8.1.1 (#47223) 2021-03-02 13:02:41 -08:00
Paulus Schoutsen
2df644c6cc Clean up secret loading (#47034) 2021-03-02 12:58:53 -08:00
Simone Chemelli
17444e2f2f Limit log spam by ConfigEntryNotReady (#47201) 2021-03-02 12:50:28 -08:00
Quentame
198ecb0945 Uniformize platform setup (#47101)
* A platform is not a component

* Fix dynalite

* SUPPORTED_PLATFORMS --> PLATFORMS

* In tests

* In tests 2

* Fix SmartThings

* Fix ZHA test

* Fix Z-Wave

* Revert Z-Wave

* Use PLATFORMS const in ambient_station

* Fix ihc comment
2021-03-02 21:43:59 +01:00
Quentame
ca54de095d Add disk sensor to Freebox (#46689)
* Add disk sensor to Freebox

* Add debug logging into sensors

* Remove useless sensor[X] assignement in disk sensor
2021-03-02 21:23:02 +01:00
Ville Skyttä
b0c873dd34 Upgrade isort to 5.7.0 (#47279)
https://pycqa.github.io/isort/CHANGELOG/#570-december-30th-2020
2021-03-02 21:16:11 +01:00
Alexei Chetroi
7ef174fb5e Update ZHA dependencies (#47282) 2021-03-02 21:12:30 +01:00
Aaron Bach
112b039107 Bump simplisafe-python to 9.6.9 (#47273) 2021-03-02 12:19:04 -07:00
Bram Kragten
8e80e428d0 Update frontend to 20210302.0 (#47278) 2021-03-02 20:15:09 +01:00
Rene Lehfeld
2272925699 Add force_update to tasmota sensors (#47052)
* Add force update also to non-binary sensors as e.g. POWER Measurement agerage cannot be calculated otherwise. This is the same behavior as set with the obsolete tasmota detection

* add tests in binary_sensor and test_sensor for force_update flag

* satisfy flake8

* next try for force_update test but this time on the entity object which is the correct level

* once again satisfy flake8

* one more try for a test

* fix typo

* satisfy black
2021-03-02 18:57:14 +01:00
Franck Nijhof
4904207f77 Fix izone flake8 error (#47276) 2021-03-02 16:58:02 +01:00
Paulus Schoutsen
2ebca88950 Fix Alexa doorbells (#47257) 2021-03-02 15:13:45 +01:00
Erik Montnemery
959181a2e9 Make MQTT number respect retain setting (#47270) 2021-03-02 14:28:31 +01:00
Nick Adams
027d125617 Add services for izone airflow min/max (#45727)
* Create airflow_min and airflow_max services for the izone component
* Bump pizone library requirement
2021-03-02 20:58:41 +08:00
Quentame
6b9abfc2c6 Add init test to Freebox (#46998)
* Add init test to Freebox

* Review : more readable conftest

* Expect 2 blank lines between defs

* Review : Not I/O in the event loop

* Fix test_setup test

* remove useless const

* Review : mock setup methods

* Add service test

* Add import test
2021-03-02 13:37:33 +01:00
tkdrob
ab53b49d3f Clean up constants (#46948)
* Clean up constants

* clean up humidifier constants

* fix tests

* fix prometheus tests

Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2021-03-02 12:52:00 +01:00
Ville Skyttä
dc880118a4 Lint suppression cleanups (#47248)
* Unused pylint suppression cleanups

* Remove outdated pylint bug references

* Add flake8-noqa config and note to run it every now and then

* Add codes to noqa's

* Unused noqa cleanups
2021-03-02 09:02:04 +01:00
J. Nick Koston
38a2f196b8 Fix typing on fan percentage (#47259) 2021-03-02 08:32:24 +01:00
Erik Montnemery
7e71050669 Add battery sensor for gogogate2 wireless door sensor (#47145)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-03-01 17:34:37 -10:00
Paulus Schoutsen
ec95474604 Bumped version to 2021.3.0b6 2021-03-02 01:17:40 +00:00
Paulus Schoutsen
3117e47e1b Revert "Fix the updater schema (#47128)" (#47254)
This reverts commit 98be703d90.
2021-03-02 01:17:26 +00:00
Bram Kragten
bd29d82728 Update frontend to 20210301.0 (#47252) 2021-03-02 01:17:26 +00:00
Raman Gupta
88d29bcf20 Add suggested area for zwave_js devices (#47250) 2021-03-02 01:17:25 +00:00
J. Nick Koston
3ebe31e172 Fix lutron caseta fan handling of speed off (#47244) 2021-03-02 01:17:24 +00:00
Aaron Bach
8cf0fcc7f3 Bump simplisafe-python to 9.6.8 (#47241) 2021-03-02 01:17:24 +00:00
Erik Montnemery
118c996a9f Pass variables to initial evaluation of template trigger (#47236)
* Pass variables to initial evaluation of template trigger

* Add test

* Clarify test
2021-03-02 01:17:23 +00:00
Shay Levy
c411f0dcdc Fix Shelly Polling (#47224) 2021-03-02 01:17:22 +00:00
starkillerOG
30ccd33e7f Fix Xiaomi Miio flow unique_id for non discovery flows (#47222) 2021-03-02 01:17:22 +00:00
Franck Nijhof
acdad8a28c Fix duplicate template handling in Persistent Notifications (#47217) 2021-03-02 01:17:21 +00:00
J. Nick Koston
c28903103d Fix harmony failing to switch activities when a switch is in progress (#47212)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-02 01:17:20 +00:00
Erik Montnemery
b2a3c35e3a Fix race when disabling config entries (#47210)
* Fix race when disabling config entries

* Remove unused constant
2021-03-02 01:17:19 +00:00
Max Chodorowski
ea65f612cc Fix number of reported issues by github integration (#47203) 2021-03-02 01:17:19 +00:00
Marcel van der Veldt
819738a15c Update color logic for zwave_js light platform (#47110)
Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
2021-03-02 01:17:18 +00:00
Marcel van der Veldt
853d9ac4a9 Update color logic for zwave_js light platform (#47110)
Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
2021-03-01 17:12:49 -08:00
stephan192
7bc2328802 Remove rounding from The Things Network (#47157) 2021-03-01 17:00:42 -08:00
J. Nick Koston
d02218ff30 Fix harmony failing to switch activities when a switch is in progress (#47212)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-03-01 16:56:42 -08:00
Milan Meulemans
cb99969845 Fix typo in plaato strings (#47245) 2021-03-01 16:34:39 -08:00
Franck Nijhof
d1afef843b Deprecate LIFX Legacy integration (#47235) 2021-03-01 16:34:14 -08:00
Franck Nijhof
4f9f870e7d Fix duplicate template handling in Persistent Notifications (#47217) 2021-03-01 16:27:26 -08:00
Paulus Schoutsen
cc6293623f Revert "Fix the updater schema (#47128)" (#47254)
This reverts commit 98be703d90.
2021-03-01 16:12:48 -08:00
Aaron Bach
3ee589d973 Bump simplisafe-python to 9.6.8 (#47241) 2021-03-01 17:08:36 -07:00
Bram Kragten
036ce55bea Update frontend to 20210301.0 (#47252) 2021-03-01 15:32:39 -08:00
Raman Gupta
3e34bb3e89 Add suggested area for zwave_js devices (#47250) 2021-03-01 15:24:55 -08:00
Joakim Plate
c6cfcc2abb Add remote control support to philips_js (#47249) 2021-03-01 15:21:10 -08:00
J. Nick Koston
2e65a60624 Fix lutron caseta fan handling of speed off (#47244) 2021-03-01 15:18:47 -08:00
Erik Montnemery
96cc17b462 Add support for a list of known hosts to Google Cast (#47232) 2021-03-01 15:18:18 -08:00
Erik Montnemery
dd9e926689 Pass variables to initial evaluation of template trigger (#47236)
* Pass variables to initial evaluation of template trigger

* Add test

* Clarify test
2021-03-01 23:34:26 +01:00
Matthias Alphart
3fda9fd0c6 KNX address constant (#47196) 2021-03-01 21:59:36 +01:00
Raman Gupta
3c290c9a44 Address late hassio review (#47229)
* hassio code cleanup to address comments in #46342

* fix code
2021-03-01 12:10:51 -05:00
Dermot Duffy
61f509bdd8 Minor Hyperion mypy cleanups (#45765) 2021-03-01 18:10:28 +01:00
Shay Levy
adad4a7785 Fix Shelly Polling (#47224) 2021-03-01 17:27:43 +01:00
Dermot Duffy
be8584c0bc Overhaul command_line tests (#46682) 2021-03-01 17:27:04 +01:00
jdeath
3ebd5aff98 Bump mcstatus to 5.1.1 (#47169) 2021-03-01 16:35:47 +01:00
Franck Nijhof
5cb2fdb6f7 Upgrade spotipy to 2.17.1 (#47228) 2021-03-01 16:02:55 +01:00
Franck Nijhof
93d4e46bb6 Upgrade coverage to 5.5 (#47227) 2021-03-01 15:37:03 +01:00
Matt Zimmerman
947f6ea51e Parameterize SmartTub tests (#47189)
* Parameterize SmartTub tests

* parameterize light service calls

* remove stray print()

* add comment
2021-03-01 13:53:57 +01:00
Franck Nijhof
a2b13785c2 Restore pylint concurrency (#47221) 2021-03-01 13:40:46 +01:00
starkillerOG
084cfa4a1d Fix Xiaomi Miio flow unique_id for non discovery flows (#47222) 2021-03-01 12:46:02 +01:00
Erik Montnemery
003fee2a35 Fix race when disabling config entries (#47210)
* Fix race when disabling config entries

* Remove unused constant
2021-03-01 12:38:49 +01:00
Matthias Alphart
dadc99dbd3 Deprecate knx config_file (#46874)
* deprecate config_file

* removed cv.deprecated for now, added persistent notification

* Update homeassistant/components/knx/__init__.py

Co-authored-by: Philip Allgaier <philip.allgaier@gmx.de>

* remove notification, add cv.deprecated again

* Update homeassistant/components/knx/__init__.py

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

* remove cv.deprecated again

Co-authored-by: Philip Allgaier <philip.allgaier@gmx.de>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-01 11:55:55 +01:00
Matthias Alphart
92afcb6b4b KNX services send and event_register accept multiple group addresses (#46908)
* send and event_register service accept lists of group addresses

* remove lambda

* object selector for lists

* knx.read takes lists too
2021-03-01 11:51:59 +01:00
Max Chodorowski
4c42e469b3 Fix number of reported issues by github integration (#47203) 2021-03-01 10:38:07 +01:00
J. Nick Koston
2de01ddaeb Remove griddy integration (#47218) 2021-03-01 10:35:23 +01:00
Tobias Sauerwein
732db3b67c Revert const replacement in fritzbox_callmonitor (#47211) 2021-03-01 10:31:13 +01:00
Marc Mueller
e1d24c69b8 Improve CI workflow (#46696) 2021-03-01 10:28:41 +01:00
Raman Gupta
0592309b65 Add hassio addon_update service and hassio config entry with addon and OS devices and entities (#46342)
* add addon_update service, use config flow to set up config entry, create disabled sensors

* move most of entity logic to common entity class, improve device info, get rid of config_flow user step

* fix setup logic

* additional refactor

* fix refactored logic

* fix config flow tests

* add test for addon_update service and get_addons_info

* add entry setup and unload test and fix update coordinator

* handle if entry setup calls unload

* return nothing for coordinator if entry is being reloaded because coordinator will get recreated anyway

* remove entry when HA instance is no longer hassio and add corresponding test

* handle adding and removing device registry entries

* better config entry reload logic

* fix comment

* bugfix

* fix flake error

* switch pass to return

* use repository attribute for model and fallback to url

* use custom 'system' source since hassio source is misleading

* Update homeassistant/components/hassio/entity.py

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

* update remove addons function name

* Update homeassistant/components/hassio/__init__.py

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

* fix import

* pop coordinator after unload

* additional fixes

* always pass in sensor name when creating entity

* prefix one more function with async and fix tests

* use supervisor info for addons since list is already filtered on what's installed

* remove unused service

* update sensor names

* remove added handler function

* use walrus

* add OS device and sensors

* fix

* re-add addon_update service schema

* add more test coverage and exclude entities from tests

* check if instance is using hass OS in order to create OS entities

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-03-01 09:41:04 +01:00
Pascal Vizeli
f192b3c1e5 Bumped version to 2021.3.0b5 2021-03-01 08:32:13 +00:00
Stefan Agner
b9edd0d7ad Fix generic-x86-64 build (#47214)
Replace the wrong Docker Hub repository slipped in during testing.
2021-03-01 08:30:22 +00:00
J. Nick Koston
4907c12964 Bump HAP-python to 3.3.2 to fix unavailable condition on restart (#47213)
Fixes

https://github.com/ikalchev/HAP-python/compare/v3.3.1...v3.3.2
2021-03-01 08:30:21 +00:00
J. Nick Koston
62e224ecb0 Increment the homekit config version when restarting (#47209)
If an entity changes between restart the iOS/controller
device may have cached the old chars for the accessory.
To force the iOS/controller to reload the chars, we
increment the config version when Home Assistant restarts
2021-03-01 08:30:21 +00:00
Aaron Bach
0e951f288b Bump simplisafe-python to 9.6.7 (#47206) 2021-03-01 08:30:20 +00:00
starkillerOG
aa9b445856 Fix Xiaomi Miio discovery (#47134) 2021-03-01 08:30:20 +00:00
AJ Schmidt
8513250628 Update AlarmDecoder dependency (#46841) 2021-03-01 08:30:19 +00:00
Stefan Agner
d2db58d138 Fix generic-x86-64 build (#47214)
Replace the wrong Docker Hub repository slipped in during testing.
2021-03-01 09:17:41 +01:00
Marc Mueller
16dcbf1467 Update pylint (#47205) 2021-02-28 22:09:01 -10:00
J. Nick Koston
cb94e7949b Bump HAP-python to 3.3.2 to fix unavailable condition on restart (#47213)
Fixes

https://github.com/ikalchev/HAP-python/compare/v3.3.1...v3.3.2
2021-02-28 22:00:31 -10:00
J. Nick Koston
853da40e70 Increment the homekit config version when restarting (#47209)
If an entity changes between restart the iOS/controller
device may have cached the old chars for the accessory.
To force the iOS/controller to reload the chars, we
increment the config version when Home Assistant restarts
2021-02-28 20:42:09 -08:00
Aaron Bach
0e9f2dc272 Bump simplisafe-python to 9.6.7 (#47206) 2021-02-28 20:41:09 -08:00
J. Nick Koston
5784e14d0c Enforce typing in bond (#47187)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-01 03:16:30 +01:00
Allen Porter
715a254913 Handle stream failures in recorder (#47151)
* Handle stream failures in recorder

Fail gracefully with an error message when the recorder is invoked with no segments due to a stream failure.

* Update homeassistant/components/stream/recorder.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
2021-02-28 18:01:28 -08:00
HomeAssistant Azure
44ed6cda40 [ci skip] Translation update 2021-03-01 00:09:01 +00:00
Matt Zimmerman
277c3cb661 Cleanup SmartTub filtration cycles (#47192) 2021-02-28 13:53:57 -10:00
Eric Severance
1d7660f071 Explain why should_pool is True initially for wemo (#47191) 2021-02-28 13:51:43 -10:00
Matt Zimmerman
c6223873f4 Move SmartTub climate constants to module level (#47190) 2021-02-28 13:49:25 -10:00
Matt Zimmerman
bab66a5cb9 Remove turn_on and turn_off from SmartTub pump switches (#47184) 2021-02-28 13:48:30 -10:00
AJ Schmidt
b8c8fe0820 Update AlarmDecoder dependency (#46841) 2021-02-28 13:21:04 -10:00
starkillerOG
1c9a9be197 Fix Xiaomi Miio discovery (#47134) 2021-02-28 12:25:40 -08:00
Paulus Schoutsen
6887474ddc Bumped version to 2021.3.0b4 2021-02-28 20:22:46 +00:00
J. Nick Koston
e93868f85b Update HAP-python to 3.3.1 (#47180)
Fixes disconnect when setting a single char fails
https://github.com/ikalchev/HAP-python/compare/v3.3.0...v3.3.1
2021-02-28 20:22:29 +00:00
David F. Mulcahey
db098d90dd Bump ZHA quirks to 0.0.54 (#47172) 2021-02-28 20:22:29 +00:00
Stefan Agner
552da0327e Bump builder to get generic-x86-64 nightly builds (#47164) 2021-02-28 20:22:28 +00:00
Erik Montnemery
104d5c510f Fix MQTT trigger where wanted payload may be parsed as an integer (#47162) 2021-02-28 20:22:27 +00:00
Paulus Schoutsen
d9d979d50e Fix the updater schema (#47128) 2021-02-28 20:21:41 +00:00
Bram Kragten
e65b2231ba Update frontend to 20210226.0 (#47123) 2021-02-28 20:21:41 +00:00
J. Nick Koston
2b0f6716b3 Provide a human readable exception for the percentage util (#47121) 2021-02-28 20:21:40 +00:00
J. Nick Koston
dd4f8bf4b4 Handle lutron_caseta fan speed being none (#47120) 2021-02-28 20:21:39 +00:00
Shay Levy
505ca07c4e Fix Shelly RGBW (#47116) 2021-02-28 20:21:39 +00:00
Paulus Schoutsen
807bf15ff3 Use async_capture_events to avoid running in executor (#47111) 2021-02-28 20:21:38 +00:00
Erik Montnemery
72b82449d8 Update MQTT device triggers with support for templates (#47142) 2021-02-28 12:20:09 -08:00
Erik Montnemery
19cd29affa Fix MQTT trigger where wanted payload may be parsed as an integer (#47162) 2021-02-28 12:19:27 -08:00
J. Nick Koston
6ff3eb0569 Update HAP-python to 3.3.1 (#47180)
Fixes disconnect when setting a single char fails
https://github.com/ikalchev/HAP-python/compare/v3.3.0...v3.3.1
2021-02-28 19:27:36 +01:00
Allen Porter
5cc8302e6a Fix flaky hls keepalive test (#47186)
Remove a call to stream.start() which is issued before the test is fully
setup (e.g. keepalive is not set to True, and mock calls are not registered)
2021-02-28 10:25:07 -08:00
Michael
261d86f06b Apply recommendations to synology_dsm (#47178) 2021-02-28 19:19:50 +01:00
Erik Montnemery
da5902e4f8 Tweak Tasmota fan typing (#47175) 2021-02-28 17:48:23 +01:00
David F. Mulcahey
4853a81366 Bump ZHA quirks to 0.0.54 (#47172) 2021-02-28 10:55:14 -05:00
Paulus Schoutsen
98be703d90 Fix the updater schema (#47128) 2021-02-28 14:41:06 +01:00
Stefan Agner
f4189510e9 Bump builder to get generic-x86-64 nightly builds (#47164) 2021-02-28 14:33:48 +01:00
tkdrob
fa1d91d1fe Clean up mqtt_room (#46882) 2021-02-28 14:16:37 +01:00
Maciej Bieniek
66027bcef5 Bump airly library to version 1.1.0 (#47163) 2021-02-28 12:53:13 +01:00
HomeAssistant Azure
eb7220ff26 [ci skip] Translation update 2021-02-28 00:07:08 +00:00
Robert Svensson
da309ce342 Change device class of window covers to shade (#47129) 2021-02-27 14:09:25 -06:00
Allen Porter
97b59023d1 Improve handling for recording start of nest cam stream (#47144)
* Improve handling for start of nest cam stream

Add negative_cts_offsets to segment container options in order to better handle recording at the start of a stream. Nest streams start off with a negative offset, and if the segment container does not support it, then it adjusts the timestamps making it out of order with the next segment as described in issue #46968

* Update homeassistant/components/stream/__init__.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
2021-02-27 11:20:58 -08:00
J. Nick Koston
49315a90d9 Handle lutron_caseta fan speed being none (#47120) 2021-02-26 16:33:31 -08:00
J. Nick Koston
86f8cd8037 Provide a human readable exception for the percentage util (#47121) 2021-02-26 16:33:13 -08:00
Bram Kragten
84e01baa5a Update frontend to 20210226.0 (#47123) 2021-02-26 16:32:51 -08:00
HomeAssistant Azure
43621091b7 [ci skip] Translation update 2021-02-27 00:05:45 +00:00
Shay Levy
e9b8e035b4 Fix Shelly RGBW (#47116) 2021-02-26 14:28:16 -08:00
Paulus Schoutsen
7c2545af6e Use async_capture_events to avoid running in executor (#47111) 2021-02-26 13:28:52 -08:00
Paulus Schoutsen
cdf7372fd8 Bumped version to 2021.3.0b3 2021-02-26 19:21:15 +00:00
Allen Porter
0969cc985b Bump google-nest-sdm to v0.2.12 to improve API call error messages (#47108) 2021-02-26 19:21:08 +00:00
Stefan Agner
5e2bafca56 Add new machine generic-x86-64 to build matrix (#47095)
The Intel NUC machine runs on most UEFI capable x86-64 machines today.
Lets start a new machine generic-x86-64 which will replace intel-nuc
over time.
2021-02-26 19:21:07 +00:00
Simone Chemelli
1d1be8ad1a Bump aioshelly to 0.6.1 (#47088) 2021-02-26 19:21:06 +00:00
Marcel van der Veldt
d55f0df09a Fix Z-Wave JS discovery schema for thermostat devices (#47087)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-26 19:21:06 +00:00
Erik Montnemery
96e118ccfe Bump pychromecast to 8.1.2 (#47085) 2021-02-26 19:21:05 +00:00
Paulus Schoutsen
255b6faa7f Upgrade aiohttp to 3.7.4 (#47077) 2021-02-26 19:21:04 +00:00
rikroe
4cd40d0f9f Bump bimmer_connected to 0.7.15 and fix bugs (#47066)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2021-02-26 19:21:03 +00:00
J. Nick Koston
c12769213d Add suggested area to hue (#47056) 2021-02-26 19:21:02 +00:00
CurrentThread
6a850a1481 Add support for Shelly SHBTN-2 device triggers (#46644) 2021-02-26 19:21:02 +00:00
Joakim Plate
101897c260 Add support for v6 features to philips js integration (#46422) 2021-02-26 19:21:01 +00:00
Allen Porter
b1898cc176 Bump google-nest-sdm to v0.2.12 to improve API call error messages (#47108) 2021-02-26 11:20:32 -08:00
Marcel van der Veldt
7ca148f65d Fix Z-Wave JS discovery schema for thermostat devices (#47087)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-26 11:19:23 -08:00
Simone Chemelli
8971ab2edc Bump aioshelly to 0.6.1 (#47088) 2021-02-26 11:07:53 -08:00
Joakim Plate
e12eba1989 Add support for v6 features to philips js integration (#46422) 2021-02-26 09:34:40 -08:00
J. Nick Koston
7ab2d91bf0 Add suggested area to hue (#47056) 2021-02-26 10:35:09 -06:00
Charles Garwood
d8633f94f6 Guard zwave_js missing nodes in websocket api (#47096) 2021-02-26 16:07:50 +01:00
Stefan Agner
6e77ca70fc Add new machine generic-x86-64 to build matrix (#47095)
The Intel NUC machine runs on most UEFI capable x86-64 machines today.
Lets start a new machine generic-x86-64 which will replace intel-nuc
over time.
2021-02-26 15:49:33 +01:00
Guido Schmitz
71cf982a28 Add suggested_area support to devolo Home Control (#47063) 2021-02-26 08:48:36 -06:00
rikroe
9c67f83f4e Bump bimmer_connected to 0.7.15 and fix bugs (#47066)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2021-02-26 13:57:47 +01:00
Raman Gupta
56673f7edf Remove flaky climacell test (#47080) 2021-02-26 13:45:21 +01:00
Erik Montnemery
dfbb653107 Bump pychromecast to 9.0.0 (#47086)
* Adapt to Pychromecast 9.0.0

* Bump pychromecast to 9.0.0

* Fix lint issues
2021-02-26 13:43:53 +01:00
CurrentThread
d5ee49cd4e Add support for Shelly SHBTN-2 device triggers (#46644) 2021-02-26 11:52:47 +01:00
Erik Montnemery
5780615251 Bump pychromecast to 8.1.2 (#47085) 2021-02-26 10:47:22 +01:00
chpego
afb6e31393 Upgrade youtube_dl to version 2021.02.22 (#47078)
* Upgrade youtube_dl to version 2021.02.22

* Update requirements_all.txt
2021-02-26 10:39:31 +01:00
Paulus Schoutsen
3a3c12bb17 Upgrade aiohttp to 3.7.4 (#47077) 2021-02-26 09:16:11 +01:00
Paulus Schoutsen
6cdd6c3f44 Bumped version to 2021.3.0b2 2021-02-26 06:01:42 +00:00
Paulus Schoutsen
2c30579a11 Bump Z-Wave JS Server Python to 0.20.0 (#47076) 2021-02-26 06:01:35 +00:00
Raman Gupta
ae0d301fd9 catch ValueError when unique ID update fails because its taken and remove the duplicate entity (#47072) 2021-02-26 06:01:34 +00:00
J. Nick Koston
a7a66e8ddb Ensure hue options show the defaults when the config options have not yet been saved (#47067) 2021-02-26 06:01:33 +00:00
Bram Kragten
5228bbd43c Revert CORS changes for my home assistant (#47064)
* Revert CORS changes for my home assistant

* Update test_init.py

* Update test_init.py
2021-02-26 06:01:33 +00:00
Bram Kragten
35bce434cc Updated frontend to 20210225.0 (#47059) 2021-02-26 06:01:32 +00:00
Paulus Schoutsen
6bd253094f Bump Z-Wave JS Server Python to 0.20.0 (#47076) 2021-02-25 22:01:08 -08:00
J. Nick Koston
6af67c9558 Ensure hue options show the defaults when the config options have not yet been saved (#47067) 2021-02-25 21:58:35 -08:00
Charles Garwood
8ab163eda8 Fix Z-Wave JS API docstrings (#47061) 2021-02-25 21:11:06 -08:00
Raman Gupta
7118b7169c catch ValueError when unique ID update fails because its taken and remove the duplicate entity (#47072) 2021-02-25 20:41:54 -05:00
HomeAssistant Azure
989d3e5c87 [ci skip] Translation update 2021-02-26 00:06:13 +00:00
Bram Kragten
e3105c7eb1 Revert CORS changes for my home assistant (#47064)
* Revert CORS changes for my home assistant

* Update test_init.py

* Update test_init.py
2021-02-25 15:28:22 -08:00
Bram Kragten
d084291055 Updated frontend to 20210225.0 (#47059) 2021-02-25 21:34:04 +01:00
Paulus Schoutsen
33a6fb1baf Bumped version to 2021.3.0b1 2021-02-25 19:42:48 +00:00
Paulus Schoutsen
399c299cf2 Remove deprecated credstash + keyring (#47033) 2021-02-25 19:42:43 +00:00
Raman Gupta
c797e0c8de Fix zwave_js unique ID migration logic (#47031) 2021-02-25 19:42:42 +00:00
Simone Chemelli
cb2dd6d908 Fix missing Shelly external input (#47028)
* Add support for external input (Shelly 1/1pm add-on)

* Make external sensor naming consistent

* Fix case consistency
2021-02-25 19:42:41 +00:00
Ron Klinkien
a3cde9b19e Bump python-garminconnect to 0.1.19 to fix broken api (#47020) 2021-02-25 19:42:40 +00:00
Joakim Sørensen
a58931280a Use dispatch instead of eventbus for supervisor events (#46986)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-25 19:42:40 +00:00
J. Nick Koston
2fef4c4eef Ensure doorbird events are re-registered when changing options (#46860)
- Fixed the update listener not being unsubscribed

- DRY up some of the code

- Fix sync code being called in async

- Reduce executor jumps
2021-02-25 19:42:39 +00:00
Joakim Sørensen
7d90cdea1e Use dispatch instead of eventbus for supervisor events (#46986)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-25 19:52:11 +01:00
J. Nick Koston
f4db74fe73 Fix bond typing in config flow (#47055) 2021-02-25 18:08:04 +01:00
Ron Klinkien
3a82917400 Bump python-garminconnect to 0.1.19 to fix broken api (#47020) 2021-02-25 17:39:57 +01:00
Tobias Sauerwein
4e09d7ee0f Clean up Netatmo webhook handler (#47037) 2021-02-25 16:53:59 +01:00
Quentame
125206adbf Add zeroconf discovery to Freebox (#47045)
* Add zeroconf discovery to Freebox

- remove deprecated discovery
- tried with SSDP too but the presentation URL is not the same (*.fbxos.fr for zeroconf, http://mafreebox.freebox.fr/ for SSDP)
- so config entry unique_id should be the MAC (included into SSDP, but not zeroconf, can be retrieve from `fbx.system.get_config()`)
- DHCP discovery might be added in the future too

* host and port are required on zeroconf

* cleanup in other PR
2021-02-25 16:50:58 +01:00
Johan Josua Storm
5bba532dd4 Replace wrong domain returned from xbox api 2.0 (#47021)
* Change solution to use yarl lib

* Add check if base url needs changing

* Actively remove padding query instead of omitting

* Fixed popping the wrong query

* Change explaination about removing mode query
2021-02-25 09:38:45 -05:00
Maciej Bieniek
09bafafee2 Bump gios library to version 0.2.0 (#47050) 2021-02-25 15:26:00 +01:00
João Gabriel
372ed2db91 Add remote control platform to Panasonic Viera (#42450)
* Adding remote platform

* Update homeassistant/components/panasonic_viera/remote.py

Simplify entity creation

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

* Use Pytest fixture

* Use Pytest fixtures and assert service calls

* Adding conftest.py and organizing tests

* Reorganizing tests

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-25 13:40:01 +01:00
Fabian Affolter
c9d7a2be88 Upgrade sendgrid to 6.6.0 (#47041) 2021-02-25 13:09:52 +01:00
Fabian Affolter
5ec4360ac1 Upgrade pyowm to 3.2.0 (#47042) 2021-02-25 13:08:44 +01:00
Paulus Schoutsen
1989b8c07d Clean up discovery integration (#47022)
* Clean up discovery integration

* Fix tests

* Remove discovery step from freebox
2021-02-25 12:19:21 +01:00
Fabian Affolter
7a691f9d26 Upgrade icmplib to 2.0.2 (#47039) 2021-02-25 11:11:40 +01:00
Robert Svensson
6b0c569a70 Normally there should only be one battery sensor per device from deCONZ. (#46761)
With these Danfoss devices each endpoint can report its own battery state.
2021-02-25 09:54:46 +01:00
Simone Chemelli
65a2f07a01 Fix missing Shelly external input (#47028)
* Add support for external input (Shelly 1/1pm add-on)

* Make external sensor naming consistent

* Fix case consistency
2021-02-25 09:51:18 +01:00
Florian Heilmann
47938a1355 hm climate: Return PRESET_NONE instead of None (#47003)
Signed-off-by: Florian Heilmann <Florian.Heilmann@gmx.net>
2021-02-25 09:49:52 +01:00
Paulus Schoutsen
633a7aeb22 Remove deprecated credstash + keyring (#47033) 2021-02-25 09:48:19 +01:00
J. Nick Koston
72263abfa9 Ensure doorbird events are re-registered when changing options (#46860)
- Fixed the update listener not being unsubscribed

- DRY up some of the code

- Fix sync code being called in async

- Reduce executor jumps
2021-02-24 23:16:20 -08:00
Raman Gupta
a43f3c1a0c Fix zwave_js unique ID migration logic (#47031) 2021-02-24 23:14:32 -08:00
starkillerOG
7dc9071776 Add Xiaomi Miio fan config flow (#46866)
* Miio fan config flow

* fix styling and imports

* Update homeassistant/components/xiaomi_miio/fan.py

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

* Update homeassistant/components/xiaomi_miio/fan.py

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

* Update homeassistant/components/xiaomi_miio/fan.py

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

* Update homeassistant/components/xiaomi_miio/fan.py

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

* Update homeassistant/components/xiaomi_miio/fan.py

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

* rename device -> entity

* fix indent

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-25 04:25:06 +01:00
Fabian Affolter
7e35af5d4e Upgrade TwitterAPI to 2.6.8 (#47019) 2021-02-24 19:09:33 -05:00
HomeAssistant Azure
bb7f1b748f [ci skip] Translation update 2021-02-25 00:05:20 +00:00
Paulus Schoutsen
557ec374f1 Convert discovery helper to use dispatcher (#47008) 2021-02-24 13:37:31 -08:00
Franck Nijhof
5ab11df551 Bump version to 2021.4.0dev0 (#47017) 2021-02-24 22:28:02 +01:00
Franck Nijhof
567ec26c48 Bumped version to 2021.3.0b0 2021-02-24 22:01:28 +01:00
Marcel van der Veldt
23cbd2dda3 Change Z-Wave JS discovery logic to adopt changes to DeviceClass (#46983)
Co-authored-by: raman325 <7243222+raman325@users.noreply.github.com>
2021-02-24 12:59:06 -08:00
Bram Kragten
afae253432 Update frontend to 20210224.0 (#47013) 2021-02-24 21:18:24 +01:00
Simone Chemelli
4c294adfe8 Add missing tilt icon to Shelly tilt sensor (#46993) 2021-02-24 21:18:14 +01:00
Nathan Tilley
8d2606134d Add FAA Delays Integration (#41347)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-24 14:11:20 -06:00
jjlawren
ba51ada494 Bump plexapi to 4.4.0 (#47007) 2021-02-24 21:00:58 +01:00
jjlawren
2f1dba74d1 Use Plex server URL as config entry title (#47010) 2021-02-24 20:57:02 +01:00
Tobias Sauerwein
39baeb62f2 Add Sonos media browser image proxy (#46902) 2021-02-24 20:51:12 +01:00
Erik Montnemery
daf7595ca6 Support value_template in MQTT triggers (#46891)
* Support value_template in MQTT triggers

* Rename value_template to payload_template

* Revert "Rename value_template to payload_template"

This reverts commit 902094eefc6612e6b5c3bdb7440520af050c7f20.
2021-02-24 20:16:36 +01:00
Raman Gupta
783e0f9a14 Setup config entry even if vizio device is unreachable (#46864) 2021-02-24 20:15:47 +01:00
Marcel van der Veldt
868a536d81 Add number platform to Z-Wave JS (#46956)
* add number platform to zwave_js integration
* add discovery scheme for thermostat valve control, using number platform

Co-authored-by: kpine <keith.pine@gmail.com>
2021-02-24 19:39:35 +01:00
Milan Meulemans
0eb8951aed Remove recursive key reference (#46999) 2021-02-24 13:29:53 -05:00
Tobias Sauerwein
722b1e8746 Add Netatmo device trigger (#45387)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-24 19:20:40 +01:00
Milan Meulemans
db0d815f9d Use location common key reference in totalconnect (#46995) 2021-02-24 12:44:12 -05:00
Raman Gupta
106ae18432 Climacell fixes: Use common keys for strings, fix temp_low measurement, add windy condition (#46991)
* use common keys for lat and long

* additional fixes

* Update homeassistant/components/climacell/strings.json

Co-authored-by: Milan Meulemans <milan.meulemans@live.be>

Co-authored-by: Milan Meulemans <milan.meulemans@live.be>
2021-02-24 11:15:01 -05:00
Joakim Sørensen
11a89bc3ac Add addon selector (#46789) 2021-02-24 17:02:48 +01:00
Fabian Affolter
0ef16dd563 Set awesomeversion to 21.2.3 (#46989) 2021-02-24 16:43:09 +01:00
Martin Hjelmare
db8f597f10 Fix zwave_js config flow server version timeout (#46990) 2021-02-24 16:22:58 +01:00
Raman Gupta
424526db7e Migrate zwave_js entities to use new unique ID format (#46979)
* migrate zwave_js entities to use new unique ID format

* remove extra param from helper

* add comment to remove migration logic in the future

* update comment

* use instance attribute instead of calling functino on every state update
2021-02-24 09:41:10 -05:00
adrian-vlad
44293a3738 Add enable and disable services for recorder (#45778) 2021-02-24 07:26:05 -06:00
Álvaro Fernández Rojas
470121e5b0 Restore Tado binary sensor attributes (#46069) 2021-02-24 07:17:01 -06:00
Maciej Bieniek
b645b151f9 Catch AuthRequired exception in confirm discovery step for Shelly config flow (#46135) 2021-02-24 07:13:32 -06:00
Franck Nijhof
8f19d041e4 Merge branch 'master' into dev 2021-02-24 13:52:44 +01:00
Franck Nijhof
45b50c53ad Mullvad integration improvements (#46987) 2021-02-24 13:43:44 +01:00
Bram Kragten
b0d56970a5 Fix TTS services name (#46988) 2021-02-24 13:43:24 +01:00
Martin Hjelmare
17f4c9dd06 Improve mysensors config flow (#46984) 2021-02-24 12:52:04 +01:00
MeIchthys
1a73cb4791 Mullvad VPN (#44189)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-24 12:04:38 +01:00
Martin Hjelmare
1c7c6163dd Save mysensors gateway type in config entry (#46981) 2021-02-24 11:31:31 +01:00
Raman Gupta
eccdae60bf Add ClimaCell weather integration (#36547)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-24 09:34:27 +01:00
Matthias Alphart
a632215541 Validate KNX addresses (#46933) 2021-02-24 08:37:41 +01:00
Franck Nijhof
42fd3be0e8 Add template support to service targets (#46977)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-23 22:46:00 -08:00
Steven Looman
3e26e2adad Handle device IP change in upnp (#46859) 2021-02-23 21:00:47 -06:00
Allen Porter
19f5b467b7 Make FAN_ON use the max duration rather than 15 min default (#46489) 2021-02-23 20:38:52 -06:00
Nathan Spencer
b8f7bc12ee Add switches and sensors to Litter-Robot (#46942) 2021-02-23 20:34:25 -06:00
Marcel van der Veldt
d4d68ebc64 Extend zwave_js discovery scheme for lights (#46907) 2021-02-23 16:31:24 -08:00
Matthias Alphart
d02b27a5d0 Update xknx to 0.17.1 (#46974) 2021-02-23 16:26:17 -08:00
J. Nick Koston
87cbbcb014 Automatically create HomeKit accessory mode entries (#46473)
When we set up HomeKit, we asked users if they wanted
to create an entry in bridge or accessory mode.

This approach required the user to understand how HomeKit works and
choose which type to create.

When the user includes the media player or camera domains,
we exclude them from the bridge and create the additional entries
for each entity in accessory mode.
2021-02-23 16:22:23 -08:00
HomeAssistant Azure
9159f54900 [ci skip] Translation update 2021-02-24 00:04:14 +00:00
Raman Gupta
b657fd02cd deep copy zwave_js state in test fixtures so tests are more isolated (#46976) 2021-02-23 18:58:25 -05:00
Raman Gupta
1a99562e91 Add zwave_js.refresh_value service (#46944)
* add poll_value service

* switch vol.All to vol.Schema

* more relevant log message

* switch service name to refresh_value, add parameter to refresh all watched values, fix tests

* rename parameter and create task for polling command so we don't wait for a response

* raise ValueError for unknown entity

* better error message

* fix test
2021-02-23 18:58:04 -05:00
Milan Meulemans
228096847b Fix typo in fireservicerota strings (#46973) 2021-02-23 23:42:24 +01:00
jjlawren
425d56d024 Fix Plex showing removed shared users (#46971) 2021-02-23 23:36:46 +01:00
tkdrob
c9847920af Use core constants for dht (#46029) 2021-02-23 23:32:39 +01:00
MHV33
23b2953773 Add more shopping list services (#45591)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-23 23:25:50 +01:00
Michael
d96249e39c Implement additional DataUpdateCoordinator to harmonize the data update handling of Synology DSM (#46113) 2021-02-23 16:23:50 -06:00
Matthias Alphart
b583ded8b5 Fix KNX services.yaml (#46897) 2021-02-23 22:59:16 +01:00
J. Nick Koston
d68a51ddce Avoid having to ask for the bond token when possible during config (#46845) 2021-02-23 13:42:56 -08:00
Simone Chemelli
00dd557cce Fix Shelly mireds and color_temp return type (#46112) 2021-02-23 22:42:33 +01:00
Martin Hjelmare
089effbe3f Improve zwave_js config flow (#46906) 2021-02-23 13:41:19 -08:00
jjlawren
272e975a52 Fix Plex handling of clips (#46667) 2021-02-23 22:38:24 +01:00
J. Nick Koston
eb8d723689 Bump pymyq to fix myq in core (#46962) 2021-02-23 21:50:06 +01:00
Jon Caruana
6a8b5ee51b LiteJet is now configured using config_flow (#44409)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-23 14:20:58 -06:00
J. Nick Koston
ffe42e150a Add missing target to increase_speed/decrease_speed service (#46939) 2021-02-23 12:03:30 -06:00
Raman Gupta
5a3bd30e01 Add zwave_js.set_config_parameter service (#46673)
* create zwave_js.set_config_value service

* update docstring

* PR comments

* make proposed changes

* handle providing a label for the new value

* fix docstring

* use new library function

* config param endpoint is always 0

* corresponding changes from upstream PR

* bug fixes and add tests

* create zwave_js.set_config_value service

* update docstring

* PR comments

* make proposed changes

* handle providing a label for the new value

* fix docstring

* use new library function

* config param endpoint is always 0

* corresponding changes from upstream PR

* bug fixes and add tests

* use lambda to avoid extra function

* add services description file

* bring back the missing selector

* move helper functions to helper file for reuse

* allow target selector for automation editor

* formatting

* fix service schema

* update docstrings

* raise error in service if call to set value is unsuccessful

* Update homeassistant/components/zwave_js/services.yaml

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

* Update homeassistant/components/zwave_js/services.yaml

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

* Update homeassistant/components/zwave_js/services.yaml

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

* Update homeassistant/components/zwave_js/services.yaml

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

* Update homeassistant/components/zwave_js/services.yaml

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

* Update homeassistant/components/zwave_js/services.yaml

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

* remove extra param to vol.Optional

* switch to set over list for nodes

* switch to set over list for nodes

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-02-23 11:35:11 -05:00
Martin Hjelmare
c94968d811 Catch more zwave_js errors (#46957) 2021-02-23 16:36:53 +01:00
Philip Allgaier
7a7147edcf Add stop tilt support to KNX (#46947) 2021-02-23 16:34:02 +01:00
Charles Garwood
3c35b6558b Return states list from zwave_js get_config_parameters websocket if available (#46954) 2021-02-23 09:31:47 -05:00
Bram Kragten
f0f752936b Update homeassistant services.yaml (#46952)
Add names and missing target to turn off service
2021-02-23 14:49:04 +01:00
Bram Kragten
afa91e886b Add description to tts and notify services (#46764)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-23 14:29:57 +01:00
Franck Nijhof
ea4bbd771f Add service names to previously enriched services (#46929)
Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2021-02-23 14:10:13 +01:00
Maciej Bieniek
593e7aea5a Bump accuweather to 0.1.0 (#46951) 2021-02-23 14:00:21 +01:00
Martin Hjelmare
6fe72b04eb Add zwave_js constant for add-on slug (#46950) 2021-02-23 13:24:07 +01:00
tkdrob
4fdb617e22 Clean up constants (#46924)
* Clean up constants

* fix imports
2021-02-23 09:56:44 +01:00
J. Nick Koston
08889a9819 Fix smaty fan typing (#46941) 2021-02-23 07:14:39 +01:00
J. Nick Koston
f33618d33d Add suggested area support to isy994 (#46927) 2021-02-22 21:27:33 -06:00
J. Nick Koston
bd87047ff2 Update tasmota to use new fan entity model (#45877) 2021-02-22 21:27:21 -06:00
J. Nick Koston
fb2a100f5e Add suggested area to tado (#46932)
I realized tado shows what we internally call `zone_name` as
the room name in the app.
2021-02-22 21:27:09 -06:00
uvjustin
f005c68630 Restore stream recorder functionality and add discontinuity support (#46772)
* Add discontinuity support to stream recorder

* Use same container options for both StreamOutputs

* Fix pts adjuster

* Remove redundant/incorrect duplicate hls segment check

* Use same StreamBuffer across outputs

* Remove keepalive check for recorder

* Set output video timescale explicitly

* Disable avoid_negative_ts
2021-02-23 10:37:19 +08:00
Raman Gupta
1cecf229b9 Add zwave_js set_config_parameter WS API command (#46910)
* add WS API command

* handle error scenario better

* fixes and remove duplicate catch

* make elif statement more compact

* fix conflict

* switch to str(err)
2021-02-22 20:34:47 -05:00
HomeAssistant Azure
580d25c622 [ci skip] Translation update 2021-02-23 00:05:06 +00:00
Raman Gupta
20ccec9aab Add zwave_js/get_log_config and zwave_js/update_log_config WS API commands (#46601)
* Add zwave_js.update_log_config service

* fix comment

* reduce lines

* move update_log_config from service to ws API call

* fix docstring

* Add zwave_js/get_log_config WS API command

* resolve stale comments

* remove transports since it will be removed from upstream PR

* add support to update all log config parameters since they could be useful outside of the UI for advanced users

* fix comment

* switch to lambda instead of single line validator

* fix rebase

* re-add ATTR_DOMAIN
2021-02-22 18:35:19 -05:00
Raman Gupta
9d7c64ec1a Add missing required=true to code slot field in zwave_js.set_lock_usercode service (#46931) 2021-02-22 23:42:12 +01:00
Charles Garwood
04e07d8b2c Add get_config_parameters websocket command to zwave_js (#46463)
* Add get_configuration_values websocket command to zwave_js

* Tweak return value

* Review comments and cleanup returned values

* Update test

* Rename to get_config_parameters

* Add get_configuration_values websocket command to zwave_js

* Rename to get_config_parameters

* fix test

* fix tests #2

* Add readable to metadata

Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
2021-02-22 17:03:38 -05:00
Bram Kragten
be33336d96 Update frontend to 20210222.0 (#46928) 2021-02-22 22:48:47 +01:00
Philip Allgaier
8ac9faef3b Description tweaks for automation services (#46926) 2021-02-22 21:36:38 +01:00
tkdrob
f0c7aff248 Clean up Mitemp_bt constants (#46881)
* Use core constants for acer_projector

* Use core constants for mitemp_bt

* remove acer changes
2021-02-22 21:12:00 +01:00
kpine
fb32c2e3a8 Test zwave_js GE 12730 fan controller device-specific discovery (#46840)
* Add test for GE 12730 fan controller device-specific discovery

* Adjust

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-22 10:56:23 -08:00
Nathan Spencer
e70d896e1b Add litterrobot integration (#45886) 2021-02-22 08:53:57 -10:00
Raman Gupta
668574c48f Add name and target filter to vizio entity service (#46916)
* Add name and target filter to vizio entity service

* Update homeassistant/components/vizio/services.yaml

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

* add selectors

* Update homeassistant/components/vizio/services.yaml

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

* Update homeassistant/components/vizio/services.yaml

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

* Update homeassistant/components/vizio/services.yaml

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

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-02-22 13:31:18 -05:00
Michal Knizek
5907129b25 Increase tado API polling interval to 5 minutes (#46915)
Polling interval of 15 seconds causes high load on tado servers and does
not provide enough value to warrant it. tado plans to introduce a rate
limit to prevent such misuse of the API, therefore the polling interval
needs to be increased to make sure the integration works well in the
future.
2021-02-22 19:30:23 +01:00
Raman Gupta
6e10b39d67 add name and target filter to zwave_js lock services.yaml (#46914) 2021-02-22 12:54:06 -05:00
Tobias Sauerwein
692942b399 Add service names to Netatmo services (#46909) 2021-02-22 18:50:01 +01:00
Franck Nijhof
c8ffac20b9 Add name to services (#46905) 2021-02-22 16:26:46 +01:00
tkdrob
75e04f3a71 Clean up constants (#46885) 2021-02-22 15:28:08 +01:00
Matt Zimmerman
81d011efc5 Add binary sensor to SmartTub for online status (#46889) 2021-02-22 04:10:00 -10:00
Franck Nijhof
603191702f Cleanup of possibily confusing comment in esphome (#46903) 2021-02-22 14:43:29 +01:00
Simone Chemelli
82a9dc620c Add device_class to Shelly cover domain (#46894)
Fix author
2021-02-22 14:31:22 +01:00
Jaroslav Hanslík
36b56586de Bump samsungtvws from 1.4.0 to 1.6.0 (#46878) 2021-02-22 13:58:32 +01:00
starkillerOG
338c07a56b Add Xiaomi Miio vacuum config flow (#46669) 2021-02-22 13:01:02 +01:00
Franck Nijhof
23c2bd4e69 Upgrade mypy to 0.812 (#46898) 2021-02-22 12:44:40 +01:00
Austin Mroczek
e5aef45bd7 Add usercode support to totalconnect (#39199)
* Add test for invalid usercode

* Add usercodes to totalconnect.

* Update existing tests for usercodes

* Fix tests

* Add test for invalid usercode

* Add usercodes to totalconnect.

* Update existing tests for usercodes

* Fix tests

* Remove YAML support

* Fix conflict

* Bump to total_connect_client 0.56

* Change Exception to HomeAssistantError

* Fix config_flow.py

* Simplify async_setup since no yaml

* Remove import from config flow and tests

* Add reauth and test for it.  Various other fixes.

* Fix pylint in __init__

* Show config yaml as deprecated

* separate config_flow and init tests

* Assert ENTRY_STATE_SETUP_ERROR in init test

* Add test for reauth flow

* Fix reauth and tests

* Fix strings

* Restore username and usercode with new passord

* Correct the integration name

* Update tests/components/totalconnect/test_config_flow.py

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

* Update tests/components/totalconnect/test_init.py

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

* Update .coveragerc

* Add test for invalid auth during reauth

* Bump total-connect-client to 0.57

* Fix .coveragerc

* More tests for usercodes

* Fix usercode test

* Reload config entry on reauth

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-22 10:39:10 +01:00
Anders Melchiorsen
d61d39de08 Handle ConditionError with multiple entity_id for state/numeric_state (#46855) 2021-02-22 08:11:59 +01:00
Jan-Willem Mulder
75b37b4c2a Expose locked attribute in deCONZ climate platform (#46814) 2021-02-22 07:53:58 +01:00
Matt Zimmerman
b2b476596b Add UV sensor to SmartTub (#46888) 2021-02-21 20:25:01 -10:00
Diogo Gomes
5c29adea3d Add KMTronic Integration (#41682)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-21 20:12:50 -10:00
Matt Zimmerman
5cd022a683 Add light platform to SmartTub (#46886)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-21 20:09:21 -10:00
Matthias Alphart
1a27af43cc Add KNX service exposure_register (#45257) 2021-02-21 19:38:17 -10:00
Matt Zimmerman
5d8390fd9b Add support for SmartTub filtration cycles (#46868) 2021-02-21 19:36:50 -10:00
Anders Melchiorsen
b1a24c8bbb Log the name of automations with condition errors (#46854) 2021-02-21 19:34:45 -10:00
Jonathan Keslin
b6b1e725c7 Add support for VeSync dimmer switches (#44713)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-21 19:16:13 -10:00
Matt Zimmerman
a8be5be376 Add switch platform and pump entity to SmartTub (#46842) 2021-02-21 18:48:27 -10:00
Matt Zimmerman
d32dbc4cdd Add support for SmartTub heat modes (#46876) 2021-02-21 18:46:54 -10:00
Diogo Gomes
0e44d61225 Add weather platform to template domain (#45031)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-21 18:08:00 -10:00
Matt Zimmerman
12c4db076c Add more sensors to SmartTub integration (#46839) 2021-02-21 17:40:23 -10:00
tkdrob
8330940996 Clean up acer_projector constants (#46880) 2021-02-21 20:31:09 -05:00
tkdrob
29c0696537 Clean up denonavr constants (#46883) 2021-02-21 20:30:23 -05:00
HomeAssistant Azure
871427f5f1 [ci skip] Translation update 2021-02-22 00:06:36 +00:00
Charles Garwood
50a07f6d25 Log zwave_js connection errors (#46867) 2021-02-21 22:42:06 +01:00
J. Nick Koston
c1ee9f7e4a Fix unmocked I/O in rituals_perfume_genie config flow test (#46862) 2021-02-21 20:47:38 +01:00
Anders Melchiorsen
d33a1a5ff8 Refine printing of ConditionError (#46838)
* Refine printing of ConditionError

* Improve coverage

* name -> type
2021-02-21 14:54:36 +01:00
J. Nick Koston
e2fd255a96 Cleanup recorder tests (#46836) 2021-02-21 09:52:41 +01:00
J. Nick Koston
d9ab1482bc Add support for preset modes in homekit fans (#45962) 2021-02-20 19:24:14 -08:00
Erik Montnemery
5e26bda52d Add support for disabling config entries (#46779) 2021-02-20 19:21:39 -08:00
Erik Montnemery
2d70806035 Add support for "alias" in script steps device, device_condition, and conditions (#46647)
Co-authored-by: Donnie <donniekarnsinsb@hotmail.com>
2021-02-20 19:21:09 -08:00
Garrett
3ad207a499 Add new Subaru integration (#35760)
Co-authored-by: On Freund <onfreund@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-20 16:52:44 -10:00
Steven Looman
efa339ca54 Allow upnp ignore SSDP-discoveries (#46592) 2021-02-20 16:26:17 -10:00
HomeAssistant Azure
0cb1f61deb [ci skip] Translation update 2021-02-21 00:07:04 +00:00
Tom Harris
f045c0512b Fix Insteon config flow with add X10 and device override (#45854) 2021-02-20 13:00:18 -10:00
Matt Zimmerman
115fe26642 Add smarttub sensor platform and state sensor (#46775) 2021-02-20 12:25:02 -10:00
puddly
2b6619f815 Bump zigpy-znp from 0.3.0 to 0.4.0 (#46828) 2021-02-20 16:57:16 -05:00
Milan Meulemans
4af619d383 Add Rituals Perfume Genie integration (#46218)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-20 11:55:23 -10:00
Eric Severance
6e52b26c06 Speed-up wemo discovery (#46821)
* Speed-up wemo discovery

* Use gather_with_concurrency to limit concurrent executor usage

* Comment fixup: asyncio executors -> executor threads
2021-02-20 11:16:50 -10:00
Martin Hjelmare
43a5852561 Fix habitica entry unload clean up (#46798)
* Fix habitica entry unload clean up

* Fix service remove

* Add entry setup and unload test

* Fix config flow tests

* Assert service
2021-02-20 20:59:59 +01:00
Eric Severance
fe4cf611f7 Disable update polling for Wemo when devices can push updates (#46806) 2021-02-20 09:37:48 -10:00
Eric Severance
806369ddc1 Bump pywemo to 0.6.3 (#46825) 2021-02-20 20:21:01 +01:00
Martin
6bb848455f Add open/close tilt support to KNX cover (#46583) 2021-02-20 09:09:43 -10:00
Matthias Alphart
194c0d2b08 knx-read-service (#46670) 2021-02-20 09:09:23 -10:00
Matthias Alphart
2cf46330b1 Enable KNX routing optional local_ip (#46133) 2021-02-20 09:08:59 -10:00
marecabo
c6c0e2416c Validate icon and device_class of ESPHome sensor entities (#46709) 2021-02-20 13:05:35 -06:00
Anders Melchiorsen
9f4874bb81 Explicitly create_task for asyncio.wait (#46325) 2021-02-20 19:57:46 +01:00
Chris Talkington
cf69415272 Implement suggested area in roku (#46819)
* implement suggested area in roku

* Update const.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py
2021-02-20 12:57:24 -06:00
kpine
2ae790283c Detect iBlinds v2.0 switch value as a cover not light (#46807)
* Remove unused "fibaro_fgs222" discovery hint

* Simplify multilevel switch current value discovery schema

* Force iBlinds v2.0 devices to be discovered as cover entities

* Rename discovery test file
2021-02-20 19:52:23 +01:00
Matthias Alphart
2940df09e9 Update xknx to 0.17.0 (#46809) 2021-02-20 08:45:04 -10:00
Michael
da1808226e change log level to info (#46823) 2021-02-20 08:42:37 -10:00
uvjustin
39da0dc409 Add rtsp transport options to generic camera (#46623)
* Add rtsp transport options to generic camera
2021-02-21 02:11:50 +08:00
J. Nick Koston
adf480025d Add support for bond up and down lights (#46233) 2021-02-20 08:03:40 -10:00
Chris Talkington
65e8835f28 Update rokuecp to 0.8.0 (#46799)
* update rokuecp to 0.8.0

* Update requirements_test_all.txt

* Update requirements_all.txt
2021-02-20 10:59:22 -06:00
Fabian Affolter
b5c7493b60 Upgrade TwitterAPI to 2.6.6 (#46812) 2021-02-20 17:26:21 +01:00
Allen Porter
4aa4f7e285 Rollback stream StreamOutput refactoring in PR#46610 (#46684)
* Rollback PR#46610

* Update stream tests post-merge
2021-02-20 06:49:39 -08:00
Raman Gupta
788134cbc4 Bump zwave-js-server-python to 0.18.0 (#46787)
* updates to support changes in zwave-js-server-python

* bump lib version

* use named arguments for optional args

* re-add lost commits
2021-02-20 09:50:00 +01:00
Anders Melchiorsen
26ce316c18 Do not trigger when numeric_state is true at startup (#46424) 2021-02-20 09:11:36 +01:00
J. Nick Koston
b775a0d796 Run homekit service calls in async since the server is now async (#45859)
* Simplify homekit runs and service calls

Now that the homekit server is async, call_service
and run are running in the Home Assistant event loop

* remove comment

* remove another comment
2021-02-19 21:34:52 -10:00
J. Nick Koston
41332493b5 Add suggested area support to Sonos (#46794) 2021-02-19 21:28:52 -10:00
J. Nick Koston
9b69549f73 Recover and restart the recorder if the sqlite database encounters corruption while running (#46612) 2021-02-19 21:26:24 -10:00
J. Nick Koston
5b0b01d727 Implement suggested areas in bond (#45942)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-19 21:06:43 -10:00
J. Nick Koston
6707496c5d Update alexa for new fan model (#45836) 2021-02-19 22:45:14 -08:00
J. Nick Koston
5b95f61fd3 Update smarty to use new fan entity model (#45879) 2021-02-19 22:38:45 -08:00
J. Nick Koston
773a202777 Implement percentage step sizes in HomeKit (#46722) 2021-02-19 22:37:12 -08:00
J. Nick Koston
749883dc62 Implement suggested area in lutron_caseta (#45941) 2021-02-19 20:24:49 -10:00
J. Nick Koston
500cb17298 Ensure HomeAssistant can still restart when a library file is missing (#46664) 2021-02-19 22:22:48 -08:00
J. Nick Koston
22dbac259b Ensure recorder shuts down cleanly on restart before startup is finished (#46604) 2021-02-19 22:18:21 -08:00
J. Nick Koston
4078a8782e Add suggested area to hunterdouglas_powerview (#46774) 2021-02-19 22:17:00 -08:00
J. Nick Koston
11277faa93 Add suggested area to nexia (#46776) 2021-02-19 20:01:22 -10:00
J. Nick Koston
2807cb1de7 Implement suggested area for netatmo (#46802) 2021-02-19 21:57:37 -08:00
J. Nick Koston
3e334a4950 Fix typing of fan speed count and steps (#46790) 2021-02-19 19:57:21 -10:00
J. Nick Koston
0e9148e239 Add suggested area support to nuheat (#46801) 2021-02-19 21:57:02 -08:00
Erik Montnemery
54cf954353 Add device_entities template function/filter (#46406) 2021-02-19 21:50:59 -08:00
J. Nick Koston
2f3c2f5f4d Add support for using a single endpoint for rest data (#46711) 2021-02-19 21:44:15 -08:00
J. Nick Koston
71586b7661 Cleanup inconsistencies in zha fan and make it a bit more dry (#46714)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-19 19:42:14 -10:00
J. Nick Koston
bb7e4d7daa Implement suggested_area in the device registry (#45940)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-19 19:34:33 -10:00
Eric Severance
e6125a1e4e Bump pywemo to 0.6.2 (#46797) 2021-02-20 03:49:39 +01:00
HomeAssistant Azure
fd60d4273b [ci skip] Translation update 2021-02-20 00:08:25 +00:00
Raman Gupta
47dcd2bf32 Format zwave_js dump as json (#46792) 2021-02-19 18:44:15 -05:00
Raman Gupta
4d23ffacd1 Add zwave_js thermostat fan mode and fan state support (#46793)
* add thermostat fan mode and fan state support

* return when fan mode is not supported

* use get just in case

* validate state key is in states so we dont have to use get

* pylint
2021-02-20 00:20:10 +01:00
Denise Yu
32bec5ea63 Update GitHub Issue Form template (#46791)
This PR fixes the bug report template!

Details: https://gh-community.github.io/issue-template-feedback/changes/#what-do-i-need-to-do
2021-02-19 21:23:34 +01:00
Andreas Oetken
250327fac4 Allow multiple recipients for XMPP (#45328)
* recipient is a string list instead of a single string now
* this does NOT break existing automations/etc using this component
2021-02-19 15:56:20 +01:00
Joakim Sørensen
3e82509263 Use string instead of slug for add-on slug validation (#46784) 2021-02-19 15:23:59 +01:00
Franck Nijhof
6ad7020f99 Add Home Assistant color (#46751) 2021-02-19 13:30:27 +01:00
Tobias Sauerwein
d2a187a57b Bump RMVtransport to 0.3.1 (#46780) 2021-02-19 13:28:00 +01:00
Anders Melchiorsen
bfea7d0baa Raise ConditionError for and/or/not errors (#46767) 2021-02-19 13:15:30 +01:00
Anders Melchiorsen
e7e3e09063 Raise ConditionError for zone errors (#46253)
* Raise ConditionError for zone errors

* Do not test missing state

* Handle multiple entities/zones
2021-02-19 13:14:47 +01:00
dependabot[bot]
40068c2f1b Bump actions/stale from v3.0.16 to v3.0.17 (#46777) 2021-02-19 08:57:28 +01:00
J. Nick Koston
0ed0c7c026 Fix backwards compatibility with vesync fans (#45950) 2021-02-19 08:54:40 +01:00
J. Nick Koston
f2b303d509 Implement percentage step sizes for fans (#46512)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-18 21:05:09 -10:00
shbatm
5df46b60e8 Fix flip-flopped substitutions in Custom Version Type Warning message. (#46768) 2021-02-19 03:00:14 +01:00
Matt Zimmerman
da51e23514 Address late smarttub review (#46703)
* _config -> config

* remove unused string

* remove entity tests

* replace unit tests with integration tests using the core

* refactor polling to use asyncio.gather

* remove redundant component init

* remove gather in favor of simple loop

* use async_fire_time_changed instead of async_update_entity

* use hass.config_entries.async_setup instead of calling smarttub.async_setup_entry directly

* replace stray smarttub.async_setup_entry call

* async_unload_entry -> hass.config_entries.async_unload

* remove broken test
2021-02-19 01:18:02 +01:00
HomeAssistant Azure
d9ce7db554 [ci skip] Translation update 2021-02-19 00:03:06 +00:00
Franck Nijhof
52a9a66d0f Upgrade cryptography to 3.3.2 (#46759) 2021-02-18 10:30:54 -10:00
Eric Severance
76e5f86b76 Add @esev as codeowner for wemo (#46756) 2021-02-18 19:08:48 +01:00
Ellis Michael
8b97f62a8e Allow LIFX bulbs to fade color even when off (#46596)
LIFX bulbs have the capability to fade their color attributes even while the bulb is off. When the bulb is later turned on, the fade will continue as if the bulb was on all along.
2021-02-18 18:40:16 +01:00
Franck Nijhof
3353c63f8f Upgrade sentry-sdk to 0.20.3 (#46754) 2021-02-18 18:25:15 +01:00
Franck Nijhof
01ebb156a0 Add selectors to Home Assistant service definitions (#46733)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2021-02-18 18:19:49 +01:00
Franck Nijhof
782863ca87 Ensure pre-commit's hassfest triggers on service file changes (#46753) 2021-02-18 18:17:09 +01:00
Franck Nijhof
b6f374b507 Add selectors to Twente Milieu service definitions (#46748) 2021-02-18 18:05:03 +01:00
Franck Nijhof
113059c1c7 Add selectors to HomeKit service definitions (#46745) 2021-02-18 17:32:48 +01:00
AdmiralStipe
e000b9c813 Added Slovenian language (sl-si) to Microsoft TTS (#46720) 2021-02-18 17:16:45 +01:00
Franck Nijhof
a80921ab65 Minor service definition tweaks (#46741) 2021-02-18 17:14:36 +01:00
Franck Nijhof
b9d5b3c34e Add selectors to Conversation, Image Processing and Number service definitions (#46746) 2021-02-18 17:13:59 +01:00
Franck Nijhof
8b69608242 Add selectors to Browser, Recorder, Shopping List service definitions (#46749) 2021-02-18 17:06:25 +01:00
Franck Nijhof
208af0367a Add selectors to Toon service definitions (#46750) 2021-02-18 17:02:45 +01:00
Franck Nijhof
81c7b3b9c9 Add selectors to Media Player service definitions (#46739) 2021-02-18 17:02:18 +01:00
Franck Nijhof
a164a6cf80 Add selectors to Hue service definitions (#46747) 2021-02-18 17:01:29 +01:00
Philip Allgaier
cdc4f634d1 Fix typo in Tesla Powerwall strings (#46752) 2021-02-18 17:01:22 +01:00
uvjustin
3c7db7bd5b Skip repeated segment in stream recorder (#46701)
* Skip repeated segment in stream recorder

* Allow for multiple overlap
2021-02-18 17:00:26 +01:00
Franck Nijhof
a5ac338c74 Add selectors to Timer service definitions (#46744) 2021-02-18 16:54:20 +01:00
Franck Nijhof
4b6b03e33e Add selectors to Lock service definitions (#46743) 2021-02-18 16:51:13 +01:00
Franck Nijhof
e57bfe05d5 Add selectors to Color Extractor service definitions (#46742) 2021-02-18 16:43:34 +01:00
Franck Nijhof
cd6a83f009 Add selectors to MQTT service definitions (#46738) 2021-02-18 16:37:15 +01:00
Franck Nijhof
3f96ebeae5 Add selectors to Logger, System Log & Logbook service definitions (#46740) 2021-02-18 16:33:29 +01:00
Franck Nijhof
62e0949ea9 Add selectors to Z-Wave JS service definitions (#46737) 2021-02-18 16:24:04 +01:00
Franck Nijhof
0f4433ce14 Add advanced selectors to Climate service definitions (#46736) 2021-02-18 16:23:10 +01:00
Franck Nijhof
b4136c3585 Add selectors to WLED service definitions (#46731) 2021-02-18 16:16:13 +01:00
Franck Nijhof
c0cdc0fe79 Add advanced selectors to Light service definitions (#46732) 2021-02-18 16:15:16 +01:00
Franck Nijhof
1d62bf8875 Add selectors to Script service definitions (#46730) 2021-02-18 16:14:16 +01:00
Franck Nijhof
74720d4afd Add selectors to Vacuum service definitions (#46728) 2021-02-18 16:13:52 +01:00
Tobias Sauerwein
bfa171f802 Add selectors to Netatmo services (#46574)
* Add selectors

* Fix schedul selector

* Update homeassistant/components/netatmo/services.yaml

Co-authored-by: Bram Kragten <mail@bramkragten.nl>

* Update homeassistant/components/netatmo/services.yaml

Co-authored-by: Bram Kragten <mail@bramkragten.nl>

* Update services.yaml

* Added required field

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2021-02-18 15:01:54 +01:00
Jesse Campbell
12477c5e46 Fix missing color switch specific device class for Z-Wave JS driver >6.3 (#46718) 2021-02-18 07:58:43 -05:00
Franck Nijhof
616e8f6a65 Add selectors to Scene service definitions (#46729) 2021-02-18 13:56:15 +01:00
Allen Porter
88d143a644 Add discontinuity support to HLS streams and fix nest expiring stream urls (#46683)
* Support HLS stream discontinuity.

* Clarify discontinuity comments

* Signal a stream discontinuity on restart due to stream error

* Apply suggestions from code review

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Simplify stream discontinuity logic
2021-02-18 20:26:02 +08:00
Franck Nijhof
62cfe24ed4 Add advanced service parameter flag (#46727) 2021-02-18 12:59:46 +01:00
Franck Nijhof
82934b31f8 Add selectors to Counter service definitions (#46633) 2021-02-18 12:59:29 +01:00
Álvaro Fernández Rojas
4083b90138 ubus: switch to pypi library (#46690)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-02-18 12:33:21 +01:00
Franck Nijhof
0181cbb312 Upgrade and constrain httplib2>=0.19.0 (#46725) 2021-02-18 12:31:07 +01:00
Franck Nijhof
399777cfa8 Add selectors to Alarm Control Panel service definitions (#46626) 2021-02-18 12:26:05 +01:00
Franck Nijhof
ae643bfaf3 Add selectors to Climate service definitions (#46632) 2021-02-18 12:25:55 +01:00
Franck Nijhof
bc1cb8f0a0 Add selectors to Automation service definitions (#46629) 2021-02-18 12:25:25 +01:00
Franck Nijhof
e45fc4562b Add selectors to Cover service definitions (#46634)
Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
2021-02-18 12:25:16 +01:00
Franck Nijhof
2dfbd4fbcf Add selectors to Fan service definitions (#46639) 2021-02-18 12:24:58 +01:00
Franck Nijhof
4e93a0c774 Add selectors to Downloader service definitions (#46638) 2021-02-18 12:24:50 +01:00
Franck Nijhof
c8c3ce4172 Add selectors to Switch service definitions (#46635) 2021-02-18 12:24:42 +01:00
Franck Nijhof
dec2eb36fd Add selectors to Camera service definitions (#46630) 2021-02-18 12:24:04 +01:00
Franck Nijhof
9f3fdb1b68 Add selectors to Alert service definitions (#46627) 2021-02-18 12:23:50 +01:00
Franck Nijhof
da662c4890 Add selectors to Input * service definitions (#46652) 2021-02-18 12:23:30 +01:00
J. Nick Koston
39785c5cef Switch ssdp to be async by using async_upnp_client for scanning (#46554)
SSDP scans no longer runs in the executor

This is an interim step that converts the async_upnp_client
response to netdisco's object to ensure fully backwards
compatibility
2021-02-18 11:00:11 +01:00
uvjustin
e9334347eb Bump pylutron 0.2.7 (#46717) 2021-02-18 07:54:10 +01:00
HomeAssistant Azure
28ffa97635 [ci skip] Translation update 2021-02-18 00:07:45 +00:00
Eric Severance
2ac075bb37 Perform wemo state update quickly after a timeout (#46702)
* Perform state update quickly after a timeout

* with async_timeout.timeout(...) -> async with async_timeout.timeout(...)
2021-02-18 00:38:08 +01:00
Eric Severance
8bee3cda37 Centralize wemo exception handling (#46705) 2021-02-17 23:36:39 +01:00
J. Nick Koston
b2df9aaaf1 Update zha to use new fan entity model (#45758)
* Update zha to use new fan entity model

* fixes

* tweaks for zha

* pylint

* augment test cover
2021-02-17 13:03:11 -05:00
Gaetan Semet
4ab0151fb1 Discover HRT4-ZW / SRT321 SetPoint in zwave_js (#46625)
Missing a specific class to allow discovery of the setpoint command.

Fix #46570

Signed-off-by: Gaetan Semet <gaetan@xeberon.net>
2021-02-17 15:06:16 +01:00
Tobias Sauerwein
1e9483a0e9 Bump RMVtransport to v0.3.0 (#46691) 2021-02-17 13:23:15 +01:00
Eric Severance
eb3e5cb67f Remove calls to wemo.reconnect_with_device (#46646) 2021-02-17 13:17:31 +01:00
Eric Severance
f7c0fc5553 Increase async_timeout for wemo update polling (#46649) 2021-02-17 13:17:16 +01:00
tkdrob
facbd73130 Clean up xbee (#46549) 2021-02-17 13:15:13 +01:00
ollo69
fb73768164 Fix Tuya Option Flow tests (#46651) 2021-02-17 10:43:12 +01:00
Allen Porter
efb172cedd Fix flaky stream tests due to race in idle timeout callback (#46687) 2021-02-17 01:05:50 -08:00
badguy99
971e27dd80 Home connect use consts (#46659)
* Use more consts

* black

* re-black with black, version 20.8b1
2021-02-17 09:44:37 +01:00
starkillerOG
ddf1f88b65 Fix multiple motion blinds gateways (#46622)
local variable multicast was undefined for a second or more gateway that was setup.
2021-02-17 00:25:00 -08:00
Eric Severance
94131df5e0 Remove exception handling for AttributeError in wemo (#46674) 2021-02-17 00:07:22 -08:00
Ilja Leiko
8c72cb6163 Add sensors to fetch Habitica tasks (#38910)
* Adding sensors to fetch habitica tasks

* PR changes and rebase

* Fixing pylint

* Fixing failed test dependancy

* Generating requirements

* Apply suggestions from code review

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

* PR changes

* Update homeassistant/components/habitica/config_flow.py

Thank you, @MartinHjelmare

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

* PR Changes

* Fix failing test

* Update tests/components/habitica/test_config_flow.py

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

* Fixing linting and imports

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-17 09:04:11 +01:00
Allen Porter
56f32196bd Add back block_until_done calls removed in PR 46610 (#46680) 2021-02-16 22:05:20 -08:00
Paulus Schoutsen
b956a571f4 Fix Cloud Google/Alexa check (#46681) 2021-02-17 06:49:53 +01:00
David McClosky
58f6db0127 Fix media_pause in vlc_telnet (#46675)
The underlying python-telnet-vlc pause() function toggles play/pause, so
we need to check our state before calling it.
2021-02-17 06:39:46 +01:00
Matt Zimmerman
58499946ed Add SmartTub integration (#37775)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-16 19:37:56 -10:00
Allen Porter
4236f6e5d4 Fix stream keepalive on startup (#46640)
This was accidentally dropped in a previous PR that refactored the interaction
between stream and camera. This is difficult to test from the existing
preload stream tests, so leaving untested for now.
2021-02-16 20:46:44 -08:00
HomeAssistant Azure
318cbf2913 [ci skip] Translation update 2021-02-17 00:08:46 +00:00
Ville Skyttä
b38af0821b Fix version of pip in tox (#46656) 2021-02-16 12:26:41 -10:00
Eric Severance
e4496ed1e3 Fix KeyError in comfoconnect percentage (#46654) 2021-02-16 11:07:18 -10:00
Allen Porter
aaecd91407 Fix exception in stream idle callback (#46642)
* Fix exception in stream idle callback

Fix bug where idle timeout callback fails if the stream previously exited.

* Add a test for stream idle timeout after stream is stopped.

* Add clarifying comment to idle timer clear method

* Clear hls timer only on stop
2021-02-16 12:10:26 -08:00
marecabo
c45ce86e53 Do not provide icon if device class is set in ESPHome config (#46650) 2021-02-16 20:36:32 +01:00
Mark Coombes
960b5b7d86 Fix climate hold bug in ecobee (#46613) 2021-02-16 07:06:20 -10:00
Allen Porter
08201d146b Separate HLS logic out of core StreamOutput to prepare for discontinuity (#46610)
Separate the HLS stream view logic out of StreamOutput since the hls
stream view is about to get more complex to track discontinuities. This
makes the idle timeout, shutdown, and coupling between hls and record
more explicit.
2021-02-16 06:59:43 -08:00
tkdrob
68e78a2ddc Remove unnecessary constants from universal (#46537) 2021-02-16 09:49:31 -05:00
Martin Hjelmare
f0e9ef421c Fix vlc_telnet state update (#46628)
* Clean up

* Add debug logs

* Fix info lookup

* Handle more errors

* Guard get length and time
2021-02-16 15:48:06 +01:00
starkillerOG
9d8ba6af96 Use update coordinator for Xioami Miio subdevices (#46251)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-16 15:28:25 +01:00
tkdrob
add0d9d3eb Use core constants for yeelight (#46552) 2021-02-16 09:00:09 -05:00
David McClosky
713544e5eb Bump python-vlc-telnet to 2.0.1 (#46608)
Includes corresponding Home Assistant changes to avoid introducing
regressions.
2021-02-16 12:32:53 +01:00
Franck Nijhof
a6912277eb Remove defunct CoinMarketCap integration (#46615) 2021-02-16 11:00:08 +01:00
Joakim Plate
0bfcd5e1ee Use explicit open/close for covers (#46602) 2021-02-16 10:26:38 +01:00
Bram Kragten
6986fa4eb6 Add target to services.yaml (#46410)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-02-16 09:35:27 +01:00
J. Nick Koston
20d93b4b29 Remove support for migrating pre-config entry homekit (#46616)
HomeKit pairings and accessory ids from versions 0.109 and earlier are no longer
migrated on upgrade. Users upgrading directly to 2021.3 from 0.109
and older should upgrade to 2021.2 first if they wish to preserve
HomeKit configuration and avoid re-pairing the bridge.

This change does not affect upgrades from 0.110 and later.
2021-02-16 08:37:43 +01:00
marecabo
1e172dedf6 Add device_class attribute to ESPHome sensor entities (#46595) 2021-02-15 20:19:31 -10:00
ollo69
3c26235e78 Bump tuyaha to 0.0.10 and fix set temperature issues (#45732) 2021-02-15 16:20:45 -10:00
HomeAssistant Azure
1bb535aa67 [ci skip] Translation update 2021-02-16 00:03:57 +00:00
tkdrob
2a7d2868be Use core constants for xiaomi_aqara (#46551) 2021-02-16 00:14:27 +01:00
Franck Nijhof
ea47e5d8af Upgrade sentry-sdk to 0.20.2 (#46590) 2021-02-15 22:02:58 +01:00
J. Nick Koston
6f4df7e52e Use shared clientsession for sense (#46419) 2021-02-15 10:35:58 -10:00
Kevin Fronczak
e3ae3cfb83 Upgrade blinkpy to 0.17.0 (#46581) 2021-02-15 20:24:42 +01:00
starkillerOG
2f9fda73f4 Add config flow to Xiaomi Miio switch (#46179) 2021-02-15 20:11:27 +01:00
Joakim Sørensen
68809e9f43 Fix issue with timeout and error response (#46584) 2021-02-15 20:08:08 +01:00
Allen Porter
89aaeb3c35 Refactor stream worker responsibilities for segmenting into a separate class (#46563)
* Remove stream_worker dependencies on Stream

Removee stream_worker dependencies on Stream and split out the logic
for writing segments to a stream buffer.

* Stop calling internal stream methods

* Update homeassistant/components/stream/worker.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Reuse self._outputs when creating new streams

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
2021-02-15 09:52:37 -08:00
Niels Mündler
f2ca4acff0 Limit fronius error messages on failed connection (#45824)
* Do not print several error messages on failed connection

* Change wrapping of exception, implement available

* Simplify exception flow

* Remove unnecessary init

* Add available property to actual entities

* Rebase and formatting
2021-02-15 18:28:28 +01:00
Joakim Sørensen
886067a327 Add websocket handlers to hassio (#46571) 2021-02-15 18:18:45 +01:00
Shay Levy
a5d943b5f1 MQTT cover Bugfixes (#46479)
* MQTT cover Bugfixes

* Remove period
2021-02-15 17:33:42 +01:00
uvjustin
9917bb76fb Use httpx in generic camera (#46576)
* Use httpx in generic camera

* Remove commented out code
2021-02-15 16:37:53 +01:00
J. Nick Koston
c5b9ad83c2 Log ffmpeg errors for homekit cameras (#46545) 2021-02-15 12:39:51 +01:00
Lukáš Polívka
bed29fd4b1 Convert better from byte value to percentage in futurenow (#45042)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-02-15 12:33:13 +01:00
Erik Montnemery
c8e04ee960 Bump hatasmota to 0.2.9 (#46561) 2021-02-15 12:16:28 +01:00
Erik Montnemery
5a907ebafc Remove @home-assistant/core from MQTT codeowners (#46562) 2021-02-15 11:51:56 +01:00
Allen Porter
3f4828f5e1 Add additional stream HLS payload tests (#46517)
* Add tests for HLS playlist view details

* Add tests for hls playlist payloads

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

* Update tests/components/stream/test_hls.py

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>

Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
2021-02-14 20:32:37 -08:00
Raman Gupta
cfdaadf5d9 Allow users to set device class for universal media player (#46550) 2021-02-14 17:05:23 -10:00
tkdrob
06c8fc6ef1 Use core constants for wemo and whois (#46548) 2021-02-14 20:14:48 -05:00
Raman Gupta
a3b733f1ec Add additional supported feature support to universal media player (#44711)
* add additional supported feature support to universal media player

* add missing services
2021-02-14 19:35:14 -05:00
HomeAssistant Azure
0af634a9f8 [ci skip] Translation update 2021-02-15 00:14:36 +00:00
J. Nick Koston
12abe5707d Fix typing on tuya fan percentage (#46541) 2021-02-14 17:05:31 -05:00
tkdrob
7e88487800 Use core constants for wemo (#46544) 2021-02-14 17:01:53 -05:00
tkdrob
a5f372018c Use core constants for volvooncall (#46543) 2021-02-14 17:01:18 -05:00
tkdrob
f1c792b4c8 Use core constants for uvc (#46538) 2021-02-14 22:21:55 +01:00
J. Nick Koston
aa061e5818 Fix variable name from script refactoring (#46503) 2021-02-14 10:52:18 -10:00
tkdrob
1444afbe5a Use core constants for vasttrafik (#46539) 2021-02-14 21:47:08 +01:00
J. Nick Koston
c9df42b69a Add support for pre-filtering events to the event bus (#46371) 2021-02-14 09:42:55 -10:00
Anders Melchiorsen
f8f86fbe48 Do not trigger when template is true at startup (#46423) 2021-02-14 19:54:11 +01:00
jan iversen
855bd653b4 Update modbus test harness (#44892)
* Update test harness to allow discovery_info testing.

This is a needed update, before the whole config is converted
to the new structure, because it allows test of both the old
and new configuration style.

The following changes have been made:
- Combine test functions into a single base_test.
- Prepare for new mock by combining the 2 common test functions into one.
- Change mock to be only modbusHub
- Do not replace whole modbus class, but only the class that
  connects to pymodbus (modbusHub). This allows test of modbus
  configurations and not only component configurations, and is needed
  when testing discovery activated platform.
- Add test of climate.
  Warning this is merely test of discovery,
  the real cover tests still needs to be added.
- Add test of cover.
  Warning this is merely test of discovery,
  the real cover tests still needs to be added.

* Update comment for old config

* Do not use hass.data, but instead patch pymodbus library.

* Add test of configuration (old/new way as available).

* Move assert to test function.

Make assert more understandable by removing it from the helper.

add base_config_test (check just calls base_test) to make it clear if
test is wanted or just controlling the config.

* use setup_component to load Modbus since it is an integration.

* Optimized flow in test helper.
2021-02-14 17:40:30 +01:00
javicalle
9777608861 Add myself to RFLink codeowners (#46511) 2021-02-14 16:24:00 +01:00
Tom Parker-Shemilt
27d16af36b Don't allow recursive secrets loading (#41812)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-14 14:23:31 +01:00
tkdrob
a5a45f29e2 Cleanup unused loggers (#46510) 2021-02-14 13:46:58 +01:00
Allen Porter
10e88cd23d Improve nest defense against broken event loop on shutdown (#46494) 2021-02-14 13:36:05 +01:00
kpine
dfa973f9ef Add barrier covers to zwave_js integration (#46379) 2021-02-14 13:24:29 +01:00
Andrey Kupreychik
accba85e35 Add keenetic_ndms2 config flow (#38353) 2021-02-14 13:09:19 +01:00
tkdrob
2c3a2bd35e Clean up template (#46509) 2021-02-14 12:16:30 +01:00
Khole
811e1cc3e6 Add hive hub 360 sensors (#46320) 2021-02-14 11:39:31 +01:00
tkdrob
3ea02e646d Use core constants for trend (#46521) 2021-02-14 11:30:40 +01:00
tkdrob
294d3c6529 Use core constants for thethingsnetwork (#46520) 2021-02-14 11:28:55 +01:00
tkdrob
854504cccc Use core constants for switcher_kis (#46507) 2021-02-14 10:21:53 +01:00
tkdrob
c76758f775 Use core constants for temper (#46508) 2021-02-14 10:21:02 +01:00
MatthewFlamm
7a401d3d5d Fix missing condition in nws (#46513) 2021-02-13 17:35:57 -10:00
J. Nick Koston
1845f69729 Update tuya for new fan entity model (#45870) 2021-02-13 16:23:19 -10:00
HomeAssistant Azure
17a4678906 [ci skip] Translation update 2021-02-14 00:06:28 +00:00
tkdrob
dfe173d619 Use core constants for rmvtransport (#46502) 2021-02-13 18:22:28 -05:00
tkdrob
5db4d78dc7 Use core constants for rpi_rf (#46500) 2021-02-13 18:21:42 -05:00
tkdrob
84488b9c28 Use core constants for sma (#46501) 2021-02-13 18:21:15 -05:00
Franck Nijhof
7148071be8 Improve Elgato code quality (#46505) 2021-02-13 23:50:25 +01:00
Álvaro Fernández Rojas
eecf07d7df Add AEMET OpenData integration (#45074)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-13 21:53:28 +01:00
J. Nick Koston
2f40f44670 Update HAP-python to 3.3.0 for homekit (#46497)
Changes: https://github.com/ikalchev/HAP-python/compare/v3.2.0...v3.3.0
2021-02-13 20:30:55 +01:00
ollo69
f38b06ed6d Add Asuswrt Config Flow and Scanner Entities (#46468)
* Add Asuswrt config flow (#43948)

* Add AsusWrt Scanner Entity (#44759)

* Add Scanner Entity

- device tracker entity changed from "DeviceScanner" to "ScannerEntity"
- sensors recoded to use "router" class
- config entry review to allow multiple entity (for future use)

* Force checks

* Removed new option and change sensors

* Update test_sensor.py

* Requested changes

* Removed router unique-id

* Update last_activity attr only when available

* Add Options for AsusWRT Scanner Entity (#44808)

* Add Asuswrt config flow (#43948)

* Add AsusWrt Scanner Entity (#44759)

* Add Scanner Entity

- device tracker entity changed from "DeviceScanner" to "ScannerEntity"
- sensors recoded to use "router" class
- config entry review to allow multiple entity (for future use)

* Force checks

* Removed new option and change sensors

* Update test_sensor.py

* Requested changes

* Removed router unique-id

* Update last_activity attr only when available

* Add Options for Scanner Entity

* Fix isort

* Removed "Track New" option

* Add Options for Scanner Entity

* Fix isort

* Removed "Track New" option

* Add test for all the options in the config flow
2021-02-13 19:17:06 +01:00
Shay Levy
6f261a09b0 Remove deprecated xfinity integration (#46484) 2021-02-13 14:07:55 +01:00
Shay Levy
52c5bc0a99 Remove deprecated Synology integration (#46482) 2021-02-13 13:23:40 +01:00
Franck Nijhof
bc1daf1802 None optional hass typing in FlowHandler (#46462)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-13 13:21:37 +01:00
Rob Bierbooms
1244fb4152 Bump dsmr_parser to 0.28, configure keep_alive_interval (#46464) 2021-02-13 13:19:38 +01:00
tkdrob
13b881acfc Use core constants for simplepush (#46465) 2021-02-13 13:07:11 +01:00
tkdrob
621c8e700b Use core constants for starline (#46471) 2021-02-13 12:33:13 +01:00
Maciej Bieniek
b8584cab5d Remove unnecessary gethostbyname() from Shelly integration (#46483) 2021-02-13 12:27:54 +01:00
tkdrob
820a260252 Use core constants for homeassistant triggers (#46472) 2021-02-13 12:07:42 +01:00
tkdrob
2ecac6550f Use core constants for dynalite (#46044) 2021-02-13 12:06:20 +01:00
On Freund
1a8cdba9af Gracefully handle missing A/V info in Onkyo integration (#46228)
* Gracefully handle missing A/V info

* Do not attempt to query A/V info if unsupported

* Rename _parse_onkyo_tuple
2021-02-13 12:03:49 +01:00
HomeAssistant Azure
8bacfcec50 [ci skip] Translation update 2021-02-13 00:03:13 +00:00
tkdrob
ae45d7dade Use core constants for rflink (#46440) 2021-02-12 23:32:56 +01:00
tkdrob
da4cb6d294 Use core constants for somfy (#46466) 2021-02-12 23:25:15 +01:00
J. Nick Koston
bc8a52038b Fix homekit migration not being awaited (#46460) 2021-02-12 08:45:19 -10:00
Franck Nijhof
dd8d4471ec Postponed evaluation of annotations for integrations (#46455) 2021-02-12 18:54:00 +01:00
Maciej Bieniek
061d9c5293 Bump brother library to version 0.2.1 (#46421) 2021-02-12 18:11:35 +01:00
Franck Nijhof
362a1cd9bd Upgrade sentry-sdk to 0.20.1 (#46456) 2021-02-12 17:59:08 +01:00
Erik Montnemery
f1714dd541 Make some Area and EntityRegistry member functions callbacks (#46433) 2021-02-12 17:00:35 +01:00
jan iversen
8418489345 Allow Modbus "old" config or discovery_info as configuration (#46445) 2021-02-12 16:33:18 +01:00
tkdrob
f929aa222f Use core constants for roomba (#46441) 2021-02-12 16:09:36 +01:00
Christophe Painchaud
c3b460920e Enable TCP KEEPALIVE to RFLink for dead connection detection (#46438)
RFLink compoment when used over TCP protocol suffers a major issue : it doesn't
know when connection is timeout or lost because there is no keepalive mechanism
so it can stay disconnected forever.
I wrote a small patch for the underlying 'python-rflink' library which will enable
TCP KEEPPAlive. On HASSIO side it will just add an optional argument in yml file
which will propagate to python-rflink caller.
2021-02-12 15:58:59 +01:00
David Dix
a8beae3c51 Add apple tv remote delay command (#46301)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-12 14:58:01 +01:00
Robert Kingston
479ff92acb Fix cmus remote disconnections (#40284)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-12 13:31:36 +01:00
Marcel van der Veldt
b7dd9bf58f Enhance platform discovery for zwave_js (#46355) 2021-02-12 13:29:11 +01:00
tkdrob
74f5f8976f Use core constants for rpi_gpio (#46442) 2021-02-12 12:15:30 +01:00
Erik Montnemery
190a9f66cb Improve MQTT timeout print (#46398) 2021-02-12 11:43:44 +01:00
tkdrob
0d2f5cf7ed Use core constants for plugwise (#46414) 2021-02-12 11:42:34 +01:00
Franck Nijhof
9b7c39d20b Postponed evaluation of annotations in core (#46434)
* Postponed evaluation of annotations in core

* Remove unneeded future
2021-02-12 10:58:20 +01:00
tkdrob
910c034613 Use core constants for recollect_waste (#46416) 2021-02-12 09:28:11 +01:00
Joakim Plate
a67b598971 Correct errors found on post merge review in philips_js (#46428)
* Correct missed review changes

* Adjust return value for device trigger

* Drop cannot connect

* Always assume there is a unique id

* No need to yield

* Update homeassistant/components/philips_js/media_player.py

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

* Move typing to init

* Adjust typing instead of returning lambda

* Explicity return None

* Coerce into int

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-12 02:35:29 +01:00
HomeAssistant Azure
ee04473e85 [ci skip] Translation update 2021-02-12 00:02:46 +00:00
chriss158
34a491f826 Install libpcap-dev for devcontainer (#46106) 2021-02-11 13:17:49 -10:00
Joakim Plate
8dc06e612f Add config flow to philips_js (#45784)
* Add config flow to philips_js

* Adjust name of entry to contain serial

* Use device id in event rather than entity id

* Adjust turn on text

* Deprecate all fields

* Be somewhat more explicit in typing

* Switch to direct coordinator access

* Refactor the pluggable action

* Adjust tests a bit

* Minor adjustment

* More adjustments

* Add missing await in update coordinator

* Be more lenient to lack of system info

* Use constant for trigger type and simplify

* Apply suggestions from code review

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

Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-11 21:37:53 +01:00
Czapla
14a64ea970 Add generic_thermostat unique ID parameter (#46399)
* Add generic_thermostat unique ID parameter

* Add tests for unique id

* Fix flake8
2021-02-11 19:46:58 +00:00
Erik Montnemery
26e7916367 Migrate mobile_app to RestoreEntity (#46391) 2021-02-11 20:18:03 +01:00
tkdrob
70e23402a9 Use core constants for ohmconnect (#46413) 2021-02-11 13:56:50 -05:00
Martin
eb0d1bb673 Improve knx fan implementation (#46404) 2021-02-11 07:55:17 -10:00
tkdrob
fd177441b3 Use core constants for nmap_tracker (#46402) 2021-02-11 17:45:26 +01:00
tkdrob
c95f401e2e Use core constants for nissan_leaf (#46401) 2021-02-11 17:44:39 +01:00
Erik Montnemery
ed31cc363b Wait for registries to load at startup (#46265)
* Wait for registries to load at startup

* Don't decorate new functions with @bind_hass

* Fix typing errors in zwave_js

* Load registries in async_test_home_assistant

* Tweak

* Typo

* Tweak

* Explicitly silence mypy errors

* Fix tests

* Fix more tests

* Fix test

* Improve docstring

* Wait for registries to load
2021-02-11 17:36:19 +01:00
Anders Melchiorsen
888c9e120d Raise ConditionError for time errors (#46250) 2021-02-11 17:29:17 +01:00
Steve Dwyer
5ce49c62b1 Allow MQTT template light floating point transition (#46385)
Allow to use floating point values for the transition time of the MQTT
template light.
2021-02-11 14:57:27 +01:00
tkdrob
b1a7bfee14 Clean up kira integration constants (#46390) 2021-02-11 07:59:09 -05:00
tkdrob
c75e63dc95 Use core constants for modbus (#46388) 2021-02-11 07:58:16 -05:00
tkdrob
b85ecc0bd2 Use core constants for mqtt (#46389) 2021-02-11 13:38:33 +01:00
Franck Nijhof
c10bf079f7 Merge pull request #46383 from home-assistant/rc 2021-02-11 12:52:44 +01:00
tkdrob
1b61b5c10b Clean up kira integration (#46292) 2021-02-11 11:04:11 +01:00
Shay Levy
4034a274f7 Fix Shelly relay device set to light appliance type (#46181) 2021-02-11 10:40:54 +01:00
Shay Levy
6015161dab Fix Shelly relay device set to light appliance type (#46181) 2021-02-11 10:40:03 +01:00
Franck Nijhof
953491d509 Bumped version to 2021.2.3 2021-02-11 10:38:21 +01:00
Paulus Schoutsen
b5061d0232 Restore Google/Alexa extra significant change checks (#46335) 2021-02-11 10:37:50 +01:00
Bram Kragten
291746334a Add already_in_progress string to roku config flow (#46333) 2021-02-11 10:37:47 +01:00
J. Nick Koston
9f839b8c61 Add reauth support for tesla (#46307) 2021-02-11 10:37:43 +01:00
Marcel van der Veldt
70af3e4776 Add guards for missing value in binary_sensor platform of zwave_js integration (#46293) 2021-02-11 10:37:40 +01:00
Greg Dowling
1c2f72a453 Bump roonapi to 0.0.32 (#46286) 2021-02-11 10:37:36 +01:00
J. Nick Koston
bf2a34600a Fix Lutron Integration Protocol reconnect logic (#46264) 2021-02-11 10:37:33 +01:00
J. Nick Koston
b5bdd7f2cf Update powerwall for new authentication requirements (#46254)
Co-authored-by: badguy99 <61918526+badguy99@users.noreply.github.com>
2021-02-11 10:37:29 +01:00
J.P. Hutchins
30ddfd837a Revert transmission to check torrent lists by name rather than object (#46190) 2021-02-11 10:37:26 +01:00
ehendrix23
d2d2bed16b Bump pymyq to 3.0.1 (#46079)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-11 10:37:22 +01:00
Alan Tse
db557a094c Use oauthv3 for Tesla (#45766) 2021-02-11 10:37:18 +01:00
Anders Melchiorsen
1f5fb8f28a Raise ConditionError for template errors (#46245) 2021-02-11 10:30:09 +01:00
tkdrob
e013ad2413 Use core constants for microsoft (#46369) 2021-02-11 10:25:43 +01:00
J. Nick Koston
f9f4c0aeed Fix explict return in tesla config flow (#46377) 2021-02-11 10:24:31 +01:00
tkdrob
29d8b8a22f Some code cleanups for ESPHome (#46367) 2021-02-11 10:19:39 +01:00
tkdrob
379f5455e5 Use core constants for lovelace (#46368) 2021-02-11 10:13:18 +01:00
Mike Keesey
f549ec5ec9 Use activity ids for unique_id for Harmony switches (#46139) 2021-02-10 21:50:27 -10:00
Leonardo Figueiro
3ffa42e56a Update WiLight Cover Fan Light (#46366) 2021-02-10 21:25:42 -10:00
tkdrob
56adc9dadb Use core constants for lcn (#46348) 2021-02-10 21:22:32 -05:00
tkdrob
af2fa17e8e Use core constants for local_file (#46349) 2021-02-10 21:21:35 -05:00
tkdrob
7f8fa7feaf Use core constants for logi_circle (#46359) 2021-02-10 21:20:40 -05:00
HomeAssistant Azure
8007391244 [ci skip] Translation update 2021-02-11 00:02:56 +00:00
Leonardo Figueiro
6182fedf3f Update wilight tests for new fan entity model (#46358) 2021-02-10 13:09:03 -10:00
J. Nick Koston
281fbe1dfa Update wilight for new fan entity model (#45869) 2021-02-10 12:49:52 -10:00
tkdrob
d8a2e0e051 Remove unnecessary variables from logbook (#46350) 2021-02-10 12:17:37 -10:00
Maciej Bieniek
fdd8159955 Fix SNMP engine memory leak in Brother integration (#46272)
* Fix SNMP engine memory leak

* Fix pylint error
2021-02-10 22:32:48 +01:00
uvjustin
acde33dbbc Keep 1 extra segment around after playlist removal (#46310)
* Keep 1 extra segment around after playlist removal

* Remove segments length check
2021-02-10 15:51:16 -05:00
ehendrix23
9bc3c6c130 Bump pymyq to 3.0.1 (#46079)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-10 10:30:52 -10:00
J. Nick Koston
c59b1c72c5 Add reauth support for tesla (#46307) 2021-02-10 20:55:06 +01:00
J.P. Hutchins
67ab86443e Revert transmission to check torrent lists by name rather than object (#46190) 2021-02-10 20:53:31 +01:00
J. Nick Koston
884df40951 Update powerwall for new authentication requirements (#46254)
Co-authored-by: badguy99 <61918526+badguy99@users.noreply.github.com>
2021-02-10 20:50:38 +01:00
J. Nick Koston
2e2eab662b Fix Lutron Integration Protocol reconnect logic (#46264) 2021-02-10 20:48:15 +01:00
Erik Montnemery
fc4fc48763 Bump hatasmota to 0.2.8 (#46340) 2021-02-10 20:42:34 +01:00
Leonardo Figueiro
2db102e023 Add WiLight Cover (#46065)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-10 09:08:39 -10:00
Alan Tse
cdd78316c4 Use oauthv3 for Tesla (#45766) 2021-02-10 08:01:24 -10:00
Paulus Schoutsen
538df17a28 Restore Google/Alexa extra significant change checks (#46335) 2021-02-10 16:30:29 +01:00
Marcel van der Veldt
74647e1fa8 Add guards for missing value in binary_sensor platform of zwave_js integration (#46293) 2021-02-10 10:30:16 -05:00
Joakim Sørensen
917a616ce1 Replace parse_version with AwesomeVersion (#46329) 2021-02-10 15:58:26 +01:00
Joakim Sørensen
dbb98e6cac Replace LooseVersion with AwesomeVersion (#46330) 2021-02-10 15:26:38 +01:00
Joakim Sørensen
ea4ad85488 Replace StrictVersion with AwesomeVersion (#46331) 2021-02-10 15:25:44 +01:00
Bram Kragten
7928cda080 Add already_in_progress string to roku config flow (#46333) 2021-02-10 15:25:24 +01:00
tkdrob
ad72715212 Use core constants for konnected (#46322) 2021-02-10 08:57:53 -05:00
Franck Nijhof
b7e11347d5 Remove defunct Crime Reports integration (#46312) 2021-02-10 14:56:54 +01:00
Erik Montnemery
c66d9ea25c Hide volume control for cast devices with fixed volume (#46328) 2021-02-10 08:39:10 -05:00
tkdrob
ad400d91bc Use core constants for sensor integration (#46290) 2021-02-10 08:36:05 -05:00
tkdrob
6e1f3b7861 Use core constants for joaoapps_join (#46291) 2021-02-10 08:35:11 -05:00
Franck Nijhof
22389043eb Remove base_url fallback (#46316) 2021-02-10 14:31:11 +01:00
Ville Skyttä
a6358430b4 Fix deprecated asyncio.wait use with coroutines (#44981)
https://docs.python.org/3/library/asyncio-task.html#asyncio-example-wait-coroutine
2021-02-10 14:16:58 +01:00
Bram Kragten
4b493c5ab9 Add target to service call API (#45898)
* Add target to service call API

* Fix _async_call_service_step

* CONF_SERVICE_ENTITY_ID overrules target

* Move merging up before processing schema

* Restore services.yaml

* Add test
2021-02-10 12:42:28 +01:00
Shay Levy
7d2d98fc3c Revert multiple interfaces (#46300) 2021-02-10 12:38:16 +01:00
Erik Montnemery
bfd5a62bad Fix typo (#46321) 2021-02-10 11:31:51 +01:00
uvjustin
1fea24502c Bump pyav version to 8.03 (#46315) 2021-02-10 18:14:03 +08:00
Erik Montnemery
78b7fbf7b1 Fix race in EntityRegistry.async_device_modified (#46319) 2021-02-10 10:50:44 +01:00
Greg Dowling
b0b81246f0 Bump roonapi to 0.0.32 (#46286) 2021-02-10 10:27:25 +01:00
Martin
175f2f0275 Add fan platform to knx (#46161) 2021-02-09 22:09:34 -10:00
Allen Porter
26f455223b Update nest stream URLs expiration (#46311) 2021-02-09 23:53:34 -08:00
Allen Porter
00aebec90d Fix bug in test found by manual log inspection (#46309) 2021-02-09 21:59:49 -08:00
HomeAssistant Azure
5fcb948e28 [ci skip] Translation update 2021-02-10 00:05:10 +00:00
Khole
3381e2f65a Convert Hive to Async (#46117)
* Convert Hive to Async

* Update Refresh System

* Update load platform to Async

* Changes from review feedback

* Review Round 2

* Updated service

* Updated dict keys

* Convert Hive to Async

* Update Refresh System

* Update load platform to Async

* Changes from review feedback

* Review Round 2

* Updated service

* Updated dict keys

* Convert Hive to Async

* Update Refresh System

* Update load platform to Async

* Changes from review feedback

* Review Round 2

* Updated service

* Updated dict keys

* Updated Refresh System
2021-02-09 22:03:49 +01:00
tkdrob
6f4cb18fa8 Use core constants for here_travel_time (#46246) 2021-02-09 20:23:46 +01:00
tkdrob
a26cf7aeec Remove unnecessary variable definition in firmata (#46172) 2021-02-09 20:23:02 +01:00
bsmappee
1c1b2f497a bump pysmappee (#46270) 2021-02-09 20:21:51 +01:00
tkdrob
57ce182959 Remove unnecessary constant from ihc (#46268) 2021-02-09 20:21:04 +01:00
tkdrob
f46dc3c48e Use core constants for elkm1 (#46091) 2021-02-09 20:20:20 +01:00
tkdrob
c69c493cf9 Use core constants for image_processing (#46269) 2021-02-09 08:03:14 -05:00
tkdrob
da67cde369 Use core constants for homematic (#46248) 2021-02-09 12:02:53 +01:00
Anders Melchiorsen
f27066e773 Raise ConditionError for state errors (#46244) 2021-02-09 09:46:36 +01:00
J. Nick Koston
6a62ebb6a4 Add BPUP (push updates) support to bond (#45550) 2021-02-09 09:43:38 +01:00
Maciej Bieniek
2fc1c19a45 Allow to setup of a previously discovered sleeping Shelly device (#46124)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2021-02-09 09:28:40 +01:00
Robert Svensson
20f45f8ab9 Improve deCONZ tests by using aioclient_mock rather than patching web requests (#45927)
* Don't patch web requests, use aioclient_mock instead

* Remove stale prints

* Remove tests for old way of loading platforms

* Remove unused imports
2021-02-09 08:31:29 +01:00
Allen Porter
b33753f334 Move camera timeouts to constants (#46262)
Addresses feedback from pr #45431.  Also removes an redundant `create_stream` timeout.
2021-02-08 21:21:14 -08:00
Allen Porter
2bcf87b980 Change the API boundary between camera and stream with initial improvement for nest expiring stream urls (#45431)
* Change the API boundary between stream and camera

Shift more of the stream lifecycle management to the camera.  The motivation is to support stream urls that expire
giving the camera the ability to change the stream once it is created.

* Document stream lifecycle and simplify stream/camera interaction

* Reorder create_stream function to reduce diffs

* Increase test coverage for camera_sdm.py

* Fix ffmpeg typo.

* Add a stream identifier for each stream, managed by camera

* Remove stream record service

* Update homeassistant/components/stream/__init__.py

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

* Unroll changes to Stream interface back into camera component

* Fix preload stream to actually start the background worker

* Reduce unncessary diffs for readability

* Remove redundant camera stream start code

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-08 19:53:28 -08:00
Pascal Reeb
889baef456 Add DHCP discovery support to Nuki integration (#46032) 2021-02-08 17:11:27 -10:00
HomeAssistant Azure
936ee7d733 [ci skip] Translation update 2021-02-09 00:07:22 +00:00
J. Nick Koston
6563c37ab1 Add support for generic lights to bond (#46193) 2021-02-09 00:39:21 +01:00
J. Nick Koston
93fafedf72 Cleanup bond identifiers and device info (#46192) 2021-02-09 00:37:32 +01:00
Erik Montnemery
58b4a91a5b Test that variables are passed to wait_for_trigger script action (#46221) 2021-02-09 00:34:18 +01:00
tkdrob
c602c619a2 Use core constants for hikvision (#46247) 2021-02-09 00:13:58 +01:00
J. Nick Koston
6467eff09c Fix incorrect current temperature for homekit water heaters (#46076) 2021-02-08 23:23:02 +01:00
J. Nick Koston
dc26fd5149 Ensure creating an index that already exists is forgiving for postgresql (#46185)
Unlikely sqlite and mysql, postgresql throws ProgrammingError instead
of InternalError or OperationalError when trying to create an index
that already exists.
2021-02-08 23:22:38 +01:00
tkdrob
6b340415b2 Use core constants for greeneye_monitor (#46238) 2021-02-08 22:53:46 +01:00
tkdrob
c2302784c2 Use core constants for helpers (#46240) 2021-02-08 22:53:17 +01:00
tkdrob
00bbf8c3a2 Use core constants for group component (#46239) 2021-02-08 22:52:28 +01:00
J. Nick Koston
c0a1fc2916 Handle empty mylink response at startup (#46241) 2021-02-08 22:51:46 +01:00
Álvaro Fernández Rojas
fcae840641 Fix Tado Power and Link binary sensors (#46235)
Power and Link aren't converted from strings to booleans by python-tado, so we
need to properly parse before assigning the string value to binary sensors.

Fixes: 067f2d0098 ("Add tado zone binary sensors (#44576)")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2021-02-08 22:49:46 +01:00
J. Nick Koston
71d7ae5992 Downgrade and improve lutron caseta LIP error message (#46236) 2021-02-08 22:48:02 +01:00
Marcel van der Veldt
829131fe51 Update zwave_js discovery scheme for boolean sensors in the Alarm CC (#46085) 2021-02-08 11:57:22 -05:00
Marcel van der Veldt
be779d8712 update discovery scheme for zwave_js light platform (#46082) 2021-02-08 11:56:19 -05:00
Paulus Schoutsen
e27619fe50 Allow discovery info accessible from CORS enabled domains (#46226) 2021-02-08 17:19:55 +01:00
Álvaro Fernández Rojas
1b194e3b2f Add noltari to Tado code owners (#46216) 2021-02-08 11:08:13 -05:00
Bram Kragten
86fe5d0561 Update frontend to 20210208.0 (#46225) 2021-02-08 16:42:33 +01:00
Allen Porter
dca6a93898 Centralize keepalive logic in Stream class (#45850)
* Remove dependencies on keepalive from StremaOutput and stream_worker

Pull logic from StreamOutput and stream_worker into the Stream
class, unifying keepalive and idle timeout logic. This prepares
for future changes to preserve hls state across stream url changes.
2021-02-08 07:19:41 -08:00
Paulus Schoutsen
e20a814926 Call setup during devcontainer create (#46224) 2021-02-08 16:16:40 +01:00
Shay Levy
81c88cd639 Enhance MQTT cover platform (#46059)
* Enhance MQTT cover platform

Allow combining of position and state of MQTT cover
Add template and fix optimistic in set tilt position
Add tests

* Add abbreviations

* Add tests and stopped state

* Cleanup & fix range for templates

* Apply suggestions from code review

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-02-08 16:02:12 +01:00
Greg Dowling
8f4ea3818d Add unavailable to Vera (#46064) 2021-02-08 15:25:54 +01:00
Henco Appel
b1ffe429cd Fix BT Smarthub device tracker (#44813) 2021-02-08 15:24:18 +01:00
Joeri
2811e39c5c Add entity specific force_update for DSMR (#46111) 2021-02-08 15:18:36 +01:00
Franck Nijhof
48808978c4 Upgrade pre-commit to 2.10.1 (#46211) 2021-02-08 15:05:11 +01:00
Martin Hjelmare
568180632e Fix sync oath2 scaffold template (#46219) 2021-02-08 15:00:17 +01:00
Bram Kragten
6f446cf627 Add my component (#46058)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-08 14:44:46 +01:00
Anders Melchiorsen
48002f47f4 Use caplog fixture for log capturing (#46214) 2021-02-08 14:33:57 +01:00
Erik Montnemery
0780e52ca4 Support templates in event triggers (#46207)
* Support templates in event triggers

* Don't validate trigger schemas twice
2021-02-08 14:06:27 +01:00
Matteo Agnoletto
eaa2d371a7 Add select selector for blueprints (#45803)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-08 14:03:26 +01:00
Erik Montnemery
2744d64a3e Pass variables to state trigger templates (#46208)
* Pass variables to state trigger templates

* Remove non working test
2021-02-08 13:22:01 +01:00
Erik Montnemery
9d9c4b47ee Pass variables to numeric state trigger templates (#46209) 2021-02-08 13:21:31 +01:00
tkdrob
92e5bf9786 Use core constants for google (#46210) 2021-02-08 12:24:48 +01:00
Ville Skyttä
82607977ef Various type hint improvements (#46144) 2021-02-08 11:59:46 +01:00
tkdrob
54dce1c505 Use core constants for fleetgo (#46200) 2021-02-08 11:47:30 +01:00
Fabian Affolter
5a4e1eeb0e Upgrade praw to 7.1.4 (#46202) 2021-02-08 11:46:58 +01:00
Hmmbob
a23e05d1f6 Fix Google translate TTS by bumping gTTS from 2.2.1 to 2.2.2 (#46110) 2021-02-08 11:43:30 +01:00
tkdrob
87c36d6b6b Use core constants for google_assistant (#46204) 2021-02-08 11:36:59 +01:00
tkdrob
5faf463205 Use core constants for frontend component (#46203) 2021-02-08 11:36:45 +01:00
tkdrob
9b0955b67e Use core constants for flux (#46201) 2021-02-08 11:26:57 +01:00
Matthias Alphart
e7ca0ff71a Enable KNX auto_reconnect for auto-discovered connections (#46178) 2021-02-08 11:23:50 +01:00
Erik Montnemery
f99c27c6d4 Remove unneeded from_state from device triggers (#45152) 2021-02-08 11:09:45 +01:00
Per Sandström
8efb5eea4d Bump python-verisure to version 1.7.2 (#46177) 2021-02-08 11:00:23 +01:00
Erik Montnemery
047f16772f Support templating MQTT triggers (#45614)
* Add support for limited templates (no HASS access)

* Pass variables to automation triggers

* Support templates in MQTT triggers

* Spelling

* Handle trigger referenced by variables

* Raise on unsupported function in limited templates

* Validate MQTT trigger schema in MQTT device trigger

* Add trigger_variables to automation config schema

* Don't print stacktrace when setting up trigger throws

* Make pylint happy

* Add trigger_variables to variables

* Add debug prints, document limited template

* Add tests

* Validate MQTT trigger topic early when possible

* Improve valid_subscribe_topic_template
2021-02-08 10:50:38 +01:00
Anders Melchiorsen
b9b1caf4d7 Raise ConditionError for numeric_state errors (#45923) 2021-02-08 10:47:57 +01:00
Paulus Schoutsen
9e07910ab0 Mark entities as unavailable when they are removed but are still registered (#45528)
* Mark entities as unavailable when they are removed but are still registered

* Add sync_entity_lifecycle to collection helper

* Remove debug print

* Lint

* Fix tests

* Fix tests

* Update zha

* Update zone

* Fix tests

* Update hyperion

* Update rfxtrx

* Fix tests

* Pass force_remove=True from integrations

Co-authored-by: Erik <erik@montnemery.com>
2021-02-08 10:45:46 +01:00
Aaron Godfrey
aa005af266 Fix dyson service name in services.yaml (#46176) 2021-02-08 10:39:33 +01:00
dependabot[bot]
c7a9571920 Bump actions/stale from v3.0.15 to v3.0.16 (#46196) 2021-02-08 10:06:38 +01:00
dependabot[bot]
75519d2d6c Bump actions/cache from v2 to v2.1.4 (#46197)
Bumps [actions/cache](https://github.com/actions/cache) from v2 to v2.1.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v2...26968a09c0ea4f3e233fdddbafd1166051a095f6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-08 09:59:07 +01:00
tkdrob
352bba1f15 Use core constants for efergy (#46090) 2021-02-08 09:45:05 +01:00
Adam Outler
840891e4f4 Increase skybell scan time to reduce timeouts (#46169) 2021-02-08 09:37:23 +01:00
Erik Montnemery
28ef3f68f3 Add media_player device triggers (#45430)
* Add media player device triggers

* Update tests
2021-02-08 09:36:14 +01:00
Fabian Affolter
ca87bf49b6 Upgrade praw to 7.1.3 (#46073) 2021-02-08 09:34:12 +01:00
tkdrob
04c1578f15 Use core constants for file integration (#46171) 2021-02-08 09:32:01 +01:00
tkdrob
5755598c95 Use core constants for fixer (#46173) 2021-02-08 09:31:02 +01:00
tkdrob
66ecd2e0f2 Remove unused config_flows (#46188) 2021-02-08 08:32:24 +01:00
Daniel Shokouhi
d02b78c634 Revert "Convert ozw climate values to correct units (#45369)" (#46163)
This reverts commit 1b6ee8301a.
2021-02-08 07:05:10 +01:00
HomeAssistant Azure
aa00c62302 [ci skip] Translation update 2021-02-08 00:07:01 +00:00
tkdrob
8e06fa017d Use core constants for emulated_hue (#46092) 2021-02-07 13:52:48 -05:00
tkdrob
19e9515bec Use core constants for ffmpeg_motion (#46137) 2021-02-07 13:47:16 -05:00
tkdrob
74053b5f2d Use core constants for envisalink (#46136) 2021-02-07 13:28:40 -05:00
Matthias Alphart
94eb31025c xknx 0.16.3 (#46128) 2021-02-07 01:27:58 +01:00
HomeAssistant Azure
818501216e [ci skip] Translation update 2021-02-07 00:06:57 +00:00
Robert Svensson
618fcda821 Simplify UniFi entry configuration data (#45759)
* Simplify configuration structure by removing the controller key

* Fix flake8

* Fix review comments

* Don't use migrate_entry mechanism to flatten configuration
Keep legacy configuration when creating new entries as well
2021-02-06 21:32:18 +01:00
Pierre Ståhl
cefde8721d Add new features to Apple TV media player (#45828) 2021-02-06 10:29:48 -10:00
Robert Svensson
60e3fce7dc Convert old deCONZ groups unique ids (#46093)
* Convert old groups unique ids
Work around for walrus operator not working properly :/

* Remove CONF_GROUP_ID_BASE once entities unique id are updated

* Don't use migrate_entry mechanism to update unique_ids of groups

* Remove walrus operator :(

* Fix review comments

* Walrusify assignment to old_unique_id
2021-02-06 14:32:17 +01:00
Steven Rollason
08163a848c Fix downloader path validation on subdir (#46061) 2021-02-06 14:05:50 +01:00
Marcel van der Veldt
242ff045b9 Handle missing value in all platforms of zwave_js (#46081) 2021-02-06 14:02:03 +01:00
Erik Montnemery
fb68bf85ae Don't defer formatting of log messages (#44873)
* Make fast logging optional

* Remove fast logging support
2021-02-06 13:40:15 +01:00
Robert Svensson
94ecb792ec Use async_update_entry rather than updating config_entry.data directly in Axis (#46078)
Don't step version in migrate_entry to support rollbacking
2021-02-06 13:17:52 +01:00
J. Nick Koston
a74ae3585a Fix backwards compatiblity with fan update to new model (#45951)
* Fix backwards compatiblity with fans update to new model

There were some non-speeds and devices that report a none
speed. These problems were discovered when updating zha
tasmota and vesync to the new model in #45407

* Update coverage

* fix check
2021-02-06 12:48:18 +01:00
Erik Montnemery
369616a6c3 Exclude disabled rfxtrx entities from async_entries_for_device (#46102) 2021-02-06 12:19:41 +01:00
Raman Gupta
af4e6f856f Use better names for zwave_js platforms that are self describing (#46083)
* use better names for platforms that are self describing

* add missing light change

* fix tests

* only use value_name in sensors and binary_sensors
2021-02-06 12:08:25 +01:00
ehendrix23
ee98ea89dd Bump aioharmony from 0.2.6 to 0.2.7 (#46075) 2021-02-05 23:55:21 -10:00
Erik Montnemery
8a7e0241ab Fix race in script wait for trigger step (#46055)
* Fix race in script wait for trigger step

* Update script.py

* Update script.py
2021-02-06 10:01:30 +01:00
djtimca
f2d9e6f70c Add sensor platform for Aurora integration (#43148)
* Removed pylint disable on unused after updating CI files that were out of date.
* Pylint still fails due to bug on DOMAIN import. Added disable check.
* Addressed PR comments
* Added import for ClientError to test_config_flow.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-05 23:05:39 -08:00
HomeAssistant Azure
ce159d7db3 [ci skip] Translation update 2021-02-06 00:07:22 +00:00
Raman Gupta
33169cf8cd Fix zwave_js Notification CC sensors and binary sensors (#46072)
* only include property key name in sensor name if it exists

* add endpoint to binary_sensor and sensor notification CC entities if > 0

* refactor to have helper method generate name

* change default behavior of generate_name

* return value for notification sensor when we can't find the state

* store generated name
2021-02-05 23:36:42 +01:00
Franck Nijhof
67392338da Activate manual ZHA config flow when no comports detected (#46077) 2021-02-05 17:23:47 -05:00
Robert Svensson
434b4dfa58 Improve deCONZ logbook to be more robust in different situations (#46063) 2021-02-05 23:07:12 +01:00
Sergio Conde Gómez
2c74befd4f Fix foscam to work again with non-admin accounts and make RTSP port configurable again (#45975)
* Do not require admin account for foscam cameras.

Foscam cameras require admin account for getting the MAC address,
requiring an admin account in the integration is not desirable as
an operator one is good enough (and a good practice).

Old entries using the MAC address as unique_id are migrated to the
new unique_id format so everything is consistent.

Also fixed unhandled invalid responses from the camera in the
config flow process.

* Make RTSP port configurable again as some cameras reports wrong port

* Remove periods from new log lines

* Set new Config Flow version to 2 and adjust the entity migration

* Create a proper error message for the InvalidResponse exception

* Change crafted unique_id to use entry_id in the entity

* Abort if same host and port is already configured

* Fix entry tracking to use entry_id instead of unique_id

* Remove unique_id from mocked config entry in tests
2021-02-05 22:39:31 +01:00
functionpointer
c01e01f797 MySensors config flow (#45421)
* MySensors: Add type annotations

Adds a bunch of type annotations that were created
while understanding the code.

* MySensors: Change GatewayId to string

In preparation for config flow.
The GatewayId used to be id(gateway).

With config flows, every gateway will have its own
ConfigEntry. Every ConfigEntry has a unique id.
Thus we would have two separate but one-to-one related ID systems.

This commit removes this unneeded duplication by using the id of the ConfigEntry
as GatewayId.

* MySensors: Add unique_id to all entities

This allows entities to work well with the frontend.

* MySensors: Add device_info to all entities

Entities belonging to the same node_id will now by grouped as a device.

* MySensors: clean up device.py a bit

* MySensors: Add config flow support

With this change the MySensors can be fully configured from the GUI.

Legacy configuration.yaml configs will be migrated by reading them once.
Note that custom node names are not migrated. Users will have to re-enter
the names in the front-end.
Since there is no straight-forward way to configure global settings,
all previously global settings are now per-gateway. These settings include:
- MQTT retain
- optimistic
- persistence enable
- MySensors version

When a MySensors integration is loaded, it works as follows:
1. __init__.async_setup_entry is called
2. for every platform, async_forward_entry_setup is called
3. the platform's async_setup_entry is called
4. __init__.setup_mysensors_platform is called
5. the entity's constructor (e.g. MySensorsCover) is called
6. the created entity is stored in a dict in the hass object

* MySensors: Fix linter errors

* MySensors: Remove unused import

* MySensors: Feedback from @MartinHjelmare

* MySensors: Multi-step config flow

* MySensors: More feedback

* MySensors: Move all storage in hass object under DOMAIN

The integration now stores everything under hass.data["mysensors"]
instead of using several top level keys.

* MySensors: await shutdown of gateway instead of creating a task

* MySensors: Rename Ethernet to TCP

* MySensors: Absolute imports and cosmetic changes

* MySensors: fix gw_stop

* MySensors: Allow user to specify persistence file

* MySensors: Nicer log message

* MySensors: Add lots of unit tests

* MySensors: Fix legacy import of persistence file name

Turns out tests help to find bugs :D

* MySensors: Improve test coverage

* MySensors: Use json persistence files by default

* MySensors: Code style improvements

* MySensors: Stop adding attributes to existing objects

This commit removes the extra attributes that were being
added to the gateway objects from pymysensors.

Most attributes were easy to remove, except for the gateway id.
The MySensorsDevice class needs the gateway id as it is part of its DevId
as well as the unique_id and device_info.
Most MySensorsDevices actually end up being Entities.
Entities have access to their ConfigEntry via self.platform.config_entry.

However, the device_tracker platform does not become an Entity.
For this reason, the gateway id is not fetched from self.plaform but
given as an argument.

Additionally, MySensorsDevices expose the address of the gateway
(CONF_DEVICE). Entities can easily fetch this information via self.platform,
but the device_tracker cannot. This commit chooses to remove the gateway
address from device_tracker. While this could in theory break some automations,
the simplicity of this solution was deemed worth it.
The alternative of adding the entire ConfigEntry as an argument to MySensorsDevices
is not viable, because device_tracker is initialized by the async_setup_scanner function
that isn't supplied a ConfigEntry. It only gets discovery_info.
Adding the entire ConfigEntry doesn't seem appropriate for this edge case.

* MySensors: Fix gw_stop and the translations

* MySensors: Fix incorrect function calls

* MySensors: Fewer comments in const.py

* MySensors: Remove union from _get_gateway and remove id from try_connect

* MySensors: Deprecate nodes option in configuration.yaml

* MySensors: Use version parser from packaging

* MySensors: Remove prefix from unique_id and change some private property names

* MySensors: Change _get_gateway function signature

* MySensors: add packaging==20.8 for the version parser

* MySensors: Rename some stuff

* MySensors: use pytest.mark.parametrize

* MySensors: Clean up test cases

* MySensors: Remove unneeded parameter from devices

* Revert "MySensors: add packaging==20.8 for the version parser"

This reverts commit 6b200ee01a3c0eee98176380bdd0b73e5a25b2dd.

* MySensors: Use core interface for testing configuration.yaml import

* MySensors: Fix test_init

* MySensors: Rename a few variables

* MySensors: cosmetic changes

* MySensors: Update strings.json

* MySensors: Still more feedback from @MartinHjelmare

* MySensors: Remove unused strings

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

* MySensors: Fix typo and remove another unused string

* MySensors: More strings.json

* MySensors: Fix gateway ready handler

* MySensors: Add duplicate detection to config flows

* MySensors: Deal with non-existing topics and ports.

Includes unit tests for these cases.

* MySensors: Use awesomeversion instead of packaging

* Add string already_configured

* MySensors: Abort config flow when config is found to be invalid while importing

* MySensors: Copy all error messages to also be abort messages

All error strings may now also be used as an abort reason,
so the strings should be defined

* Use string references

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-05 22:13:57 +01:00
Robert Svensson
0d620eb7c3 Add unique id to UniFi config entries using the unique id of the site it is controlling (#45737)
* Add unique id to UniFi config entries using the unique id of the site it is controlling

* Fix failing test
2021-02-05 19:38:08 +01:00
Marc Mueller
55f9d98523 Fix deprecated method isAlive() (#46062) 2021-02-05 19:12:23 +01:00
Johan Nenzén
55f81a8a04 Address Plaato post merge review (#46024) 2021-02-05 18:28:06 +01:00
Robert Svensson
ae2c7e4c74 Improve UniFi tests (#45871) 2021-02-05 16:31:47 +01:00
Jaroslav Hanslík
7144c5f316 Fix demo number entity (#45991) 2021-02-05 15:08:28 +01:00
tkdrob
6fdb12c09d Use core constants for bluetooth_tracker (#46041) 2021-02-05 15:07:17 +01:00
tkdrob
9a570d7c32 Use core constants for bmw_connected_drive (#46042) 2021-02-05 08:02:28 -05:00
Greg Dowling
e01ca40d56 Force Vera refresh after starting subscription (#46001)
* Force vera refresh after starting subscription.

* Request refresh on device load.

* Update init test.
2021-02-05 13:20:15 +01:00
Yuval Aboulafia
2a0c36589f Centralize some Airly constants (#45985) 2021-02-05 12:41:36 +01:00
tkdrob
725dcb5cac Use core constants for doods (#46043) 2021-02-05 12:17:46 +01:00
Aaron Bach
6404f91d00 Standardize AirVisual helper method in config flow (#45999)
* Standardize AirVisual helper method in config flow

* Code review
2021-02-05 10:51:55 +01:00
Nathan Spencer
92886cafe9 Fix zwave_js cover control for Up/Down and Open/Close (#45965)
* Fix issue with control of cover when the target value is Up/Down instead of Open/Close

* Adjust open/close/stop cover control to account for no Open/Up or Close/Down targets

* Revert back to using values of 0/99 to close/open a cover since it is supported by all covers

* Replace RELEASE_BUTTON with False and remove unused PRESS_BUTTON in zwave_js cover
2021-02-05 10:48:47 +01:00
tkdrob
2b17ba1dc4 User core constants for deutsche_bahn (#46028) 2021-02-05 10:29:59 +01:00
tkdrob
6e9aa254d5 Use core constants for delijn (#46027) 2021-02-04 21:43:04 -05:00
tkdrob
bcefbe2dca Use core constants for automation (#46016) 2021-02-04 21:41:43 -05:00
J. Nick Koston
374aa3aee1 Fix homekit options not being prefilled (#45926)
* Fix homekit options not being prefilled

When changing homekit options, the existing ones
were not being prefilled on the form.

* hide camera screen if no cameras
2021-02-05 02:39:07 +01:00
obelix05
d1b7d25a5d Prevent fritzbox callmonitor phonebook_id 0 from being ignored (#45990) 2021-02-05 02:31:47 +01:00
HomeAssistant Azure
c6bd5b1b71 [ci skip] Translation update 2021-02-05 00:03:54 +00:00
J. Nick Koston
01e73911d6 Do not listen for dhcp packets if the filter cannot be setup (#46006) 2021-02-05 00:36:55 +01:00
Fabian Affolter
097a4e6b59 Upgrade praw to 7.1.2 (#46012) 2021-02-04 23:42:10 +01:00
Fabian Affolter
62de921422 Upgrade slixmpp to 1.7.0 (#46019) 2021-02-04 23:41:24 +01:00
J. Nick Koston
b9f9de0c1d dhcp does not need promisc mode. Disable it in scapy (#46018) 2021-02-04 23:39:44 +01:00
tkdrob
60268e63d9 Use core constants for aws (#46017) 2021-02-04 23:36:35 +01:00
tkdrob
5d3dcff7c9 Use core constants for asuswrt (#46015) 2021-02-04 23:34:39 +01:00
Fabian Affolter
c7febacd9f Upgrade holidays to 0.10.5.2 (#46013) 2021-02-04 23:32:56 +01:00
Martin Hjelmare
912b816117 Bump zwave-js-server-python to 0.17.2 (#46010) 2021-02-04 20:44:40 +01:00
DeadEnd
7b280bdbe7 Fix Local Media in Media Browser (#45987)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-04 17:02:56 +01:00
Joakim Sørensen
56b8e82a69 Bump awesomeversion from 21.2.0 to 21.2.2 (#45993) 2021-02-04 16:45:59 +01:00
Martin Hjelmare
b80c1688ad Bump zwave-js-server-python to 0.17.1 (#45988) 2021-02-04 16:29:41 +01:00
Martin Weinelt
61a987061e Don't log missing mpd artwork inappropriately (#45908)
This can get unnecessarily spammy and doesn't represent an actual
actionable issue.

Fixes: #45235
2021-02-04 08:18:51 -05:00
Maciej Bieniek
134b1d3f63 Fix entities device_info property in Harmony integration (#45964) 2021-02-04 08:16:09 -05:00
Joakim Sørensen
1a74709757 Throw error in hassfest when integration is missing version (#45976) 2021-02-04 13:31:17 +01:00
tkdrob
9c6c2a77ab Use core constants for amazon polly (#45938) 2021-02-04 07:06:09 -05:00
tkdrob
d44c941efe Use core constants for alexa (#45937) 2021-02-04 07:05:56 -05:00
tkdrob
8625b772e3 Use core constants for alert (#45935) 2021-02-04 07:05:46 -05:00
Joakim Sørensen
afa7fd923a Update yarnpkg GPG key (#45973) 2021-02-04 12:51:38 +01:00
Erik Montnemery
dd150bb797 Allow manual configuration of ignored singleton config entries (#45161)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-04 11:08:10 +01:00
Shay Levy
fefe4a2021 Fix exception in Shelly sleeping device that switches to polling (#45930) 2021-02-04 11:07:30 +01:00
Joakim Sørensen
7e9500e465 Use bootstrap in devcontainer (#45968) 2021-02-04 10:41:28 +01:00
Joakim Sørensen
06e6005fbb Add warning to custom integrations without version (#45919)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-02-04 09:59:41 +01:00
olijouve
8256acb8ef Fix onvif ConnectionResetError (#45899)
Fix "ConnectionResetError: Cannot write to closing transport" error we can have on lots of chinese cams(like Goke GK7102 based IP cameras)
Those non full onvif compliant cams can "crash" when calling non implemented functions like events or ptz and they are likely react by closing transport, leaving the request in a uncatched error state.

My camera used to fail on setup, and now it run nicely with that simple fix.
2021-02-04 09:25:35 +01:00
Christopher Gozdziewski
1b6ee8301a Convert ozw climate values to correct units (#45369)
* Convert ozw climate values to correct units

* Remove debugger logging

* Fix black code formatting

* Remove extra spaces

* Add method descriptions and change to use setpoint

* Fix build and respond to comments

* Remove self from convert_units call

* Move method to top

* Move method outside class

* Add blank lines

* Fix test to use farenheit

* Update another value to farenheit

* Change to celsius

* Another test fix

* test fix

* Fix a value

* missed one

* Add unit test for convert_units

* fix unit test import

* Add new line to end of test file

* fix convert units import

* Reorder imports

* Grab const from different import

Co-authored-by: Trevor <tboyce021@gmail.com>
2021-02-04 08:32:43 +01:00
denes44
14d914e300 Enable emulated_hue setting XY color and transition time by client (#45844)
* Enable setting XY color and transition time by client

* New test for setting XY color value

* Correct block outdent

* New test for setting transition time value

* Fixed commented out code
2021-02-03 15:35:27 -10:00
Philip Allgaier
5a0715d388 Consistent spelling of IT abbreviations / protocol / format names (#45913) 2021-02-04 01:43:07 +01:00
Philip Allgaier
44914c01ac Fix typo in Roomba strings (#45928) 2021-02-03 14:26:32 -10:00
tkdrob
04f39d7dd4 Use core constants for command_line auth provider (#45907) 2021-02-03 19:19:22 -05:00
HomeAssistant Azure
adf38f7074 [ci skip] Translation update 2021-02-04 00:06:54 +00:00
David F. Mulcahey
51e695fd45 add api to refresh topology (#44840) 2021-02-03 15:35:05 -05:00
Niccolo Zapponi
a775b79d4b Add support for iCloud 2FA (#45818)
* Add support for iCloud 2FA

* Updated dependency for iCloud

* Updated dependency and logic fix

* Added logic for handling incorrect 2FA code

* Bug fix on failing test

* Added myself to codeowners

* Added check for 2FA on setup

* Updated error message
2021-02-03 19:18:31 +01:00
Brandon Rothweiler
4b208746e5 Add Mazda Connected Services integration (#45768) 2021-02-03 17:38:12 +01:00
Berni Moses
a584ad5ac3 Fix duplicate lg_soundbar entities and disable polling (#42044)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-03 17:06:02 +01:00
badguy99
6458ff774f Homeconnect remote states (#45610)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-03 17:05:20 +01:00
Shay Levy
0875f654c8 Add support for Shelly battery operated devices (#45406)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-03 17:03:22 +01:00
Keith Lamprecht
fcc14933d0 Add transitiontime to hue scene service (#45785) 2021-02-03 15:42:52 +01:00
Joakim Sørensen
90973f471f Add integration name to the deprecation warnings (#45901) 2021-02-03 14:40:11 +01:00
Tobias Sauerwein
5615ab4c25 Add support for climate setpoint thermostats to zwave_js (#45890) 2021-02-03 13:59:19 +01:00
Marcel van der Veldt
9998fe3684 Update discovery scheme for Meter CC in zwave_js integration (#45897) 2021-02-03 13:08:00 +01:00
Jesse Campbell
eaa9fff3ba Remove v4 multilevel transitional currentValue workaround in zwave_js (#45884)
* Remove v4 multilevel transitional currentValue workaround

This was only needed because the get-after-set was reporting a
transitional currentValue instead of the final one.
zwave-js v6.1.1 removes the get-after-set functionality completely, so
this is no longer required (and breaks status reporting entirely)

* Fix tests to check currentValue instead of targetValue as well
2021-02-03 12:02:49 +01:00
Paulus Schoutsen
40ba182144 Upgrade Z-Wave JS Python to 0.17.0 (#45895) 2021-02-03 11:58:46 +01:00
Paulus Schoutsen
a2ec1a47d5 Mark Z-Wave as deprecated (#45896) 2021-02-03 11:54:00 +01:00
Paulus Schoutsen
959ed6d077 Update translations 2021-02-03 11:46:49 +01:00
Pascal Vizeli
45ac6df76f Update docker base image 2021.02.0 (#45889) 2021-02-03 10:41:02 +01:00
jjlawren
048f36c77e Bump plexapi to 3.4.1 (#45878) 2021-02-03 08:44:34 +01:00
Quentame
d9dba1b7ab Bump Freebox to 0.0.9 (#45837)
* Bump Freebox to 0.0.9

* Remove @SNoof85 from code owners

* Module is now freebox_api
2021-02-02 22:57:06 +01:00
Bram Kragten
bf9b3bf9db Update frontend to 20210127.7 (#45874) 2021-02-02 22:45:51 +01:00
Martin Hjelmare
524b9e7b1f Use new zwave_js client (#45872)
* Use new zwave_js client

* Remove client callbacks

* Clean up on connect and on disconnect

* Clean log

* Add stop listen to unsubscribe callbacks

* Fix most tests

* Adapt to new listen interface

* Fix most tests

* Remove stale connection state feature

* Bump zwave-js-server-python to 0.16.0

* Clean up disconnect
2021-02-02 20:59:56 +01:00
Marcel van der Veldt
2e98cfb9ab Guard for missing value (#45867)
* guard for missing value

* update comment
2021-02-02 19:57:08 +01:00
Martin Hjelmare
c93fec34b3 Fix zwave_js sensor device class attribute error (#45863) 2021-02-02 16:25:43 +01:00
Fabian Affolter
811bbb7acb Upgrade emoji to 1.2.0 (#45847) 2021-02-02 15:56:56 +01:00
Fabian Affolter
63cc2517dd Upgrade watchdog to 1.0.2 (#45848) 2021-02-02 15:53:03 +01:00
Martin Hjelmare
6e205965ee Fix zwave_js device remove test (#45864) 2021-02-02 15:28:21 +01:00
Fabian Affolter
e9b2d33ad8 Upgrade pytz to >=2021.1 (#45839) 2021-02-02 15:18:58 +01:00
Fabian Affolter
7ff4281b6d Upgrade jinja2 to >=2.11.3 (#45843) 2021-02-02 15:10:54 +01:00
Thomas Friedel
0382c93283 Enable Osramlightify again (#45849) 2021-02-02 14:45:02 +01:00
J. Nick Koston
d417ee2732 Add fan speed percentage support to google assistant (#45835) 2021-02-02 14:39:07 +01:00
Daniel Pereira
a96a80e78d Update alexa/const.py to reflect docs (#45806)
The current docs say the Alexa integration is compatible with languages not currently present in the conf validator.

See: https://www.home-assistant.io/integrations/alexa.smart_home/#alexa-locale
2021-02-02 14:38:13 +01:00
J. Nick Koston
463a32819c Ensure homekit never picks a port that another config entry uses (#45433) 2021-02-02 14:30:38 +01:00
Raman Gupta
a64ad50b27 Remove zwave_js devices that the controller is no longer connected to on initialization (#45853)
* Remove zwave_js devices that the controller is no longer connected to on initialization

* remove extra line break

* fix test

* Clean up

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

* Lint

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-02 10:30:12 +01:00
Marcel van der Veldt
0e3ba532c7 Update zwave_js discovery schema for light platform (#45861) 2021-02-02 10:18:44 +01:00
Tom Harris
b3e2f8f904 Add Insteon entities in event loop (#45829) 2021-02-01 23:17:17 -10:00
Marcel van der Veldt
0feda9ce63 Fix sensor discovery for zwave_js integration (#45834)
Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
2021-02-02 10:06:09 +01:00
Raman Gupta
8d9b66e23d Add current humidity to zwave_js climate platform (#45857) 2021-02-02 09:41:00 +01:00
Raman Gupta
3ef7bd6b73 Add notification events to zwave_js integration (#45827)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-02-02 09:37:42 +01:00
Erik Montnemery
411c0a9685 Improve MQTT JSON light to allow non-ambiguous states (#45522) 2021-02-02 09:36:00 +01:00
michaeldavie
aea8636c7e Fix environment_canada high/low temperature display in evenings. (#45855) 2021-02-02 08:23:26 +01:00
Fabian Affolter
60d4dadcb6 Upgrade sqlalchemy to 1.3.23 (#45845) 2021-02-01 16:03:51 -10:00
Aidan Timson
3a77ef02e4 Add sensors to Lyric integration (#45791)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-01 15:51:20 -10:00
Aidan Timson
253ae3f423 Lyric Code Improvements (#45819)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-01 14:09:25 -10:00
Fabian Affolter
f2286d4811 Upgrade TwitterAPI to 2.6.5 (#45842) 2021-02-01 19:01:39 -05:00
Fabian Affolter
d38d8a542d Upgrade colorlog to 4.7.2 (#45840) 2021-02-01 19:01:19 -05:00
Marcel van der Veldt
b4559a172c Add value notification events to zwave_js integration (#45814) 2021-02-01 23:47:58 +01:00
Alessandro Pilotti
8222eb5e3e Allow Influxdb CA path in verify_ssl (#45270) 2021-02-01 23:29:31 +01:00
Aaron Bach
3bdf962838 Add ability to configure AirVisual with city/state/country in UI (#44116) 2021-02-01 11:38:03 -10:00
Raman Gupta
197c857e1f Search all endpoints for value in zwave_js (#45809)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-02-01 14:46:06 -05:00
Maciej Bieniek
776b1395de Bump brother library to version 0.2.0 (#45832) 2021-02-01 20:43:43 +01:00
Michael
c90588d35d Correct synology_dsm CPU sensor's naming and measurement unit (#45500) 2021-02-01 07:15:34 -10:00
Johan Nenzén
285bd3aa91 Add support for Keg and Airlock to Plaato using polling API (#34760)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-02-01 07:12:56 -10:00
Robert Svensson
83a75b02ea Code quality improvements to UniFi integration (#45794)
* Do less inside try statements

* Replace controller id with config entry id since it doesn't serve a purpose anymore

* Improve how controller connection state is communicated in the client and device tracker
Remove the need to disable arguments-differ lint

* Remove broad exception handling from config flow
I'm not sure there ever was a reason for this more than to catch all exceptions

* Replace site string with constant for SSDP title_placeholders

* Unload platforms in the defacto way

* Noone reads the method descriptions

* Improve file descriptions
2021-02-01 17:55:16 +01:00
Allen Porter
2136b3013f Increase test coverage for stream worker (#44161)
Co-authored-by: Justin Wong <46082645+uvjustin@users.noreply.github.com>
2021-02-01 17:48:49 +01:00
Tobias Bielohlawek
6e67b943da Remove Nuimo integration (#45600) 2021-02-01 16:58:00 +01:00
Joakim Sørensen
374817fbaa Bump awesomeversion from 21.1.6 to 21.2.0 (#45821) 2021-02-01 16:54:25 +01:00
Chris
a8cf377ed7 Add stop_cover service for zwave_js (#45805) 2021-02-01 16:46:36 +01:00
J. Nick Koston
9f59515bb8 Fix shutdown deadlock with run_callback_threadsafe (#45807) 2021-02-01 10:54:39 +01:00
Martin Hjelmare
31a84555b9 Bump zwave-js-server-python to 0.15.0 (#45813) 2021-02-01 10:54:07 +01:00
J. Nick Koston
e0bf18986b Fix missing async for lutron_caseta timeout (#45812) 2021-02-01 10:15:20 +01:00
Sly Gryphon
91a54eecb3 Add izone control zone (#43984) 2021-02-01 09:48:50 +01:00
Raman Gupta
0b63510cab Add zwave_js binary sensors property name for Notification CC (#45810) 2021-02-01 09:45:24 +01:00
Ville Skyttä
2ffdc4694a Remove misleading "for" from custom integration warning message (#45811) 2021-02-01 08:36:06 +01:00
Pierre Ståhl
03928dbe55 Bump pyatv to 0.7.6 (#45799) 2021-02-01 08:34:55 +01:00
Mick Vleeshouwer
1d94c10bb5 Change via_hub to via_device (#45804) 2021-01-31 20:55:18 -10:00
Marcel van der Veldt
3e080f88c6 Bump zwave-js-server-python to 0.14.2 (#45800) 2021-01-31 17:14:20 -05:00
J. Nick Koston
385b7e17ef Move homekit accessory creation to async (#45788) 2021-01-31 11:36:19 -10:00
J. Nick Koston
73d7d80731 Add timeout to lutron_caseta to prevent it blocking startup (#45769) 2021-01-31 21:43:00 +01:00
J. Nick Koston
852af7e372 Update homekit for new async library changes (#45731) 2021-01-31 21:40:24 +01:00
J. Nick Koston
dac9626112 Resolve homekit cover adjustment slowness (#45730) 2021-01-31 21:39:35 +01:00
J. Nick Koston
8be357ff4f Ensure lutron_caseta is only discovered once (#45792) 2021-01-31 21:38:08 +01:00
Matthias Alphart
868e530cbb Prevent AttributError for uninitilized KNX ClimateMode (#45793) 2021-01-31 20:56:42 +01:00
Michael
e506d8616f Fix polling and update of camera state for synology_dsm (#43683)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-01-31 09:22:46 -10:00
Franck Nijhof
c74ddf4720 Upgrade pre-commit to 2.10.0 (#45777) 2021-01-31 08:00:49 -10:00
Franck Nijhof
f1d3af1a13 Add WLED unload entry result correctly (#45783) 2021-01-31 07:59:39 -10:00
Aidan Timson
2d10c83150 Honeywell Lyric Integration (#39695)
Co-authored-by: J. Nick Koston <nick@koston.org>
2021-01-31 07:51:31 -10:00
Vladimír Záhradník
ee55223065 SSDP response decode: replace invalid utf-8 characters (#42681)
* SSDP response decode: replace invalid utf-8 characters

* Add test to validate replaced data

Co-authored-by: Joakim Plate <elupus@ecce.se>
2021-01-31 17:59:14 +01:00
Erik Montnemery
ca43b3a8bb Bump pychromecast to 8.0.0 (#45776) 2021-01-31 16:35:29 +01:00
Franck Nijhof
78934af6e6 Disable Osramlightify, upstream package is missing (#45775) 2021-01-31 13:50:48 +01:00
J. Nick Koston
f372bcf306 Update insteon to use new fan entity model (#45767) 2021-01-31 12:13:55 +01:00
MtK
275946b96d Bump ROVA package requirement (#45755) 2021-01-31 11:30:26 +01:00
J. Nick Koston
ea7aa6af59 Update dyson for the new fan entity model (#45762)
* Update dyson for the new fan entity model

* Fix test

* tweak

* fix

* adj

* Update homeassistant/components/dyson/fan.py

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

* move percentage is None block

* move percentage is None block

* no need to list comp

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-01-31 10:26:02 +01:00
Bram Kragten
6b44636344 Update frontend to 20210127.6 (#45760) 2021-01-31 00:51:33 +01:00
Ville Skyttä
d13b58a4e6 Upgrade mypy to 0.800 (#45485)
* Upgrade mypy to 0.800

https://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html

* Fix issues flagged by mypy 0.800

* Add overloads + small changes

* Apply grammar

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-01-30 22:33:53 +01:00
Franck Nijhof
e43cee163f Fix typo in issue form 2021-01-30 21:36:13 +01:00
Franck Nijhof
da29855967 Enable issue form as default 2021-01-30 21:32:46 +01:00
Franck Nijhof
27407c1160 Tiny tweaks to issue form 2021-01-30 21:24:56 +01:00
Franck Nijhof
726bc6210b Tiny tweaks to issue form 2021-01-30 21:21:57 +01:00
Paulus Schoutsen
8a6469cfce newline 2021-01-30 21:17:36 +01:00
Franck Nijhof
63fb8307fb Add initial GitHub Issue Form (#45752) 2021-01-30 21:10:42 +01:00
Guliver
b00086ca1f Use fixed due date only for comparison in todoist (#43300) 2021-01-30 17:21:04 +01:00
J. Nick Koston
88c4031e57 Fix exception when a unifi config entry is ignored (#45735)
* Fix exception when a unifi config entry is ignored

* Fix existing test
2021-01-30 16:45:46 +01:00
Anders Melchiorsen
1fd3a86239 Upgrade pysonos to 0.0.40 (#45743) 2021-01-30 15:38:43 +01:00
Joakim Sørensen
0964393002 Bump awesomeversion from 21.1.3 to 21.1.6 (#45738) 2021-01-30 14:09:16 +01:00
Jens Østergaard Nielsen
b80571519b IHC service functions support for multiple IHC controllers (#44626)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-01-30 12:46:50 +01:00
J. Nick Koston
d81017f62e Use DataUpdateCoordinator for solaredge (#45734)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-01-30 09:56:51 +01:00
Aaron Bach
6bf59dbeab Add significant change support to binary_sensor (#45677)
* Add significant change support to binary_sensor
2021-01-30 09:04:35 +01:00
Aaron Bach
85e6bc581f Add significant change support to lock (#45726) 2021-01-30 09:03:54 +01:00
Nathan Tilley
07a4422a70 Implement person significant change (#45713) 2021-01-30 08:05:58 +01:00
Ryan Fleming
8a112721fa Fix feedback from UVC (#45630)
* Fixing feedback from UVC

* Couple of fixes
2021-01-30 08:00:27 +01:00
Paulus Schoutsen
87d40ff815 Do not cache frontend files during dev (#45698) 2021-01-30 00:05:06 +01:00
chpego
41e2e5043b Upgrade youtube_dl to version 2021.01.24.1 (#45724)
* Upgrade youtube_dl to version 2021.01.24.1

* Update requirements_all.txt
2021-01-29 23:14:17 +01:00
Pascal Reeb
f07ffee535 Advanced testing for Nuki config flow (#45721) 2021-01-29 17:01:25 -05:00
Patrik
adf8873e56 Remove ggravlingen from codeowners (#45723) 2021-01-29 17:00:27 -05:00
Aaron Bach
14c2053841 Bump simplisafe-python to 9.6.4 (#45716)
* Bump simplisafe-python to 9.6.4

* Fix imports
2021-01-29 13:30:21 -07:00
Philip Allgaier
84f506efb7 Set default position value for cover action (#45670)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-01-29 21:11:12 +01:00
Martin Hjelmare
ace5b58337 Fix ozw init tests (#45718) 2021-01-29 20:58:57 +01:00
Bram Kragten
df00f32dfc Updated frontend to 20210127.5 (#45714) 2021-01-29 20:12:03 +01:00
Paul Daumlechner
48e899ca3a Add reboot_gateway service to Velux (#43198) 2021-01-29 20:07:58 +01:00
cristian-vescan
0fe3d6ea81 Added Romanian voice to Google Cloud TTS (#45704)
See https://cloud.google.com/text-to-speech/docs/voices
2021-01-29 20:02:04 +01:00
Joakim Plate
d4f186078c During tests we can run with lowest rounds (#45710) 2021-01-29 19:57:14 +01:00
Kendell R
fbffea6b61 Add unit of measurement and icon for sleep score (#45705) 2021-01-29 19:22:44 +01:00
Robert Svensson
97fd05eb9f Allow new UniFi flows to update existing entries if host and site match (#45668) 2021-01-29 18:14:39 +01:00
Joakim Plate
af68d5fb41 Use a fully mocked credential (#45707) 2021-01-29 17:58:25 +01:00
Martin Hjelmare
bcc9add0b4 Fix mqtt check in ozw (#45709) 2021-01-29 17:57:39 +01:00
Paulus Schoutsen
b2789621bd Updates to dev container (#45706) 2021-01-29 17:47:54 +01:00
J. Nick Koston
5f9a1d105c Improve HomeKit Accessory Mode UX (#45402) 2021-01-29 09:57:13 -06:00
Aleksander Żarczyński
bc3610c8e1 Add patch method to rest switch component (#45663) 2021-01-29 16:03:00 +01:00
Pieter Mulder
c1586f97db Only show matching caldav events in calendar (#45701) 2021-01-29 15:25:01 +01:00
bsmappee
3f67f9e09c Bump pysmappee to 0.2.16 (#45699) 2021-01-29 15:01:55 +01:00
Pascal Vizeli
b8ff112920 Update docker base image 2021.01.1 (#45697) 2021-01-29 12:53:35 +01:00
GeoffAtHome
da713e206d Add override duration for genius hub switches (#45558) 2021-01-29 12:44:56 +01:00
Steven Looman
71c169c84f Address late review comments for upnp (#45696) 2021-01-29 12:27:57 +01:00
Pascal Reeb
ba55f1ff4b Add config flow for nuki (#45664)
* implemented config_flow for nuki component

* warn -> warning

* exception handling & config_flow tests

* gen_requirements_all

* Update config_flow.py

Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
2021-01-29 11:05:13 +01:00
Paulus Schoutsen
b74cbb2a59 Bump crpytography to 3.3.1 (#45691) 2021-01-29 10:33:44 +01:00
Steven Looman
25c5c6aec9 Refactoring upnp component (#43646) 2021-01-29 10:23:34 +01:00
aizerin
f080af698d Use pure rgb and allow to set only brightness for fibaro (#45673)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-01-29 09:36:52 +01:00
Paulus Schoutsen
fb884e3afd Update bootstrap script (#45692) 2021-01-29 09:19:32 +01:00
J. Nick Koston
c6105900f6 Update httpcore to prevent unhandled exception on dropped connection (#45667)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-01-29 09:11:24 +01:00
Tom Harris
aacf6bd100 Fix formatting IntEnum as hex in 3.8.x (#45686) 2021-01-29 09:07:18 +01:00
Dermot Duffy
c66a892233 Remove YAML support from Hyperion integration (#45690) 2021-01-29 09:05:00 +01:00
Aaron Bach
4f3b10d661 Stop Tile setup on invalid auth (#45683) 2021-01-29 08:57:36 +01:00
Martin
c7db2c35b7 Add vicare heat pump sensors (#41413) 2021-01-29 08:55:51 +01:00
Guido Schmitz
8b3156ea82 Use new fixtures in devolo Home Control tests (#45669) 2021-01-29 03:14:39 +01:00
Bram Kragten
eb370e9494 Update frontend to 20210127.3 (#45679) 2021-01-29 00:46:28 +01:00
Aaron Bach
1edae8cd48 Add last_lost_timestamp attribute to Tile (#45681) 2021-01-28 16:39:06 -07:00
Aaron Bach
73cce8e8e2 Replace strange "dict logic" in AirVisual pollutant level sensors (2 of 2) (#44903)
* Replace strange "dict logic" in AirVisual main pollutant sensor

* Move methods outside of class

* Cleanup
2021-01-28 16:32:21 -07:00
Julian Löhr
7bc8060122 Add reauthentication flow to fritzbox integration (#45587) 2021-01-29 00:08:59 +01:00
Marcel van der Veldt
8bcb4092df Fix removing nodes in zwave_js integration (#45676) 2021-01-28 23:45:36 +01:00
J. Nick Koston
e7ddaec468 Update esphome to use new fan entity model (#45590) 2021-01-28 17:25:08 +01:00
J. Nick Koston
d148f9aa85 Update comfoconnect to use new fan entity model (#45593) 2021-01-28 17:23:10 +01:00
jjlawren
d7e0391e03 Allow Plex playback using provided playqueue ID (#45580) 2021-01-28 17:21:31 +01:00
Guido Schmitz
8065ece0bd Add first set of tests to devolo Home Control integration (#42527)
* Add first two testcases

* Remove repetition

* Add first two testcases

* Remove repetition

* Add connection error test case

* add test_setup_entry_credentials_valid

* First attempt to use fixtures

* Use markers

* Optimize patch

* Optimize marker use

* Always patch mydevolo

* Add first two testcases

* Remove repetition

* Add first two testcases

* Remove repetition

* Add connection error test case

* add test_setup_entry_credentials_valid

* First attempt to use fixtures

* Use markers

* Optimize patch

* Optimize marker use

* Always patch mydevolo

* Add unload entry test case

* Catch up with reality

* Use unittest patch

* Use core interface to start tests

* Use entry state

* Consistently assert entry state

* Patch class instead of init

Co-authored-by: Markus Bong <2Fake1987@gmail.com>
2021-01-28 17:14:33 +01:00
J. Nick Koston
0da4034179 Ensure history LazyState state value is always a string (#45644)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-01-28 16:05:02 +01:00
J. Nick Koston
fdcf1fccf8 Update vesync to use new fan entity model (#45585) 2021-01-28 16:02:38 +01:00
Tobias Sauerwein
a4c8cb6f84 Unregister webhook if it can't be established successfully (#42791) 2021-01-28 15:30:10 +01:00
J. Nick Koston
f0e4510213 Update lutron_caseta to use new fan entity model (#45540) 2021-01-28 08:17:16 -06:00
Maciej Bieniek
92efe4f491 Bump gios library (#45639) 2021-01-28 13:28:39 +01:00
J. Nick Koston
3ff75eee53 Update homekit to use new fan entity model (#45549) 2021-01-28 12:38:18 +01:00
Fabian Affolter
f1c24939f3 Upgrade beautifulsoup4 to 4.9.3 (#45619) 2021-01-28 12:06:36 +01:00
Joakim Plate
38d2cacf7a Support blocking trusted network from new ip (#44630)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-01-28 12:06:20 +01:00
Fabian Affolter
e4a7692610 Upgrade pyyaml to 5.4.1 (CVE-2020-14343) (#45624) 2021-01-28 12:05:09 +01:00
J. Nick Koston
ab1d42950a Update homekit_controller to use new fan entity model (#45547) 2021-01-28 11:43:43 +01:00
J. Nick Koston
babfef829d Add support for percentage speeds and preset modes to template fan (#45478) 2021-01-28 10:44:36 +01:00
J. Nick Koston
22e44e4ba4 Update zwave to use new fan entity model (#45541)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-01-28 10:35:01 +01:00
J. Nick Koston
ee592350b3 Update isy994 to use new fan entity model (#45536) 2021-01-28 10:23:55 +01:00
J. Nick Koston
85e463d507 Update bond to use new fan entity model (#45534) 2021-01-28 10:23:12 +01:00
J. Nick Koston
0693d8a064 Update zwave_js to use new fan entity model (#45543) 2021-01-28 10:15:24 +01:00
J. Nick Koston
3896e81db7 Update smartthings to use new fan entity model (#45592) 2021-01-28 10:09:16 +01:00
J. Nick Koston
0441960ffd Update wemo to use new fan entity model (#45582) 2021-01-28 10:06:18 +01:00
J. Nick Koston
0ec068667f Update lutron_caseta manufacturer string (#45637)
Use the string that Lutron uses so it can be automatched
to the Lutron app via homekit
2021-01-28 09:40:48 +01:00
J. Nick Koston
e43d865112 Update ozw to use new fan entity model (#45577) 2021-01-28 09:40:10 +01:00
Paulus Schoutsen
92e084cee1 Include relative path in tts get url (#45623)
* Include relative path in tts get url

* Always cal get_url when requested
2021-01-28 09:33:18 +01:00
Marc Mueller
7673f57248 Add additional error handling for automation script run (#45613) 2021-01-28 09:26:41 +01:00
Erik Montnemery
5711d61b38 Bump hatasmota to 0.2.7 (#45625) 2021-01-28 08:55:22 +01:00
J. Nick Koston
068d1b5eb8 Separate fan speeds into percentages and presets modes (#45407)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: John Carr <john.carr@unrouted.co.uk>
2021-01-27 17:44:36 -06:00
Julian Engelhardt
3f948e027a Clean tcp tests (#41673)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-01-27 22:37:59 +01:00
Franck Nijhof
0338f5bccf Bump version to 2021.3.0dev0 (#45617) 2021-01-27 21:12:38 +01:00
7682 changed files with 225972 additions and 63926 deletions

View File

@@ -23,6 +23,8 @@ omit =
homeassistant/components/adguard/sensor.py
homeassistant/components/adguard/switch.py
homeassistant/components/ads/*
homeassistant/components/aemet/abstract_aemet_sensor.py
homeassistant/components/aemet/weather_update_coordinator.py
homeassistant/components/aftership/sensor.py
homeassistant/components/agent_dvr/__init__.py
homeassistant/components/agent_dvr/alarm_control_panel.py
@@ -67,11 +69,14 @@ omit =
homeassistant/components/arwn/sensor.py
homeassistant/components/asterisk_cdr/mailbox.py
homeassistant/components/asterisk_mbox/*
homeassistant/components/asuswrt/__init__.py
homeassistant/components/asuswrt/router.py
homeassistant/components/aten_pe/*
homeassistant/components/atome/*
homeassistant/components/aurora/__init__.py
homeassistant/components/aurora/binary_sensor.py
homeassistant/components/aurora/const.py
homeassistant/components/aurora/sensor.py
homeassistant/components/aurora_abb_powerone/sensor.py
homeassistant/components/avea/light.py
homeassistant/components/avion/light.py
@@ -156,7 +161,6 @@ omit =
homeassistant/components/coolmaster/const.py
homeassistant/components/cppm_tracker/device_tracker.py
homeassistant/components/cpuspeed/sensor.py
homeassistant/components/crimereports/sensor.py
homeassistant/components/cups/sensor.py
homeassistant/components/currencylayer/sensor.py
homeassistant/components/daikin/*
@@ -169,10 +173,10 @@ omit =
homeassistant/components/deluge/sensor.py
homeassistant/components/deluge/switch.py
homeassistant/components/denon/media_player.py
homeassistant/components/denonavr/__init__.py
homeassistant/components/denonavr/media_player.py
homeassistant/components/denonavr/receiver.py
homeassistant/components/deutsche_bahn/sensor.py
homeassistant/components/devolo_home_control/__init__.py
homeassistant/components/devolo_home_control/binary_sensor.py
homeassistant/components/devolo_home_control/climate.py
homeassistant/components/devolo_home_control/const.py
@@ -217,6 +221,7 @@ omit =
homeassistant/components/ecobee/weather.py
homeassistant/components/econet/__init__.py
homeassistant/components/econet/binary_sensor.py
homeassistant/components/econet/climate.py
homeassistant/components/econet/const.py
homeassistant/components/econet/sensor.py
homeassistant/components/econet/water_heater.py
@@ -232,6 +237,8 @@ omit =
homeassistant/components/emby/media_player.py
homeassistant/components/emoncms/sensor.py
homeassistant/components/emoncms_history/*
homeassistant/components/emonitor/__init__.py
homeassistant/components/emonitor/sensor.py
homeassistant/components/enigma2/media_player.py
homeassistant/components/enocean/__init__.py
homeassistant/components/enocean/binary_sensor.py
@@ -241,12 +248,14 @@ omit =
homeassistant/components/enocean/light.py
homeassistant/components/enocean/sensor.py
homeassistant/components/enocean/switch.py
homeassistant/components/enphase_envoy/__init__.py
homeassistant/components/enphase_envoy/sensor.py
homeassistant/components/entur_public_transport/*
homeassistant/components/environment_canada/*
homeassistant/components/envirophat/sensor.py
homeassistant/components/envisalink/*
homeassistant/components/ephember/climate.py
homeassistant/components/epson/__init__.py
homeassistant/components/epson/const.py
homeassistant/components/epson/media_player.py
homeassistant/components/epsonworkforce/sensor.py
@@ -266,8 +275,16 @@ omit =
homeassistant/components/eufy/*
homeassistant/components/everlights/light.py
homeassistant/components/evohome/*
homeassistant/components/ezviz/*
homeassistant/components/ezviz/__init__.py
homeassistant/components/ezviz/camera.py
homeassistant/components/ezviz/coordinator.py
homeassistant/components/ezviz/const.py
homeassistant/components/ezviz/binary_sensor.py
homeassistant/components/ezviz/sensor.py
homeassistant/components/ezviz/switch.py
homeassistant/components/familyhub/camera.py
homeassistant/components/faa_delays/__init__.py
homeassistant/components/faa_delays/binary_sensor.py
homeassistant/components/fastdotcom/*
homeassistant/components/ffmpeg/camera.py
homeassistant/components/fibaro/*
@@ -308,11 +325,13 @@ omit =
homeassistant/components/foscam/camera.py
homeassistant/components/foursquare/*
homeassistant/components/free_mobile/notify.py
homeassistant/components/freebox/__init__.py
homeassistant/components/freebox/device_tracker.py
homeassistant/components/freebox/router.py
homeassistant/components/freebox/sensor.py
homeassistant/components/freebox/switch.py
homeassistant/components/fritz/__init__.py
homeassistant/components/fritz/common.py
homeassistant/components/fritz/const.py
homeassistant/components/fritz/device_tracker.py
homeassistant/components/fritzbox_callmonitor/__init__.py
homeassistant/components/fritzbox_callmonitor/const.py
@@ -329,7 +348,6 @@ omit =
homeassistant/components/garmin_connect/alarm_util.py
homeassistant/components/gc100/*
homeassistant/components/geniushub/*
homeassistant/components/geizhals/sensor.py
homeassistant/components/github/sensor.py
homeassistant/components/gitlab_ci/sensor.py
homeassistant/components/gitter/sensor.py
@@ -343,6 +361,8 @@ omit =
homeassistant/components/google/*
homeassistant/components/google_cloud/tts.py
homeassistant/components/google_maps/device_tracker.py
homeassistant/components/google_travel_time/__init__.py
homeassistant/components/google_travel_time/helpers.py
homeassistant/components/google_travel_time/sensor.py
homeassistant/components/gpmdp/media_player.py
homeassistant/components/gpsd/sensor.py
@@ -358,7 +378,9 @@ omit =
homeassistant/components/guardian/sensor.py
homeassistant/components/guardian/switch.py
homeassistant/components/guardian/util.py
homeassistant/components/habitica/*
homeassistant/components/habitica/__init__.py
homeassistant/components/habitica/const.py
homeassistant/components/habitica/sensor.py
homeassistant/components/hangouts/*
homeassistant/components/hangouts/__init__.py
homeassistant/components/hangouts/const.py
@@ -369,6 +391,9 @@ omit =
homeassistant/components/harmony/data.py
homeassistant/components/harmony/remote.py
homeassistant/components/harmony/util.py
homeassistant/components/hassio/binary_sensor.py
homeassistant/components/hassio/entity.py
homeassistant/components/hassio/sensor.py
homeassistant/components/haveibeenpwned/sensor.py
homeassistant/components/hdmi_cec/*
homeassistant/components/heatmiser/climate.py
@@ -376,7 +401,13 @@ omit =
homeassistant/components/hikvisioncam/switch.py
homeassistant/components/hisense_aehw4a1/*
homeassistant/components/hitron_coda/device_tracker.py
homeassistant/components/hive/*
homeassistant/components/hive/__init__.py
homeassistant/components/hive/climate.py
homeassistant/components/hive/binary_sensor.py
homeassistant/components/hive/light.py
homeassistant/components/hive/sensor.py
homeassistant/components/hive/switch.py
homeassistant/components/hive/water_heater.py
homeassistant/components/hlk_sw16/__init__.py
homeassistant/components/hlk_sw16/switch.py
homeassistant/components/home_connect/*
@@ -384,6 +415,9 @@ omit =
homeassistant/components/homematic/climate.py
homeassistant/components/homematic/cover.py
homeassistant/components/homematic/notify.py
homeassistant/components/home_plus_control/api.py
homeassistant/components/home_plus_control/helpers.py
homeassistant/components/home_plus_control/switch.py
homeassistant/components/homeworks/*
homeassistant/components/honeywell/climate.py
homeassistant/components/horizon/media_player.py
@@ -401,6 +435,7 @@ omit =
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hydrawise/*
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py
homeassistant/components/iaqualink/climate.py
@@ -463,7 +498,11 @@ omit =
homeassistant/components/kaiterra/*
homeassistant/components/kankun/switch.py
homeassistant/components/keba/*
homeassistant/components/keenetic_ndms2/__init__.py
homeassistant/components/keenetic_ndms2/binary_sensor.py
homeassistant/components/keenetic_ndms2/const.py
homeassistant/components/keenetic_ndms2/device_tracker.py
homeassistant/components/keenetic_ndms2/router.py
homeassistant/components/kef/*
homeassistant/components/keyboard/*
homeassistant/components/keyboard_remote/*
@@ -478,6 +517,10 @@ omit =
homeassistant/components/kodi/media_player.py
homeassistant/components/kodi/notify.py
homeassistant/components/konnected/*
homeassistant/components/kostal_plenticore/__init__.py
homeassistant/components/kostal_plenticore/const.py
homeassistant/components/kostal_plenticore/helper.py
homeassistant/components/kostal_plenticore/sensor.py
homeassistant/components/kwb/sensor.py
homeassistant/components/lacrosse/sensor.py
homeassistant/components/lametric/*
@@ -485,7 +528,18 @@ omit =
homeassistant/components/lastfm/sensor.py
homeassistant/components/launch_library/const.py
homeassistant/components/launch_library/sensor.py
homeassistant/components/lcn/*
homeassistant/components/lcn/__init__.py
homeassistant/components/lcn/binary_sensor.py
homeassistant/components/lcn/climate.py
homeassistant/components/lcn/const.py
homeassistant/components/lcn/cover.py
homeassistant/components/lcn/helpers.py
homeassistant/components/lcn/light.py
homeassistant/components/lcn/scene.py
homeassistant/components/lcn/schemas.py
homeassistant/components/lcn/sensor.py
homeassistant/components/lcn/services.py
homeassistant/components/lcn/switch.py
homeassistant/components/lg_netcast/media_player.py
homeassistant/components/lg_soundbar/media_player.py
homeassistant/components/life360/*
@@ -519,12 +573,15 @@ omit =
homeassistant/components/lutron_caseta/switch.py
homeassistant/components/lw12wifi/light.py
homeassistant/components/lyft/sensor.py
homeassistant/components/lyric/__init__.py
homeassistant/components/lyric/api.py
homeassistant/components/lyric/climate.py
homeassistant/components/lyric/sensor.py
homeassistant/components/magicseaweed/sensor.py
homeassistant/components/mailgun/notify.py
homeassistant/components/map/*
homeassistant/components/mastodon/notify.py
homeassistant/components/matrix/*
homeassistant/components/maxcube/*
homeassistant/components/mcp23017/*
homeassistant/components/media_extractor/*
homeassistant/components/mediaroom/media_player.py
@@ -535,6 +592,8 @@ omit =
homeassistant/components/melcloud/water_heater.py
homeassistant/components/message_bird/notify.py
homeassistant/components/met/weather.py
homeassistant/components/met_eireann/__init__.py
homeassistant/components/met_eireann/weather.py
homeassistant/components/meteo_france/__init__.py
homeassistant/components/meteo_france/const.py
homeassistant/components/meteo_france/sensor.py
@@ -560,8 +619,8 @@ omit =
homeassistant/components/mochad/*
homeassistant/components/modbus/climate.py
homeassistant/components/modbus/cover.py
homeassistant/components/modbus/modbus.py
homeassistant/components/modbus/switch.py
homeassistant/components/modbus/sensor.py
homeassistant/components/modem_callerid/sensor.py
homeassistant/components/motion_blinds/__init__.py
homeassistant/components/motion_blinds/const.py
@@ -571,11 +630,29 @@ omit =
homeassistant/components/mpd/media_player.py
homeassistant/components/mqtt_room/sensor.py
homeassistant/components/msteams/notify.py
homeassistant/components/mullvad/__init__.py
homeassistant/components/mullvad/binary_sensor.py
homeassistant/components/mutesync/__init__.py
homeassistant/components/mutesync/binary_sensor.py
homeassistant/components/nest/const.py
homeassistant/components/mvglive/sensor.py
homeassistant/components/mychevy/*
homeassistant/components/mycroft/*
homeassistant/components/mycroft/notify.py
homeassistant/components/mysensors/*
homeassistant/components/mysensors/__init__.py
homeassistant/components/mysensors/binary_sensor.py
homeassistant/components/mysensors/climate.py
homeassistant/components/mysensors/const.py
homeassistant/components/mysensors/cover.py
homeassistant/components/mysensors/device.py
homeassistant/components/mysensors/device_tracker.py
homeassistant/components/mysensors/gateway.py
homeassistant/components/mysensors/handler.py
homeassistant/components/mysensors/helpers.py
homeassistant/components/mysensors/light.py
homeassistant/components/mysensors/notify.py
homeassistant/components/mysensors/sensor.py
homeassistant/components/mysensors/switch.py
homeassistant/components/mystrom/binary_sensor.py
homeassistant/components/mystrom/light.py
homeassistant/components/mystrom/switch.py
@@ -591,17 +668,6 @@ omit =
homeassistant/components/nederlandse_spoorwegen/sensor.py
homeassistant/components/nello/lock.py
homeassistant/components/nest/legacy/*
homeassistant/components/netatmo/__init__.py
homeassistant/components/netatmo/api.py
homeassistant/components/netatmo/camera.py
homeassistant/components/netatmo/climate.py
homeassistant/components/netatmo/const.py
homeassistant/components/netatmo/data_handler.py
homeassistant/components/netatmo/helper.py
homeassistant/components/netatmo/light.py
homeassistant/components/netatmo/netatmo_entity_base.py
homeassistant/components/netatmo/sensor.py
homeassistant/components/netatmo/webhook.py
homeassistant/components/netdata/sensor.py
homeassistant/components/netgear/device_tracker.py
homeassistant/components/netgear_lte/*
@@ -621,7 +687,9 @@ omit =
homeassistant/components/norway_air/air_quality.py
homeassistant/components/notify_events/notify.py
homeassistant/components/nsw_fuel_station/sensor.py
homeassistant/components/nuimo_controller/*
homeassistant/components/nuki/__init__.py
homeassistant/components/nuki/const.py
homeassistant/components/nuki/binary_sensor.py
homeassistant/components/nuki/lock.py
homeassistant/components/nut/sensor.py
homeassistant/components/nx584/alarm_control_panel.py
@@ -687,19 +755,26 @@ omit =
homeassistant/components/pandora/media_player.py
homeassistant/components/pcal9535a/*
homeassistant/components/pencom/switch.py
homeassistant/components/philips_js/__init__.py
homeassistant/components/philips_js/media_player.py
homeassistant/components/philips_js/remote.py
homeassistant/components/pi_hole/sensor.py
homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
homeassistant/components/pi4ioe5v9xxxx/switch.py
homeassistant/components/picotts/tts.py
homeassistant/components/piglow/light.py
homeassistant/components/pilight/*
homeassistant/components/ping/__init__.py
homeassistant/components/ping/const.py
homeassistant/components/ping/binary_sensor.py
homeassistant/components/ping/device_tracker.py
homeassistant/components/pioneer/media_player.py
homeassistant/components/pjlink/media_player.py
homeassistant/components/plaato/*
homeassistant/components/plaato/__init__.py
homeassistant/components/plaato/binary_sensor.py
homeassistant/components/plaato/const.py
homeassistant/components/plaato/entity.py
homeassistant/components/plaato/sensor.py
homeassistant/components/plex/media_player.py
homeassistant/components/plum_lightpad/light.py
homeassistant/components/pocketcasts/sensor.py
@@ -707,6 +782,7 @@ omit =
homeassistant/components/poolsense/__init__.py
homeassistant/components/poolsense/sensor.py
homeassistant/components/poolsense/binary_sensor.py
homeassistant/components/powerwall/__init__.py
homeassistant/components/proliphix/climate.py
homeassistant/components/progettihwsw/__init__.py
homeassistant/components/progettihwsw/binary_sensor.py
@@ -743,6 +819,7 @@ omit =
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/__init__.py
homeassistant/components/recollect_waste/sensor.py
homeassistant/components/recorder/repack.py
homeassistant/components/recswitch/switch.py
homeassistant/components/reddit/*
homeassistant/components/rejseplanen/sensor.py
@@ -754,7 +831,13 @@ omit =
homeassistant/components/rest/switch.py
homeassistant/components/ring/camera.py
homeassistant/components/ripple/sensor.py
homeassistant/components/rituals_perfume_genie/binary_sensor.py
homeassistant/components/rituals_perfume_genie/entity.py
homeassistant/components/rituals_perfume_genie/sensor.py
homeassistant/components/rituals_perfume_genie/switch.py
homeassistant/components/rituals_perfume_genie/__init__.py
homeassistant/components/rocketchat/notify.py
homeassistant/components/roomba/__init__.py
homeassistant/components/roomba/binary_sensor.py
homeassistant/components/roomba/braava.py
homeassistant/components/roomba/irobot_base.py
@@ -782,6 +865,12 @@ omit =
homeassistant/components/satel_integra/*
homeassistant/components/schluter/*
homeassistant/components/scrape/sensor.py
homeassistant/components/screenlogic/__init__.py
homeassistant/components/screenlogic/binary_sensor.py
homeassistant/components/screenlogic/climate.py
homeassistant/components/screenlogic/sensor.py
homeassistant/components/screenlogic/services.py
homeassistant/components/screenlogic/switch.py
homeassistant/components/scsgate/*
homeassistant/components/scsgate/cover.py
homeassistant/components/sendgrid/notify.py
@@ -818,6 +907,7 @@ omit =
homeassistant/components/slack/notify.py
homeassistant/components/sinch/*
homeassistant/components/slide/*
homeassistant/components/sma/__init__.py
homeassistant/components/sma/sensor.py
homeassistant/components/smappee/__init__.py
homeassistant/components/smappee/api.py
@@ -833,7 +923,6 @@ omit =
homeassistant/components/snapcast/*
homeassistant/components/snmp/*
homeassistant/components/sochain/sensor.py
homeassistant/components/socialblade/sensor.py
homeassistant/components/solaredge/__init__.py
homeassistant/components/solaredge/sensor.py
homeassistant/components/solaredge_local/sensor.py
@@ -876,7 +965,6 @@ omit =
homeassistant/components/switcher_kis/switch.py
homeassistant/components/switchmate/switch.py
homeassistant/components/syncthru/sensor.py
homeassistant/components/synology/camera.py
homeassistant/components/synology_chat/notify.py
homeassistant/components/synology_dsm/__init__.py
homeassistant/components/synology_dsm/binary_sensor.py
@@ -944,7 +1032,10 @@ omit =
homeassistant/components/toon/sensor.py
homeassistant/components/toon/switch.py
homeassistant/components/torque/sensor.py
homeassistant/components/totalconnect/*
homeassistant/components/totalconnect/__init__.py
homeassistant/components/totalconnect/alarm_control_panel.py
homeassistant/components/totalconnect/binary_sensor.py
homeassistant/components/totalconnect/const.py
homeassistant/components/touchline/climate.py
homeassistant/components/tplink/common.py
homeassistant/components/tplink/switch.py
@@ -963,7 +1054,14 @@ omit =
homeassistant/components/transmission/const.py
homeassistant/components/transmission/errors.py
homeassistant/components/travisci/sensor.py
homeassistant/components/tuya/*
homeassistant/components/tuya/__init__.py
homeassistant/components/tuya/climate.py
homeassistant/components/tuya/const.py
homeassistant/components/tuya/cover.py
homeassistant/components/tuya/fan.py
homeassistant/components/tuya/light.py
homeassistant/components/tuya/scene.py
homeassistant/components/tuya/switch.py
homeassistant/components/twentemilieu/const.py
homeassistant/components/twentemilieu/sensor.py
homeassistant/components/twilio_call/notify.py
@@ -995,12 +1093,20 @@ omit =
homeassistant/components/velbus/switch.py
homeassistant/components/velux/*
homeassistant/components/venstar/climate.py
homeassistant/components/verisure/*
homeassistant/components/verisure/__init__.py
homeassistant/components/verisure/alarm_control_panel.py
homeassistant/components/verisure/binary_sensor.py
homeassistant/components/verisure/camera.py
homeassistant/components/verisure/coordinator.py
homeassistant/components/verisure/lock.py
homeassistant/components/verisure/sensor.py
homeassistant/components/verisure/switch.py
homeassistant/components/versasense/*
homeassistant/components/vesync/__init__.py
homeassistant/components/vesync/common.py
homeassistant/components/vesync/const.py
homeassistant/components/vesync/fan.py
homeassistant/components/vesync/light.py
homeassistant/components/vesync/switch.py
homeassistant/components/viaggiatreno/sensor.py
homeassistant/components/vicare/*
@@ -1020,6 +1126,8 @@ omit =
homeassistant/components/waterfurnace/*
homeassistant/components/watson_iot/*
homeassistant/components/watson_tts/tts.py
homeassistant/components/waze_travel_time/__init__.py
homeassistant/components/waze_travel_time/helpers.py
homeassistant/components/waze_travel_time/sensor.py
homeassistant/components/webostv/*
homeassistant/components/whois/sensor.py
@@ -1043,7 +1151,6 @@ omit =
homeassistant/components/xbox/sensor.py
homeassistant/components/xbox_live/sensor.py
homeassistant/components/xeoma/camera.py
homeassistant/components/xfinity/device_tracker.py
homeassistant/components/xiaomi/camera.py
homeassistant/components/xiaomi_aqara/__init__.py
homeassistant/components/xiaomi_aqara/binary_sensor.py
@@ -1056,6 +1163,7 @@ omit =
homeassistant/components/xiaomi_miio/__init__.py
homeassistant/components/xiaomi_miio/air_quality.py
homeassistant/components/xiaomi_miio/alarm_control_panel.py
homeassistant/components/xiaomi_miio/device.py
homeassistant/components/xiaomi_miio/device_tracker.py
homeassistant/components/xiaomi_miio/fan.py
homeassistant/components/xiaomi_miio/gateway.py
@@ -1113,3 +1221,6 @@ exclude_lines =
# Don't complain if tests don't hit defensive assertion code:
raise AssertionError
raise NotImplementedError
# TYPE_CHECKING block is never executed during pytest run
if TYPE_CHECKING:

View File

@@ -2,13 +2,14 @@
"name": "Home Assistant Dev",
"context": "..",
"dockerFile": "../Dockerfile.dev",
"postCreateCommand": "mkdir -p config && pip3 install -e .",
"postCreateCommand": "script/setup",
"postStartCommand": "script/bootstrap",
"containerEnv": { "DEVCONTAINER": "1" },
"appPort": 8123,
"runArgs": ["-e", "GIT_EDITOR=code --wait"],
"extensions": [
"ms-python.vscode-pylance",
"visualstudioexptteam.vscodeintellicode",
"ms-azure-devops.azure-pipelines",
"redhat.vscode-yaml",
"esbenp.prettier-vscode"
],
@@ -19,12 +20,11 @@
"python.linting.enabled": true,
"python.formatting.provider": "black",
"python.testing.pytestArgs": ["--no-cov"],
"python.testing.pytestEnabled": true,
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"files.trimTrailingWhitespace": true,
"terminal.integrated.shell.linux": "/bin/bash",
"terminal.integrated.shell.linux": "/usr/bin/zsh",
"yaml.customTags": [
"!input scalar",
"!secret scalar",

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
custom: https://www.nabucasa.com
github: balloob

View File

@@ -1,53 +0,0 @@
---
name: Report a bug with Home Assistant Core
about: Report an issue with Home Assistant Core
---
<!-- READ THIS FIRST:
- If you need additional help with this template, please refer to https://www.home-assistant.io/help/reporting_issues/
- Make sure you are running the latest version of Home Assistant before reporting an issue: https://github.com/home-assistant/core/releases
- Do not report issues for integrations if you are using custom components or integrations.
- Provide as many details as possible. Paste logs, configuration samples and code into the backticks.
DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed without comment.
-->
## The problem
<!--
Describe the issue you are experiencing here to communicate to the
maintainers. Tell us what you were trying to do and what happened.
-->
## Environment
<!--
Provide details about the versions you are using, which helps us to reproduce
and find the issue quicker. Version information is found in the
Home Assistant frontend: Configuration -> Info.
-->
- Home Assistant Core release with the issue:
- Last working Home Assistant Core release (if known):
- Operating environment (OS/Container/Supervised/Core):
- Integration causing this issue:
- Link to integration documentation on our website:
## Problem-relevant `configuration.yaml`
<!--
An example configuration that caused the problem for you. Fill this out even
if it seems unimportant to you. Please be sure to remove personal information
like passwords, private URLs and other credentials.
-->
```yaml
```
## Traceback/Error logs
<!--
If you come across any trace or error logs, please provide them.
-->
```txt
```
## Additional information

92
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,92 @@
name: Report an issue with Home Assistant Core
description: Report an issue with Home Assistant Core.
body:
- type: markdown
attributes:
value: |
This issue form is for reporting bugs only!
If you have a feature or enhancement request, please use the [feature request][fr] section of our [Community Forum][fr].
[fr]: https://community.home-assistant.io/c/feature-requests
- type: textarea
validations:
required: true
attributes:
label: The problem
description: >-
Describe the issue you are experiencing here to communicate to the
maintainers. Tell us what you were trying to do and what happened.
Provide a clear and concise description of what the problem is.
- type: markdown
attributes:
value: |
## Environment
- type: input
id: version
validations:
required: true
attributes:
label: What is version of Home Assistant Core has the issue?
placeholder: core-
description: >
Can be found in the Configuration panel -> Info.
- type: input
attributes:
label: What was the last working version of Home Assistant Core?
placeholder: core-
description: >
If known, otherwise leave blank.
- type: dropdown
validations:
required: true
attributes:
label: What type of installation are you running?
description: >
If you don't know, you can find it in: Configuration panel -> Info.
options:
- Home Assistant OS
- Home Assistant Container
- Home Assistant Supervised
- Home Assistant Core
- type: input
id: integration_name
attributes:
label: Integration causing the issue
description: >
The name of the integration, for example, Automation or Philips Hue.
- type: input
id: integration_link
attributes:
label: Link to integration documentation on our website
placeholder: "https://www.home-assistant.io/integrations/..."
description: |
Providing a link [to the documentation][docs] help us categorizing the
issue, while providing a useful reference at the same time.
[docs]: https://www.home-assistant.io/integrations
- type: markdown
attributes:
value: |
# Details
- type: textarea
attributes:
label: Example YAML snippet
description: |
If this issue has an example piece of YAML that can help reproducing this problem, please provide.
This can be an piece of YAML from, e.g., an automation, script, scene or configuration.
render: yaml
- type: textarea
attributes:
label: Anything in the logs that might be useful for us?
description: For example, error message, or stack traces.
render: txt
- type: textarea
attributes:
label: Additional information
description: >
If you have any additional information for us, use the field below.
Please note, you can attach screenshots or screen recordings here, by
dragging and dropping files in the field below.

311
.github/workflows/builder.yml vendored Normal file
View File

@@ -0,0 +1,311 @@
name: Build images
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
release:
types: ["published"]
schedule:
- cron: "0 2 * * *"
env:
BUILD_TYPE: core
DEFAULT_PYTHON: 3.8
jobs:
init:
name: Initialize build
runs-on: ubuntu-latest
outputs:
architectures: ${{ steps.info.outputs.architectures }}
version: ${{ steps.version.outputs.version }}
channel: ${{ steps.version.outputs.channel }}
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Get information
id: info
uses: home-assistant/actions/helpers/info@master
- name: Get version
id: version
uses: home-assistant/actions/helpers/version@master
with:
type: ${{ env.BUILD_TYPE }}
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@master
with:
ignore-dev: true
build_python:
name: Build PyPi package
needs: init
runs-on: ubuntu-latest
if: needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Build package
shell: bash
run: |
pip install twine wheel
python setup.py sdist bdist_wheel
- name: Upload package
shell: bash
run: |
export TWINE_USERNAME="__token__"
export TWINE_PASSWORD="${{ secrets.TWINE_TOKEN }}"
twine upload dist/* --skip-existing
build_base:
name: Build ${{ matrix.arch }} base core image
needs: init
runs-on: ubuntu-latest
strategy:
matrix:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Adjust nightly version
if: needs.init.outputs.channel == 'dev'
shell: bash
run: |
python3 -m pip install packaging
python3 -m pip install .
python3 script/version_bump.py nightly
version="$(python setup.py -V)"
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2021.04.2
with:
args: |
$BUILD_ARGS \
--${{ matrix.arch }} \
--target /data \
--with-codenotary "${{ secrets.VCN_USER }}" "${{ secrets.VCN_PASSWORD }}" "${{ secrets.VCN_ORG }}" \
--validate-from "${{ secrets.VCN_ORG }}" \
--generic ${{ needs.init.outputs.version }}
build_machine:
name: Build ${{ matrix.machine }} machine core image
needs: ["init", "build_base"]
runs-on: ubuntu-latest
strategy:
matrix:
machine:
- generic-x86-64
- intel-nuc
- odroid-c2
- odroid-c4
- odroid-n2
- odroid-xu
- qemuarm
- qemuarm-64
- qemux86
- qemux86-64
- raspberrypi
- raspberrypi2
- raspberrypi3
- raspberrypi3-64
- raspberrypi4
- raspberrypi4-64
- tinker
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2021.04.2
with:
args: |
$BUILD_ARGS \
--target /data/machine \
--with-codenotary "${{ secrets.VCN_USER }}" "${{ secrets.VCN_PASSWORD }}" "${{ secrets.VCN_ORG }}" \
--validate-from "${{ secrets.VCN_ORG }}" \
--machine "${{ needs.init.outputs.version }}=${{ matrix.machine }}"
publish_ha:
name: Publish version files
needs: ["init", "build_machine"]
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
with:
name: ${{ secrets.GIT_NAME }}
email: ${{ secrets.GIT_EMAIL }}
token: ${{ secrets.GIT_TOKEN }}
- name: Update version file
uses: home-assistant/actions/helpers/version-push@master
with:
key: "homeassistant[]"
key-description: "Home Assistant Core"
version: ${{ needs.init.outputs.version }}
channel: ${{ needs.init.outputs.channel }}
- name: Update version file (stable -> beta)
if: needs.init.outputs.channel == 'stable'
uses: home-assistant/actions/helpers/version-push@master
with:
key: "homeassistant[]"
key-description: "Home Assistant Core"
version: ${{ needs.init.outputs.version }}
channel: beta
publish_container:
name: Publish meta container
needs: ["init", "build_base"]
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Meta Image
shell: bash
run: |
bash <(curl https://getvcn.codenotary.com -L)
export DOCKER_CLI_EXPERIMENTAL=enabled
function create_manifest() {
local docker_reg=${1}
local tag_l=${2}
local tag_r=${3}
docker manifest create "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/amd64-homeassistant:${tag_r}" \
"${docker_reg}/i386-homeassistant:${tag_r}" \
"${docker_reg}/armhf-homeassistant:${tag_r}" \
"${docker_reg}/armv7-homeassistant:${tag_r}" \
"${docker_reg}/aarch64-homeassistant:${tag_r}"
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/amd64-homeassistant:${tag_r}" \
--os linux --arch amd64
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/i386-homeassistant:${tag_r}" \
--os linux --arch 386
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/armhf-homeassistant:${tag_r}" \
--os linux --arch arm --variant=v6
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/armv7-homeassistant:${tag_r}" \
--os linux --arch arm --variant=v7
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/aarch64-homeassistant:${tag_r}" \
--os linux --arch arm64 --variant=v8
docker manifest push --purge "${docker_reg}/home-assistant:${tag_l}"
}
function validate_image() {
local image=${1}
state="$(vcn authenticate --org home-assistant.io --output json docker://${image} | jq '.verification.status // 2')"
if [[ "${state}" != "0" ]]; then
echo "Invalid signature!"
exit 1
fi
}
for docker_reg in "homeassistant" "ghcr.io/home-assistant"; do
docker pull "${docker_reg}/amd64-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/i386-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/armhf-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/armv7-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/amd64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/i386-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/armhf-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/armv7-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
# Create version tag
create_manifest "${docker_reg}" "${{ needs.init.outputs.version }}" "${{ needs.init.outputs.version }}"
# Create general tags
if [[ "${{ needs.init.outputs.version }}" =~ d ]]; then
create_manifest "${docker_reg}" "dev" "${{ needs.init.outputs.version }}"
elif [[ "${{ needs.init.outputs.version }}" =~ b ]]; then
create_manifest "${docker_reg}" "beta" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "rc" "${{ needs.init.outputs.version }}"
else
create_manifest "${docker_reg}" "stable" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "latest" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "beta" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "rc" "${{ needs.init.outputs.version }}"
fi
done

View File

@@ -12,7 +12,8 @@ on:
env:
CACHE_VERSION: 1
DEFAULT_PYTHON: 3.8
PRE_COMMIT_HOME: ~/.cache/pre-commit
PRE_COMMIT_CACHE: ~/.cache/pre-commit
SQLALCHEMY_WARN_20: 1
jobs:
# Separate job to pre-populate the base dependency cache
@@ -20,29 +21,36 @@ jobs:
prepare-base:
name: Prepare base dependencies
runs-on: ubuntu-latest
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
pre-commit-key: ${{ steps.generate-pre-commit-key.outputs.key }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
echo "::set-output name=key::base-venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-python-key.outputs.key }}
restore-keys: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements_test.txt') }}-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements_test.txt') }}-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }}-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -50,15 +58,20 @@ jobs:
. venv/bin/activate
pip install -U "pip<20.3" setuptools
pip install -r requirements.txt -r requirements_test.txt
- name: Generate partial pre-commit restore key
id: generate-pre-commit-key
run: >-
echo "::set-output name=key::pre-commit-${{ env.CACHE_VERSION }}-${{
hashFiles('.pre-commit-config.yaml') }}"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
${{ runner.os }}-${{ steps.generate-pre-commit-key.outputs.key }}
restore-keys: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-
${{ runner.os }}-pre-commit-${{ env.CACHE_VERSION }}-
- name: Install pre-commit dependencies
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -73,21 +86,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -95,15 +104,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Run bandit
run: |
@@ -118,21 +126,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -140,15 +144,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Run black
run: |
@@ -163,21 +166,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -185,15 +184,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Register codespell problem matcher
run: |
@@ -230,21 +228,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -252,15 +246,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Register check executables problem matcher
run: |
@@ -278,21 +271,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -300,15 +289,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Register flake8 problem matcher
run: |
@@ -326,21 +314,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -348,15 +332,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Run isort
run: |
@@ -371,21 +354,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -393,15 +372,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Register check-json problem matcher
run: |
@@ -419,21 +397,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -441,15 +415,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Run pyupgrade
run: |
@@ -475,21 +448,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -497,15 +466,14 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore Python virtual environment from cache"
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Register yamllint problem matcher
run: |
@@ -528,14 +496,11 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -554,21 +519,17 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.2.1
uses: actions/setup-python@v2.2.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -585,24 +546,31 @@ jobs:
strategy:
matrix:
python-version: [3.8, 3.9]
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
echo "::set-output name=key::venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
${{ runner.os }}-${{ matrix.python-version }}-${{
steps.generate-python-key.outputs.key }}
restore-keys: |
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-
${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}-
${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements_test.txt') }}-
${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-
- name: Create full Python ${{ matrix.python-version }} virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -630,14 +598,11 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -664,14 +629,11 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -689,6 +651,7 @@ jobs:
runs-on: ubuntu-latest
needs: prepare-tests
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4]
python-version: [3.8, 3.9]
@@ -700,14 +663,11 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -735,11 +695,12 @@ jobs:
--test-group-count 4 \
--test-group=${{ matrix.group }} \
--cov homeassistant \
--cov-report= \
-o console_output_style=count \
-p no:sugar \
tests
- name: Upload coverage artifact
uses: actions/upload-artifact@v2.2.2
uses: actions/upload-artifact@v2.2.3
with:
name: coverage-${{ matrix.python-version }}-group${{ matrix.group }}
path: .coverage
@@ -750,7 +711,7 @@ jobs:
coverage:
name: Process test coverage
runs-on: ubuntu-latest
needs: pytest
needs: ["prepare-tests", "pytest"]
strategy:
matrix:
python-version: [3.8]
@@ -760,14 +721,11 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -782,4 +740,4 @@ jobs:
coverage report --fail-under=94
coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1.2.1
uses: codecov/codecov-action@v1.4.1

View File

@@ -16,7 +16,7 @@ jobs:
# - No PRs marked as no-stale
# - No issues marked as no-stale or help-wanted
- name: 90 days stale issues & PRs policy
uses: actions/stale@v3.0.15
uses: actions/stale@v3.0.18
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
@@ -53,7 +53,7 @@ jobs:
# - No PRs marked as no-stale or new-integrations
# - No issues (-1)
- name: 30 days stale PRs policy
uses: actions/stale@v3.0.15
uses: actions/stale@v3.0.18
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 30
@@ -78,7 +78,7 @@ jobs:
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Needs more information stale issues policy
uses: actions/stale@v3.0.15
uses: actions/stale@v3.0.18
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
only-labels: "needs-more-information"

View File

@@ -1,11 +1,11 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.7.2
rev: v2.12.0
hooks:
- id: pyupgrade
args: [--py38-plus]
- repo: https://github.com/psf/black
rev: 20.8b1
rev: 21.4b0
hooks:
- id: black
args:
@@ -23,12 +23,17 @@ repos:
exclude_types: [csv, json]
exclude: ^tests/fixtures/
- repo: https://gitlab.com/pycqa/flake8
rev: 3.8.4
rev: 3.9.1
hooks:
- id: flake8
additional_dependencies:
- flake8-docstrings==1.5.0
- pydocstyle==5.1.1
- pycodestyle==2.7.0
- pyflakes==2.3.1
- flake8-docstrings==1.6.0
- pydocstyle==6.0.0
- flake8-comprehensions==3.4.0
- flake8-noqa==1.1.0
- mccabe==0.6.1
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/bandit
rev: 1.7.0
@@ -40,7 +45,7 @@ repos:
- --configfile=tests/bandit.yaml
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/isort
rev: 5.5.3
rev: 5.8.0
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
@@ -59,11 +64,24 @@ repos:
rev: v1.24.2
hooks:
- id: yamllint
- repo: https://github.com/prettier/prettier
rev: 2.0.4
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.2.1
hooks:
- id: prettier
stages: [manual]
- repo: https://github.com/cdce8p/python-typing-update
rev: v0.3.3
hooks:
# Run `python-typing-update` hook manually from time to time
# to update python typing syntax.
# Will require manual work, before submitting changes!
- id: python-typing-update
stages: [manual]
args:
- --py38-plus
- --force
- --keep-updates
files: ^(homeassistant|tests|script)/.+\.py$
- repo: local
hooks:
# Run mypy through our wrapper script in order to get the possible
@@ -90,4 +108,4 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/(manifest|strings)\.json|\.coveragerc)$
files: ^(homeassistant/.+/(manifest|strings)\.json|\.coveragerc|homeassistant/.+/services\.yaml)$

47
.strict-typing Normal file
View File

@@ -0,0 +1,47 @@
# Used by hassfest for generating mypy.ini.
# If component is fully covered with type annotations, please add it here
# to enable strict mypy checks.
homeassistant.components
homeassistant.components.automation.*
homeassistant.components.binary_sensor.*
homeassistant.components.bond.*
homeassistant.components.calendar.*
homeassistant.components.cover.*
homeassistant.components.device_automation.*
homeassistant.components.frontend.*
homeassistant.components.geo_location.*
homeassistant.components.group.*
homeassistant.components.history.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.hyperion.*
homeassistant.components.image_processing.*
homeassistant.components.integration.*
homeassistant.components.knx.*
homeassistant.components.light.*
homeassistant.components.lock.*
homeassistant.components.mailbox.*
homeassistant.components.media_player.*
homeassistant.components.notify.*
homeassistant.components.number.*
homeassistant.components.persistent_notification.*
homeassistant.components.proximity.*
homeassistant.components.recorder.purge
homeassistant.components.recorder.repack
homeassistant.components.remote.*
homeassistant.components.scene.*
homeassistant.components.sensor.*
homeassistant.components.slack.*
homeassistant.components.sonos.media_player
homeassistant.components.sun.*
homeassistant.components.switch.*
homeassistant.components.systemmonitor.*
homeassistant.components.tts.*
homeassistant.components.vacuum.*
homeassistant.components.water_heater.*
homeassistant.components.weather.*
homeassistant.components.websocket_api.*
homeassistant.components.zeroconf.*
homeassistant.components.zone.*
homeassistant.components.zwave_js.*

13
.vscode/launch.json vendored
View File

@@ -9,11 +9,8 @@
"type": "python",
"request": "launch",
"module": "homeassistant",
"args": [
"--debug",
"-c",
"config"
]
"justMyCode": false,
"args": ["--debug", "-c", "config"]
},
{
// Debug by attaching to local Home Asistant server using Remote Python Debugger.
@@ -28,7 +25,7 @@
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
],
]
},
{
// Debug by attaching to remote Home Asistant server using Remote Python Debugger.
@@ -43,7 +40,7 @@
"localRoot": "${workspaceFolder}",
"remoteRoot": "/usr/src/homeassistant"
}
],
]
}
]
}
}

View File

@@ -24,6 +24,7 @@ homeassistant/components/accuweather/* @bieniu
homeassistant/components/acmeda/* @atmurray
homeassistant/components/adguard/* @frenck
homeassistant/components/advantage_air/* @Bre77
homeassistant/components/aemet/* @noltari
homeassistant/components/agent_dvr/* @ispysoftware
homeassistant/components/airly/* @bieniu
homeassistant/components/airnow/* @asymworks
@@ -34,7 +35,7 @@ homeassistant/components/almond/* @gcampax @balloob
homeassistant/components/alpha_vantage/* @fabaff
homeassistant/components/ambiclimate/* @danielhiversen
homeassistant/components/ambient_station/* @bachya
homeassistant/components/amcrest/* @pnbruckner
homeassistant/components/analytics/* @home-assistant/core @ludeeus
homeassistant/components/androidtv/* @JeffLIrion
homeassistant/components/apache_kafka/* @bachya
homeassistant/components/api/* @home-assistant/core
@@ -45,7 +46,7 @@ homeassistant/components/arcam_fmj/* @elupus
homeassistant/components/arduino/* @fabaff
homeassistant/components/arest/* @fabaff
homeassistant/components/arris_tg2492lg/* @vanbalken
homeassistant/components/asuswrt/* @kennedyshead
homeassistant/components/asuswrt/* @kennedyshead @ollo69
homeassistant/components/atag/* @MatsNL
homeassistant/components/aten_pe/* @mtdcr
homeassistant/components/atome/* @baqs
@@ -82,10 +83,12 @@ homeassistant/components/circuit/* @braam
homeassistant/components/cisco_ios/* @fbradyirl
homeassistant/components/cisco_mobility_express/* @fbradyirl
homeassistant/components/cisco_webex_teams/* @fbradyirl
homeassistant/components/climacell/* @raman325
homeassistant/components/cloud/* @home-assistant/cloud
homeassistant/components/cloudflare/* @ludeeus @ctalkington
homeassistant/components/color_extractor/* @GenericStudent
homeassistant/components/comfoconnect/* @michaelarnauts
homeassistant/components/compensation/* @Petro31
homeassistant/components/config/* @home-assistant/core
homeassistant/components/configurator/* @home-assistant/core
homeassistant/components/control4/* @lawtancool
@@ -130,6 +133,7 @@ homeassistant/components/elkm1/* @gwww @bdraco
homeassistant/components/elv/* @majuss
homeassistant/components/emby/* @mezz64
homeassistant/components/emoncms/* @borpin
homeassistant/components/emonitor/* @bdraco
homeassistant/components/emulated_kasa/* @kbickar
homeassistant/components/enigma2/* @fbradyirl
homeassistant/components/enocean/* @bdurrer
@@ -143,7 +147,8 @@ homeassistant/components/eq3btsmart/* @rytilahti
homeassistant/components/esphome/* @OttoWinter
homeassistant/components/essent/* @TheLastProject
homeassistant/components/evohome/* @zxdavb
homeassistant/components/ezviz/* @baqs
homeassistant/components/ezviz/* @RenierM26 @baqs
homeassistant/components/faa_delays/* @ntilley905
homeassistant/components/fastdotcom/* @rohankapoorcom
homeassistant/components/file/* @fabaff
homeassistant/components/filter/* @dgomes
@@ -158,7 +163,9 @@ homeassistant/components/flunearyou/* @bachya
homeassistant/components/forked_daapd/* @uvjustin
homeassistant/components/fortios/* @kimfrellsen
homeassistant/components/foscam/* @skgsergio
homeassistant/components/freebox/* @snoof85 @Quentame
homeassistant/components/freebox/* @hacf-fr @Quentame
homeassistant/components/fritz/* @mammuth @AaronDavidSchneider @chemelli74
homeassistant/components/fritzbox/* @mib1185
homeassistant/components/fronius/* @nielstron
homeassistant/components/frontend/* @home-assistant/frontend
homeassistant/components/garmin_connect/* @cyberjunky
@@ -177,13 +184,12 @@ homeassistant/components/google_cloud/* @lufton
homeassistant/components/gpsd/* @fabaff
homeassistant/components/gree/* @cmroche
homeassistant/components/greeneye_monitor/* @jkeljo
homeassistant/components/griddy/* @bdraco
homeassistant/components/group/* @home-assistant/core
homeassistant/components/growatt_server/* @indykoning
homeassistant/components/growatt_server/* @indykoning @muppet3000
homeassistant/components/guardian/* @bachya
homeassistant/components/habitica/* @ASMfreaK @leikoilja
homeassistant/components/harmony/* @ehendrix23 @bramkragten @bdraco @mkeesey
homeassistant/components/hassio/* @home-assistant/supervisor
homeassistant/components/hdmi_cec/* @newAM
homeassistant/components/heatmiser/* @andylockran
homeassistant/components/heos/* @andrewsayre
homeassistant/components/here_travel_time/* @eifinger
@@ -194,11 +200,11 @@ homeassistant/components/history/* @home-assistant/core
homeassistant/components/hive/* @Rendili @KJonline
homeassistant/components/hlk_sw16/* @jameshilliard
homeassistant/components/home_connect/* @DavidMStraub
homeassistant/components/home_plus_control/* @chemaaa
homeassistant/components/homeassistant/* @home-assistant/core
homeassistant/components/homekit/* @bdraco
homeassistant/components/homekit_controller/* @Jc2k
homeassistant/components/homematic/* @pvizeli @danielperna84
homeassistant/components/homematicip_cloud/* @SukramJ
homeassistant/components/http/* @home-assistant/core
homeassistant/components/huawei_lte/* @scop @fphammerle
homeassistant/components/huawei_router/* @abmantis
@@ -209,6 +215,7 @@ homeassistant/components/hunterdouglas_powerview/* @bdraco
homeassistant/components/hvv_departures/* @vigonotion
homeassistant/components/hydrawise/* @ptcryan
homeassistant/components/hyperion/* @dermotduffy
homeassistant/components/ialarm/* @RyuzakiKK
homeassistant/components/iammeter/* @lewei50
homeassistant/components/iaqualink/* @flz
homeassistant/components/icloud/* @Quentame @nzapponi
@@ -241,15 +248,19 @@ homeassistant/components/keba/* @dannerph
homeassistant/components/keenetic_ndms2/* @foxel
homeassistant/components/kef/* @basnijholt
homeassistant/components/keyboard_remote/* @bendavid
homeassistant/components/kmtronic/* @dgomes
homeassistant/components/knx/* @Julius2342 @farmio @marvin-w
homeassistant/components/kodi/* @OnFreund @cgtobi
homeassistant/components/konnected/* @heythisisnate @kit-klein
homeassistant/components/kostal_plenticore/* @stegm
homeassistant/components/kulersky/* @emlove
homeassistant/components/lametric/* @robbiet480
homeassistant/components/launch_library/* @ludeeus
homeassistant/components/lcn/* @alengwenus
homeassistant/components/life360/* @pnbruckner
homeassistant/components/linux_battery/* @fabaff
homeassistant/components/litejet/* @joncar
homeassistant/components/litterrobot/* @natekspencer
homeassistant/components/local_ip/* @issacg
homeassistant/components/logger/* @home-assistant/core
homeassistant/components/logi_circle/* @evanjd
@@ -260,14 +271,17 @@ homeassistant/components/luftdaten/* @fabaff
homeassistant/components/lupusec/* @majuss
homeassistant/components/lutron/* @JonGilmore
homeassistant/components/lutron_caseta/* @swails @bdraco
homeassistant/components/lyric/* @timmo001
homeassistant/components/mastodon/* @fabaff
homeassistant/components/matrix/* @tinloaf
homeassistant/components/mazda/* @bdr99
homeassistant/components/mcp23017/* @jardiamj
homeassistant/components/media_source/* @hunterjm
homeassistant/components/mediaroom/* @dgomes
homeassistant/components/melcloud/* @vilppuvuorinen
homeassistant/components/melissa/* @kennedyshead
homeassistant/components/met/* @danielhiversen @thimic
homeassistant/components/met_eireann/* @DylanGore
homeassistant/components/meteo_france/* @hacf-fr @oncleben31 @Quentame
homeassistant/components/meteoalarm/* @rolfberkenbosch
homeassistant/components/metoffice/* @MrHarcombe
@@ -282,11 +296,15 @@ homeassistant/components/modbus/* @adamchengtkc @janiversen @vzahradnik
homeassistant/components/monoprice/* @etsinko @OnFreund
homeassistant/components/moon/* @fabaff
homeassistant/components/motion_blinds/* @starkillerOG
homeassistant/components/motioneye/* @dermotduffy
homeassistant/components/mpd/* @fabaff
homeassistant/components/mqtt/* @home-assistant/core @emontnemery
homeassistant/components/mqtt/* @emontnemery
homeassistant/components/msteams/* @peroyvind
homeassistant/components/mullvad/* @meichthys
homeassistant/components/mutesync/* @currentoor
homeassistant/components/my/* @home-assistant/core
homeassistant/components/myq/* @bdraco
homeassistant/components/mysensors/* @MartinHjelmare
homeassistant/components/mysensors/* @MartinHjelmare @functionpointer
homeassistant/components/mystrom/* @fabaff
homeassistant/components/neato/* @dshokouhi @Santobert
homeassistant/components/nederlandse_spoorwegen/* @YarmoM
@@ -310,7 +328,7 @@ homeassistant/components/notion/* @bachya
homeassistant/components/nsw_fuel_station/* @nickw444
homeassistant/components/nsw_rural_fire_service_feed/* @exxamalte
homeassistant/components/nuheat/* @bdraco
homeassistant/components/nuki/* @pschmitt @pvizeli
homeassistant/components/nuki/* @pschmitt @pvizeli @pree
homeassistant/components/numato/* @clssn
homeassistant/components/number/* @home-assistant/core @Shulyaka
homeassistant/components/nut/* @bdraco
@@ -342,6 +360,7 @@ homeassistant/components/persistent_notification/* @home-assistant/core
homeassistant/components/philips_js/* @elupus
homeassistant/components/pi4ioe5v9xxxx/* @antonverburg
homeassistant/components/pi_hole/* @fabaff @johnluetke @shenxn
homeassistant/components/picnic/* @corneyl
homeassistant/components/pilight/* @trekky12
homeassistant/components/plaato/* @JohNan
homeassistant/components/plex/* @jjlawren
@@ -353,7 +372,7 @@ homeassistant/components/powerwall/* @bdraco @jrester
homeassistant/components/profiler/* @bdraco
homeassistant/components/progettihwsw/* @ardaseremet
homeassistant/components/prometheus/* @knyar
homeassistant/components/proxmoxve/* @k4ds3 @jhollowe
homeassistant/components/proxmoxve/* @k4ds3 @jhollowe @Corbeno
homeassistant/components/ps4/* @ktnrg45
homeassistant/components/push/* @dgomes
homeassistant/components/pvoutput/* @fabaff
@@ -374,9 +393,11 @@ homeassistant/components/random/* @fabaff
homeassistant/components/recollect_waste/* @bachya
homeassistant/components/rejseplanen/* @DarkFox
homeassistant/components/repetier/* @MTrab
homeassistant/components/rflink/* @javicalle
homeassistant/components/rfxtrx/* @danielhiversen @elupus @RobBie1221
homeassistant/components/ring/* @balloob
homeassistant/components/risco/* @OnFreund
homeassistant/components/rituals_perfume_genie/* @milanmeu
homeassistant/components/rmvtransport/* @cgtobi
homeassistant/components/roku/* @ctalkington
homeassistant/components/roomba/* @pschmitt @cyr-ius @shenxn
@@ -390,6 +411,7 @@ homeassistant/components/samsungtv/* @escoand
homeassistant/components/scene/* @home-assistant/core
homeassistant/components/schluter/* @prairieapps
homeassistant/components/scrape/* @fabaff
homeassistant/components/screenlogic/* @dieselrabbit
homeassistant/components/script/* @home-assistant/core
homeassistant/components/search/* @home-assistant/core
homeassistant/components/sense/* @kbickar
@@ -411,20 +433,21 @@ homeassistant/components/sisyphus/* @jkeljo
homeassistant/components/sky_hub/* @rogerselwyn
homeassistant/components/slack/* @bachya
homeassistant/components/slide/* @ualex73
homeassistant/components/sma/* @kellerza
homeassistant/components/sma/* @kellerza @rklomp
homeassistant/components/smappee/* @bsmappee
homeassistant/components/smart_meter_texas/* @grahamwetzler
homeassistant/components/smarthab/* @outadoc
homeassistant/components/smartthings/* @andrewsayre
homeassistant/components/smarttub/* @mdz
homeassistant/components/smarty/* @z0mbieprocess
homeassistant/components/sms/* @ocalvo
homeassistant/components/smtp/* @fabaff
homeassistant/components/solaredge/* @frenck
homeassistant/components/solaredge_local/* @drobtravels @scheric
homeassistant/components/solarlog/* @Ernst79
homeassistant/components/solax/* @squishykid
homeassistant/components/soma/* @ratsept
homeassistant/components/somfy/* @tetienne
homeassistant/components/somfy_mylink/* @bdraco
homeassistant/components/sonarr/* @ctalkington
homeassistant/components/songpal/* @rytilahti @shenxn
homeassistant/components/sonos/* @cgtobi
@@ -440,8 +463,9 @@ homeassistant/components/starline/* @anonym-tsk
homeassistant/components/statistics/* @fabaff
homeassistant/components/stiebel_eltron/* @fucm
homeassistant/components/stookalert/* @fwestenberg
homeassistant/components/stream/* @hunterjm @uvjustin
homeassistant/components/stream/* @hunterjm @uvjustin @allenporter
homeassistant/components/stt/* @pvizeli
homeassistant/components/subaru/* @G-Two
homeassistant/components/suez_water/* @ooii
homeassistant/components/sun/* @Swamp-Ig
homeassistant/components/supla/* @mwegrzynek
@@ -455,7 +479,7 @@ homeassistant/components/syncthru/* @nielstron
homeassistant/components/synology_dsm/* @hacf-fr @Quentame @mib1185
homeassistant/components/synology_srm/* @aerialls
homeassistant/components/syslog/* @fabaff
homeassistant/components/tado/* @michaelarnauts @bdraco
homeassistant/components/tado/* @michaelarnauts @bdraco @noltari
homeassistant/components/tag/* @balloob @dmulcahey
homeassistant/components/tahoma/* @philklei
homeassistant/components/tankerkoenig/* @guillempages
@@ -477,7 +501,7 @@ homeassistant/components/toon/* @frenck
homeassistant/components/totalconnect/* @austinmroczek
homeassistant/components/tplink/* @rytilahti @thegardenmonkey
homeassistant/components/traccar/* @ludeeus
homeassistant/components/tradfri/* @ggravlingen
homeassistant/components/trace/* @home-assistant/core
homeassistant/components/trafikverket_train/* @endor-force
homeassistant/components/trafikverket_weatherstation/* @endor-force
homeassistant/components/transmission/* @engrbm87 @JPHutchins
@@ -485,6 +509,7 @@ homeassistant/components/tts/* @pvizeli
homeassistant/components/tuya/* @ollo69
homeassistant/components/twentemilieu/* @frenck
homeassistant/components/twinkly/* @dr1rrb
homeassistant/components/ubus/* @noltari
homeassistant/components/unifi/* @Kane610
homeassistant/components/unifiled/* @florisvdk
homeassistant/components/upb/* @gwww
@@ -497,7 +522,7 @@ homeassistant/components/usgs_earthquakes_feed/* @exxamalte
homeassistant/components/utility_meter/* @dgomes
homeassistant/components/velbus/* @Cereal2nd @brefra
homeassistant/components/velux/* @Julius2342
homeassistant/components/vera/* @vangorra
homeassistant/components/vera/* @pavoni
homeassistant/components/verisure/* @frenck
homeassistant/components/versasense/* @flamm3blemuff1n
homeassistant/components/version/* @fabaff @ludeeus
@@ -506,14 +531,16 @@ homeassistant/components/vicare/* @oischinger
homeassistant/components/vilfo/* @ManneW
homeassistant/components/vivotek/* @HarlemSquirrel
homeassistant/components/vizio/* @raman325
homeassistant/components/vlc_telnet/* @rodripf
homeassistant/components/vlc_telnet/* @rodripf @dmcc
homeassistant/components/volkszaehler/* @fabaff
homeassistant/components/volumio/* @OnFreund
homeassistant/components/wake_on_lan/* @ntilley905
homeassistant/components/waqi/* @andrey-git
homeassistant/components/watson_tts/* @rutkai
homeassistant/components/weather/* @fabaff
homeassistant/components/webostv/* @bendavid
homeassistant/components/websocket_api/* @home-assistant/core
homeassistant/components/wemo/* @esev
homeassistant/components/wiffi/* @mampfes
homeassistant/components/wilight/* @leofig-rj
homeassistant/components/withings/* @vangorra
@@ -523,7 +550,6 @@ homeassistant/components/workday/* @fabaff
homeassistant/components/worldclock/* @fabaff
homeassistant/components/xbox/* @hunterjm
homeassistant/components/xbox_live/* @MartinHjelmare
homeassistant/components/xfinity/* @cisasteelersfan
homeassistant/components/xiaomi_aqara/* @danielhiversen @syssi
homeassistant/components/xiaomi_miio/* @rytilahti @syssi @starkillerOG
homeassistant/components/xiaomi_tv/* @simse

View File

@@ -1,7 +1,11 @@
FROM mcr.microsoft.com/vscode/devcontainers/python:0-3.8
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN \
apt-get update && apt-get install -y --no-install-recommends \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
libudev-dev \
libavformat-dev \
libavcodec-dev \
@@ -10,6 +14,7 @@ RUN \
libswscale-dev \
libswresample-dev \
libavfilter-dev \
libpcap-dev \
git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
@@ -23,10 +28,11 @@ RUN git clone --depth 1 https://github.com/home-assistant/hass-release \
WORKDIR /workspaces
# Install Python dependencies from requirements
COPY requirements_test.txt requirements_test_pre_commit.txt ./
COPY requirements.txt requirements_test.txt requirements_test_pre_commit.txt ./
COPY homeassistant/package_constraints.txt homeassistant/package_constraints.txt
RUN pip3 install -r requirements_test.txt \
&& rm -rf requirements_test.txt requirements_test_pre_commit.txt homeassistant/
RUN pip3 install -r requirements.txt \
&& pip3 install -r requirements_test.txt \
&& rm -rf requirements.txt requirements_test.txt requirements_test_pre_commit.txt homeassistant/
# Set the default shell to bash instead of sh
ENV SHELL /bin/bash

View File

@@ -1,321 +0,0 @@
# https://dev.azure.com/home-assistant
trigger:
tags:
include:
- '*'
pr: none
schedules:
- cron: "0 1 * * *"
displayName: "nightly builds"
branches:
include:
- dev
always: true
variables:
- name: versionBuilder
value: '2020.11.0'
- group: docker
- group: github
- group: twine
resources:
repositories:
- repository: azure
type: github
name: 'home-assistant/ci-azure'
endpoint: 'home-assistant'
stages:
- stage: 'Validate'
jobs:
- template: templates/azp-job-version.yaml@azure
parameters:
ignoreDev: true
- job: 'Permission'
pool:
vmImage: 'ubuntu-latest'
steps:
- script: |
sudo apt-get install -y --no-install-recommends \
jq curl
release="$(Build.SourceBranchName)"
created_by="$(curl -s https://api.github.com/repos/home-assistant/core/releases/tags/${release} | jq --raw-output '.author.login')"
if [[ "${created_by}" =~ ^(balloob|pvizeli|fabaff|robbiet480|bramkragten|frenck)$ ]]; then
exit 0
fi
echo "${created_by} is not allowed to create an release!"
exit 1
displayName: 'Check rights'
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
- stage: 'Build'
jobs:
- job: 'ReleasePython'
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.8'
inputs:
versionSpec: '3.8'
- script: pip install twine wheel
displayName: 'Install tools'
- script: python setup.py sdist bdist_wheel
displayName: 'Build package'
- script: |
export TWINE_USERNAME="$(twineUser)"
export TWINE_PASSWORD="$(twinePassword)"
twine upload dist/* --skip-existing
displayName: 'Upload pypi'
- job: 'ReleaseDocker'
timeoutInMinutes: 240
pool:
vmImage: 'ubuntu-latest'
strategy:
maxParallel: 5
matrix:
amd64:
buildArch: 'amd64'
i386:
buildArch: 'i386'
armhf:
buildArch: 'armhf'
armv7:
buildArch: 'armv7'
aarch64:
buildArch: 'aarch64'
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
docker login -u $(dockerUser) -p $(dockerPassword)
displayName: 'Docker hub login'
- script: docker pull homeassistant/amd64-builder:$(versionBuilder)
displayName: 'Install Builder'
- script: |
set -e
docker run --rm --privileged \
-v ~/.docker:/root/.docker:rw \
-v /run/docker.sock:/run/docker.sock:rw \
-v $(pwd):/data:ro \
homeassistant/amd64-builder:$(versionBuilder) \
--generic $(homeassistantRelease) "--$(buildArch)" -t /data \
displayName: 'Build Release'
- job: 'ReleaseMachine'
dependsOn:
- ReleaseDocker
timeoutInMinutes: 240
pool:
vmImage: 'ubuntu-latest'
strategy:
maxParallel: 15
matrix:
qemux86-64:
buildMachine: 'qemux86-64'
intel-nuc:
buildMachine: 'intel-nuc'
qemux86:
buildMachine: 'qemux86'
qemuarm:
buildMachine: 'qemuarm'
raspberrypi:
buildMachine: 'raspberrypi'
raspberrypi2:
buildMachine: 'raspberrypi2'
raspberrypi3:
buildMachine: 'raspberrypi3'
raspberrypi4:
buildMachine: 'raspberrypi4'
odroid-xu:
buildMachine: 'odroid-xu'
tinker:
buildMachine: 'tinker'
qemuarm-64:
buildMachine: 'qemuarm-64'
raspberrypi3-64:
buildMachine: 'raspberrypi3-64'
raspberrypi4-64:
buildMachine: 'raspberrypi4-64'
odroid-c2:
buildMachine: 'odroid-c2'
odroid-c4:
buildMachine: 'odroid-c4'
odroid-n2:
buildMachine: 'odroid-n2'
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
docker login -u $(dockerUser) -p $(dockerPassword)
displayName: 'Docker hub login'
- script: docker pull homeassistant/amd64-builder:$(versionBuilder)
displayName: 'Install Builder'
- script: |
set -e
docker run --rm --privileged \
-v ~/.docker:/root/.docker \
-v /run/docker.sock:/run/docker.sock:rw \
-v $(pwd):/data:ro \
homeassistant/amd64-builder:$(versionBuilder) \
--homeassistant-machine "$(homeassistantRelease)=$(buildMachine)" \
-t /data/machine --docker-hub homeassistant
displayName: 'Build Machine'
- stage: 'Publish'
jobs:
- job: 'ReleaseHassio'
pool:
vmImage: 'ubuntu-latest'
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
sudo apt-get install -y --no-install-recommends \
git jq curl
git config --global user.name "Pascal Vizeli"
git config --global user.email "pvizeli@syshack.ch"
git config --global credential.helper store
echo "https://$(githubToken):x-oauth-basic@github.com" > $HOME/.git-credentials
displayName: 'Install requirements'
- script: |
set -e
version="$(homeassistantRelease)"
git clone https://github.com/home-assistant/version
cd version
dev_version="$(jq --raw-output '.homeassistant.default' dev.json)"
beta_version="$(jq --raw-output '.homeassistant.default' beta.json)"
stable_version="$(jq --raw-output '.homeassistant.default' stable.json)"
if [[ "$version" =~ d ]]; then
sed -i "s|$dev_version|$version|g" dev.json
elif [[ "$version" =~ b ]]; then
sed -i "s|$beta_version|$version|g" beta.json
else
sed -i "s|$beta_version|$version|g" beta.json
sed -i "s|$stable_version|$version|g" stable.json
fi
git commit -am "Bump Home Assistant $version"
git push
displayName: "Update version files"
- job: 'ReleaseDocker'
pool:
vmImage: 'ubuntu-latest'
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
docker login -u $(dockerUser) -p $(dockerPassword)
displayName: 'Docker login'
- script: |
set -e
export DOCKER_CLI_EXPERIMENTAL=enabled
function create_manifest() {
local tag_l=$1
local tag_r=$2
docker manifest create homeassistant/home-assistant:${tag_l} \
homeassistant/amd64-homeassistant:${tag_r} \
homeassistant/i386-homeassistant:${tag_r} \
homeassistant/armhf-homeassistant:${tag_r} \
homeassistant/armv7-homeassistant:${tag_r} \
homeassistant/aarch64-homeassistant:${tag_r}
docker manifest annotate homeassistant/home-assistant:${tag_l} \
homeassistant/amd64-homeassistant:${tag_r} \
--os linux --arch amd64
docker manifest annotate homeassistant/home-assistant:${tag_l} \
homeassistant/i386-homeassistant:${tag_r} \
--os linux --arch 386
docker manifest annotate homeassistant/home-assistant:${tag_l} \
homeassistant/armhf-homeassistant:${tag_r} \
--os linux --arch arm --variant=v6
docker manifest annotate homeassistant/home-assistant:${tag_l} \
homeassistant/armv7-homeassistant:${tag_r} \
--os linux --arch arm --variant=v7
docker manifest annotate homeassistant/home-assistant:${tag_l} \
homeassistant/aarch64-homeassistant:${tag_r} \
--os linux --arch arm64 --variant=v8
docker manifest push --purge homeassistant/home-assistant:${tag_l}
}
docker pull homeassistant/amd64-homeassistant:$(homeassistantRelease)
docker pull homeassistant/i386-homeassistant:$(homeassistantRelease)
docker pull homeassistant/armhf-homeassistant:$(homeassistantRelease)
docker pull homeassistant/armv7-homeassistant:$(homeassistantRelease)
docker pull homeassistant/aarch64-homeassistant:$(homeassistantRelease)
# Create version tag
create_manifest "$(homeassistantRelease)" "$(homeassistantRelease)"
# Create general tags
if [[ "$(homeassistantRelease)" =~ d ]]; then
create_manifest "dev" "$(homeassistantRelease)"
elif [[ "$(homeassistantRelease)" =~ b ]]; then
create_manifest "beta" "$(homeassistantRelease)"
create_manifest "rc" "$(homeassistantRelease)"
else
create_manifest "stable" "$(homeassistantRelease)"
create_manifest "latest" "$(homeassistantRelease)"
create_manifest "beta" "$(homeassistantRelease)"
create_manifest "rc" "$(homeassistantRelease)"
fi
displayName: 'Create Meta-Image'
- stage: 'Addidional'
jobs:
- job: 'Updater'
pool:
vmImage: 'ubuntu-latest'
variables:
- group: gcloud
steps:
- template: templates/azp-step-ha-version.yaml@azure
- script: |
set -e
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
curl -o google-cloud-sdk.tar.gz https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
tar -C . -xvf google-cloud-sdk.tar.gz
rm -f google-cloud-sdk.tar.gz
./google-cloud-sdk/install.sh
displayName: 'Setup gCloud'
condition: eq(variables['homeassistantReleaseStable'], 'true')
- script: |
set -e
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
echo "$(gcloudAnalytic)" > gcloud_auth.json
./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gcloud_auth.json
rm -f gcloud_auth.json
displayName: 'Auth gCloud'
condition: eq(variables['homeassistantReleaseStable'], 'true')
- script: |
set -e
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
./google-cloud-sdk/bin/gcloud functions deploy Analytics-Receiver \
--project home-assistant-analytics \
--update-env-vars VERSION=$(homeassistantRelease) \
--source gs://analytics-src/function-source.zip
displayName: 'Push details to updater'
condition: eq(variables['homeassistantReleaseStable'], 'true')

View File

@@ -1,14 +1,22 @@
{
"image": "homeassistant/{arch}-homeassistant",
"shadow_repository": "ghcr.io/home-assistant",
"build_from": {
"aarch64": "homeassistant/aarch64-homeassistant-base:2021.02.0",
"armhf": "homeassistant/armhf-homeassistant-base:2021.02.0",
"armv7": "homeassistant/armv7-homeassistant-base:2021.02.0",
"amd64": "homeassistant/amd64-homeassistant-base:2021.02.0",
"i386": "homeassistant/i386-homeassistant-base:2021.02.0"
"aarch64": "ghcr.io/home-assistant/aarch64-homeassistant-base:2021.04.3",
"armhf": "ghcr.io/home-assistant/armhf-homeassistant-base:2021.04.3",
"armv7": "ghcr.io/home-assistant/armv7-homeassistant-base:2021.04.3",
"amd64": "ghcr.io/home-assistant/amd64-homeassistant-base:2021.04.3",
"i386": "ghcr.io/home-assistant/i386-homeassistant-base:2021.04.3"
},
"labels": {
"io.hass.type": "core"
"io.hass.type": "core",
"org.opencontainers.image.title": "Home Assistant",
"org.opencontainers.image.description": "Open-source home automation platform running on Python 3",
"org.opencontainers.image.source": "https://github.com/home-assistant/core",
"org.opencontainers.image.authors": "The Home Assistant Authors",
"org.opencontainers.image.url": "https://www.home-assistant.io/",
"org.opencontainers.image.documentation": "https://www.home-assistant.io/docs/",
"org.opencontainers.image.licenses": "Apache License 2.0"
},
"version_tag": true
}

View File

@@ -1,11 +1,12 @@
"""Start Home Assistant."""
from __future__ import annotations
import argparse
import os
import platform
import subprocess
import sys
import threading
from typing import List
from homeassistant.const import REQUIRED_PYTHON_VER, RESTART_EXIT_CODE, __version__
@@ -144,6 +145,7 @@ def daemonize() -> None:
sys.exit(0)
# redirect standard file descriptors to devnull
# pylint: disable=consider-using-with
infd = open(os.devnull)
outfd = open(os.devnull, "a+")
sys.stdout.flush()
@@ -206,7 +208,7 @@ def closefds_osx(min_fd: int, max_fd: int) -> None:
pass
def cmdline() -> List[str]:
def cmdline() -> list[str]:
"""Collect path and arguments to re-execute the current hass instance."""
if os.path.basename(sys.argv[0]) == "__main__.py":
modulepath = os.path.dirname(sys.argv[0])

View File

@@ -1,14 +1,17 @@
"""Provide an authentication layer for Home Assistant."""
from __future__ import annotations
import asyncio
from collections import OrderedDict
from datetime import timedelta
from typing import Any, Dict, List, Optional, Tuple, cast
from typing import Any, Dict, Mapping, Optional, Tuple, cast
import jwt
from homeassistant import data_entry_flow
from homeassistant.auth.const import ACCESS_TOKEN_EXPIRATION
from homeassistant.core import HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.util import dt as dt_util
from . import auth_store, models
@@ -24,11 +27,19 @@ _ProviderKey = Tuple[str, Optional[str]]
_ProviderDict = Dict[_ProviderKey, AuthProvider]
class InvalidAuthError(Exception):
"""Raised when a authentication error occurs."""
class InvalidProvider(Exception):
"""Authentication provider not found."""
async def auth_manager_from_config(
hass: HomeAssistant,
provider_configs: List[Dict[str, Any]],
module_configs: List[Dict[str, Any]],
) -> "AuthManager":
provider_configs: list[dict[str, Any]],
module_configs: list[dict[str, Any]],
) -> AuthManager:
"""Initialize an auth manager from config.
CORE_CONFIG_SCHEMA will make sure do duplicated auth providers or
@@ -68,7 +79,7 @@ async def auth_manager_from_config(
class AuthManagerFlowManager(data_entry_flow.FlowManager):
"""Manage authentication flows."""
def __init__(self, hass: HomeAssistant, auth_manager: "AuthManager"):
def __init__(self, hass: HomeAssistant, auth_manager: AuthManager):
"""Init auth manager flows."""
super().__init__(hass)
self.auth_manager = auth_manager
@@ -77,8 +88,8 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
self,
handler_key: Any,
*,
context: Optional[Dict[str, Any]] = None,
data: Optional[Dict[str, Any]] = None,
context: dict[str, Any] | None = None,
data: dict[str, Any] | None = None,
) -> data_entry_flow.FlowHandler:
"""Create a login flow."""
auth_provider = self.auth_manager.get_auth_provider(*handler_key)
@@ -87,8 +98,8 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
return await auth_provider.async_login_flow(context)
async def async_finish_flow(
self, flow: data_entry_flow.FlowHandler, result: Dict[str, Any]
) -> Dict[str, Any]:
self, flow: data_entry_flow.FlowHandler, result: FlowResult
) -> FlowResult:
"""Return a user as result of login flow."""
flow = cast(LoginFlow, flow)
@@ -96,7 +107,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
return result
# we got final result
if isinstance(result["data"], models.User):
if isinstance(result["data"], models.Credentials):
result["result"] = result["data"]
return result
@@ -105,7 +116,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
raise KeyError(f"Unknown auth provider {result['handler']}")
credentials = await auth_provider.async_get_or_create_credentials(
result["data"]
cast(Mapping[str, str], result["data"]),
)
if flow.context.get("credential_only"):
@@ -120,11 +131,12 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
modules = await self.auth_manager.async_get_enabled_mfa(user)
if modules:
flow.credential = credentials
flow.user = user
flow.available_mfa_modules = modules
return await flow.async_step_select_mfa_module()
result["result"] = await self.auth_manager.async_get_or_create_user(credentials)
result["result"] = credentials
return result
@@ -146,22 +158,22 @@ class AuthManager:
self.login_flow = AuthManagerFlowManager(hass, self)
@property
def auth_providers(self) -> List[AuthProvider]:
def auth_providers(self) -> list[AuthProvider]:
"""Return a list of available auth providers."""
return list(self._providers.values())
@property
def auth_mfa_modules(self) -> List[MultiFactorAuthModule]:
def auth_mfa_modules(self) -> list[MultiFactorAuthModule]:
"""Return a list of available auth modules."""
return list(self._mfa_modules.values())
def get_auth_provider(
self, provider_type: str, provider_id: str
) -> Optional[AuthProvider]:
self, provider_type: str, provider_id: str | None
) -> AuthProvider | None:
"""Return an auth provider, None if not found."""
return self._providers.get((provider_type, provider_id))
def get_auth_providers(self, provider_type: str) -> List[AuthProvider]:
def get_auth_providers(self, provider_type: str) -> list[AuthProvider]:
"""Return a List of auth provider of one type, Empty if not found."""
return [
provider
@@ -169,30 +181,30 @@ class AuthManager:
if p_type == provider_type
]
def get_auth_mfa_module(self, module_id: str) -> Optional[MultiFactorAuthModule]:
def get_auth_mfa_module(self, module_id: str) -> MultiFactorAuthModule | None:
"""Return a multi-factor auth module, None if not found."""
return self._mfa_modules.get(module_id)
async def async_get_users(self) -> List[models.User]:
async def async_get_users(self) -> list[models.User]:
"""Retrieve all users."""
return await self._store.async_get_users()
async def async_get_user(self, user_id: str) -> Optional[models.User]:
async def async_get_user(self, user_id: str) -> models.User | None:
"""Retrieve a user."""
return await self._store.async_get_user(user_id)
async def async_get_owner(self) -> Optional[models.User]:
async def async_get_owner(self) -> models.User | None:
"""Retrieve the owner."""
users = await self.async_get_users()
return next((user for user in users if user.is_owner), None)
async def async_get_group(self, group_id: str) -> Optional[models.Group]:
async def async_get_group(self, group_id: str) -> models.Group | None:
"""Retrieve all groups."""
return await self._store.async_get_group(group_id)
async def async_get_user_by_credentials(
self, credentials: models.Credentials
) -> Optional[models.User]:
) -> models.User | None:
"""Get a user by credential, return None if not found."""
for user in await self.async_get_users():
for creds in user.credentials:
@@ -202,7 +214,7 @@ class AuthManager:
return None
async def async_create_system_user(
self, name: str, group_ids: Optional[List[str]] = None
self, name: str, group_ids: list[str] | None = None
) -> models.User:
"""Create a system user."""
user = await self._store.async_create_user(
@@ -214,10 +226,10 @@ class AuthManager:
return user
async def async_create_user(
self, name: str, group_ids: Optional[List[str]] = None
self, name: str, group_ids: list[str] | None = None
) -> models.User:
"""Create a user."""
kwargs: Dict[str, Any] = {
kwargs: dict[str, Any] = {
"name": name,
"is_active": True,
"group_ids": group_ids or [],
@@ -283,12 +295,12 @@ class AuthManager:
async def async_update_user(
self,
user: models.User,
name: Optional[str] = None,
is_active: Optional[bool] = None,
group_ids: Optional[List[str]] = None,
name: str | None = None,
is_active: bool | None = None,
group_ids: list[str] | None = None,
) -> None:
"""Update a user."""
kwargs: Dict[str, Any] = {}
kwargs: dict[str, Any] = {}
if name is not None:
kwargs["name"] = name
if group_ids is not None:
@@ -351,9 +363,9 @@ class AuthManager:
await module.async_depose_user(user.id)
async def async_get_enabled_mfa(self, user: models.User) -> Dict[str, str]:
async def async_get_enabled_mfa(self, user: models.User) -> dict[str, str]:
"""List enabled mfa modules for user."""
modules: Dict[str, str] = OrderedDict()
modules: dict[str, str] = OrderedDict()
for module_id, module in self._mfa_modules.items():
if await module.async_is_user_setup(user.id):
modules[module_id] = module.name
@@ -362,11 +374,12 @@ class AuthManager:
async def async_create_refresh_token(
self,
user: models.User,
client_id: Optional[str] = None,
client_name: Optional[str] = None,
client_icon: Optional[str] = None,
token_type: Optional[str] = None,
client_id: str | None = None,
client_name: str | None = None,
client_icon: str | None = None,
token_type: str | None = None,
access_token_expiration: timedelta = ACCESS_TOKEN_EXPIRATION,
credential: models.Credentials | None = None,
) -> models.RefreshToken:
"""Create a new refresh token for a user."""
if not user.is_active:
@@ -415,17 +428,18 @@ class AuthManager:
client_icon,
token_type,
access_token_expiration,
credential,
)
async def async_get_refresh_token(
self, token_id: str
) -> Optional[models.RefreshToken]:
) -> models.RefreshToken | None:
"""Get refresh token by id."""
return await self._store.async_get_refresh_token(token_id)
async def async_get_refresh_token_by_token(
self, token: str
) -> Optional[models.RefreshToken]:
) -> models.RefreshToken | None:
"""Get refresh token by token."""
return await self._store.async_get_refresh_token_by_token(token)
@@ -437,9 +451,11 @@ class AuthManager:
@callback
def async_create_access_token(
self, refresh_token: models.RefreshToken, remote_ip: Optional[str] = None
self, refresh_token: models.RefreshToken, remote_ip: str | None = None
) -> str:
"""Create a new access token."""
self.async_validate_refresh_token(refresh_token, remote_ip)
self._store.async_log_refresh_token_usage(refresh_token, remote_ip)
now = dt_util.utcnow()
@@ -453,9 +469,43 @@ class AuthManager:
algorithm="HS256",
).decode()
@callback
def _async_resolve_provider(
self, refresh_token: models.RefreshToken
) -> AuthProvider | None:
"""Get the auth provider for the given refresh token.
Raises an exception if the expected provider is no longer available or return
None if no provider was expected for this refresh token.
"""
if refresh_token.credential is None:
return None
provider = self.get_auth_provider(
refresh_token.credential.auth_provider_type,
refresh_token.credential.auth_provider_id,
)
if provider is None:
raise InvalidProvider(
f"Auth provider {refresh_token.credential.auth_provider_type}, {refresh_token.credential.auth_provider_id} not available"
)
return provider
@callback
def async_validate_refresh_token(
self, refresh_token: models.RefreshToken, remote_ip: str | None = None
) -> None:
"""Validate that a refresh token is usable.
Will raise InvalidAuthError on errors.
"""
provider = self._async_resolve_provider(refresh_token)
if provider:
provider.async_validate_refresh_token(refresh_token, remote_ip)
async def async_validate_access_token(
self, token: str
) -> Optional[models.RefreshToken]:
) -> models.RefreshToken | None:
"""Return refresh token if an access token is valid."""
try:
unverif_claims = jwt.decode(token, verify=False)
@@ -486,7 +536,7 @@ class AuthManager:
@callback
def _async_get_auth_provider(
self, credentials: models.Credentials
) -> Optional[AuthProvider]:
) -> AuthProvider | None:
"""Get auth provider from a set of credentials."""
auth_provider_key = (
credentials.auth_provider_type,

View File

@@ -1,10 +1,12 @@
"""Storage for auth models."""
from __future__ import annotations
import asyncio
from collections import OrderedDict
from datetime import timedelta
import hmac
from logging import getLogger
from typing import Any, Dict, List, Optional
from typing import Any
from homeassistant.auth.const import ACCESS_TOKEN_EXPIRATION
from homeassistant.core import HomeAssistant, callback
@@ -34,15 +36,15 @@ class AuthStore:
def __init__(self, hass: HomeAssistant) -> None:
"""Initialize the auth store."""
self.hass = hass
self._users: Optional[Dict[str, models.User]] = None
self._groups: Optional[Dict[str, models.Group]] = None
self._perm_lookup: Optional[PermissionLookup] = None
self._users: dict[str, models.User] | None = None
self._groups: dict[str, models.Group] | None = None
self._perm_lookup: PermissionLookup | None = None
self._store = hass.helpers.storage.Store(
STORAGE_VERSION, STORAGE_KEY, private=True
)
self._lock = asyncio.Lock()
async def async_get_groups(self) -> List[models.Group]:
async def async_get_groups(self) -> list[models.Group]:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
@@ -50,7 +52,7 @@ class AuthStore:
return list(self._groups.values())
async def async_get_group(self, group_id: str) -> Optional[models.Group]:
async def async_get_group(self, group_id: str) -> models.Group | None:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
@@ -58,7 +60,7 @@ class AuthStore:
return self._groups.get(group_id)
async def async_get_users(self) -> List[models.User]:
async def async_get_users(self) -> list[models.User]:
"""Retrieve all users."""
if self._users is None:
await self._async_load()
@@ -66,7 +68,7 @@ class AuthStore:
return list(self._users.values())
async def async_get_user(self, user_id: str) -> Optional[models.User]:
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()
@@ -76,12 +78,12 @@ class AuthStore:
async def async_create_user(
self,
name: Optional[str],
is_owner: Optional[bool] = None,
is_active: Optional[bool] = None,
system_generated: Optional[bool] = None,
credentials: Optional[models.Credentials] = None,
group_ids: Optional[List[str]] = None,
name: str | None,
is_owner: bool | None = None,
is_active: bool | None = None,
system_generated: bool | None = None,
credentials: models.Credentials | None = None,
group_ids: list[str] | None = None,
) -> models.User:
"""Create a new user."""
if self._users is None:
@@ -97,7 +99,7 @@ class AuthStore:
raise ValueError(f"Invalid group specified {group_id}")
groups.append(group)
kwargs: Dict[str, Any] = {
kwargs: dict[str, Any] = {
"name": name,
# Until we get group management, we just put everyone in the
# same group.
@@ -146,9 +148,9 @@ class AuthStore:
async def async_update_user(
self,
user: models.User,
name: Optional[str] = None,
is_active: Optional[bool] = None,
group_ids: Optional[List[str]] = None,
name: str | None = None,
is_active: bool | None = None,
group_ids: list[str] | None = None,
) -> None:
"""Update a user."""
assert self._groups is not None
@@ -203,18 +205,20 @@ class AuthStore:
async def async_create_refresh_token(
self,
user: models.User,
client_id: Optional[str] = None,
client_name: Optional[str] = None,
client_icon: Optional[str] = None,
client_id: str | None = None,
client_name: str | None = None,
client_icon: str | None = None,
token_type: str = models.TOKEN_TYPE_NORMAL,
access_token_expiration: timedelta = ACCESS_TOKEN_EXPIRATION,
credential: models.Credentials | None = None,
) -> models.RefreshToken:
"""Create a new token for a user."""
kwargs: Dict[str, Any] = {
kwargs: dict[str, Any] = {
"user": user,
"client_id": client_id,
"token_type": token_type,
"access_token_expiration": access_token_expiration,
"credential": credential,
}
if client_name:
kwargs["client_name"] = client_name
@@ -242,7 +246,7 @@ class AuthStore:
async def async_get_refresh_token(
self, token_id: str
) -> Optional[models.RefreshToken]:
) -> models.RefreshToken | None:
"""Get refresh token by id."""
if self._users is None:
await self._async_load()
@@ -257,7 +261,7 @@ class AuthStore:
async def async_get_refresh_token_by_token(
self, token: str
) -> Optional[models.RefreshToken]:
) -> models.RefreshToken | None:
"""Get refresh token by token."""
if self._users is None:
await self._async_load()
@@ -274,7 +278,7 @@ class AuthStore:
@callback
def async_log_refresh_token_usage(
self, refresh_token: models.RefreshToken, remote_ip: Optional[str] = None
self, refresh_token: models.RefreshToken, remote_ip: str | None = None
) -> None:
"""Update refresh token last used information."""
refresh_token.last_used_at = dt_util.utcnow()
@@ -307,8 +311,9 @@ class AuthStore:
self._set_defaults()
return
users: Dict[str, models.User] = OrderedDict()
groups: Dict[str, models.Group] = OrderedDict()
users: dict[str, models.User] = OrderedDict()
groups: dict[str, models.Group] = OrderedDict()
credentials: dict[str, models.Credentials] = OrderedDict()
# 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
@@ -325,7 +330,7 @@ class AuthStore:
# was added.
for group_dict in data.get("groups", []):
policy: Optional[PolicyType] = None
policy: PolicyType | None = None
if group_dict["id"] == GROUP_ID_ADMIN:
has_admin_group = True
@@ -415,15 +420,15 @@ class AuthStore:
)
for cred_dict in data["credentials"]:
users[cred_dict["user_id"]].credentials.append(
models.Credentials(
id=cred_dict["id"],
is_new=False,
auth_provider_type=cred_dict["auth_provider_type"],
auth_provider_id=cred_dict["auth_provider_id"],
data=cred_dict["data"],
)
credential = models.Credentials(
id=cred_dict["id"],
is_new=False,
auth_provider_type=cred_dict["auth_provider_type"],
auth_provider_id=cred_dict["auth_provider_id"],
data=cred_dict["data"],
)
credentials[cred_dict["id"]] = credential
users[cred_dict["user_id"]].credentials.append(credential)
for rt_dict in data["refresh_tokens"]:
# Filter out the old keys that don't have jwt_key (pre-0.76)
@@ -469,6 +474,8 @@ class AuthStore:
jwt_key=rt_dict["jwt_key"],
last_used_at=last_used_at,
last_used_ip=rt_dict.get("last_used_ip"),
credential=credentials.get(rt_dict.get("credential_id")),
version=rt_dict.get("version"),
)
users[rt_dict["user_id"]].refresh_tokens[token.id] = token
@@ -484,7 +491,7 @@ class AuthStore:
self._store.async_delay_save(self._data_to_save, 1)
@callback
def _data_to_save(self) -> Dict:
def _data_to_save(self) -> dict:
"""Return the data to store."""
assert self._users is not None
assert self._groups is not None
@@ -503,7 +510,7 @@ class AuthStore:
groups = []
for group in self._groups.values():
g_dict: Dict[str, Any] = {
g_dict: dict[str, Any] = {
"id": group.id,
# Name not read for sys groups. Kept here for backwards compat
"name": group.name,
@@ -542,6 +549,10 @@ class AuthStore:
if refresh_token.last_used_at
else None,
"last_used_ip": refresh_token.last_used_ip,
"credential_id": refresh_token.credential.id
if refresh_token.credential
else None,
"version": refresh_token.version,
}
for user in self._users.values()
for refresh_token in user.refresh_tokens.values()
@@ -558,7 +569,7 @@ class AuthStore:
"""Set default values for auth store."""
self._users = OrderedDict()
groups: Dict[str, models.Group] = OrderedDict()
groups: dict[str, models.Group] = OrderedDict()
admin_group = _system_admin_group()
groups[admin_group.id] = admin_group
user_group = _system_user_group()

View File

@@ -1,8 +1,10 @@
"""Pluggable auth modules for Home Assistant."""
from __future__ import annotations
import importlib
import logging
import types
from typing import Any, Dict, Optional
from typing import Any
import voluptuous as vol
from voluptuous.humanize import humanize_error
@@ -10,6 +12,7 @@ from voluptuous.humanize import humanize_error
from homeassistant import data_entry_flow, requirements
from homeassistant.const import CONF_ID, CONF_NAME, CONF_TYPE
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.util.decorator import Registry
@@ -36,7 +39,7 @@ class MultiFactorAuthModule:
DEFAULT_TITLE = "Unnamed auth module"
MAX_RETRY_TIME = 3
def __init__(self, hass: HomeAssistant, config: Dict[str, Any]) -> None:
def __init__(self, hass: HomeAssistant, config: dict[str, Any]) -> None:
"""Initialize an auth module."""
self.hass = hass
self.config = config
@@ -66,7 +69,7 @@ class MultiFactorAuthModule:
"""Return a voluptuous schema to define mfa auth module's input."""
raise NotImplementedError
async def async_setup_flow(self, user_id: str) -> "SetupFlow":
async def async_setup_flow(self, user_id: str) -> SetupFlow:
"""Return a data entry flow handler for setup module.
Mfa module should extend SetupFlow
@@ -85,7 +88,7 @@ class MultiFactorAuthModule:
"""Return whether user is setup."""
raise NotImplementedError
async def async_validate(self, user_id: str, user_input: Dict[str, Any]) -> bool:
async def async_validate(self, user_id: str, user_input: dict[str, Any]) -> bool:
"""Return True if validation passed."""
raise NotImplementedError
@@ -102,14 +105,14 @@ class SetupFlow(data_entry_flow.FlowHandler):
self._user_id = user_id
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the first step of setup flow.
Return self.async_show_form(step_id='init') if user_input is None.
Return self.async_create_entry(data={'result': result}) if finish.
"""
errors: Dict[str, str] = {}
errors: dict[str, str] = {}
if user_input:
result = await self._auth_module.async_setup_user(self._user_id, user_input)
@@ -123,7 +126,7 @@ class SetupFlow(data_entry_flow.FlowHandler):
async def auth_mfa_module_from_config(
hass: HomeAssistant, config: Dict[str, Any]
hass: HomeAssistant, config: dict[str, Any]
) -> MultiFactorAuthModule:
"""Initialize an auth module from a config."""
module_name = config[CONF_TYPE]

View File

@@ -1,5 +1,7 @@
"""Example auth module."""
from typing import Any, Dict
from __future__ import annotations
from typing import Any
import voluptuous as vol
@@ -28,7 +30,7 @@ class InsecureExampleModule(MultiFactorAuthModule):
DEFAULT_TITLE = "Insecure Personal Identify Number"
def __init__(self, hass: HomeAssistant, config: Dict[str, Any]) -> None:
def __init__(self, hass: HomeAssistant, config: dict[str, Any]) -> None:
"""Initialize the user data store."""
super().__init__(hass, config)
self._data = config["data"]
@@ -75,17 +77,11 @@ class InsecureExampleModule(MultiFactorAuthModule):
async def async_is_user_setup(self, user_id: str) -> bool:
"""Return whether user is setup."""
for data in self._data:
if data["user_id"] == user_id:
return True
return False
return any(data["user_id"] == user_id for data in self._data)
async def async_validate(self, user_id: str, user_input: Dict[str, Any]) -> bool:
async def async_validate(self, user_id: str, user_input: dict[str, Any]) -> bool:
"""Return True if validation passed."""
for data in self._data:
if data["user_id"] == user_id:
# user_input has been validate in caller
if data["pin"] == user_input["pin"]:
return True
return False
return any(
data["user_id"] == user_id and data["pin"] == user_input["pin"]
for data in self._data
)

View File

@@ -2,16 +2,19 @@
Sending HOTP through notify service
"""
from __future__ import annotations
import asyncio
from collections import OrderedDict
import logging
from typing import Any, Dict, List, Optional
from typing import Any, Dict
import attr
import voluptuous as vol
from homeassistant.const import CONF_EXCLUDE, CONF_INCLUDE
from homeassistant.core import HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import ServiceNotFound
from homeassistant.helpers import config_validation as cv
@@ -79,8 +82,8 @@ class NotifySetting:
secret: str = attr.ib(factory=_generate_secret) # not persistent
counter: int = attr.ib(factory=_generate_random) # not persistent
notify_service: Optional[str] = attr.ib(default=None)
target: Optional[str] = attr.ib(default=None)
notify_service: str | None = attr.ib(default=None)
target: str | None = attr.ib(default=None)
_UsersDict = Dict[str, NotifySetting]
@@ -92,10 +95,10 @@ class NotifyAuthModule(MultiFactorAuthModule):
DEFAULT_TITLE = "Notify One-Time Password"
def __init__(self, hass: HomeAssistant, config: Dict[str, Any]) -> None:
def __init__(self, hass: HomeAssistant, config: dict[str, Any]) -> None:
"""Initialize the user data store."""
super().__init__(hass, config)
self._user_settings: Optional[_UsersDict] = None
self._user_settings: _UsersDict | None = None
self._user_store = hass.helpers.storage.Store(
STORAGE_VERSION, STORAGE_KEY, private=True
)
@@ -146,7 +149,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
)
@callback
def aync_get_available_notify_services(self) -> List[str]:
def aync_get_available_notify_services(self) -> list[str]:
"""Return list of notify services."""
unordered_services = set()
@@ -198,7 +201,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
return user_id in self._user_settings
async def async_validate(self, user_id: str, user_input: Dict[str, Any]) -> bool:
async def async_validate(self, user_id: str, user_input: dict[str, Any]) -> bool:
"""Return True if validation passed."""
if self._user_settings is None:
await self._async_load()
@@ -258,7 +261,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
)
async def async_notify(
self, code: str, notify_service: str, target: Optional[str] = None
self, code: str, notify_service: str, target: str | None = None
) -> None:
"""Send code by notify service."""
data = {"message": self._message_template.format(code)}
@@ -276,23 +279,23 @@ class NotifySetupFlow(SetupFlow):
auth_module: NotifyAuthModule,
setup_schema: vol.Schema,
user_id: str,
available_notify_services: List[str],
available_notify_services: list[str],
) -> None:
"""Initialize the setup flow."""
super().__init__(auth_module, setup_schema, user_id)
# to fix typing complaint
self._auth_module: NotifyAuthModule = auth_module
self._available_notify_services = available_notify_services
self._secret: Optional[str] = None
self._count: Optional[int] = None
self._notify_service: Optional[str] = None
self._target: Optional[str] = None
self._secret: str | None = None
self._count: int | None = None
self._notify_service: str | None = None
self._target: str | None = None
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Let user select available notify services."""
errors: Dict[str, str] = {}
errors: dict[str, str] = {}
hass = self._auth_module.hass
if user_input:
@@ -306,7 +309,7 @@ class NotifySetupFlow(SetupFlow):
if not self._available_notify_services:
return self.async_abort(reason="no_available_service")
schema: Dict[str, Any] = OrderedDict()
schema: dict[str, Any] = OrderedDict()
schema["notify_service"] = vol.In(self._available_notify_services)
schema["target"] = vol.Optional(str)
@@ -315,10 +318,10 @@ class NotifySetupFlow(SetupFlow):
)
async def async_step_setup(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Verify user can receive one-time password."""
errors: Dict[str, str] = {}
errors: dict[str, str] = {}
hass = self._auth_module.hass
if user_input:

View File

@@ -1,12 +1,15 @@
"""Time-based One Time Password auth module."""
from __future__ import annotations
import asyncio
from io import BytesIO
from typing import Any, Dict, Optional, Tuple
from typing import Any
import voluptuous as vol
from homeassistant.auth.models import User
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from . import (
MULTI_FACTOR_AUTH_MODULE_SCHEMA,
@@ -50,7 +53,7 @@ def _generate_qr_code(data: str) -> str:
)
def _generate_secret_and_qr_code(username: str) -> Tuple[str, str, str]:
def _generate_secret_and_qr_code(username: str) -> tuple[str, str, str]:
"""Generate a secret, url, and QR code."""
import pyotp # pylint: disable=import-outside-toplevel
@@ -69,10 +72,10 @@ class TotpAuthModule(MultiFactorAuthModule):
DEFAULT_TITLE = "Time-based One Time Password"
MAX_RETRY_TIME = 5
def __init__(self, hass: HomeAssistant, config: Dict[str, Any]) -> None:
def __init__(self, hass: HomeAssistant, config: dict[str, Any]) -> None:
"""Initialize the user data store."""
super().__init__(hass, config)
self._users: Optional[Dict[str, str]] = None
self._users: dict[str, str] | None = None
self._user_store = hass.helpers.storage.Store(
STORAGE_VERSION, STORAGE_KEY, private=True
)
@@ -100,7 +103,7 @@ class TotpAuthModule(MultiFactorAuthModule):
"""Save data."""
await self._user_store.async_save({STORAGE_USERS: self._users})
def _add_ota_secret(self, user_id: str, secret: Optional[str] = None) -> str:
def _add_ota_secret(self, user_id: str, secret: str | None = None) -> str:
"""Create a ota_secret for user."""
import pyotp # pylint: disable=import-outside-toplevel
@@ -145,7 +148,7 @@ class TotpAuthModule(MultiFactorAuthModule):
return user_id in self._users # type: ignore
async def async_validate(self, user_id: str, user_input: Dict[str, Any]) -> bool:
async def async_validate(self, user_id: str, user_input: dict[str, Any]) -> bool:
"""Return True if validation passed."""
if self._users is None:
await self._async_load()
@@ -181,13 +184,13 @@ class TotpSetupFlow(SetupFlow):
# to fix typing complaint
self._auth_module: TotpAuthModule = auth_module
self._user = user
self._ota_secret: Optional[str] = None
self._ota_secret: str | None = None
self._url = None # type Optional[str]
self._image = None # type Optional[str]
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the first step of setup flow.
Return self.async_show_form(step_id='init') if user_input is None.
@@ -195,10 +198,10 @@ class TotpSetupFlow(SetupFlow):
"""
import pyotp # pylint: disable=import-outside-toplevel
errors: Dict[str, str] = {}
errors: dict[str, str] = {}
if user_input:
verified = await self.hass.async_add_executor_job( # type: ignore
verified = await self.hass.async_add_executor_job(
pyotp.TOTP(self._ota_secret).verify, user_input["code"]
)
if verified:

View File

@@ -1,11 +1,14 @@
"""Auth models."""
from __future__ import annotations
from datetime import datetime, timedelta
import secrets
from typing import Dict, List, NamedTuple, Optional
from typing import NamedTuple
import uuid
import attr
from homeassistant.const import __version__
from homeassistant.util import dt as dt_util
from . import permissions as perm_mdl
@@ -20,7 +23,7 @@ TOKEN_TYPE_LONG_LIVED_ACCESS_TOKEN = "long_lived_access_token"
class Group:
"""A group."""
name: Optional[str] = attr.ib()
name: str | None = attr.ib()
policy: perm_mdl.PolicyType = attr.ib()
id: str = attr.ib(factory=lambda: uuid.uuid4().hex)
system_generated: bool = attr.ib(default=False)
@@ -30,24 +33,24 @@ class Group:
class User:
"""A user."""
name: Optional[str] = attr.ib()
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)
system_generated: 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)
# List of credentials of a user.
credentials: List["Credentials"] = attr.ib(factory=list, eq=False, order=False)
credentials: list[Credentials] = attr.ib(factory=list, eq=False, order=False)
# Tokens associated with a user.
refresh_tokens: Dict[str, "RefreshToken"] = attr.ib(
refresh_tokens: dict[str, RefreshToken] = attr.ib(
factory=dict, eq=False, order=False
)
_permissions: Optional[perm_mdl.PolicyPermissions] = attr.ib(
_permissions: perm_mdl.PolicyPermissions | None = attr.ib(
init=False,
eq=False,
order=False,
@@ -88,10 +91,10 @@ class RefreshToken:
"""RefreshToken for a user to grant new access tokens."""
user: User = attr.ib()
client_id: Optional[str] = attr.ib()
client_id: str | None = attr.ib()
access_token_expiration: timedelta = attr.ib()
client_name: Optional[str] = attr.ib(default=None)
client_icon: Optional[str] = attr.ib(default=None)
client_name: str | None = attr.ib(default=None)
client_icon: str | None = attr.ib(default=None)
token_type: str = attr.ib(
default=TOKEN_TYPE_NORMAL,
validator=attr.validators.in_(
@@ -103,8 +106,12 @@ class RefreshToken:
token: str = attr.ib(factory=lambda: secrets.token_hex(64))
jwt_key: str = attr.ib(factory=lambda: secrets.token_hex(64))
last_used_at: Optional[datetime] = attr.ib(default=None)
last_used_ip: Optional[str] = attr.ib(default=None)
last_used_at: datetime | None = attr.ib(default=None)
last_used_ip: str | None = attr.ib(default=None)
credential: Credentials | None = attr.ib(default=None)
version: str | None = attr.ib(default=__version__)
@attr.s(slots=True)
@@ -112,7 +119,7 @@ class Credentials:
"""Credentials for a user on an auth provider."""
auth_provider_type: str = attr.ib()
auth_provider_id: Optional[str] = attr.ib()
auth_provider_id: str | None = attr.ib()
# Allow the auth provider to store data to represent their auth.
data: dict = attr.ib()
@@ -124,5 +131,5 @@ class Credentials:
class UserMeta(NamedTuple):
"""User metadata."""
name: Optional[str]
name: str | None
is_active: bool

View File

@@ -1,6 +1,8 @@
"""Permissions for Home Assistant."""
from __future__ import annotations
import logging
from typing import Any, Callable, Optional
from typing import Any, Callable
import voluptuous as vol
@@ -19,7 +21,7 @@ _LOGGER = logging.getLogger(__name__)
class AbstractPermissions:
"""Default permissions class."""
_cached_entity_func: Optional[Callable[[str, str], bool]] = None
_cached_entity_func: Callable[[str, str], bool] | None = None
def _entity_func(self) -> Callable[[str, str], bool]:
"""Return a function that can test entity access."""

View File

@@ -1,6 +1,8 @@
"""Entity permissions."""
from __future__ import annotations
from collections import OrderedDict
from typing import Callable, Optional
from typing import Callable
import voluptuous as vol
@@ -43,14 +45,14 @@ ENTITY_POLICY_SCHEMA = vol.Any(
def _lookup_domain(
perm_lookup: PermissionLookup, domains_dict: SubCategoryDict, entity_id: str
) -> Optional[ValueType]:
) -> ValueType | None:
"""Look up entity permissions by domain."""
return domains_dict.get(entity_id.split(".", 1)[0])
def _lookup_area(
perm_lookup: PermissionLookup, area_dict: SubCategoryDict, entity_id: str
) -> Optional[ValueType]:
) -> ValueType | None:
"""Look up entity permissions by area."""
entity_entry = perm_lookup.entity_registry.async_get(entity_id)
@@ -67,7 +69,7 @@ def _lookup_area(
def _lookup_device(
perm_lookup: PermissionLookup, devices_dict: SubCategoryDict, entity_id: str
) -> Optional[ValueType]:
) -> ValueType | None:
"""Look up entity permissions by device."""
entity_entry = perm_lookup.entity_registry.async_get(entity_id)
@@ -79,7 +81,7 @@ def _lookup_device(
def _lookup_entity_id(
perm_lookup: PermissionLookup, entities_dict: SubCategoryDict, entity_id: str
) -> Optional[ValueType]:
) -> ValueType | None:
"""Look up entity permission by entity id."""
return entities_dict.get(entity_id)

View File

@@ -1,13 +1,15 @@
"""Merging of policies."""
from typing import Dict, List, Set, cast
from __future__ import annotations
from typing import cast
from .types import CategoryType, PolicyType
def merge_policies(policies: List[PolicyType]) -> PolicyType:
def merge_policies(policies: list[PolicyType]) -> PolicyType:
"""Merge policies."""
new_policy: Dict[str, CategoryType] = {}
seen: Set[str] = set()
new_policy: dict[str, CategoryType] = {}
seen: set[str] = set()
for policy in policies:
for category in policy:
if category in seen:
@@ -20,7 +22,7 @@ def merge_policies(policies: List[PolicyType]) -> PolicyType:
return new_policy
def _merge_policies(sources: List[CategoryType]) -> CategoryType:
def _merge_policies(sources: list[CategoryType]) -> CategoryType:
"""Merge a policy."""
# When merging policies, the most permissive wins.
# This means we order it like this:
@@ -34,7 +36,7 @@ def _merge_policies(sources: List[CategoryType]) -> CategoryType:
# merge each key in the source.
policy: CategoryType = None
seen: Set[str] = set()
seen: set[str] = set()
for source in sources:
if source is None:
continue

View File

@@ -1,11 +1,12 @@
"""Models for permissions."""
from __future__ import annotations
from typing import TYPE_CHECKING
import attr
if TYPE_CHECKING:
# pylint: disable=unused-import
from homeassistant.helpers import ( # noqa: F401
from homeassistant.helpers import (
device_registry as dev_reg,
entity_registry as ent_reg,
)
@@ -15,5 +16,5 @@ if TYPE_CHECKING:
class PermissionLookup:
"""Class to hold data for permission lookups."""
entity_registry: "ent_reg.EntityRegistry" = attr.ib()
device_registry: "dev_reg.DeviceRegistry" = attr.ib()
entity_registry: ent_reg.EntityRegistry = attr.ib()
device_registry: dev_reg.DeviceRegistry = attr.ib()

View File

@@ -1,6 +1,8 @@
"""Helpers to deal with permissions."""
from __future__ import annotations
from functools import wraps
from typing import Callable, Dict, List, Optional, cast
from typing import Callable, Dict, Optional, cast
from .const import SUBCAT_ALL
from .models import PermissionLookup
@@ -45,7 +47,7 @@ def compile_policy(
assert isinstance(policy, dict)
funcs: List[Callable[[str, str], Optional[bool]]] = []
funcs: list[Callable[[str, str], bool | None]] = []
for key, lookup_func in subcategories.items():
lookup_value = policy.get(key)
@@ -80,10 +82,10 @@ def compile_policy(
def _gen_dict_test_func(
perm_lookup: PermissionLookup, lookup_func: LookupFunc, lookup_dict: SubCategoryDict
) -> Callable[[str, str], Optional[bool]]:
) -> Callable[[str, str], bool | None]:
"""Generate a lookup function."""
def test_value(object_id: str, key: str) -> Optional[bool]:
def test_value(object_id: str, key: str) -> bool | None:
"""Test if permission is allowed based on the keys."""
schema: ValueType = lookup_func(perm_lookup, lookup_dict, object_id)

View File

@@ -1,8 +1,11 @@
"""Auth providers for Home Assistant."""
from __future__ import annotations
from collections.abc import Mapping
import importlib
import logging
import types
from typing import Any, Dict, List, Optional
from typing import Any
import voluptuous as vol
from voluptuous.humanize import humanize_error
@@ -10,13 +13,14 @@ from voluptuous.humanize import humanize_error
from homeassistant import data_entry_flow, requirements
from homeassistant.const import CONF_ID, CONF_NAME, CONF_TYPE
from homeassistant.core import HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.util import dt as dt_util
from homeassistant.util.decorator import Registry
from ..auth_store import AuthStore
from ..const import MFA_SESSION_EXPIRATION
from ..models import Credentials, User, UserMeta
from ..models import Credentials, RefreshToken, User, UserMeta
_LOGGER = logging.getLogger(__name__)
DATA_REQS = "auth_prov_reqs_processed"
@@ -40,7 +44,7 @@ class AuthProvider:
DEFAULT_TITLE = "Unnamed auth provider"
def __init__(
self, hass: HomeAssistant, store: AuthStore, config: Dict[str, Any]
self, hass: HomeAssistant, store: AuthStore, config: dict[str, Any]
) -> None:
"""Initialize an auth provider."""
self.hass = hass
@@ -48,7 +52,7 @@ class AuthProvider:
self.config = config
@property
def id(self) -> Optional[str]:
def id(self) -> str | None:
"""Return id of the auth provider.
Optional, can be None.
@@ -70,7 +74,7 @@ class AuthProvider:
"""Return whether multi-factor auth supported by the auth provider."""
return True
async def async_credentials(self) -> List[Credentials]:
async def async_credentials(self) -> list[Credentials]:
"""Return all credentials of this provider."""
users = await self.store.async_get_users()
return [
@@ -84,7 +88,7 @@ class AuthProvider:
]
@callback
def async_create_credentials(self, data: Dict[str, str]) -> Credentials:
def async_create_credentials(self, data: dict[str, str]) -> Credentials:
"""Create credentials."""
return Credentials(
auth_provider_type=self.type, auth_provider_id=self.id, data=data
@@ -92,7 +96,7 @@ class AuthProvider:
# Implement by extending class
async def async_login_flow(self, context: Optional[Dict]) -> "LoginFlow":
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return the data flow for logging in with auth provider.
Auth provider should extend LoginFlow and return an instance.
@@ -100,7 +104,7 @@ class AuthProvider:
raise NotImplementedError
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Get credentials based on the flow result."""
raise NotImplementedError
@@ -117,9 +121,19 @@ class AuthProvider:
async def async_initialize(self) -> None:
"""Initialize the auth provider."""
@callback
def async_validate_refresh_token(
self, refresh_token: RefreshToken, remote_ip: str | None = None
) -> None:
"""Verify a refresh token is still valid.
Optional hook for an auth provider to verify validity of a refresh token.
Should raise InvalidAuthError on errors.
"""
async def auth_provider_from_config(
hass: HomeAssistant, store: AuthStore, config: Dict[str, Any]
hass: HomeAssistant, store: AuthStore, config: dict[str, Any]
) -> AuthProvider:
"""Initialize an auth provider from a config."""
provider_name = config[CONF_TYPE]
@@ -176,16 +190,17 @@ class LoginFlow(data_entry_flow.FlowHandler):
def __init__(self, auth_provider: AuthProvider) -> None:
"""Initialize the login flow."""
self._auth_provider = auth_provider
self._auth_module_id: Optional[str] = None
self._auth_module_id: str | None = None
self._auth_manager = auth_provider.hass.auth
self.available_mfa_modules: Dict[str, str] = {}
self.available_mfa_modules: dict[str, str] = {}
self.created_at = dt_util.utcnow()
self.invalid_mfa_times = 0
self.user: Optional[User] = None
self.user: User | None = None
self.credential: Credentials | None = None
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the first step of login flow.
Return self.async_show_form(step_id='init') if user_input is None.
@@ -194,8 +209,8 @@ class LoginFlow(data_entry_flow.FlowHandler):
raise NotImplementedError
async def async_step_select_mfa_module(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of select mfa module."""
errors = {}
@@ -219,9 +234,10 @@ class LoginFlow(data_entry_flow.FlowHandler):
)
async def async_step_mfa(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of mfa validation."""
assert self.credential
assert self.user
errors = {}
@@ -257,9 +273,9 @@ class LoginFlow(data_entry_flow.FlowHandler):
return self.async_abort(reason="too_many_retry")
if not errors:
return await self.async_finish(self.user)
return await self.async_finish(self.credential)
description_placeholders: Dict[str, Optional[str]] = {
description_placeholders: dict[str, str | None] = {
"mfa_module_name": auth_module.name,
"mfa_module_id": auth_module.id,
}
@@ -271,6 +287,6 @@ class LoginFlow(data_entry_flow.FlowHandler):
errors=errors,
)
async def async_finish(self, flow_result: Any) -> Dict:
async def async_finish(self, flow_result: Any) -> FlowResult:
"""Handle the pass of login flow."""
return self.async_create_entry(title=self._auth_provider.name, data=flow_result)

View File

@@ -1,19 +1,22 @@
"""Auth provider that validates credentials via an external command."""
from __future__ import annotations
import asyncio.subprocess
import collections
from collections.abc import Mapping
import logging
import os
from typing import Any, Dict, Optional, cast
from typing import Any, cast
import voluptuous as vol
from homeassistant.const import CONF_COMMAND
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
from ..models import Credentials, UserMeta
CONF_COMMAND = "command"
CONF_ARGS = "args"
CONF_META = "meta"
@@ -51,9 +54,9 @@ class CommandLineAuthProvider(AuthProvider):
attributes provided by external programs.
"""
super().__init__(*args, **kwargs)
self._user_meta: Dict[str, Dict[str, Any]] = {}
self._user_meta: dict[str, dict[str, Any]] = {}
async def async_login_flow(self, context: Optional[dict]) -> LoginFlow:
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return a flow to login."""
return CommandLineLoginFlow(self)
@@ -82,7 +85,7 @@ class CommandLineAuthProvider(AuthProvider):
raise InvalidAuthError
if self.config[CONF_META]:
meta: Dict[str, str] = {}
meta: dict[str, str] = {}
for _line in stdout.splitlines():
try:
line = _line.decode().lstrip()
@@ -99,7 +102,7 @@ class CommandLineAuthProvider(AuthProvider):
self._user_meta[username] = meta
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Get credentials based on the flow result."""
username = flow_result["username"]
@@ -125,8 +128,8 @@ class CommandLineLoginFlow(LoginFlow):
"""Handler for the login flow."""
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -143,7 +146,7 @@ class CommandLineLoginFlow(LoginFlow):
user_input.pop("password")
return await self.async_finish(user_input)
schema: Dict[str, type] = collections.OrderedDict()
schema: dict[str, type] = collections.OrderedDict()
schema["username"] = str
schema["password"] = str

View File

@@ -1,15 +1,19 @@
"""Home Assistant auth provider."""
from __future__ import annotations
import asyncio
import base64
from collections import OrderedDict
from collections.abc import Mapping
import logging
from typing import Any, Dict, List, Optional, Set, cast
from typing import Any, cast
import bcrypt
import voluptuous as vol
from homeassistant.const import CONF_ID
from homeassistant.core import HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
@@ -19,7 +23,7 @@ STORAGE_VERSION = 1
STORAGE_KEY = "auth_provider.homeassistant"
def _disallow_id(conf: Dict[str, Any]) -> Dict[str, Any]:
def _disallow_id(conf: dict[str, Any]) -> dict[str, Any]:
"""Disallow ID in config."""
if CONF_ID in conf:
raise vol.Invalid("ID is not allowed for the homeassistant auth provider.")
@@ -31,7 +35,7 @@ CONFIG_SCHEMA = vol.All(AUTH_PROVIDER_SCHEMA, _disallow_id)
@callback
def async_get_provider(hass: HomeAssistant) -> "HassAuthProvider":
def async_get_provider(hass: HomeAssistant) -> HassAuthProvider:
"""Get the provider."""
for prv in hass.auth.auth_providers:
if prv.type == "homeassistant":
@@ -60,7 +64,7 @@ class Data:
self._store = hass.helpers.storage.Store(
STORAGE_VERSION, STORAGE_KEY, private=True
)
self._data: Optional[Dict[str, Any]] = None
self._data: dict[str, Any] | None = None
# Legacy mode will allow usernames to start/end with whitespace
# and will compare usernames case-insensitive.
# Remove in 2020 or when we launch 1.0.
@@ -81,7 +85,7 @@ class Data:
if data is None:
data = {"users": []}
seen: Set[str] = set()
seen: set[str] = set()
for user in data["users"]:
username = user["username"]
@@ -119,7 +123,7 @@ class Data:
self._data = data
@property
def users(self) -> List[Dict[str, str]]:
def users(self) -> list[dict[str, str]]:
"""Return users."""
return self._data["users"] # type: ignore
@@ -218,7 +222,7 @@ class HassAuthProvider(AuthProvider):
def __init__(self, *args: Any, **kwargs: Any) -> None:
"""Initialize an Home Assistant auth provider."""
super().__init__(*args, **kwargs)
self.data: Optional[Data] = None
self.data: Data | None = None
self._init_lock = asyncio.Lock()
async def async_initialize(self) -> None:
@@ -231,7 +235,7 @@ class HassAuthProvider(AuthProvider):
await data.async_load()
self.data = data
async def async_login_flow(self, context: Optional[Dict]) -> LoginFlow:
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return a flow to login."""
return HassLoginFlow(self)
@@ -275,7 +279,7 @@ class HassAuthProvider(AuthProvider):
await self.data.async_save()
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Get credentials based on the flow result."""
if self.data is None:
@@ -316,8 +320,8 @@ class HassLoginFlow(LoginFlow):
"""Handler for the login flow."""
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -333,7 +337,7 @@ class HassLoginFlow(LoginFlow):
user_input.pop("password")
return await self.async_finish(user_input)
schema: Dict[str, type] = OrderedDict()
schema: dict[str, type] = OrderedDict()
schema["username"] = str
schema["password"] = str

View File

@@ -1,11 +1,15 @@
"""Example auth provider."""
from __future__ import annotations
from collections import OrderedDict
from collections.abc import Mapping
import hmac
from typing import Any, Dict, Optional, cast
from typing import cast
import voluptuous as vol
from homeassistant.core import callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
@@ -33,7 +37,7 @@ class InvalidAuthError(HomeAssistantError):
class ExampleAuthProvider(AuthProvider):
"""Example auth provider based on hardcoded usernames and passwords."""
async def async_login_flow(self, context: Optional[Dict]) -> LoginFlow:
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return a flow to login."""
return ExampleLoginFlow(self)
@@ -60,7 +64,7 @@ class ExampleAuthProvider(AuthProvider):
raise InvalidAuthError
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Get credentials based on the flow result."""
username = flow_result["username"]
@@ -94,8 +98,8 @@ class ExampleLoginFlow(LoginFlow):
"""Handler for the login flow."""
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -111,7 +115,7 @@ class ExampleLoginFlow(LoginFlow):
user_input.pop("password")
return await self.async_finish(user_input)
schema: Dict[str, type] = OrderedDict()
schema: dict[str, type] = OrderedDict()
schema["username"] = str
schema["password"] = str

View File

@@ -3,18 +3,21 @@ Support Legacy API password auth provider.
It will be removed when auth system production ready
"""
from __future__ import annotations
from collections.abc import Mapping
import hmac
from typing import Any, Dict, Optional, cast
from typing import cast
import voluptuous as vol
from homeassistant.core import HomeAssistant, callback
from homeassistant.core import callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
import homeassistant.helpers.config_validation as cv
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
from .. import AuthManager
from ..models import Credentials, User, UserMeta
from ..models import Credentials, UserMeta
AUTH_PROVIDER_TYPE = "legacy_api_password"
CONF_API_PASSWORD = "api_password"
@@ -30,23 +33,6 @@ class InvalidAuthError(HomeAssistantError):
"""Raised when submitting invalid authentication."""
async def async_validate_password(hass: HomeAssistant, password: str) -> Optional[User]:
"""Return a user if password is valid. None if not."""
auth = cast(AuthManager, hass.auth) # type: ignore
providers = auth.get_auth_providers(AUTH_PROVIDER_TYPE)
if not providers:
raise ValueError("Legacy API password provider not found")
try:
provider = cast(LegacyApiPasswordAuthProvider, providers[0])
provider.async_validate_login(password)
return await auth.async_get_or_create_user(
await provider.async_get_or_create_credentials({})
)
except InvalidAuthError:
return None
@AUTH_PROVIDERS.register(AUTH_PROVIDER_TYPE)
class LegacyApiPasswordAuthProvider(AuthProvider):
"""An auth provider support legacy api_password."""
@@ -58,7 +44,7 @@ class LegacyApiPasswordAuthProvider(AuthProvider):
"""Return api_password."""
return str(self.config[CONF_API_PASSWORD])
async def async_login_flow(self, context: Optional[Dict]) -> LoginFlow:
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return a flow to login."""
return LegacyLoginFlow(self)
@@ -73,7 +59,7 @@ class LegacyApiPasswordAuthProvider(AuthProvider):
raise InvalidAuthError
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Return credentials for this login."""
credentials = await self.async_credentials()
@@ -97,8 +83,8 @@ class LegacyLoginFlow(LoginFlow):
"""Handler for the login flow."""
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of the form."""
errors = {}

View File

@@ -3,17 +3,29 @@
It shows list of users if access from trusted network.
Abort login flow if not access from trusted network.
"""
from ipaddress import IPv4Address, IPv4Network, IPv6Address, IPv6Network, ip_network
from typing import Any, Dict, List, Optional, Union, cast
from __future__ import annotations
from collections.abc import Mapping
from ipaddress import (
IPv4Address,
IPv4Network,
IPv6Address,
IPv6Network,
ip_address,
ip_network,
)
from typing import Any, Dict, List, Union, cast
import voluptuous as vol
from homeassistant.core import callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
import homeassistant.helpers.config_validation as cv
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
from ..models import Credentials, UserMeta
from .. import InvalidAuthError
from ..models import Credentials, RefreshToken, UserMeta
IPAddress = Union[IPv4Address, IPv6Address]
IPNetwork = Union[IPv4Network, IPv6Network]
@@ -46,10 +58,6 @@ CONFIG_SCHEMA = AUTH_PROVIDER_SCHEMA.extend(
)
class InvalidAuthError(HomeAssistantError):
"""Raised when try to access from untrusted networks."""
class InvalidUserError(HomeAssistantError):
"""Raised when try to login as invalid user."""
@@ -64,12 +72,12 @@ class TrustedNetworksAuthProvider(AuthProvider):
DEFAULT_TITLE = "Trusted Networks"
@property
def trusted_networks(self) -> List[IPNetwork]:
def trusted_networks(self) -> list[IPNetwork]:
"""Return trusted networks."""
return cast(List[IPNetwork], self.config[CONF_TRUSTED_NETWORKS])
@property
def trusted_users(self) -> Dict[IPNetwork, Any]:
def trusted_users(self) -> dict[IPNetwork, Any]:
"""Return trusted users per network."""
return cast(Dict[IPNetwork, Any], self.config[CONF_TRUSTED_USERS])
@@ -78,7 +86,7 @@ class TrustedNetworksAuthProvider(AuthProvider):
"""Trusted Networks auth provider does not support MFA."""
return False
async def async_login_flow(self, context: Optional[Dict]) -> LoginFlow:
async def async_login_flow(self, context: dict | None) -> LoginFlow:
"""Return a flow to login."""
assert context is not None
ip_addr = cast(IPAddress, context.get("ip_address"))
@@ -107,7 +115,7 @@ class TrustedNetworksAuthProvider(AuthProvider):
if (
user.id in user_list
or any(
[group.id in flattened_group_list for group in user.groups]
group.id in flattened_group_list for group in user.groups
)
)
]
@@ -121,7 +129,7 @@ class TrustedNetworksAuthProvider(AuthProvider):
)
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
self, flow_result: Mapping[str, str]
) -> Credentials:
"""Get credentials based on the flow result."""
user_id = flow_result["user"]
@@ -163,6 +171,17 @@ class TrustedNetworksAuthProvider(AuthProvider):
):
raise InvalidAuthError("Not in trusted_networks")
@callback
def async_validate_refresh_token(
self, refresh_token: RefreshToken, remote_ip: str | None = None
) -> None:
"""Verify a refresh token is still valid."""
if remote_ip is None:
raise InvalidAuthError(
"Unknown remote ip can't be used for trusted network provider."
)
self.async_validate_access(ip_address(remote_ip))
class TrustedNetworksLoginFlow(LoginFlow):
"""Handler for the login flow."""
@@ -171,7 +190,7 @@ class TrustedNetworksLoginFlow(LoginFlow):
self,
auth_provider: TrustedNetworksAuthProvider,
ip_addr: IPAddress,
available_users: Dict[str, Optional[str]],
available_users: dict[str, str | None],
allow_bypass_login: bool,
) -> None:
"""Initialize the login flow."""
@@ -181,8 +200,8 @@ class TrustedNetworksLoginFlow(LoginFlow):
self._allow_bypass_login = allow_bypass_login
async def async_step_init(
self, user_input: Optional[Dict[str, str]] = None
) -> Dict[str, Any]:
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle the step of the form."""
try:
cast(

View File

@@ -1,4 +1,6 @@
"""Provide methods to bootstrap a Home Assistant instance."""
from __future__ import annotations
import asyncio
import contextlib
from datetime import datetime
@@ -8,7 +10,7 @@ import os
import sys
import threading
from time import monotonic
from typing import TYPE_CHECKING, Any, Dict, Optional, Set
from typing import TYPE_CHECKING, Any
import voluptuous as vol
import yarl
@@ -17,17 +19,20 @@ from homeassistant import config as conf_util, config_entries, core, loader
from homeassistant.components import http
from homeassistant.const import REQUIRED_NEXT_PYTHON_DATE, REQUIRED_NEXT_PYTHON_VER
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import area_registry, device_registry, entity_registry
from homeassistant.helpers.dispatcher import async_dispatcher_send
from homeassistant.helpers.typing import ConfigType
from homeassistant.setup import (
DATA_SETUP,
DATA_SETUP_STARTED,
DATA_SETUP_TIME,
async_set_domains_to_be_loaded,
async_setup_component,
)
from homeassistant.util.async_ import gather_with_concurrency
import homeassistant.util.dt as dt_util
from homeassistant.util.logging import async_activate_log_queue_handler
from homeassistant.util.package import async_get_user_site, is_virtual_env
from homeassistant.util.yaml import clear_secret_cache
if TYPE_CHECKING:
from .runner import RuntimeConfig
@@ -40,6 +45,8 @@ ERROR_LOG_FILENAME = "home-assistant.log"
DATA_LOGGING = "logging"
LOG_SLOW_STARTUP_INTERVAL = 60
SLOW_STARTUP_CHECK_INTERVAL = 1
SIGNAL_BOOTSTRAP_INTEGRATONS = "bootstrap_integrations"
STAGE_1_TIMEOUT = 120
STAGE_2_TIMEOUT = 300
@@ -74,8 +81,8 @@ STAGE_1_INTEGRATIONS = {
async def async_setup_hass(
runtime_config: "RuntimeConfig",
) -> Optional[core.HomeAssistant]:
runtime_config: RuntimeConfig,
) -> core.HomeAssistant | None:
"""Set up Home Assistant."""
hass = core.HomeAssistant()
hass.config.config_dir = runtime_config.config_dir
@@ -121,8 +128,6 @@ async def async_setup_hass(
basic_setup_success = (
await async_from_config_dict(config_dict, hass) is not None
)
finally:
clear_secret_cache()
if config_dict is None:
safe_mode = True
@@ -190,7 +195,7 @@ def open_hass_ui(hass: core.HomeAssistant) -> None:
async def async_from_config_dict(
config: ConfigType, hass: core.HomeAssistant
) -> Optional[core.HomeAssistant]:
) -> core.HomeAssistant | None:
"""Try to configure Home Assistant from a configuration dictionary.
Dynamically loads required components and its dependencies.
@@ -257,8 +262,8 @@ async def async_from_config_dict(
def async_enable_logging(
hass: core.HomeAssistant,
verbose: bool = False,
log_rotate_days: Optional[int] = None,
log_file: Optional[str] = None,
log_rotate_days: int | None = None,
log_file: str | None = None,
log_no_color: bool = False,
) -> None:
"""Set up the logging.
@@ -364,7 +369,7 @@ async def async_mount_local_lib_path(config_dir: str) -> str:
@core.callback
def _get_domains(hass: core.HomeAssistant, config: Dict[str, Any]) -> Set[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.split(" ")[0] for key in config if key != core.DOMAIN}
@@ -380,38 +385,46 @@ def _get_domains(hass: core.HomeAssistant, config: Dict[str, Any]) -> Set[str]:
return domains
async def _async_log_pending_setups(
hass: core.HomeAssistant, domains: Set[str], setup_started: Dict[str, datetime]
) -> None:
async def _async_watch_pending_setups(hass: core.HomeAssistant) -> None:
"""Periodic log of setups that are pending for longer than LOG_SLOW_STARTUP_INTERVAL."""
loop_count = 0
setup_started: dict[str, datetime] = hass.data[DATA_SETUP_STARTED]
previous_was_empty = True
while True:
await asyncio.sleep(LOG_SLOW_STARTUP_INTERVAL)
remaining = [domain for domain in domains if domain in setup_started]
now = dt_util.utcnow()
remaining_with_setup_started = {
domain: (now - setup_started[domain]).total_seconds()
for domain in setup_started
}
_LOGGER.debug("Integration remaining: %s", remaining_with_setup_started)
if remaining_with_setup_started or not previous_was_empty:
async_dispatcher_send(
hass, SIGNAL_BOOTSTRAP_INTEGRATONS, remaining_with_setup_started
)
previous_was_empty = not remaining_with_setup_started
await asyncio.sleep(SLOW_STARTUP_CHECK_INTERVAL)
loop_count += SLOW_STARTUP_CHECK_INTERVAL
if remaining:
if loop_count >= LOG_SLOW_STARTUP_INTERVAL and setup_started:
_LOGGER.warning(
"Waiting on integrations to complete setup: %s",
", ".join(remaining),
", ".join(setup_started),
)
loop_count = 0
_LOGGER.debug("Running timeout Zones: %s", hass.timeout.zones)
async def async_setup_multi_components(
hass: core.HomeAssistant,
domains: Set[str],
config: Dict[str, Any],
setup_started: Dict[str, datetime],
domains: set[str],
config: dict[str, Any],
) -> None:
"""Set up multiple domains. Log on failure."""
futures = {
domain: hass.async_create_task(async_setup_component(hass, domain, config))
for domain in domains
}
log_task = asyncio.create_task(
_async_log_pending_setups(hass, domains, setup_started)
)
await asyncio.wait(futures.values())
log_task.cancel()
errors = [domain for domain in domains if futures[domain].exception()]
for domain in errors:
exception = futures[domain].exception()
@@ -424,15 +437,19 @@ async def async_setup_multi_components(
async def _async_set_up_integrations(
hass: core.HomeAssistant, config: Dict[str, Any]
hass: core.HomeAssistant, config: dict[str, Any]
) -> None:
"""Set up all the integrations."""
setup_started = hass.data[DATA_SETUP_STARTED] = {}
hass.data[DATA_SETUP_STARTED] = {}
setup_time = hass.data[DATA_SETUP_TIME] = {}
watch_task = asyncio.create_task(_async_watch_pending_setups(hass))
domains_to_setup = _get_domains(hass, config)
# Resolve all dependencies so we know all integrations
# that will have to be loaded and start rightaway
integration_cache: Dict[str, loader.Integration] = {}
integration_cache: dict[str, loader.Integration] = {}
to_resolve = domains_to_setup
while to_resolve:
old_to_resolve = to_resolve
@@ -476,14 +493,14 @@ async def _async_set_up_integrations(
# Load logging as soon as possible
if logging_domains:
_LOGGER.info("Setting up logging: %s", logging_domains)
await async_setup_multi_components(hass, logging_domains, config, setup_started)
await async_setup_multi_components(hass, logging_domains, config)
# Start up debuggers. Start these first in case they want to wait.
debuggers = domains_to_setup & DEBUGGER_INTEGRATIONS
if debuggers:
_LOGGER.debug("Setting up debuggers: %s", debuggers)
await async_setup_multi_components(hass, debuggers, config, setup_started)
await async_setup_multi_components(hass, debuggers, config)
# calculate what components to setup in what stage
stage_1_domains = set()
@@ -510,10 +527,12 @@ async def _async_set_up_integrations(
stage_2_domains = domains_to_setup - logging_domains - debuggers - stage_1_domains
# Kick off loading the registries. They don't need to be awaited.
asyncio.create_task(hass.helpers.device_registry.async_get_registry())
asyncio.create_task(hass.helpers.entity_registry.async_get_registry())
asyncio.create_task(hass.helpers.area_registry.async_get_registry())
# Load the registries
await asyncio.gather(
device_registry.async_load(hass),
entity_registry.async_load(hass),
area_registry.async_load(hass),
)
# Start setup
if stage_1_domains:
@@ -522,9 +541,7 @@ async def _async_set_up_integrations(
async with hass.timeout.async_timeout(
STAGE_1_TIMEOUT, cool_down=COOLDOWN_TIME
):
await async_setup_multi_components(
hass, stage_1_domains, config, setup_started
)
await async_setup_multi_components(hass, stage_1_domains, config)
except asyncio.TimeoutError:
_LOGGER.warning("Setup timed out for stage 1 - moving forward")
@@ -537,12 +554,23 @@ async def _async_set_up_integrations(
async with hass.timeout.async_timeout(
STAGE_2_TIMEOUT, cool_down=COOLDOWN_TIME
):
await async_setup_multi_components(
hass, stage_2_domains, config, setup_started
)
await async_setup_multi_components(hass, stage_2_domains, config)
except asyncio.TimeoutError:
_LOGGER.warning("Setup timed out for stage 2 - moving forward")
watch_task.cancel()
async_dispatcher_send(hass, SIGNAL_BOOTSTRAP_INTEGRATONS, {})
_LOGGER.debug(
"Integration setup times: %s",
{
integration: timedelta.total_seconds()
for integration, timedelta in sorted(
setup_time.items(), key=lambda item: item[1].total_seconds() # type: ignore
)
},
)
# Wrap up startup
_LOGGER.debug("Waiting for startup to wrap up")
try:

View File

@@ -7,16 +7,16 @@ Component design guidelines:
format "<DOMAIN>.<OBJECT_ID>".
- Each component should publish services only under its own domain.
"""
from __future__ import annotations
import logging
from homeassistant.core import split_entity_id
# mypy: allow-untyped-defs
from homeassistant.core import HomeAssistant, split_entity_id
_LOGGER = logging.getLogger(__name__)
def is_on(hass, entity_id=None):
def is_on(hass: HomeAssistant, entity_id: str | None = None) -> bool:
"""Load up the module to call the is_on method.
If there is no entity id given we will check all.

View File

@@ -1,5 +1,4 @@
"""Support for the Abode Security System."""
from asyncio import gather
from copy import deepcopy
from functools import partial
@@ -9,17 +8,18 @@ import abodepy.helpers.timeline as TIMELINE
from requests.exceptions import ConnectTimeout, HTTPError
import voluptuous as vol
from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_REAUTH
from homeassistant.config_entries import SOURCE_IMPORT
from homeassistant.const import (
ATTR_ATTRIBUTION,
ATTR_DATE,
ATTR_DEVICE_ID,
ATTR_ENTITY_ID,
ATTR_TIME,
CONF_PASSWORD,
CONF_USERNAME,
EVENT_HOMEASSISTANT_STOP,
)
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.dispatcher import dispatcher_send
from homeassistant.helpers.entity import Entity
@@ -32,7 +32,6 @@ SERVICE_SETTINGS = "change_setting"
SERVICE_CAPTURE_IMAGE = "capture_image"
SERVICE_TRIGGER_AUTOMATION = "trigger_automation"
ATTR_DEVICE_ID = "device_id"
ATTR_DEVICE_NAME = "device_name"
ATTR_DEVICE_TYPE = "device_type"
ATTR_EVENT_CODE = "event_code"
@@ -66,7 +65,7 @@ CAPTURE_IMAGE_SCHEMA = vol.Schema({ATTR_ENTITY_ID: cv.entity_ids})
AUTOMATION_SCHEMA = vol.Schema({ATTR_ENTITY_ID: cv.entity_ids})
ABODE_PLATFORMS = [
PLATFORMS = [
"alarm_control_panel",
"binary_sensor",
"lock",
@@ -124,24 +123,14 @@ async def async_setup_entry(hass, config_entry):
)
except AbodeAuthenticationException as ex:
LOGGER.error("Invalid credentials: %s", ex)
await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_REAUTH},
data=config_entry.data,
)
return False
raise ConfigEntryAuthFailed(f"Invalid credentials: {ex}") from ex
except (AbodeException, ConnectTimeout, HTTPError) as ex:
LOGGER.error("Unable to connect to Abode: %s", ex)
raise ConfigEntryNotReady from ex
raise ConfigEntryNotReady(f"Unable to connect to Abode: {ex}") from ex
hass.data[DOMAIN] = AbodeSystem(abode, polling)
for platform in ABODE_PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
await setup_hass_events(hass)
await hass.async_add_executor_job(setup_hass_services, hass)
@@ -156,14 +145,9 @@ async def async_unload_entry(hass, config_entry):
hass.services.async_remove(DOMAIN, SERVICE_CAPTURE_IMAGE)
hass.services.async_remove(DOMAIN, SERVICE_TRIGGER_AUTOMATION)
tasks = []
for platform in ABODE_PLATFORMS:
tasks.append(
hass.config_entries.async_forward_entry_unload(config_entry, platform)
)
await gather(*tasks)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
await hass.async_add_executor_job(hass.data[DOMAIN].abode.events.stop)
await hass.async_add_executor_job(hass.data[DOMAIN].abode.logout)
@@ -171,7 +155,7 @@ async def async_unload_entry(hass, config_entry):
hass.data[DOMAIN].logout_listener()
hass.data.pop(DOMAIN)
return True
return unload_ok
def setup_hass_services(hass):
@@ -363,7 +347,7 @@ class AbodeDevice(AbodeEntity):
return self._device.name
@property
def device_state_attributes(self):
def extra_state_attributes(self):
"""Return the state attributes."""
return {
ATTR_ATTRIBUTION: ATTRIBUTION,
@@ -411,7 +395,7 @@ class AbodeAutomation(AbodeEntity):
return self._automation.name
@property
def device_state_attributes(self):
def extra_state_attributes(self):
"""Return the state attributes."""
return {ATTR_ATTRIBUTION: ATTRIBUTION, "type": "CUE automation"}

View File

@@ -69,7 +69,7 @@ class AbodeAlarm(AbodeDevice, alarm.AlarmControlPanelEntity):
self._device.set_away()
@property
def device_state_attributes(self):
def extra_state_attributes(self):
"""Return the state attributes."""
return {
ATTR_ATTRIBUTION: ATTRIBUTION,

View File

@@ -8,7 +8,7 @@ import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, HTTP_BAD_REQUEST
from .const import DEFAULT_CACHEDB, DOMAIN, LOGGER # pylint: disable=unused-import
from .const import DEFAULT_CACHEDB, DOMAIN, LOGGER
CONF_MFA = "mfa_code"
CONF_POLLING = "polling"
@@ -163,7 +163,7 @@ class AbodeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
async def async_step_import(self, import_config):
"""Import a config entry from configuration.yaml."""
if self._async_current_entries():
LOGGER.warning("Already configured. Only a single configuration possible.")
LOGGER.warning("Already configured; Only a single configuration possible")
return self.async_abort(reason="single_instance_allowed")
self._polling = import_config.get(CONF_POLLING, False)

View File

@@ -7,5 +7,6 @@
"codeowners": ["@shred86"],
"homekit": {
"models": ["Abode", "Iota"]
}
},
"iot_class": "cloud_push"
}

View File

@@ -1,6 +1,7 @@
"""Support for Abode Security System sensors."""
import abodepy.helpers.constants as CONST
from homeassistant.components.sensor import SensorEntity
from homeassistant.const import (
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
@@ -33,7 +34,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_add_entities(entities)
class AbodeSensor(AbodeDevice):
class AbodeSensor(AbodeDevice, SensorEntity):
"""A sensor implementation for Abode devices."""
def __init__(self, data, device, sensor_type):

View File

@@ -3,7 +3,22 @@
"abort": {
"single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de Abode."
},
"error": {
"invalid_mfa_code": "C\u00f3digo MFA no v\u00e1lido"
},
"step": {
"mfa": {
"data": {
"mfa_code": "C\u00f3digo MFA (6 d\u00edgitos)"
},
"title": "Ingrese su c\u00f3digo MFA para Abode"
},
"reauth_confirm": {
"data": {
"password": "Contrase\u00f1a"
},
"title": "Complete su informaci\u00f3n de inicio de sesi\u00f3n de Abode"
},
"user": {
"data": {
"password": "Contrase\u00f1a",

View File

@@ -0,0 +1,12 @@
{
"config": {
"step": {
"user": {
"data": {
"password": "\u06a9\u0644\u0645\u0647 \u0639\u0628\u0648\u0631",
"username": "\u0627\u06cc\u0645\u06cc\u0644"
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"username": "\u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9"
}
}
}
}
}

View File

@@ -1,16 +1,25 @@
{
"config": {
"abort": {
"single_instance_allowed": "Csak egyetlen Abode konfigur\u00e1ci\u00f3 enged\u00e9lyezett."
"reauth_successful": "Az \u00fajrahiteles\u00edt\u00e9s sikeres volt",
"single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges."
},
"error": {
"cannot_connect": "Sikertelen csatlakoz\u00e1s",
"invalid_auth": "\u00c9rv\u00e9nytelen hiteles\u00edt\u00e9s",
"invalid_mfa_code": "\u00c9rv\u00e9nytelen MFA k\u00f3d"
},
"step": {
"mfa": {
"data": {
"mfa_code": "MFA k\u00f3d (6 jegy\u0171)"
},
"title": "Add meg az Abode MFA k\u00f3dj\u00e1t"
},
"reauth_confirm": {
"data": {
"password": "Jelsz\u00f3",
"username": "E-mail"
}
},
"user": {

View File

@@ -0,0 +1,35 @@
{
"config": {
"abort": {
"reauth_successful": "Autentikasi ulang berhasil",
"single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan."
},
"error": {
"cannot_connect": "Gagal terhubung",
"invalid_auth": "Autentikasi tidak valid",
"invalid_mfa_code": "Kode MFA tidak valid"
},
"step": {
"mfa": {
"data": {
"mfa_code": "Kode MFA (6 digit)"
},
"title": "Masukkan kode MFA Anda untuk Abode"
},
"reauth_confirm": {
"data": {
"password": "Kata Sandi",
"username": "Email"
},
"title": "Masukkan informasi masuk Abode Anda"
},
"user": {
"data": {
"password": "Kata Sandi",
"username": "Email"
},
"title": "Masukkan informasi masuk Abode Anda"
}
}
}
}

View File

@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"reauth_successful": "La riautenticazione ha avuto successo",
"reauth_successful": "La nuova autenticazione \u00e8 stata eseguita correttamente",
"single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione."
},
"error": {

View File

@@ -1,9 +1,28 @@
{
"config": {
"abort": {
"single_instance_allowed": "\ud558\ub098\uc758 Abode \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
"reauth_successful": "\uc7ac\uc778\uc99d\uc5d0 \uc131\uacf5\ud588\uc2b5\ub2c8\ub2e4",
"single_instance_allowed": "\uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4\ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"invalid_mfa_code": "MFA \ucf54\ub4dc\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"step": {
"mfa": {
"data": {
"mfa_code": "MFA \ucf54\ub4dc (6\uc790\ub9ac)"
},
"title": "Abode\uc5d0 \ub300\ud55c MFA \ucf54\ub4dc\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694"
},
"reauth_confirm": {
"data": {
"password": "\ube44\ubc00\ubc88\ud638",
"username": "\uc774\uba54\uc77c"
},
"title": "Abode \ub85c\uadf8\uc778 \uc815\ubcf4 \uc785\ub825\ud558\uae30"
},
"user": {
"data": {
"password": "\ube44\ubc00\ubc88\ud638",

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"reauth_successful": "Herauthenticatie was succesvol",
"single_instance_allowed": "Slechts een enkele configuratie van Abode is toegestaan."
},
"error": {
@@ -12,9 +13,14 @@
"mfa": {
"data": {
"mfa_code": "MFA-code (6-cijfers)"
}
},
"title": "Voer uw MFA-code voor Abode in"
},
"reauth_confirm": {
"data": {
"password": "Wachtwoord",
"username": "E-mail"
},
"title": "Vul uw Abode-inloggegevens in"
},
"user": {

View File

@@ -0,0 +1,7 @@
{
"config": {
"abort": {
"reauth_successful": "Re-autentificare efectuata cu succes"
}
}
}

View File

@@ -6,7 +6,7 @@
},
"error": {
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
"invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.",
"invalid_auth": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.",
"invalid_mfa_code": "\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 MFA."
},
"step": {

View File

@@ -1,5 +1,4 @@
"""The AccuWeather component."""
import asyncio
from datetime import timedelta
import logging
@@ -8,8 +7,6 @@ from aiohttp.client_exceptions import ClientConnectorError
from async_timeout import timeout
from homeassistant.const import CONF_API_KEY
from homeassistant.core import Config, HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
@@ -26,12 +23,6 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS = ["sensor", "weather"]
async def async_setup(hass: HomeAssistant, config: Config) -> bool:
"""Set up configured AccuWeather."""
hass.data.setdefault(DOMAIN, {})
return True
async def async_setup_entry(hass, config_entry) -> bool:
"""Set up AccuWeather as config entry."""
api_key = config_entry.data[CONF_API_KEY]
@@ -45,35 +36,24 @@ async def async_setup_entry(hass, config_entry) -> bool:
coordinator = AccuWeatherDataUpdateCoordinator(
hass, websession, api_key, location_key, forecast
)
await coordinator.async_refresh()
if not coordinator.last_update_success:
raise ConfigEntryNotReady
await coordinator.async_config_entry_first_refresh()
undo_listener = config_entry.add_update_listener(update_listener)
hass.data[DOMAIN][config_entry.entry_id] = {
hass.data.setdefault(DOMAIN, {})[config_entry.entry_id] = {
COORDINATOR: coordinator,
UNDO_UPDATE_LISTENER: undo_listener,
}
for component in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, component)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
return True
async def async_unload_entry(hass, config_entry):
"""Unload a config entry."""
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(config_entry, component)
for component in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
hass.data[DOMAIN][config_entry.entry_id][UNDO_UPDATE_LISTENER]()

View File

@@ -13,7 +13,7 @@ from homeassistant.core import callback
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from .const import CONF_FORECAST, DOMAIN # pylint:disable=unused-import
from .const import CONF_FORECAST, DOMAIN
class AccuWeatherFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):

View File

@@ -17,6 +17,7 @@ from homeassistant.components.weather import (
)
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ICON,
CONCENTRATION_PARTS_PER_CUBIC_METER,
DEVICE_CLASS_TEMPERATURE,
LENGTH_FEET,
@@ -33,7 +34,6 @@ from homeassistant.const import (
)
ATTRIBUTION = "Data provided by AccuWeather"
ATTR_ICON = "icon"
ATTR_FORECAST = CONF_FORECAST = "forecast"
ATTR_LABEL = "label"
ATTR_UNIT_IMPERIAL = "Imperial"

View File

@@ -2,8 +2,9 @@
"domain": "accuweather",
"name": "AccuWeather",
"documentation": "https://www.home-assistant.io/integrations/accuweather/",
"requirements": ["accuweather==0.0.11"],
"requirements": ["accuweather==0.1.1"],
"codeowners": ["@bieniu"],
"config_flow": true,
"quality_scale": "platinum"
"quality_scale": "platinum",
"iot_class": "cloud_polling"
}

View File

@@ -1,4 +1,5 @@
"""Support for the AccuWeather service."""
from homeassistant.components.sensor import SensorEntity
from homeassistant.const import (
ATTR_ATTRIBUTION,
ATTR_DEVICE_CLASS,
@@ -48,7 +49,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_add_entities(sensors, False)
class AccuWeatherSensor(CoordinatorEntity):
class AccuWeatherSensor(CoordinatorEntity, SensorEntity):
"""Define an AccuWeather entity."""
def __init__(self, name, kind, coordinator, forecast_day=None):
@@ -141,7 +142,7 @@ class AccuWeatherSensor(CoordinatorEntity):
return SENSOR_TYPES[self.kind][self._unit_system]
@property
def device_state_attributes(self):
def extra_state_attributes(self):
"""Return the state attributes."""
if self.forecast_day is not None:
if self.kind in ["WindDay", "WindNight", "WindGustDay", "WindGustNight"]:

View File

@@ -5,7 +5,8 @@
},
"error": {
"cannot_connect": "Verbindung fehlgeschlagen",
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel"
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel",
"requests_exceeded": "Die zul\u00e4ssige Anzahl von Anforderungen an die Accuweather-API wurde \u00fcberschritten. Sie m\u00fcssen warten oder den API-Schl\u00fcssel \u00e4ndern."
},
"step": {
"user": {
@@ -15,6 +16,7 @@
"longitude": "L\u00e4ngengrad",
"name": "Name"
},
"description": "Wenn du Hilfe bei der Konfiguration ben\u00f6tigst, schaue hier nach: https://www.home-assistant.io/integrations/accuweather/\n\nEinige Sensoren sind standardm\u00e4\u00dfig nicht aktiviert. Du kannst sie in der Entit\u00e4tsregister nach der Integrationskonfiguration aktivieren.\nDie Wettervorhersage ist nicht standardm\u00e4\u00dfig aktiviert. Du kannst sie in den Integrationsoptionen aktivieren.",
"title": "AccuWeather"
}
}
@@ -24,7 +26,9 @@
"user": {
"data": {
"forecast": "Wettervorhersage"
}
},
"description": "Aufgrund der Einschr\u00e4nkungen der kostenlosen Version des AccuWeather-API-Schl\u00fcssels werden bei aktivierter Wettervorhersage Datenaktualisierungen alle 80 Minuten statt alle 40 Minuten durchgef\u00fchrt.",
"title": "AccuWeather Optionen"
}
}
},

View File

@@ -16,8 +16,14 @@
"data": {
"forecast": "Pron\u00f3stico del tiempo"
},
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilita el pron\u00f3stico del tiempo, las actualizaciones de datos se realizar\u00e1n cada 64 minutos en lugar de cada 32 minutos."
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilita el pron\u00f3stico del tiempo, las actualizaciones de datos se realizar\u00e1n cada 64 minutos en lugar de cada 32 minutos.",
"title": "Opciones de AccuWeather"
}
}
},
"system_health": {
"info": {
"remaining_requests": "Solicitudes permitidas restantes"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"longitude": "\u05e7\u05d5 \u05d0\u05d5\u05e8\u05da"
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
{
"config": {
"abort": {
"single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges."
},
"error": {
"cannot_connect": "Sikertelen csatlakoz\u00e1s",
"invalid_api_key": "\u00c9rv\u00e9nytelen API kulcs"
},
"step": {
"user": {
"data": {
"api_key": "API kulcs",
"latitude": "Sz\u00e9less\u00e9g",
"longitude": "Hossz\u00fas\u00e1g",
"name": "N\u00e9v"
},
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"title": "AccuWeather be\u00e1ll\u00edt\u00e1sok"
}
}
}
}

View File

@@ -0,0 +1,41 @@
{
"config": {
"abort": {
"single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan."
},
"error": {
"cannot_connect": "Gagal terhubung",
"invalid_api_key": "Kunci API tidak valid",
"requests_exceeded": "Jumlah permintaan yang diizinkan ke API Accuweather telah terlampaui. Anda harus menunggu atau mengubah Kunci API."
},
"step": {
"user": {
"data": {
"api_key": "Kunci API",
"latitude": "Lintang",
"longitude": "Bujur",
"name": "Nama"
},
"description": "Jika Anda memerlukan bantuan tentang konfigurasi, baca di sini: https://www.home-assistant.io/integrations/accuweather/\n\nBeberapa sensor tidak diaktifkan secara default. Anda dapat mengaktifkannya di registri entitas setelah konfigurasi integrasi.\nPrakiraan cuaca tidak diaktifkan secara default. Anda dapat mengaktifkannya di opsi integrasi.",
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Prakiraan cuaca"
},
"description": "Karena keterbatasan versi gratis kunci API AccuWeather, ketika Anda mengaktifkan prakiraan cuaca, pembaruan data akan dilakukan setiap 80 menit, bukan setiap 40 menit.",
"title": "Opsi AccuWeather"
}
}
},
"system_health": {
"info": {
"can_reach_server": "Keterjangkauan server AccuWeather",
"remaining_requests": "Sisa permintaan yang diizinkan"
}
}
}

View File

@@ -1,9 +1,41 @@
{
"config": {
"abort": {
"single_instance_allowed": "\uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4\ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",
"invalid_api_key": "API \ud0a4\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"requests_exceeded": "Accuweather API\uc5d0 \ud5c8\uc6a9\ub41c \uc694\uccad \uc218\uac00 \ucd08\uacfc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uae30\ub2e4\ub9ac\uac70\ub098 API \ud0a4\ub97c \ubcc0\uacbd\ud574\uc57c \ud569\ub2c8\ub2e4."
},
"step": {
"user": {
"description": "\uad6c\uc131\uc5d0 \ub300\ud55c \ub3c4\uc6c0\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 \ub2e4\uc74c\uc744 \ucc38\uc870\ud574\uc8fc\uc138\uc694:\nhttps://www.home-assistant.io/integrations/accuweather/\n\n\uc77c\ubd80 \uc13c\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc5f0\ub3d9 \uad6c\uc131 \ud6c4 \uad6c\uc131\uc694\uc18c \ub808\uc9c0\uc2a4\ud2b8\ub9ac\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\uc77c\uae30\uc608\ubcf4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc5f0\ub3d9 \uc635\uc158\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
"data": {
"api_key": "API \ud0a4",
"latitude": "\uc704\ub3c4",
"longitude": "\uacbd\ub3c4",
"name": "\uc774\ub984"
},
"description": "\uad6c\uc131\uc5d0 \ub300\ud55c \ub3c4\uc6c0\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 \ub2e4\uc74c\uc744 \ucc38\uc870\ud574\uc8fc\uc138\uc694: https://www.home-assistant.io/integrations/accuweather/\n\n\uc77c\ubd80 \uc13c\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud1b5\ud569 \uad6c\uc131\uc694\uc18c \uad6c\uc131 \ud6c4 \uad6c\uc131\uc694\uc18c \ub808\uc9c0\uc2a4\ud2b8\ub9ac\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\uc77c\uae30\uc608\ubcf4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud1b5\ud569 \uad6c\uc131\uc694\uc18c \uc635\uc158\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "\ub0a0\uc528 \uc608\ubcf4"
},
"description": "\ubb34\ub8cc \ubc84\uc804\uc758 AccuWeather API \ud0a4\ub85c \uc77c\uae30\uc608\ubcf4\ub97c \ud65c\uc131\ud654\ud55c \uacbd\uc6b0 \uc81c\ud55c\uc0ac\ud56d\uc73c\ub85c \uc778\ud574 \uc5c5\ub370\uc774\ud2b8\ub294 40 \ubd84\uc774 \uc544\ub2cc 80 \ubd84\ub9c8\ub2e4 \uc218\ud589\ub429\ub2c8\ub2e4.",
"title": "AccuWeather \uc635\uc158"
}
}
},
"system_health": {
"info": {
"can_reach_server": "AccuWeather \uc11c\ubc84 \uc5f0\uacb0",
"remaining_requests": "\ub0a8\uc740 \ud5c8\uc6a9 \uc694\uccad \ud69f\uc218"
}
}
}

View File

@@ -1,6 +1,10 @@
{
"config": {
"abort": {
"single_instance_allowed": "Al geconfigureerd. Slechts een enkele configuratie mogelijk."
},
"error": {
"cannot_connect": "Kan geen verbinding maken",
"invalid_api_key": "API-sleutel",
"requests_exceeded": "Het toegestane aantal verzoeken aan de Accuweather API is overschreden. U moet wachten of de API-sleutel wijzigen."
},
@@ -27,5 +31,11 @@
"title": "AccuWeather-opties"
}
}
},
"system_health": {
"info": {
"can_reach_server": "Kan AccuWeather server bereiken",
"remaining_requests": "Resterende toegestane verzoeken"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Descendente",
"rising": "Creciente",
"steady": "Firme"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Cs\u00f6kken\u0151",
"rising": "Emelked\u0151",
"steady": "\u00c1lland\u00f3"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Turun",
"rising": "Naik",
"steady": "Tetap"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "\ud558\uac15",
"rising": "\uc0c1\uc2b9",
"steady": "\uc548\uc815"
}
}
}

View File

@@ -3,5 +3,6 @@
"name": "Acer Projector",
"documentation": "https://www.home-assistant.io/integrations/acer_projector",
"requirements": ["pyserial==3.5"],
"codeowners": []
"codeowners": [],
"iot_class": "local_polling"
}

View File

@@ -9,6 +9,7 @@ from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity
from homeassistant.const import (
CONF_FILENAME,
CONF_NAME,
CONF_TIMEOUT,
STATE_OFF,
STATE_ON,
STATE_UNKNOWN,
@@ -17,7 +18,6 @@ import homeassistant.helpers.config_validation as cv
_LOGGER = logging.getLogger(__name__)
CONF_TIMEOUT = "timeout"
CONF_WRITE_TIMEOUT = "write_timeout"
DEFAULT_NAME = "Acer Projector"
@@ -74,7 +74,6 @@ class AcerSwitch(SwitchEntity):
def __init__(self, serial_port, name, timeout, write_timeout, **kwargs):
"""Init of the Acer projector."""
self.ser = serial.Serial(
port=serial_port, timeout=timeout, write_timeout=write_timeout, **kwargs
)
@@ -90,7 +89,6 @@ class AcerSwitch(SwitchEntity):
def _write_read(self, msg):
"""Write to the projector and read the return."""
ret = ""
# Sometimes the projector won't answer for no reason or the projector
# was disconnected during runtime.
@@ -134,7 +132,7 @@ class AcerSwitch(SwitchEntity):
return self._state
@property
def state_attributes(self):
def extra_state_attributes(self):
"""Return state attributes."""
return self._attributes

View File

@@ -1,5 +1,4 @@
"""The Rollease Acmeda Automate integration."""
import asyncio
from homeassistant import config_entries, core
@@ -11,11 +10,6 @@ CONF_HUBS = "hubs"
PLATFORMS = ["cover", "sensor"]
async def async_setup(hass: core.HomeAssistant, config: dict):
"""Set up the Rollease Acmeda Automate component."""
return True
async def async_setup_entry(
hass: core.HomeAssistant, config_entry: config_entries.ConfigEntry
):
@@ -28,10 +22,7 @@ async def async_setup_entry(
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][config_entry.entry_id] = hub
for component in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, component)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
return True
@@ -42,14 +33,10 @@ async def async_unload_entry(
"""Unload a config entry."""
hub = hass.data[DOMAIN][config_entry.entry_id]
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(config_entry, component)
for component in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
if not await hub.async_reset():
return False

View File

@@ -32,7 +32,7 @@ class AcmedaBase(entity.Entity):
device.id, remove_config_entry_id=self.registry_entry.config_entry_id
)
await self.async_remove()
await self.async_remove(force_remove=True)
async def async_added_to_hass(self):
"""Entity has been added to hass."""

View File

@@ -1,6 +1,8 @@
"""Config flow for Rollease Acmeda Automate Pulse Hub."""
from __future__ import annotations
import asyncio
from typing import Dict, Optional
from contextlib import suppress
import aiopulse
import async_timeout
@@ -8,7 +10,7 @@ import voluptuous as vol
from homeassistant import config_entries
from .const import DOMAIN # pylint: disable=unused-import
from .const import DOMAIN
class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
@@ -19,7 +21,7 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
def __init__(self):
"""Initialize the config flow."""
self.discovered_hubs: Optional[Dict[str, aiopulse.Hub]] = None
self.discovered_hubs: dict[str, aiopulse.Hub] | None = None
async def async_step_user(self, user_input=None):
"""Handle a flow initialized by the user."""
@@ -36,15 +38,13 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
}
hubs = []
try:
with async_timeout.timeout(5):
with suppress(asyncio.TimeoutError):
async with async_timeout.timeout(5):
async for hub in aiopulse.Hub.discover():
if hub.id not in already_configured:
hubs.append(hub)
except asyncio.TimeoutError:
pass
if len(hubs) == 0:
if not hubs:
return self.async_abort(reason="no_devices_found")
if len(hubs) == 1:

View File

@@ -1,6 +1,7 @@
"""Code to handle a Pulse Hub."""
from __future__ import annotations
import asyncio
from typing import Optional
import aiopulse
@@ -17,7 +18,7 @@ class PulseHub:
"""Initialize the system."""
self.config_entry = config_entry
self.hass = hass
self.api: Optional[aiopulse.Hub] = None
self.api: aiopulse.Hub | None = None
self.tasks = []
self.current_rollers = {}
self.cleanup_callbacks = []

View File

@@ -4,7 +4,6 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/acmeda",
"requirements": ["aiopulse==0.4.2"],
"codeowners": [
"@atmurray"
]
}
"codeowners": ["@atmurray"],
"iot_class": "local_push"
}

View File

@@ -1,4 +1,5 @@
"""Support for Acmeda Roller Blind Batteries."""
from homeassistant.components.sensor import SensorEntity
from homeassistant.const import DEVICE_CLASS_BATTERY, PERCENTAGE
from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
@@ -29,7 +30,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
)
class AcmedaBattery(AcmedaBase):
class AcmedaBattery(AcmedaBase, SensorEntity):
"""Representation of a Acmeda cover device."""
device_class = DEVICE_CLASS_BATTERY

View File

@@ -0,0 +1,7 @@
{
"config": {
"abort": {
"no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton"
}
}
}

View File

@@ -0,0 +1,15 @@
{
"config": {
"abort": {
"no_devices_found": "Tidak ada perangkat yang ditemukan di jaringan"
},
"step": {
"user": {
"data": {
"id": "ID Host"
},
"title": "Pilih hub untuk ditambahkan"
}
}
}
}

View File

@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"no_devices_found": "\ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \uae30\uae30\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"
},
"step": {
"user": {
"data": {

View File

@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"no_devices_found": "Geen apparaten gevonden op het netwerk"
},
"step": {
"user": {
"data": {

View File

@@ -53,7 +53,7 @@ class ActiontecDeviceScanner(DeviceScanner):
self.last_results = []
data = self.get_actiontec_data()
self.success_init = data is not None
_LOGGER.info("canner initialized")
_LOGGER.info("Scanner initialized")
def scan_devices(self):
"""Scan for new devices and return a list with found device IDs."""

View File

@@ -2,5 +2,6 @@
"domain": "actiontec",
"name": "Actiontec",
"documentation": "https://www.home-assistant.io/integrations/actiontec",
"codeowners": []
"codeowners": [],
"iot_class": "local_polling"
}

View File

@@ -1,6 +1,8 @@
"""Support for AdGuard Home."""
from __future__ import annotations
import logging
from typing import Any, Dict
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
import voluptuous as vol
@@ -8,7 +10,7 @@ import voluptuous as vol
from homeassistant.components.adguard.const import (
CONF_FORCE,
DATA_ADGUARD_CLIENT,
DATA_ADGUARD_VERION,
DATA_ADGUARD_VERSION,
DOMAIN,
SERVICE_ADD_URL,
SERVICE_DISABLE_URL,
@@ -27,11 +29,11 @@ from homeassistant.const import (
CONF_USERNAME,
CONF_VERIFY_SSL,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.typing import ConfigType, HomeAssistantType
_LOGGER = logging.getLogger(__name__)
@@ -43,13 +45,10 @@ SERVICE_REFRESH_SCHEMA = vol.Schema(
{vol.Optional(CONF_FORCE, default=False): cv.boolean}
)
async def async_setup(hass: HomeAssistantType, config: ConfigType) -> bool:
"""Set up the AdGuard Home components."""
return True
PLATFORMS = ["sensor", "switch"]
async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up AdGuard Home from a config entry."""
session = async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL])
adguard = AdGuardHome(
@@ -62,39 +61,40 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool
session=session,
)
hass.data.setdefault(DOMAIN, {})[DATA_ADGUARD_CLIENT] = adguard
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {DATA_ADGUARD_CLIENT: adguard}
try:
await adguard.version()
except AdGuardHomeConnectionError as exception:
raise ConfigEntryNotReady from exception
for component in "sensor", "switch":
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, component)
)
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
async def add_url(call) -> None:
"""Service call to add a new filter subscription to AdGuard Home."""
await adguard.filtering.add_url(
call.data.get(CONF_NAME), call.data.get(CONF_URL)
allowlist=False, name=call.data.get(CONF_NAME), url=call.data.get(CONF_URL)
)
async def remove_url(call) -> None:
"""Service call to remove a filter subscription from AdGuard Home."""
await adguard.filtering.remove_url(call.data.get(CONF_URL))
await adguard.filtering.remove_url(allowlist=False, url=call.data.get(CONF_URL))
async def enable_url(call) -> None:
"""Service call to enable a filter subscription in AdGuard Home."""
await adguard.filtering.enable_url(call.data.get(CONF_URL))
await adguard.filtering.enable_url(allowlist=False, url=call.data.get(CONF_URL))
async def disable_url(call) -> None:
"""Service call to disable a filter subscription in AdGuard Home."""
await adguard.filtering.disable_url(call.data.get(CONF_URL))
await adguard.filtering.disable_url(
allowlist=False, url=call.data.get(CONF_URL)
)
async def refresh(call) -> None:
"""Service call to refresh the filter subscriptions in AdGuard Home."""
await adguard.filtering.refresh(call.data.get(CONF_FORCE))
await adguard.filtering.refresh(
allowlist=False, force=call.data.get(CONF_FORCE)
)
hass.services.async_register(
DOMAIN, SERVICE_ADD_URL, add_url, schema=SERVICE_ADD_URL_SCHEMA
@@ -115,7 +115,7 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool
return True
async def async_unload_entry(hass: HomeAssistantType, entry: ConfigType) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload AdGuard Home config entry."""
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
@@ -123,25 +123,30 @@ async def async_unload_entry(hass: HomeAssistantType, entry: ConfigType) -> bool
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
for component in "sensor", "switch":
await hass.config_entries.async_forward_entry_unload(entry, component)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
del hass.data[DOMAIN]
del hass.data[DOMAIN]
return True
return unload_ok
class AdGuardHomeEntity(Entity):
"""Defines a base AdGuard Home entity."""
def __init__(
self, adguard, name: str, icon: str, enabled_default: bool = True
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
enabled_default: bool = True,
) -> None:
"""Initialize the AdGuard Home entity."""
self._available = True
self._enabled_default = enabled_default
self._icon = icon
self._name = name
self._entry = entry
self.adguard = adguard
@property
@@ -189,7 +194,7 @@ class AdGuardHomeDeviceEntity(AdGuardHomeEntity):
"""Defines a AdGuard Home device entity."""
@property
def device_info(self) -> Dict[str, Any]:
def device_info(self) -> dict[str, Any]:
"""Return device information about this AdGuard Home instance."""
return {
"identifiers": {
@@ -197,6 +202,8 @@ class AdGuardHomeDeviceEntity(AdGuardHomeEntity):
},
"name": "AdGuard Home",
"manufacturer": "AdGuard Team",
"sw_version": self.hass.data[DOMAIN].get(DATA_ADGUARD_VERION),
"sw_version": self.hass.data[DOMAIN][self._entry.entry_id].get(
DATA_ADGUARD_VERSION
),
"entry_type": "service",
}

View File

@@ -1,9 +1,12 @@
"""Config flow to configure the AdGuard Home integration."""
from __future__ import annotations
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.components.adguard.const import DOMAIN
from homeassistant.config_entries import ConfigFlow
from homeassistant.const import (
CONF_HOST,
@@ -13,11 +16,13 @@ from homeassistant.const import (
CONF_USERNAME,
CONF_VERIFY_SSL,
)
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
@config_entries.HANDLERS.register(DOMAIN)
class AdGuardHomeFlowHandler(ConfigFlow):
class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
"""Handle a AdGuard Home config flow."""
VERSION = 1
@@ -25,7 +30,9 @@ class AdGuardHomeFlowHandler(ConfigFlow):
_hassio_discovery = None
async def _show_setup_form(self, errors=None):
async def _show_setup_form(
self, errors: dict[str, str] | None = None
) -> FlowResult:
"""Show the setup form to the user."""
return self.async_show_form(
step_id="user",
@@ -42,7 +49,9 @@ class AdGuardHomeFlowHandler(ConfigFlow):
errors=errors or {},
)
async def _show_hassio_form(self, errors=None):
async def _show_hassio_form(
self, errors: dict[str, str] | None = None
) -> FlowResult:
"""Show the Hass.io confirmation form to the user."""
return self.async_show_form(
step_id="hassio_confirm",
@@ -51,14 +60,21 @@ class AdGuardHomeFlowHandler(ConfigFlow):
errors=errors or {},
)
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 initiated by the user."""
if self._async_current_entries():
return self.async_abort(reason="single_instance_allowed")
if user_input is None:
return await self._show_setup_form(user_input)
entries = self._async_current_entries()
for entry in entries:
if (
entry.data[CONF_HOST] == user_input[CONF_HOST]
and entry.data[CONF_PORT] == user_input[CONF_PORT]
):
return self.async_abort(reason="already_configured")
errors = {}
session = async_get_clientsession(self.hass, user_input[CONF_VERIFY_SSL])
@@ -91,46 +107,20 @@ class AdGuardHomeFlowHandler(ConfigFlow):
},
)
async def async_step_hassio(self, discovery_info):
async def async_step_hassio(self, discovery_info: dict[str, Any]) -> FlowResult:
"""Prepare configuration for a Hass.io AdGuard Home add-on.
This flow is triggered by the discovery component.
"""
entries = self._async_current_entries()
await self._async_handle_discovery_without_unique_id()
if not entries:
self._hassio_discovery = discovery_info
return await self.async_step_hassio_confirm()
self._hassio_discovery = discovery_info
return await self.async_step_hassio_confirm()
cur_entry = entries[0]
if (
cur_entry.data[CONF_HOST] == discovery_info[CONF_HOST]
and cur_entry.data[CONF_PORT] == discovery_info[CONF_PORT]
):
return self.async_abort(reason="single_instance_allowed")
is_loaded = cur_entry.state == config_entries.ENTRY_STATE_LOADED
if is_loaded:
await self.hass.config_entries.async_unload(cur_entry.entry_id)
self.hass.config_entries.async_update_entry(
cur_entry,
data={
**cur_entry.data,
CONF_HOST: discovery_info[CONF_HOST],
CONF_PORT: discovery_info[CONF_PORT],
},
)
if is_loaded:
await self.hass.config_entries.async_setup(cur_entry.entry_id)
return self.async_abort(reason="existing_instance_updated")
async def async_step_hassio_confirm(self, user_input=None):
"""Confirm Hass.io discovery."""
async def async_step_hassio_confirm(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Confirm Supervisor discovery."""
if user_input is None:
return await self._show_hassio_form()

View File

@@ -3,7 +3,7 @@
DOMAIN = "adguard"
DATA_ADGUARD_CLIENT = "adguard_client"
DATA_ADGUARD_VERION = "adguard_version"
DATA_ADGUARD_VERSION = "adguard_version"
CONF_FORCE = "force"

View File

@@ -3,6 +3,7 @@
"name": "AdGuard Home",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/adguard",
"requirements": ["adguardhome==0.4.2"],
"codeowners": ["@frenck"]
"requirements": ["adguardhome==0.5.0"],
"codeowners": ["@frenck"],
"iot_class": "local_polling"
}

View File

@@ -1,56 +1,61 @@
"""Support for AdGuard Home sensors."""
from __future__ import annotations
from datetime import timedelta
from typing import Callable
from adguardhome import AdGuardHomeConnectionError
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
from homeassistant.components.adguard import AdGuardHomeDeviceEntity
from homeassistant.components.adguard.const import (
DATA_ADGUARD_CLIENT,
DATA_ADGUARD_VERION,
DOMAIN,
)
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, TIME_MILLISECONDS
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.helpers.entity import Entity
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
SCAN_INTERVAL = timedelta(seconds=300)
PARALLEL_UPDATES = 4
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
hass: HomeAssistant,
entry: ConfigEntry,
async_add_entities: Callable[[list[Entity], bool], None],
) -> None:
"""Set up AdGuard Home sensor based on a config entry."""
adguard = hass.data[DOMAIN][DATA_ADGUARD_CLIENT]
adguard = hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_CLIENT]
try:
version = await adguard.version()
except AdGuardHomeConnectionError as exception:
raise PlatformNotReady from exception
hass.data[DOMAIN][DATA_ADGUARD_VERION] = version
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
sensors = [
AdGuardHomeDNSQueriesSensor(adguard),
AdGuardHomeBlockedFilteringSensor(adguard),
AdGuardHomePercentageBlockedSensor(adguard),
AdGuardHomeReplacedParentalSensor(adguard),
AdGuardHomeReplacedSafeBrowsingSensor(adguard),
AdGuardHomeReplacedSafeSearchSensor(adguard),
AdGuardHomeAverageProcessingTimeSensor(adguard),
AdGuardHomeRulesCountSensor(adguard),
AdGuardHomeDNSQueriesSensor(adguard, entry),
AdGuardHomeBlockedFilteringSensor(adguard, entry),
AdGuardHomePercentageBlockedSensor(adguard, entry),
AdGuardHomeReplacedParentalSensor(adguard, entry),
AdGuardHomeReplacedSafeBrowsingSensor(adguard, entry),
AdGuardHomeReplacedSafeSearchSensor(adguard, entry),
AdGuardHomeAverageProcessingTimeSensor(adguard, entry),
AdGuardHomeRulesCountSensor(adguard, entry),
]
async_add_entities(sensors, True)
class AdGuardHomeSensor(AdGuardHomeDeviceEntity):
class AdGuardHomeSensor(AdGuardHomeDeviceEntity, SensorEntity):
"""Defines a AdGuard Home sensor."""
def __init__(
self,
adguard,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
measurement: str,
@@ -62,7 +67,7 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity):
self._unit_of_measurement = unit_of_measurement
self.measurement = measurement
super().__init__(adguard, name, icon, enabled_default)
super().__init__(adguard, entry, name, icon, enabled_default)
@property
def unique_id(self) -> str:
@@ -78,12 +83,12 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity):
)
@property
def state(self):
def state(self) -> str | None:
"""Return the state of the sensor."""
return self._state
@property
def unit_of_measurement(self) -> str:
def unit_of_measurement(self) -> str | None:
"""Return the unit this state is expressed in."""
return self._unit_of_measurement
@@ -91,10 +96,15 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity):
class AdGuardHomeDNSQueriesSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home DNS Queries sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard, "AdGuard DNS Queries", "mdi:magnify", "dns_queries", "queries"
adguard,
entry,
"AdGuard DNS Queries",
"mdi:magnify",
"dns_queries",
"queries",
)
async def _adguard_update(self) -> None:
@@ -105,10 +115,11 @@ class AdGuardHomeDNSQueriesSensor(AdGuardHomeSensor):
class AdGuardHomeBlockedFilteringSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked by filtering sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard DNS Queries Blocked",
"mdi:magnify-close",
"blocked_filtering",
@@ -124,10 +135,11 @@ class AdGuardHomeBlockedFilteringSensor(AdGuardHomeSensor):
class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked percentage sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard DNS Queries Blocked Ratio",
"mdi:magnify-close",
"blocked_percentage",
@@ -143,10 +155,11 @@ class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedParentalSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by parental control sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Parental Control Blocked",
"mdi:human-male-girl",
"blocked_parental",
@@ -161,10 +174,11 @@ class AdGuardHomeReplacedParentalSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedSafeBrowsingSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe browsing sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Safe Browsing Blocked",
"mdi:shield-half-full",
"blocked_safebrowsing",
@@ -179,10 +193,11 @@ class AdGuardHomeReplacedSafeBrowsingSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedSafeSearchSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe search sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Safe Searches Enforced",
"mdi:shield-search",
"enforced_safesearch",
@@ -197,10 +212,11 @@ class AdGuardHomeReplacedSafeSearchSensor(AdGuardHomeSensor):
class AdGuardHomeAverageProcessingTimeSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home average processing time sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Average Processing Speed",
"mdi:speedometer",
"average_speed",
@@ -216,10 +232,11 @@ class AdGuardHomeAverageProcessingTimeSensor(AdGuardHomeSensor):
class AdGuardHomeRulesCountSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home rules count sensor."""
def __init__(self, adguard):
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Rules Count",
"mdi:counter",
"rules_count",
@@ -229,4 +246,4 @@ class AdGuardHomeRulesCountSensor(AdGuardHomeSensor):
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.filtering.rules_count()
self._state = await self.adguard.filtering.rules_count(allowlist=False)

View File

@@ -13,8 +13,8 @@
}
},
"hassio_confirm": {
"title": "AdGuard Home via Hass.io add-on",
"description": "Do you want to configure Home Assistant to connect to the AdGuard Home provided by the Hass.io add-on: {addon}?"
"title": "AdGuard Home via Home Assistant add-on",
"description": "Do you want to configure Home Assistant to connect to the AdGuard Home provided by the add-on: {addon}?"
}
},
"error": {
@@ -22,7 +22,7 @@
},
"abort": {
"existing_instance_updated": "Updated existing configuration.",
"single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]"
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]"
}
}
}

View File

@@ -1,19 +1,20 @@
"""Support for AdGuard Home switches."""
from __future__ import annotations
from datetime import timedelta
import logging
from typing import Callable
from adguardhome import AdGuardHomeConnectionError, AdGuardHomeError
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
from homeassistant.components.adguard import AdGuardHomeDeviceEntity
from homeassistant.components.adguard.const import (
DATA_ADGUARD_CLIENT,
DATA_ADGUARD_VERION,
DOMAIN,
)
from homeassistant.components.switch import SwitchEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.helpers.entity import Entity
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
_LOGGER = logging.getLogger(__name__)
@@ -22,25 +23,27 @@ PARALLEL_UPDATES = 1
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
hass: HomeAssistant,
entry: ConfigEntry,
async_add_entities: Callable[[list[Entity], bool], None],
) -> None:
"""Set up AdGuard Home switch based on a config entry."""
adguard = hass.data[DOMAIN][DATA_ADGUARD_CLIENT]
adguard = hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_CLIENT]
try:
version = await adguard.version()
except AdGuardHomeConnectionError as exception:
raise PlatformNotReady from exception
hass.data[DOMAIN][DATA_ADGUARD_VERION] = version
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
switches = [
AdGuardHomeProtectionSwitch(adguard),
AdGuardHomeFilteringSwitch(adguard),
AdGuardHomeParentalSwitch(adguard),
AdGuardHomeSafeBrowsingSwitch(adguard),
AdGuardHomeSafeSearchSwitch(adguard),
AdGuardHomeQueryLogSwitch(adguard),
AdGuardHomeProtectionSwitch(adguard, entry),
AdGuardHomeFilteringSwitch(adguard, entry),
AdGuardHomeParentalSwitch(adguard, entry),
AdGuardHomeSafeBrowsingSwitch(adguard, entry),
AdGuardHomeSafeSearchSwitch(adguard, entry),
AdGuardHomeQueryLogSwitch(adguard, entry),
]
async_add_entities(switches, True)
@@ -49,12 +52,18 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
"""Defines a AdGuard Home switch."""
def __init__(
self, adguard, name: str, icon: str, key: str, enabled_default: bool = True
):
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
key: str,
enabled_default: bool = True,
) -> None:
"""Initialize AdGuard Home switch."""
self._state = False
self._key = key
super().__init__(adguard, name, icon, enabled_default)
super().__init__(adguard, entry, name, icon, enabled_default)
@property
def unique_id(self) -> str:
@@ -96,10 +105,10 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
class AdGuardHomeProtectionSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home protection switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, "AdGuard Protection", "mdi:shield-check", "protection"
adguard, entry, "AdGuard Protection", "mdi:shield-check", "protection"
)
async def _adguard_turn_off(self) -> None:
@@ -118,10 +127,10 @@ class AdGuardHomeProtectionSwitch(AdGuardHomeSwitch):
class AdGuardHomeParentalSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home parental control switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, "AdGuard Parental Control", "mdi:shield-check", "parental"
adguard, entry, "AdGuard Parental Control", "mdi:shield-check", "parental"
)
async def _adguard_turn_off(self) -> None:
@@ -140,10 +149,10 @@ class AdGuardHomeParentalSwitch(AdGuardHomeSwitch):
class AdGuardHomeSafeSearchSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, "AdGuard Safe Search", "mdi:shield-check", "safesearch"
adguard, entry, "AdGuard Safe Search", "mdi:shield-check", "safesearch"
)
async def _adguard_turn_off(self) -> None:
@@ -162,10 +171,10 @@ class AdGuardHomeSafeSearchSwitch(AdGuardHomeSwitch):
class AdGuardHomeSafeBrowsingSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, "AdGuard Safe Browsing", "mdi:shield-check", "safebrowsing"
adguard, entry, "AdGuard Safe Browsing", "mdi:shield-check", "safebrowsing"
)
async def _adguard_turn_off(self) -> None:
@@ -184,9 +193,11 @@ class AdGuardHomeSafeBrowsingSwitch(AdGuardHomeSwitch):
class AdGuardHomeFilteringSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home filtering switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(adguard, "AdGuard Filtering", "mdi:shield-check", "filtering")
super().__init__(
adguard, entry, "AdGuard Filtering", "mdi:shield-check", "filtering"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
@@ -204,10 +215,11 @@ class AdGuardHomeFilteringSwitch(AdGuardHomeSwitch):
class AdGuardHomeQueryLogSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home query log switch."""
def __init__(self, adguard) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard,
entry,
"AdGuard Query Log",
"mdi:shield-check",
"querylog",

View File

@@ -6,8 +6,8 @@
},
"step": {
"hassio_confirm": {
"description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Home Assistant \u0434\u0430 \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 AdGuard Home, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d \u043e\u0442 Hass.io \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430: {addon} ?",
"title": "AdGuard Home \u0447\u0440\u0435\u0437 Hass.io \u0434\u043e\u0431\u0430\u0432\u043a\u0430"
"description": "\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 Home Assistant \u0434\u0430 \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 AdGuard Home, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d \u043e\u0442 Supervisor \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u0442\u0430: {addon} ?",
"title": "AdGuard Home \u0447\u0440\u0435\u0437 Supervisor \u0434\u043e\u0431\u0430\u0432\u043a\u0430"
},
"user": {
"data": {

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "El servei ja est\u00e0 configurat",
"existing_instance_updated": "S'ha actualitzat la configuraci\u00f3 existent.",
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Vols configurar Home Assistant perqu\u00e8 es connecti amb l'AdGuard Home proporcionat pel complement de Hass.io: {addon}?",
"title": "AdGuard Home (complement de Hass.io)"
"description": "Vols configurar Home Assistant perqu\u00e8 es connecti amb l'AdGuard Home proporcionat pel complement: {addon}?",
"title": "AdGuard Home via complement de Home Assistant"
},
"user": {
"data": {

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Slu\u017eba je ji\u017e nastavena",
"existing_instance_updated": "St\u00e1vaj\u00edc\u00ed nastaven\u00ed aktualizov\u00e1no.",
"single_instance_allowed": "Ji\u017e nastaveno. Je mo\u017en\u00e1 pouze jedin\u00e1 konfigurace."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Chcete nakonfigurovat slu\u017ebu Home Assistant pro p\u0159ipojen\u00ed k AddGuard pomoc\u00ed hass.io {addon}?",
"title": "AdGuard prost\u0159ednictv\u00edm dopl\u0148ku Hass.io"
"description": "Chcete nakonfigurovat slu\u017ebu Home Assistant pro p\u0159ipojen\u00ed k AddGuard pomoc\u00ed Supervisor {addon}?",
"title": "AdGuard prost\u0159ednictv\u00edm dopl\u0148ku Supervisor"
},
"user": {
"data": {

View File

@@ -6,8 +6,8 @@
},
"step": {
"hassio_confirm": {
"description": "Vil du konfigurere Home Assistant til at oprette forbindelse til AdGuard Home leveret af Hass.io-tilf\u00f8jelsen: {addon}?",
"title": "AdGuard Home via Hass.io-tilf\u00f8jelse"
"description": "Vil du konfigurere Home Assistant til at oprette forbindelse til AdGuard Home leveret af Supervisor-tilf\u00f8jelsen: {addon}?",
"title": "AdGuard Home via Supervisor-tilf\u00f8jelse"
},
"user": {
"data": {

View File

@@ -9,8 +9,8 @@
},
"step": {
"hassio_confirm": {
"description": "M\u00f6chtest du Home Assistant so konfigurieren, dass eine Verbindung mit AdGuard Home als Hass.io-Add-On hergestellt wird: {addon}?",
"title": "AdGuard Home \u00fcber das Hass.io Add-on"
"description": "M\u00f6chtest du Home Assistant so konfigurieren, dass eine Verbindung mit AdGuard Home als Supervisor-Add-On hergestellt wird: {addon}?",
"title": "AdGuard Home \u00fcber das Supervisor Add-on"
},
"user": {
"data": {

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Service is already configured",
"existing_instance_updated": "Updated existing configuration.",
"single_instance_allowed": "Already configured. Only a single configuration possible."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Do you want to configure Home Assistant to connect to the AdGuard Home provided by the Hass.io add-on: {addon}?",
"title": "AdGuard Home via Hass.io add-on"
"description": "Do you want to configure Home Assistant to connect to the AdGuard Home provided by the add-on: {addon}?",
"title": "AdGuard Home via Home Assistant add-on"
},
"user": {
"data": {

View File

@@ -6,8 +6,8 @@
},
"step": {
"hassio_confirm": {
"description": "\u00bfDesea configurar Home Assistant para conectarse a la p\u00e1gina principal de AdGuard proporcionada por el complemento Hass.io: {addon}?",
"title": "AdGuard Home a trav\u00e9s del complemento Hass.io"
"description": "\u00bfDesea configurar Home Assistant para conectarse a la p\u00e1gina principal de AdGuard proporcionada por el complemento Supervisor: {addon}?",
"title": "AdGuard Home a trav\u00e9s del complemento Supervisor"
},
"user": {
"data": {

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "El servicio ya est\u00e1 configurado",
"existing_instance_updated": "Se ha actualizado la configuraci\u00f3n existente.",
"single_instance_allowed": "S\u00f3lo se permite una \u00fanica configuraci\u00f3n de AdGuard Home."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "\u00bfDesea configurar Home Assistant para conectarse al AdGuard Home proporcionado por el complemento Hass.io: {addon} ?",
"title": "AdGuard Home a trav\u00e9s del complemento Hass.io"
"description": "\u00bfDesea configurar Home Assistant para conectarse al AdGuard Home proporcionado por el complemento Supervisor: {addon} ?",
"title": "AdGuard Home a trav\u00e9s del complemento Supervisor"
},
"user": {
"data": {

View File

@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Teenus on juba seadistatud",
"existing_instance_updated": "Olemasolevad seaded v\u00e4rskendatud.",
"single_instance_allowed": "Juba seadistatud. V\u00f5imalik on ainult \u00fcks seadistamine."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Kas soovid seadistada Home Assistant-i \u00fchenduse AdGuard Home'iga mida pakub Hass.io lisandmoodul: {addon} ?",
"title": "AdGuard Home Hass.io pistikprogrammi kaudu"
"description": "Kas soovid seadistada Home Assistant-i \u00fchenduse AdGuard Home'iga mida pakub lisandmoodul: {addon} ?",
"title": "AdGuard Home Home Assistanti lisandmooduli abil"
},
"user": {
"data": {

View File

@@ -4,6 +4,7 @@
"user": {
"data": {
"host": "Host",
"password": "\u05e1\u05d9\u05e1\u05de\u05d4",
"port": "\u05e4\u05d5\u05e8\u05d8"
}
}

View File

@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"single_instance_allowed": "M\u00e1r konfigur\u00e1lva van. Csak egy konfigur\u00e1ci\u00f3 lehets\u00e9ges."
},
"error": {
"cannot_connect": "Sikertelen csatlakoz\u00e1s"
},
@@ -9,7 +12,9 @@
"host": "Hoszt",
"password": "Jelsz\u00f3",
"port": "Port",
"username": "Felhaszn\u00e1l\u00f3n\u00e9v"
"ssl": "SSL tan\u00fas\u00edtv\u00e1ny haszn\u00e1lata",
"username": "Felhaszn\u00e1l\u00f3n\u00e9v",
"verify_ssl": "SSL-tan\u00fas\u00edtv\u00e1ny ellen\u0151rz\u00e9se"
}
}
}

View File

@@ -1,10 +1,27 @@
{
"config": {
"abort": {
"existing_instance_updated": "Memperbarui konfigurasi yang ada.",
"single_instance_allowed": "Sudah dikonfigurasi. Hanya satu konfigurasi yang diizinkan."
},
"error": {
"cannot_connect": "Gagal terhubung"
},
"step": {
"hassio_confirm": {
"description": "Ingin mengonfigurasi Home Assistant untuk terhubung ke AdGuard Home yang disediakan oleh add-on Supervisor {addon}?",
"title": "AdGuard Home melalui add-on Home Assistant"
},
"user": {
"data": {
"password": "Kata sandi"
}
"host": "Host",
"password": "Kata Sandi",
"port": "Port",
"ssl": "Menggunakan sertifikat SSL",
"username": "Nama Pengguna",
"verify_ssl": "Verifikasi sertifikat SSL"
},
"description": "Siapkan instans AdGuard Home Anda untuk pemantauan dan kontrol."
}
}
}

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