Compare commits

..

883 Commits

Author SHA1 Message Date
Franck Nijhof ae561542c3 Merge pull request #50862 from home-assistant/rc 2021-05-19 17:30:25 +02:00
Franck Nijhof 163d2788b6 Bumped version to 2021.5.5 2021-05-19 16:54:05 +02:00
Tobias Sauerwein f141ed6977 Bump pyatmo to 4.2.3 (#50801)
* Bump pyatmo to 4.2.3

* Fix typo and update test fixture
2021-05-19 16:53:27 +02:00
jjlawren 7603bf8145 Bump pysonos to 0.0.47 (#50792) 2021-05-19 16:53:03 +02:00
Erik Montnemery 9a8317db1d Bump hatasmota to 0.2.13 (#50662)
* Bump hatasmota to 0.2.13

* Process review comment

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

* Tweak brightness compensation, improve tests

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-05-19 16:50:55 +02:00
jjlawren b86cb7a072 Backport Sonos handle subscription failures (#50796) 2021-05-19 16:47:43 +02:00
Franck Nijhof bcd022ff34 Upgrade freesms to 0.2.0 (#50853) 2021-05-19 12:48:00 +02:00
Paulus Schoutsen 7a0f245f92 Merge pull request #50627 from home-assistant/rc 2021-05-14 14:56:50 -07:00
Paulus Schoutsen 77a6d7317f Bumped version to 2021.5.4 2021-05-14 14:25:39 -07:00
Erik Montnemery 2a949cff0e Update light intents to check supported_color_modes (#50625) 2021-05-14 14:25:32 -07:00
Aaron Bach 57d8e7483d Fix IQVIA failing to start if any API call fails (#50615)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2021-05-14 14:25:31 -07:00
Erik Montnemery 728bead3b7 Update light device actions to check supported_color_modes (#50611) 2021-05-14 14:25:30 -07:00
Joakim Sørensen 0b5a077d55 Bump pyhaversion from 21.3.0 to 21.5.0 (#50540) 2021-05-14 14:25:29 -07:00
jjlawren 3e8d840905 Skip adding battery on S1 Sonos devices (#50536) 2021-05-14 14:25:28 -07:00
kennedyshead 8e3894a441 Bumps aioasuswrt to 1.3.4 (#50414) 2021-05-14 14:23:52 -07:00
Tobias Sauerwein d8379c57b4 Fix battery attribute (#50405) 2021-05-14 14:23:51 -07:00
jjlawren c52a33478e Fix Sonos favorites race condition v2 (#50575) 2021-05-13 20:32:34 -07:00
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](https://github.com/actions/setup-python/commits/dc73133d4da04e56a135ae2246682783cc7c7cb6)

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
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
3430 changed files with 68795 additions and 22121 deletions
+36 -5
View File
@@ -145,7 +145,6 @@ omit =
homeassistant/components/clickatell/notify.py
homeassistant/components/clicksend/notify.py
homeassistant/components/clicksend_tts/notify.py
homeassistant/components/climacell/weather.py
homeassistant/components/cmus/media_player.py
homeassistant/components/co2signal/*
homeassistant/components/coinbase/*
@@ -174,6 +173,7 @@ 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
@@ -237,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
@@ -246,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
@@ -271,7 +275,13 @@ 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
@@ -319,6 +329,9 @@ omit =
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
@@ -335,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
@@ -349,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
@@ -421,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
@@ -502,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/*
@@ -573,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
@@ -600,7 +621,6 @@ omit =
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
@@ -612,6 +632,8 @@ omit =
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/*
@@ -667,6 +689,7 @@ omit =
homeassistant/components/nsw_fuel_station/sensor.py
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
@@ -759,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
@@ -807,9 +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
@@ -841,6 +869,7 @@ omit =
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
@@ -878,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
@@ -893,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
@@ -1097,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
+3 -8
View File
@@ -1,7 +1,5 @@
name: Report an issue with Home Assistant Core
description: Report an issue with Home Assistant Core.
title: ""
issue_body: true
body:
- type: markdown
attributes:
@@ -85,13 +83,10 @@ body:
label: Anything in the logs that might be useful for us?
description: For example, error message, or stack traces.
render: txt
- type: markdown
- type: textarea
attributes:
value: |
## Additional information
- type: markdown
attributes:
value: >
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
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
+41 -40
View File
@@ -13,6 +13,7 @@ env:
CACHE_VERSION: 1
DEFAULT_PYTHON: 3.8
PRE_COMMIT_CACHE: ~/.cache/pre-commit
SQLALCHEMY_WARN_20: 1
jobs:
# Separate job to pre-populate the base dependency cache
@@ -28,7 +29,7 @@ jobs:
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
@@ -40,7 +41,7 @@ jobs:
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
@@ -64,7 +65,7 @@ jobs:
hashFiles('.pre-commit-config.yaml') }}"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -85,13 +86,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -103,7 +104,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -125,13 +126,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -143,7 +144,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -165,13 +166,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -183,7 +184,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -227,13 +228,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -245,7 +246,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -270,13 +271,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -288,7 +289,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -313,13 +314,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -331,7 +332,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -353,13 +354,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -371,7 +372,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -396,13 +397,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -414,7 +415,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -447,13 +448,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -465,7 +466,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -495,7 +496,7 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -518,13 +519,13 @@ 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.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -560,7 +561,7 @@ jobs:
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: >-
@@ -597,7 +598,7 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -628,7 +629,7 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -662,7 +663,7 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -699,7 +700,7 @@ jobs:
-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
@@ -720,7 +721,7 @@ jobs:
uses: actions/checkout@v2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.4
uses: actions/cache@v2.1.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -739,4 +740,4 @@ jobs:
coverage report --fail-under=94
coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1.3.1
uses: codecov/codecov-action@v1.4.1
+6 -5
View File
@@ -1,11 +1,11 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.11.0
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,7 +23,7 @@ repos:
exclude_types: [csv, json]
exclude: ^tests/fixtures/
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.0
rev: 3.9.1
hooks:
- id: flake8
additional_dependencies:
@@ -33,6 +33,7 @@ repos:
- 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
@@ -44,7 +45,7 @@ repos:
- --configfile=tests/bandit.yaml
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/isort
rev: 5.7.0
rev: 5.8.0
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
@@ -69,7 +70,7 @@ repos:
- id: prettier
stages: [manual]
- repo: https://github.com/cdce8p/python-typing-update
rev: v0.3.2
rev: v0.3.3
hooks:
# Run `python-typing-update` hook manually from time to time
# to update python typing syntax.
+47
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.*
+5 -8
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"
}
],
]
}
]
}
}
+14 -5
View File
@@ -35,7 +35,6 @@ 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
@@ -89,6 +88,7 @@ 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
@@ -133,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
@@ -146,7 +147,7 @@ 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
@@ -163,6 +164,8 @@ homeassistant/components/forked_daapd/* @uvjustin
homeassistant/components/fortios/* @kimfrellsen
homeassistant/components/foscam/* @skgsergio
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
@@ -182,7 +185,7 @@ homeassistant/components/gpsd/* @fabaff
homeassistant/components/gree/* @cmroche
homeassistant/components/greeneye_monitor/* @jkeljo
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
@@ -212,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
@@ -248,6 +252,7 @@ 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
@@ -276,6 +281,7 @@ 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
@@ -290,10 +296,12 @@ 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/* @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 @functionpointer
@@ -352,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
@@ -363,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
@@ -424,7 +433,7 @@ 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
-323
View File
@@ -1,323 +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: '2021.02.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: 17
matrix:
qemux86-64:
buildMachine: 'qemux86-64'
generic-x86-64:
buildMachine: 'generic-x86-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')
+14 -6
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
}
+1
View File
@@ -145,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()
+5 -4
View File
@@ -4,13 +4,14 @@ from __future__ import annotations
import asyncio
from collections import OrderedDict
from datetime import timedelta
from typing import Any, Dict, 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
@@ -97,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)
@@ -115,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"):
+2 -1
View File
@@ -12,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
@@ -105,7 +106,7 @@ class SetupFlow(data_entry_flow.FlowHandler):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the first step of setup flow.
Return self.async_show_form(step_id='init') if user_input is None.
+3 -2
View File
@@ -14,6 +14,7 @@ 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
@@ -292,7 +293,7 @@ class NotifySetupFlow(SetupFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Let user select available notify services."""
errors: dict[str, str] = {}
@@ -318,7 +319,7 @@ class NotifySetupFlow(SetupFlow):
async def async_step_setup(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Verify user can receive one-time password."""
errors: dict[str, str] = {}
+2 -1
View File
@@ -9,6 +9,7 @@ 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,
@@ -189,7 +190,7 @@ class TotpSetupFlow(SetupFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the first step of setup flow.
Return self.async_show_form(step_id='init') if user_input is None.
+7 -5
View File
@@ -1,6 +1,7 @@
"""Auth providers for Home Assistant."""
from __future__ import annotations
from collections.abc import Mapping
import importlib
import logging
import types
@@ -12,6 +13,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, 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
@@ -102,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
@@ -198,7 +200,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the first step of login flow.
Return self.async_show_form(step_id='init') if user_input is None.
@@ -208,7 +210,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
async def async_step_select_mfa_module(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of select mfa module."""
errors = {}
@@ -233,7 +235,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
async def async_step_mfa(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of mfa validation."""
assert self.credential
assert self.user
@@ -285,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)
+4 -2
View File
@@ -3,6 +3,7 @@ from __future__ import annotations
import asyncio.subprocess
import collections
from collections.abc import Mapping
import logging
import os
from typing import Any, cast
@@ -10,6 +11,7 @@ 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
@@ -100,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"]
@@ -127,7 +129,7 @@ class CommandLineLoginFlow(LoginFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -4,6 +4,7 @@ from __future__ import annotations
import asyncio
import base64
from collections import OrderedDict
from collections.abc import Mapping
import logging
from typing import Any, cast
@@ -12,6 +13,7 @@ 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
@@ -277,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:
@@ -319,7 +321,7 @@ class HassLoginFlow(LoginFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -2,12 +2,14 @@
from __future__ import annotations
from collections import OrderedDict
from collections.abc import Mapping
import hmac
from typing import Any, 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
@@ -62,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"]
@@ -97,7 +99,7 @@ class ExampleLoginFlow(LoginFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -5,12 +5,14 @@ It will be removed when auth system production ready
"""
from __future__ import annotations
from collections.abc import Mapping
import hmac
from typing import Any, 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
import homeassistant.helpers.config_validation as cv
@@ -57,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()
@@ -82,7 +84,7 @@ class LegacyLoginFlow(LoginFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of the form."""
errors = {}
@@ -5,6 +5,7 @@ Abort login flow if not access from trusted network.
"""
from __future__ import annotations
from collections.abc import Mapping
from ipaddress import (
IPv4Address,
IPv4Network,
@@ -18,6 +19,7 @@ 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
@@ -127,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"]
@@ -199,7 +201,7 @@ class TrustedNetworksLoginFlow(LoginFlow):
async def async_step_init(
self, user_input: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Handle the step of the form."""
try:
cast(
+47 -21
View File
@@ -20,14 +20,17 @@ 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
@@ -42,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
@@ -380,19 +385,32 @@ 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)
@@ -400,18 +418,13 @@ async def async_setup_multi_components(
hass: core.HomeAssistant,
domains: set[str],
config: dict[str, Any],
setup_started: dict[str, datetime],
) -> 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()
@@ -427,7 +440,11 @@ async def _async_set_up_integrations(
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
@@ -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()
@@ -524,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")
@@ -539,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:
+4 -4
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.
+9 -25
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,7 +8,7 @@ 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,
@@ -20,7 +19,7 @@ from homeassistant.const import (
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
@@ -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 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 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):
+2 -1
View File
@@ -7,5 +7,6 @@
"codeowners": ["@shred86"],
"homekit": {
"models": ["Abode", "Iota"]
}
},
"iot_class": "cloud_push"
}
@@ -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",
@@ -0,0 +1,7 @@
{
"config": {
"abort": {
"reauth_successful": "Re-autentificare efectuata cu succes"
}
}
}
@@ -1,5 +1,4 @@
"""The AccuWeather component."""
import asyncio
from datetime import timedelta
import logging
@@ -46,23 +45,15 @@ async def async_setup_entry(hass, config_entry) -> bool:
UNDO_UPDATE_LISTENER: undo_listener,
}
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
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, platform)
for platform in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
hass.data[DOMAIN][config_entry.entry_id][UNDO_UPDATE_LISTENER]()
@@ -5,5 +5,6 @@
"requirements": ["accuweather==0.1.1"],
"codeowners": ["@bieniu"],
"config_flow": true,
"quality_scale": "platinum"
"quality_scale": "platinum",
"iot_class": "cloud_polling"
}
@@ -16,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"
}
}
@@ -25,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"
}
}
},
@@ -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"
}
}
}
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Descendente",
"rising": "Creciente",
"steady": "Firme"
}
}
}
@@ -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"
}
+4 -12
View File
@@ -1,5 +1,4 @@
"""The Rollease Acmeda Automate integration."""
import asyncio
from homeassistant import config_entries, core
@@ -23,10 +22,7 @@ async def async_setup_entry(
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][config_entry.entry_id] = hub
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
return True
@@ -37,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, platform)
for platform in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
if not await hub.async_reset():
return False
@@ -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"
}
@@ -2,5 +2,6 @@
"domain": "actiontec",
"name": "Actiontec",
"documentation": "https://www.home-assistant.io/integrations/actiontec",
"codeowners": []
"codeowners": [],
"iot_class": "local_polling"
}
+17 -13
View File
@@ -10,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,
@@ -61,17 +61,14 @@ async def async_setup_entry(hass: HomeAssistant, 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 platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, platform)
)
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."""
@@ -126,25 +123,30 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
for platform in PLATFORMS:
await hass.config_entries.async_forward_entry_unload(entry, platform)
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
@@ -200,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",
}
+18 -41
View File
@@ -16,6 +16,7 @@ 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
@@ -31,7 +32,7 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
async def _show_setup_form(
self, errors: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Show the setup form to the user."""
return self.async_show_form(
step_id="user",
@@ -50,7 +51,7 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
async def _show_hassio_form(
self, errors: dict[str, str] | None = None
) -> dict[str, Any]:
) -> FlowResult:
"""Show the Hass.io confirmation form to the user."""
return self.async_show_form(
step_id="hassio_confirm",
@@ -61,14 +62,19 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> dict[str, Any]:
) -> 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])
@@ -101,49 +107,20 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
},
)
async def async_step_hassio(self, discovery_info: dict[str, Any]) -> dict[str, Any]:
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
await self._async_handle_discovery_without_unique_id()
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")
self._hassio_discovery = discovery_info
return await self.async_step_hassio_confirm()
async def async_step_hassio_confirm(
self, user_input: dict[str, Any] | None = None
) -> dict[str, Any]:
"""Confirm Hass.io discovery."""
) -> FlowResult:
"""Confirm Supervisor discovery."""
if user_input is None:
return await self._show_hassio_form()
+1 -1
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"
@@ -4,5 +4,6 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/adguard",
"requirements": ["adguardhome==0.5.0"],
"codeowners": ["@frenck"]
"codeowners": ["@frenck"],
"iot_class": "local_polling"
}
+34 -21
View File
@@ -14,7 +14,7 @@ from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity import Entity
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERION, DOMAIN
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
SCAN_INTERVAL = timedelta(seconds=300)
PARALLEL_UPDATES = 4
@@ -26,24 +26,24 @@ async def async_setup_entry(
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)
@@ -55,6 +55,7 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity, SensorEntity):
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
measurement: str,
@@ -66,7 +67,7 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity, SensorEntity):
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:
@@ -95,10 +96,15 @@ class AdGuardHomeSensor(AdGuardHomeDeviceEntity, SensorEntity):
class AdGuardHomeDNSQueriesSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home DNS Queries sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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:
@@ -109,10 +115,11 @@ class AdGuardHomeDNSQueriesSensor(AdGuardHomeSensor):
class AdGuardHomeBlockedFilteringSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked by filtering sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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",
@@ -128,10 +135,11 @@ class AdGuardHomeBlockedFilteringSensor(AdGuardHomeSensor):
class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked percentage sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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",
@@ -147,10 +155,11 @@ class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedParentalSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by parental control sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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",
@@ -165,10 +174,11 @@ class AdGuardHomeReplacedParentalSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedSafeBrowsingSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe browsing sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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",
@@ -183,10 +193,11 @@ class AdGuardHomeReplacedSafeBrowsingSensor(AdGuardHomeSensor):
class AdGuardHomeReplacedSafeSearchSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe search sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
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",
@@ -201,10 +212,11 @@ class AdGuardHomeReplacedSafeSearchSensor(AdGuardHomeSensor):
class AdGuardHomeAverageProcessingTimeSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home average processing time sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Average Processing Speed",
"mdi:speedometer",
"average_speed",
@@ -220,10 +232,11 @@ class AdGuardHomeAverageProcessingTimeSensor(AdGuardHomeSensor):
class AdGuardHomeRulesCountSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home rules count sensor."""
def __init__(self, adguard: AdGuardHome) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Rules Count",
"mdi:counter",
"rules_count",
@@ -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%]"
}
}
}
+25 -21
View File
@@ -14,7 +14,7 @@ from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity import Entity
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERION, DOMAIN
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
_LOGGER = logging.getLogger(__name__)
@@ -28,22 +28,22 @@ async def async_setup_entry(
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)
@@ -54,6 +54,7 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
key: str,
@@ -62,7 +63,7 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
"""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:
@@ -104,10 +105,10 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
class AdGuardHomeProtectionSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home protection switch."""
def __init__(self, adguard: AdGuardHome) -> 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:
@@ -126,10 +127,10 @@ class AdGuardHomeProtectionSwitch(AdGuardHomeSwitch):
class AdGuardHomeParentalSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home parental control switch."""
def __init__(self, adguard: AdGuardHome) -> 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:
@@ -148,10 +149,10 @@ class AdGuardHomeParentalSwitch(AdGuardHomeSwitch):
class AdGuardHomeSafeSearchSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard: AdGuardHome) -> 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:
@@ -170,10 +171,10 @@ class AdGuardHomeSafeSearchSwitch(AdGuardHomeSwitch):
class AdGuardHomeSafeBrowsingSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard: AdGuardHome) -> 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:
@@ -192,9 +193,11 @@ class AdGuardHomeSafeBrowsingSwitch(AdGuardHomeSwitch):
class AdGuardHomeFilteringSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home filtering switch."""
def __init__(self, adguard: AdGuardHome) -> 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."""
@@ -212,10 +215,11 @@ class AdGuardHomeFilteringSwitch(AdGuardHomeSwitch):
class AdGuardHomeQueryLogSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home query log switch."""
def __init__(self, adguard: AdGuardHome) -> None:
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard,
entry,
"AdGuard Query Log",
"mdi:shield-check",
"querylog",
@@ -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 via 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": {
@@ -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."
},
@@ -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": {
@@ -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."
},
@@ -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 lisandmooduli abil"
"description": "Kas soovid seadistada Home Assistant-i \u00fchenduse AdGuard Home'iga mida pakub lisandmoodul: {addon} ?",
"title": "AdGuard Home Home Assistanti lisandmooduli abil"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Il servizio \u00e8 gi\u00e0 configurato",
"existing_instance_updated": "Configurazione esistente aggiornata.",
"single_instance_allowed": "Gi\u00e0 configurato. \u00c8 possibile una sola configurazione."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Vuoi configurare Home Assistant per connettersi ad AdGuard Home fornito dal componente aggiuntivo di Hass.io: {addon}?",
"title": "AdGuard Home tramite il componente aggiuntivo di Hass.io"
"description": "Vuoi configurare Home Assistant per connettersi ad AdGuard Home fornito dal componente aggiuntivo: {addon}?",
"title": "AdGuard Home tramite il componente aggiuntivo di Home Assistant"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\uc11c\ube44\uc2a4\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"existing_instance_updated": "\uae30\uc874 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\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."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Hass.io {addon} \uc560\ub4dc\uc628\uc73c\ub85c AdGuard Home\uc5d0 \uc5f0\uacb0\ud558\ub3c4\ub85d Home Assistant\ub97c \uad6c\uc131\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"title": "Hass.io \uc560\ub4dc\uc628\uc758 AdGuard Home"
"description": "{addon} \uc560\ub4dc\uc628\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 AdGuard Home\uc5d0 \uc5f0\uacb0\ud558\ub3c4\ub85d Home Assistant\ub97c \uad6c\uc131\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"title": "Home Assistant \uc560\ub4dc\uc628\uc758 AdGuard Home"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Service is al geconfigureerd",
"existing_instance_updated": "Bestaande configuratie bijgewerkt.",
"single_instance_allowed": "Slechts \u00e9\u00e9n configuratie van AdGuard Home is toegestaan."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Wilt u Home Assistant configureren om verbinding te maken met AdGuard Home van de Supervisor-add-on: {addon}?",
"title": "AdGuard Home via Supervisor add-on"
"description": "Wilt u Home Assistant configureren om verbinding te maken met AdGuard Home van de Home Assistant add-on: {addon}?",
"title": "AdGuard Home via Home Assistant add-on"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Tjenesten er allerede konfigurert",
"existing_instance_updated": "Oppdatert eksisterende konfigurasjon.",
"single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Vil du konfigurere Home Assistant for \u00e5 koble til AdGuard Home levert av Hass.io-tillegget: {addon} ?",
"title": "AdGuard Home via Hass.io-tillegg"
"description": "Vil du konfigurere Home Assistant til \u00e5 koble til AdGuard Home levert av tillegget: {addon} ?",
"title": "AdGuard Home via Home Assistant-tillegg"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Us\u0142uga jest ju\u017c skonfigurowana",
"existing_instance_updated": "Zaktualizowano istniej\u0105c\u0105 konfiguracj\u0119",
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja."
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "Czy chcesz skonfigurowa\u0107 Home Assistanta, aby po\u0142\u0105czy\u0142 si\u0119 z AdGuard Home przez dodatek Hass.io: {addon}?",
"title": "AdGuard Home przez dodatek Hass.io"
"description": "Czy chcesz skonfigurowa\u0107 Home Assistanta, aby po\u0142\u0105czy\u0142 si\u0119 z AdGuard Home przez dodatek {addon}?",
"title": "AdGuard Home przez dodatek Home Assistant"
},
"user": {
"data": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant.",
"existing_instance_updated": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430.",
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e."
},
@@ -9,7 +10,7 @@
},
"step": {
"hassio_confirm": {
"description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a AdGuard Home (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Home Assistant \"{addon}\")?",
"description": "\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a AdGuard Home (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \"{addon}\")?",
"title": "AdGuard Home (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Home Assistant)"
},
"user": {
@@ -1,6 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u670d\u52d9\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210",
"existing_instance_updated": "\u5df2\u66f4\u65b0\u73fe\u6709\u8a2d\u5b9a\u3002",
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002"
},
@@ -9,8 +10,8 @@
},
"step": {
"hassio_confirm": {
"description": "\u662f\u5426\u8981\u8a2d\u5b9a Home Assistant \u4ee5\u4f7f\u7528 Hass.io \u9644\u52a0\u5143\u4ef6\uff1a{addon} \u9023\u7dda\u81f3 AdGuard Home\uff1f",
"title": "\u4f7f\u7528 Hass.io \u9644\u52a0\u5143\u4ef6 AdGuard Home"
"description": "\u662f\u5426\u8981\u8a2d\u5b9a Home Assistant \u4ee5\u9023\u7dda\u81f3 AdGuard Home\u3002\u9644\u52a0\u5143\u4ef6\u70ba\uff1a{addon} \uff1f",
"title": "\u4f7f\u7528 Home Assistant \u9644\u52a0\u5143\u4ef6 AdGuard Home"
},
"user": {
"data": {
+2 -1
View File
@@ -3,5 +3,6 @@
"name": "ADS",
"documentation": "https://www.home-assistant.io/integrations/ads",
"requirements": ["pyads==3.2.2"],
"codeowners": []
"codeowners": [],
"iot_class": "local_push"
}
@@ -1,6 +1,5 @@
"""Advantage Air climate integration."""
import asyncio
from datetime import timedelta
import logging
@@ -58,24 +57,14 @@ async def async_setup_entry(hass, entry):
"async_change": async_change,
}
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, platform)
)
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
return True
async def async_unload_entry(hass, entry):
"""Unload Advantage Air Config."""
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(entry, platform)
for platform in PLATFORMS
]
)
)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
@@ -24,6 +24,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
# Only add motion sensor when motion is enabled
if zone["motionConfig"] >= 2:
entities.append(AdvantageAirZoneMotion(instance, ac_key, zone_key))
# Only add MyZone if it is available
if zone["type"] != 0:
entities.append(AdvantageAirZoneMyZone(instance, ac_key, zone_key))
async_add_entities(entities)
@@ -73,3 +76,27 @@ class AdvantageAirZoneMotion(AdvantageAirEntity, BinarySensorEntity):
def is_on(self):
"""Return if motion is detect."""
return self._zone["motion"]
class AdvantageAirZoneMyZone(AdvantageAirEntity, BinarySensorEntity):
"""Advantage Air Zone MyZone."""
@property
def name(self):
"""Return the name."""
return f'{self._zone["name"]} MyZone'
@property
def unique_id(self):
"""Return a unique id."""
return f'{self.coordinator.data["system"]["rid"]}-{self.ac_key}-{self.zone_key}-myzone'
@property
def is_on(self):
"""Return if this zone is the myZone."""
return self._zone["number"] == self._ac["myZone"]
@property
def entity_registry_enabled_default(self):
"""Return false to disable this entity by default."""
return False
@@ -15,6 +15,7 @@ from homeassistant.components.climate.const import (
SUPPORT_TARGET_TEMPERATURE,
)
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS
from homeassistant.helpers import entity_platform
from .const import (
ADVANTAGE_AIR_STATE_CLOSE,
@@ -49,6 +50,7 @@ AC_HVAC_MODES = [
HVAC_MODE_FAN_ONLY,
HVAC_MODE_DRY,
]
ADVANTAGE_AIR_SERVICE_SET_MYZONE = "set_myzone"
ZONE_HVAC_MODES = [HVAC_MODE_OFF, HVAC_MODE_FAN_ONLY]
PARALLEL_UPDATES = 0
@@ -68,6 +70,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
entities.append(AdvantageAirZone(instance, ac_key, zone_key))
async_add_entities(entities)
platform = entity_platform.current_platform.get()
platform.async_register_entity_service(
ADVANTAGE_AIR_SERVICE_SET_MYZONE,
{},
"set_myzone",
)
class AdvantageAirClimateEntity(AdvantageAirEntity, ClimateEntity):
"""AdvantageAir Climate class."""
@@ -233,3 +242,9 @@ class AdvantageAirZone(AdvantageAirClimateEntity):
await self.async_change(
{self.ac_key: {"zones": {self.zone_key: {"setTemp": temp}}}}
)
async def set_myzone(self, **kwargs):
"""Set this zone as the 'MyZone'."""
await self.async_change(
{self.ac_key: {"info": {"myZone": self._zone["number"]}}}
)
@@ -5,5 +5,6 @@
"documentation": "https://www.home-assistant.io/integrations/advantage_air",
"codeowners": ["@Bre77"],
"requirements": ["advantage_air==0.2.1"],
"quality_scale": "platinum"
"quality_scale": "platinum",
"iot_class": "local_polling"
}
@@ -1,9 +1,18 @@
set_time_to:
name: Set Time To
description: Control timers to turn the system on or off after a set number of minutes
target:
entity:
integration: advantage_air
domain: sensor
fields:
entity_id:
description: Time To sensor entity
example: "sensor.ac_time_to_on"
minutes:
description: Minutes until action
example: "60"
set_myzone:
name: Set MyZone
description: Change which zone is set as the reference for temperature control
target:
entity:
integration: advantage_air
domain: climate
@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
"already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557"
+4 -12
View File
@@ -1,5 +1,4 @@
"""The AEMET OpenData component."""
import asyncio
import logging
from aemet_opendata.interface import AEMET
@@ -32,24 +31,17 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry):
ENTRY_WEATHER_COORDINATOR: weather_coordinator,
}
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry):
"""Unload a config entry."""
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(config_entry, platform)
for platform in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
if unload_ok:
hass.data[DOMAIN].pop(config_entry.entry_id)
+2 -1
View File
@@ -4,5 +4,6 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/aemet",
"requirements": ["AEMET-OpenData==0.1.8"],
"codeowners": ["@noltari"]
"codeowners": ["@noltari"],
"iot_class": "cloud_polling"
}
@@ -0,0 +1,12 @@
{
"config": {
"step": {
"user": {
"data": {
"name": "Nombre de la integraci\u00f3n"
},
"title": "AEMET OpenData"
}
}
}
}
@@ -239,7 +239,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
return None
elaborated = dt_util.parse_datetime(
weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_ELABORATED]
weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_ELABORATED] + "Z"
)
now = dt_util.now()
now_utc = dt_util.utcnow()
@@ -283,7 +283,7 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
temperature_feeling = None
town_id = None
town_name = None
town_timestamp = dt_util.as_utc(elaborated)
town_timestamp = dt_util.as_utc(elaborated).isoformat()
wind_bearing = None
wind_max_speed = None
wind_speed = None
@@ -3,5 +3,6 @@
"name": "AfterShip",
"documentation": "https://www.home-assistant.io/integrations/aftership",
"requirements": ["pyaftership==0.1.2"],
"codeowners": []
"codeowners": [],
"iot_class": "cloud_polling"
}
+2 -13
View File
@@ -1,5 +1,4 @@
"""Support for Agent."""
import asyncio
from agent import AgentError
from agent.a import Agent
@@ -47,24 +46,14 @@ async def async_setup_entry(hass, config_entry):
sw_version=agent_client.version,
)
for forward in FORWARDS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, forward)
)
hass.config_entries.async_setup_platforms(config_entry, FORWARDS)
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, forward)
for forward in FORWARDS
]
)
)
unload_ok = await hass.config_entries.async_unload_platforms(config_entry, FORWARDS)
await hass.data[AGENT_DOMAIN][config_entry.entry_id][CONNECTION].close()
@@ -4,5 +4,6 @@
"documentation": "https://www.home-assistant.io/integrations/agent_dvr/",
"requirements": ["agent-py==0.0.23"],
"config_flow": true,
"codeowners": ["@ispysoftware"]
"codeowners": ["@ispysoftware"],
"iot_class": "local_polling"
}
@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
"already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"error": {
"already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d",
@@ -2,5 +2,6 @@
"domain": "air_quality",
"name": "Air Quality",
"documentation": "https://www.home-assistant.io/integrations/air_quality",
"codeowners": []
"codeowners": [],
"quality_scale": "internal"
}
+40 -28
View File
@@ -1,5 +1,4 @@
"""The Airly integration."""
import asyncio
from datetime import timedelta
import logging
from math import ceil
@@ -12,6 +11,7 @@ import async_timeout
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.util import dt as dt_util
from .const import (
ATTR_API_ADVICE,
@@ -20,7 +20,8 @@ from .const import (
ATTR_API_CAQI_LEVEL,
CONF_USE_NEAREST,
DOMAIN,
MAX_REQUESTS_PER_DAY,
MAX_UPDATE_INTERVAL,
MIN_UPDATE_INTERVAL,
NO_AIRLY_SENSORS,
)
@@ -29,15 +30,30 @@ PLATFORMS = ["air_quality", "sensor"]
_LOGGER = logging.getLogger(__name__)
def set_update_interval(hass, instances):
"""Set update_interval to another configured Airly instances."""
# We check how many Airly configured instances are and calculate interval to not
# exceed allowed numbers of requests.
interval = timedelta(minutes=ceil(24 * 60 / MAX_REQUESTS_PER_DAY) * instances)
def set_update_interval(instances, requests_remaining):
"""
Return data update interval.
if hass.data.get(DOMAIN):
for instance in hass.data[DOMAIN].values():
instance.update_interval = interval
The number of requests is reset at midnight UTC so we calculate the update
interval based on number of minutes until midnight, the number of Airly instances
and the number of remaining requests.
"""
now = dt_util.utcnow()
midnight = dt_util.find_next_time_expression_time(
now, seconds=[0], minutes=[0], hours=[0]
)
minutes_to_midnight = (midnight - now).total_seconds() / 60
interval = timedelta(
minutes=min(
max(
ceil(minutes_to_midnight / requests_remaining * instances),
MIN_UPDATE_INTERVAL,
),
MAX_UPDATE_INTERVAL,
)
)
_LOGGER.debug("Data will be update every %s", interval)
return interval
@@ -56,10 +72,8 @@ async def async_setup_entry(hass, config_entry):
)
websession = async_get_clientsession(hass)
# Change update_interval for other Airly instances
update_interval = set_update_interval(
hass, len(hass.config_entries.async_entries(DOMAIN))
)
update_interval = timedelta(minutes=MIN_UPDATE_INTERVAL)
coordinator = AirlyDataUpdateCoordinator(
hass, websession, api_key, latitude, longitude, update_interval, use_nearest
@@ -69,30 +83,20 @@ async def async_setup_entry(hass, config_entry):
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][config_entry.entry_id] = coordinator
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
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, platform)
for platform in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
if unload_ok:
hass.data[DOMAIN].pop(config_entry.entry_id)
# Change update_interval for other Airly instances
set_update_interval(hass, len(hass.data[DOMAIN]))
return unload_ok
@@ -140,6 +144,14 @@ class AirlyDataUpdateCoordinator(DataUpdateCoordinator):
self.airly.requests_per_day,
)
# Airly API sometimes returns None for requests remaining so we update
# update_interval only if we have valid value.
if self.airly.requests_remaining:
self.update_interval = set_update_interval(
len(self.hass.config_entries.async_entries(DOMAIN)),
self.airly.requests_remaining,
)
values = measurements.current["values"]
index = measurements.current["indexes"][0]
standards = measurements.current["standards"]
+2 -1
View File
@@ -24,5 +24,6 @@ DEFAULT_NAME = "Airly"
DOMAIN = "airly"
LABEL_ADVICE = "advice"
MANUFACTURER = "Airly sp. z o.o."
MAX_REQUESTS_PER_DAY = 100
MAX_UPDATE_INTERVAL = 90
MIN_UPDATE_INTERVAL = 5
NO_AIRLY_SENSORS = "There are no Airly sensors in this area yet."
+2 -1
View File
@@ -5,5 +5,6 @@
"codeowners": ["@bieniu"],
"requirements": ["airly==1.1.0"],
"config_flow": true,
"quality_scale": "platinum"
"quality_scale": "platinum",
"iot_class": "cloud_polling"
}
@@ -18,5 +18,11 @@
"title": "Airly"
}
}
},
"system_health": {
"info": {
"requests_per_day": "Solicitudes permitidas por d\u00eda",
"requests_remaining": "Solicitudes permitidas restantes"
}
}
}
+3 -13
View File
@@ -1,5 +1,4 @@
"""The AirNow integration."""
import asyncio
import datetime
import logging
@@ -60,24 +59,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, platform)
)
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
"""Unload a config entry."""
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(entry, platform)
for platform in PLATFORMS
]
)
)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
@@ -3,10 +3,7 @@
"name": "AirNow",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airnow",
"requirements": [
"pyairnow==1.1.0"
],
"codeowners": [
"@asymworks"
]
"requirements": ["pyairnow==1.1.0"],
"codeowners": ["@asymworks"],
"iot_class": "cloud_polling"
}
@@ -0,0 +1,17 @@
{
"config": {
"error": {
"invalid_location": "No se encontraron resultados para esa ubicaci\u00f3n"
},
"step": {
"user": {
"data": {
"radius": "Radio de la estaci\u00f3n (millas; opcional)"
},
"description": "Configure la integraci\u00f3n de la calidad del aire de AirNow. Para generar la clave de API, vaya a https://docs.airnowapi.org/account/request/",
"title": "AirNow"
}
}
},
"title": "AirNow"
}
@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
"already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557",
+7 -34
View File
@@ -1,5 +1,4 @@
"""The airvisual component."""
import asyncio
from datetime import timedelta
from math import ceil
@@ -11,7 +10,6 @@ from pyairvisual.errors import (
NodeProError,
)
from homeassistant.config_entries import SOURCE_REAUTH
from homeassistant.const import (
ATTR_ATTRIBUTION,
CONF_API_KEY,
@@ -23,6 +21,7 @@ from homeassistant.const import (
CONF_STATE,
)
from homeassistant.core import callback
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers import aiohttp_client, config_validation as cv
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
@@ -206,27 +205,8 @@ async def async_setup_entry(hass, config_entry):
try:
return await api_coro
except (InvalidKeyError, KeyExpiredError):
matching_flows = [
flow
for flow in hass.config_entries.flow.async_progress()
if flow["context"]["source"] == SOURCE_REAUTH
and flow["context"]["unique_id"] == config_entry.unique_id
]
if not matching_flows:
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN,
context={
"source": SOURCE_REAUTH,
"unique_id": config_entry.unique_id,
},
data=config_entry.data,
)
)
return {}
except (InvalidKeyError, KeyExpiredError) as ex:
raise ConfigEntryAuthFailed from ex
except AirVisualError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
@@ -277,10 +257,7 @@ async def async_setup_entry(hass, config_entry):
hass, config_entry.data[CONF_API_KEY]
)
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(config_entry, platform)
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
return True
@@ -329,14 +306,10 @@ async def async_migrate_entry(hass, config_entry):
async def async_unload_entry(hass, config_entry):
"""Unload an AirVisual config entry."""
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(config_entry, platform)
for platform in PLATFORMS
]
)
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
if unload_ok:
hass.data[DOMAIN][DATA_COORDINATOR].pop(config_entry.entry_id)
remove_listener = hass.data[DOMAIN][DATA_LISTENER].pop(config_entry.entry_id)
@@ -3,6 +3,7 @@
"name": "AirVisual",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airvisual",
"requirements": ["pyairvisual==5.0.4"],
"codeowners": ["@bachya"]
"requirements": ["pyairvisual==5.0.8"],
"codeowners": ["@bachya"],
"iot_class": "cloud_polling"
}
@@ -5,7 +5,8 @@
},
"error": {
"general_error": "Se ha producido un error desconocido.",
"invalid_api_key": "Se proporciona una clave de API no v\u00e1lida."
"invalid_api_key": "Se proporciona una clave de API no v\u00e1lida.",
"location_not_found": "Ubicaci\u00f3n no encontrada"
},
"step": {
"geography": {
@@ -17,6 +18,10 @@
"description": "Use la API de AirVisual para monitorear una ubicaci\u00f3n geogr\u00e1fica.",
"title": "Configurar una geograf\u00eda"
},
"geography_by_coords": {
"description": "Utilice la API en la nube de AirVisual para monitorear una latitud / longitud.",
"title": "Configurar una geograf\u00eda"
},
"node_pro": {
"data": {
"ip_address": "Direcci\u00f3n IP/nombre de host de la unidad",
@@ -23,7 +23,8 @@
"geography_by_name": {
"data": {
"city": "Stad",
"country": "Land"
"country": "Land",
"state": "Kanton"
}
},
"node_pro": {
@@ -5,12 +5,6 @@
"invalid_api_key": "Ogiltig API-nyckel"
},
"step": {
"geography": {
"data": {
"latitude": "Latitud",
"longitude": "Longitud"
}
},
"node_pro": {
"data": {
"ip_address": "Enhets IP-adress / v\u00e4rdnamn",
@@ -3,5 +3,6 @@
"name": "Aladdin Connect",
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
"requirements": ["aladdin_connect==0.3"],
"codeowners": []
"codeowners": [],
"iot_class": "cloud_polling"
}
@@ -2,8 +2,9 @@
from __future__ import annotations
import asyncio
from collections.abc import Iterable
import logging
from typing import Any, Iterable
from typing import Any
from homeassistant.const import (
ATTR_ENTITY_ID,
@@ -1,5 +1,4 @@
"""Support for AlarmDecoder devices."""
import asyncio
from datetime import timedelta
import logging
@@ -14,7 +13,7 @@ from homeassistant.const import (
CONF_PROTOCOL,
EVENT_HOMEASSISTANT_STOP,
)
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.core import HomeAssistant
from homeassistant.util import dt as dt_util
from .const import (
@@ -39,7 +38,7 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS = ["alarm_control_panel", "sensor", "binary_sensor"]
async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up AlarmDecoder config flow."""
undo_listener = entry.add_update_listener(_update_listener)
@@ -125,25 +124,16 @@ async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool
await open_connection()
for platform in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, platform)
)
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry):
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
"""Unload a AlarmDecoder entry."""
hass.data[DOMAIN][entry.entry_id][DATA_RESTART] = False
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(entry, platform)
for platform in PLATFORMS
]
)
)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if not unload_ok:
return False
@@ -160,7 +150,7 @@ async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry):
return True
async def _update_listener(hass: HomeAssistantType, entry: ConfigEntry):
async def _update_listener(hass: HomeAssistant, entry: ConfigEntry):
"""Handle options update."""
_LOGGER.debug("AlarmDecoder options updated: %s", entry.as_dict()["options"])
await hass.config_entries.async_reload(entry.entry_id)
@@ -19,9 +19,9 @@ from homeassistant.const import (
STATE_ALARM_DISARMED,
STATE_ALARM_TRIGGERED,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_platform
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.typing import HomeAssistantType
from .const import (
CONF_ALT_NIGHT_MODE,
@@ -41,7 +41,7 @@ ATTR_KEYPRESS = "keypress"
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
hass: HomeAssistant, entry: ConfigEntry, async_add_entities
):
"""Set up for AlarmDecoder alarm panels."""
options = entry.options
@@ -3,7 +3,7 @@ import logging
from homeassistant.components.binary_sensor import BinarySensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.core import HomeAssistant
from .const import (
CONF_RELAY_ADDR,
@@ -34,7 +34,7 @@ ATTR_RF_LOOP1 = "rf_loop1"
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
hass: HomeAssistant, entry: ConfigEntry, async_add_entities
):
"""Set up for AlarmDecoder sensor."""
@@ -4,5 +4,6 @@
"documentation": "https://www.home-assistant.io/integrations/alarmdecoder",
"requirements": ["adext==0.4.1"],
"codeowners": ["@ajschmidt8"],
"config_flow": true
"config_flow": true,
"iot_class": "local_push"
}
@@ -1,13 +1,13 @@
"""Support for AlarmDecoder sensors (Shows Panel Display)."""
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.core import HomeAssistant
from .const import SIGNAL_PANEL_MESSAGE
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
hass: HomeAssistant, entry: ConfigEntry, async_add_entities
):
"""Set up for AlarmDecoder sensor."""
@@ -14,7 +14,8 @@
"user": {
"data": {
"protocol": "Protocolo"
}
},
"title": "Elija el protocolo AlarmDecoder"
}
}
},
@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
"already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"create_entry": {
"default": "\u6210\u529f\u9023\u7dda\u81f3 AlarmDecoder\u3002"
+2 -1
View File
@@ -4,5 +4,6 @@
"documentation": "https://www.home-assistant.io/integrations/alert",
"after_dependencies": ["notify"],
"codeowners": [],
"quality_scale": "internal"
"quality_scale": "internal",
"iot_class": "local_push"
}
@@ -2,8 +2,9 @@
from __future__ import annotations
import asyncio
from collections.abc import Iterable
import logging
from typing import Any, Iterable
from typing import Any
from homeassistant.const import (
ATTR_ENTITY_ID,
+4 -4
View File
@@ -504,12 +504,12 @@ class LightCapabilities(AlexaEntity):
"""Yield the supported interfaces."""
yield AlexaPowerController(self.entity)
supported = self.entity.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
if supported & light.SUPPORT_BRIGHTNESS:
color_modes = self.entity.attributes.get(light.ATTR_SUPPORTED_COLOR_MODES)
if light.brightness_supported(color_modes):
yield AlexaBrightnessController(self.entity)
if supported & light.SUPPORT_COLOR:
if light.color_supported(color_modes):
yield AlexaColorController(self.entity)
if supported & light.SUPPORT_COLOR_TEMP:
if light.color_temp_supported(color_modes):
yield AlexaColorTemperatureController(self.entity)
yield AlexaEndpointHealth(self.hass, self.entity)
+1 -4
View File
@@ -1374,10 +1374,7 @@ async def async_api_seek(hass, config, directive, context):
msg = f"{entity} did not return the current media position."
raise AlexaVideoActionNotPermittedForContentError(msg)
seek_position = int(current_position) + int(position_delta / 1000)
if seek_position < 0:
seek_position = 0
seek_position = max(int(current_position) + int(position_delta / 1000), 0)
media_duration = entity.attributes.get(media_player.ATTR_MEDIA_DURATION)
if media_duration and 0 < int(media_duration) < seek_position:
+2 -2
View File
@@ -17,10 +17,10 @@ def async_describe_events(hass, async_describe_event):
if entity_id:
state = hass.states.get(entity_id)
name = state.name if state else entity_id
message = f"send command {data['request']['namespace']}/{data['request']['name']} for {name}"
message = f"sent command {data['request']['namespace']}/{data['request']['name']} for {name}"
else:
message = (
f"send command {data['request']['namespace']}/{data['request']['name']}"
f"sent command {data['request']['namespace']}/{data['request']['name']}"
)
return {"name": "Amazon Alexa", "message": message, "entity_id": entity_id}
+4 -10
View File
@@ -2,14 +2,8 @@
"domain": "alexa",
"name": "Amazon Alexa",
"documentation": "https://www.home-assistant.io/integrations/alexa",
"dependencies": [
"http"
],
"after_dependencies": [
"camera"
],
"codeowners": [
"@home-assistant/cloud",
"@ochlocracy"
]
"dependencies": ["http"],
"after_dependencies": ["camera"],
"codeowners": ["@home-assistant/cloud", "@ochlocracy"],
"iot_class": "cloud_push"
}
@@ -5,5 +5,6 @@
"documentation": "https://www.home-assistant.io/integrations/almond",
"dependencies": ["http", "conversation"],
"codeowners": ["@gcampax", "@balloob"],
"requirements": ["pyalmond==0.0.2"]
"requirements": ["pyalmond==0.0.2"],
"iot_class": "local_polling"
}

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