Compare commits

..

2079 Commits

Author SHA1 Message Date
Franck Nijhof 1dd701a89a Merge pull request #76245 from home-assistant/rc 2022-08-04 23:22:00 +02:00
Jc2k d266b1ced6 Fix some homekit_controller pylint warnings and (local only) test failures (#76122) 2022-08-04 22:34:39 +02:00
Franck Nijhof 6727dab330 Bumped version to 2022.8.1 2022-08-04 21:51:02 +02:00
Jc2k 42509056bd Enable strict typing for HomeKit Controller config flow module (#76233) 2022-08-04 21:50:48 +02:00
Aaron Bach a370e4f4b0 More explicitly call out special cases with SimpliSafe authorization code (#76232) 2022-08-04 21:50:44 +02:00
Phil Bruckner a17e99f714 Fix Life360 recovery from server errors (#76231) 2022-08-04 21:50:41 +02:00
Franck Nijhof db227a888d Fix spelling of OpenWrt in luci integration manifest (#76219) 2022-08-04 21:50:37 +02:00
mkmer 1808dd3d84 Bump AIOAladdin Connect to 0.1.41 (#76217) 2022-08-04 21:50:34 +02:00
Maciej Bieniek 31fed328ce Bump NextDNS library (#76207) 2022-08-04 21:50:30 +02:00
J. Nick Koston 1a030f118a BLE pairing reliablity fixes for HomeKit Controller (#76199)
- Remove the cached map from memory when unpairing so
  we do not reuse it again if they unpair/repair

- Fixes for accessories that use a config number of
  0

- General reliablity improvements to the pairing process
  under the hood of aiohomekit
2022-08-04 21:50:27 +02:00
Franck Nijhof a4049e93d8 Mark RPI Power binary sensor as diagnostic (#76198) 2022-08-04 21:50:23 +02:00
Rami Mosleh 854ca853dc Fix nullable ip_address in mikrotik (#76197) 2022-08-04 21:50:20 +02:00
On Freund 2710e4b5ec Fix arm away in Risco (#76188) 2022-08-04 21:50:16 +02:00
Aaron Bach 450af52bac Add repair item to remove no-longer-functioning Flu Near You integration (#76177)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-08-04 21:50:13 +02:00
J. Nick Koston 60da54558e Fix race in bluetooth async_process_advertisements (#76176) 2022-08-04 21:50:09 +02:00
J. Nick Koston 11319defae Fix flux_led ignored entries not being respected (#76173) 2022-08-04 21:50:06 +02:00
Diogo Gomes 6340da72a5 Remove icon attribute if device class is set (#76161) 2022-08-04 21:50:02 +02:00
Jan Bouwhuis 5c9d557b10 Allow climate operation mode fan_only as custom mode in Alexa (#76148)
* Add support for FAN_ONLY mode

* Tests for fan_only as custom mode
2022-08-04 21:49:21 +02:00
J. Nick Koston d2955a48b0 Bump bleak to 0.15.1 (#76136) 2022-08-04 21:47:15 +02:00
Martin Hjelmare d2b98fa285 Fix zwave_js addon info (#76044)
* Add add-on store info command

* Use add-on store info command in zwave_js

* Fix init tests

* Update tests

* Fix method for addon store info

* Fix response parsing

* Fix store addon installed response parsing

* Remove addon info log that can contain network keys

* Add supervisor store addon info test

* Default to version None if add-on not installed

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>

Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
2022-08-04 21:47:10 +02:00
Franck Nijhof 8ef3ca2daf Merge pull request #76119 from home-assistant/rc 2022-08-03 14:47:19 +02:00
Franck Nijhof 80a053a4cd Bumped version to 2022.8.0 2022-08-03 11:42:18 +02:00
Robert Svensson 81ee24738b Fix deconz group log warning (#76114) 2022-08-03 11:25:07 +02:00
Heine Furubotten 29f6d7818a Bump azure-servicebus to support py3.10 (#76092)
Bump azure-servicebus
2022-08-03 11:25:03 +02:00
Franck Nijhof bc1e371cae Bumped version to 2022.8.0b7 2022-08-03 08:58:12 +02:00
J. Nick Koston 42a1f6ca20 Bump pySwitchbot to 0.17.3 to fix hang at startup (#76103) 2022-08-03 08:57:18 +02:00
J. Nick Koston d85129c527 Bump aiohomekit to 1.2.3 to fix hang at startup (#76102) 2022-08-03 08:57:15 +02:00
Jc2k ad14b5f3d7 Fix Xiaomi BLE UI string issues (#76099) 2022-08-03 08:57:12 +02:00
J. Nick Koston 51a6899a60 Only stat the .dockerenv file once (#76097) 2022-08-03 08:57:09 +02:00
J. Nick Koston d2dc83c4c7 Handle additional bluetooth start exceptions (#76096) 2022-08-03 08:57:05 +02:00
Franck Nijhof d7a418a219 Guard imports for type hinting in Bluetooth (#75984) 2022-08-03 08:57:01 +02:00
Jc2k a78da6a000 Fix serialization of Xiaomi BLE reauth flow (#76095)
* Use data instead of context to fix serialisation bug

* Test change to async_start_reauth
2022-08-03 08:53:53 +02:00
J. Nick Koston 690f051a87 Bump pyatv to 0.10.3 (#76091) 2022-08-03 08:53:50 +02:00
Jc2k c22cb13bd0 Add optional context parameter to async_start_reauth (#76077) 2022-08-03 08:53:47 +02:00
Eloston 213812f087 Add support for SwitchBot Plug Mini (#76056) 2022-08-03 08:53:43 +02:00
Franck Nijhof 19b0961084 Bumped version to 2022.8.0b6 2022-08-02 19:37:52 +02:00
Zack Barett e073f6b439 Bump Frontend to 20220802.0 (#76087) 2022-08-02 19:36:26 +02:00
David F. Mulcahey c4906414ea Ensure ZHA devices load before validating device triggers (#76084) 2022-08-02 19:36:22 +02:00
Erik Montnemery cc9a130f58 Refresh homeassistant_alerts when hass has started (#76083) 2022-08-02 19:36:19 +02:00
mkmer c90a223cb6 Bump AIOAladdinConnect to 0.1.39 (#76082) 2022-08-02 19:36:16 +02:00
Jc2k 2eddbf2381 Fix typo in new xiaomi_ble string (#76076) 2022-08-02 19:36:13 +02:00
Franck Nijhof 654e26052b Remove Somfy from Overkiz title in manifest (#76073) 2022-08-02 19:36:09 +02:00
Erik Montnemery 676664022d Handle missing attributes in meater objects (#76072) 2022-08-02 19:36:06 +02:00
Franck Nijhof ed57951571 Small title adjustment to the Home Assistant Alerts integration (#76070) 2022-08-02 19:36:03 +02:00
lunmay b9ee81dfc3 Fix capitalization in mitemp_bt strings (#76063)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-08-02 19:35:59 +02:00
Franck Nijhof da00f5ba1e Bumped version to 2022.8.0b5 2022-08-02 09:38:21 +02:00
J. Nick Koston 30cd087f6f Fix govee H5074 data (#76057) 2022-08-02 09:38:03 +02:00
J. Nick Koston 66afd1e696 Bump bluetooth-adapters to 0.1.3 (#76052) 2022-08-02 09:37:59 +02:00
J. Nick Koston 23488f392b Lower bluetooth startup timeout to 9s to avoid warning (#76050) 2022-08-02 09:37:56 +02:00
mkmer 7140a9d025 Bump AIOAladdinConnect to 0.1.37 (#76046) 2022-08-02 09:37:52 +02:00
Erik Montnemery 4f671bccbc Support multiple trigger instances for a single webhook (#76037) 2022-08-02 09:37:48 +02:00
David F. Mulcahey 6b588d41ff Enhance logging for ZHA device trigger validation (#76036)
* Enhance logging for ZHA device trigger validation

* use IntegrationError
2022-08-02 09:37:45 +02:00
krazos b962a6e767 Fix capitalization of Sonos "Status light" entity name (#76035)
Tweak capitalization of "Status light" entity name

Tweak capitalization of "Status light" entity name for consistency with blog post guidance, which states that entity names should start with a capital letter, with the rest of the words lower case
2022-08-02 09:37:41 +02:00
Jc2k a332eb154c Add reauth flow to xiaomi_ble, fixes problem adding LYWSD03MMC (#76028) 2022-08-02 09:37:38 +02:00
Erik Montnemery 75747ce319 Support MWh for gas consumption sensors (#76016) 2022-08-02 09:37:35 +02:00
Allen Porter c6038380d6 Add repair issues for nest app auth removal and yaml deprecation (#75974)
* Add repair issues for nest app auth removal and yaml deprecation

* Apply PR feedback

* Re-apply suggestion that i force pushed over

* Update criticality level
2022-08-02 09:37:32 +02:00
Joakim Plate 990975e908 Convert fjäråskupan to built in bluetooth (#75380)
* Add bluetooth discovery

* Use home assistant standard api

* Fixup manufacture data

* Adjust config flow to use standard features

* Fixup tests

* Mock bluetooth

* Simplify device check

* Fix missing typing

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-08-02 09:37:29 +02:00
rhadamantys 2a58bf06c1 Fix invalid enocean unique_id (#74508)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-08-02 09:37:25 +02:00
Paulus Schoutsen 5ab549653b Bumped version to 2022.8.0b4 2022-07-31 13:29:52 -07:00
Franck Nijhof ffd2813150 Fix Home Connect services not being set up (#75997) 2022-07-31 13:29:45 -07:00
J. Nick Koston ebf91fe46b Bump pySwitchbot to 0.16.0 to fix compat with bleak 0.15 (#75991) 2022-07-31 13:29:45 -07:00
mkmer e330147751 Bump AIOAladdinConnect to 0.1.33 (#75986)
Bump aladdin_connect 0.1.33
2022-07-31 13:29:44 -07:00
mvn23 26a3621bb3 Bump pyotgw to 2.0.2 (#75980) 2022-07-31 13:29:43 -07:00
Franck Nijhof 58265664d1 Improve authentication handling for camera view (#75979) 2022-07-31 13:29:42 -07:00
mvn23 d205fb5064 Handle failed connection attempts in opentherm_gw (#75961) 2022-07-31 13:29:42 -07:00
J. Nick Koston 38ae2f4e9e Bump govee-ble to fix H5179 sensors (#75957)
Changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.12.4...v0.12.5
2022-07-31 13:29:41 -07:00
MasonCrawford d84bc20a58 Small fixes for LG soundbar (#75938) 2022-07-31 13:29:40 -07:00
Heine Furubotten a3276e00b9 Bump enturclient to 0.2.4 (#75928) 2022-07-31 13:29:40 -07:00
J. Nick Koston bdb627539e Fix switchbot failing to setup when last_run_success is not saved (#75887) 2022-07-31 13:29:39 -07:00
Aaron Bach 240890e496 Appropriately mark Guardian entities as unavailable during reboot (#75234) 2022-07-31 13:29:38 -07:00
Paulus Schoutsen e2a9ab1831 Bumped version to 2022.8.0b3 2022-07-29 17:55:32 -07:00
Bob van Mierlo 8f8bccd982 Increase the discovery timeout (#75948) 2022-07-29 17:55:18 -07:00
J. Nick Koston 26c475d3dc Update to bleak 0.15 (#75941) 2022-07-29 17:55:17 -07:00
Paulus Schoutsen 0f0b51bee7 Move some bleak imports to be behind TYPE_CHECKING (#75894) 2022-07-29 17:55:17 -07:00
Matthias Alphart 241ffe07b9 Update xknx to 0.22.1 (#75932) 2022-07-29 17:54:20 -07:00
Jc2k c3c5442467 Fix xiaomi_ble discovery for devices that don't put the fe95 uuid in service_uuids (#75923) 2022-07-29 17:54:19 -07:00
Franck Nijhof d7827d9902 Fix SimplePush repairs issue (#75922) 2022-07-29 17:54:18 -07:00
Jan Stienstra 176d44190e Fix incorrect check for media source (#75880)
* Fix incorrect check for media source

* Update homeassistant/components/jellyfin/media_source.py

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

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-29 17:54:17 -07:00
Franck Nijhof 48b97a1f2d Bumped version to 2022.8.0b2 2022-07-29 13:41:22 +02:00
G Johansson f4defb660b Fix broken Yale lock (#75918)
Yale fix lock
2022-07-29 13:40:50 +02:00
Paulus Schoutsen dfd503cc1a Fix Roon media player being set up before hass.data set up (#75904) 2022-07-29 13:40:46 +02:00
J. Nick Koston 97c6c949e7 Fix incorrect manufacturer_id for govee 5182 model (#75899) 2022-07-29 13:40:43 +02:00
Franck Nijhof c469bdea75 Fix AdGuard Home rules count sensor (#75879) 2022-07-29 13:40:39 +02:00
Jc2k 2b1fbbfae3 Fix Xiaomi BLE not detecting encryption for some devices (#75851) 2022-07-29 13:40:05 +02:00
J. Nick Koston e4e36b51b6 Add startup timeout to bluetooth (#75848)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-29 13:36:42 +02:00
Franck Nijhof 53870dd0bc Bumped version to 2022.8.0b1 2022-07-28 19:09:46 +02:00
Zack Barett 38909855bf Update frontend to 20220728.0 (#75872) 2022-07-28 19:08:01 +02:00
Franck Nijhof f98d95c76f Fix camera token to trigger authentication IP ban (#75870) 2022-07-28 19:07:59 +02:00
Franck Nijhof 2bf10799ed Fix incorrect sensor key in DSMR (#75865) 2022-07-28 19:07:56 +02:00
Franck Nijhof 4be623a492 Remove state class from daily net sensors in DSMR Reader (#75864) 2022-07-28 19:07:54 +02:00
Franck Nijhof a000687eb5 Fix HTTP 404 being logged as a stack trace (#75861) 2022-07-28 19:07:51 +02:00
Franck Nijhof c10ed6edba Fix unit of measurement usage in COSignal (#75856) 2022-07-28 19:07:48 +02:00
Rami Mosleh 2dc318be54 Add issue to repairs for deprecated Simplepush YAML configuration (#75850) 2022-07-28 19:07:46 +02:00
Franck Nijhof b4d2c25f8e Raise YAML removal issue for Xbox (#75843) 2022-07-28 19:07:43 +02:00
Franck Nijhof e7ff97bac0 Fix temperature unit in evohome (#75842) 2022-07-28 19:07:41 +02:00
Rolf Berkenbosch add9ff5736 Fix fetching MeteoAlarm XML data (#75840) 2022-07-28 19:07:39 +02:00
Paulus Schoutsen 937fd490f2 Add issue_domain to repairs (#75839) 2022-07-28 19:07:36 +02:00
Paulus Schoutsen 96587c1227 Remove learn more URL from Home Assistant alerts (#75838) 2022-07-28 19:07:34 +02:00
Brandon West 15e6fcca41 Bump russound_rio to 0.1.8 (#75837) 2022-07-28 19:07:31 +02:00
Zack Barett 7811518d7c Add Leviton as a supported brand of ZwaveJS (#75729)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-28 19:07:29 +02:00
Tom Harris 70731c0bc7 Add Insteon lock and load controller devices (#75632) 2022-07-28 19:07:26 +02:00
Robert Svensson 3b8650d053 Make Axis utilise forward_entry_setups (#75178) 2022-07-28 19:07:23 +02:00
GitHub Action 15f87ca0a1 [ci skip] Translation update 2022-07-28 07:11:22 -07:00
Franck Nijhof 8ffdbfc462 Bumped version to 2022.8.0b0 2022-07-27 15:10:29 +02:00
Franck Nijhof 9dc0544835 Raise YAML removal issue for Bose SoundTouch (#75817) 2022-07-27 14:41:00 +02:00
Tobias Sauerwein 49854b809c Netatmo entity renaming and clean up (#75337) 2022-07-27 14:17:38 +02:00
Franck Nijhof 314778cb50 Raise YAML removal issue for Anthem A/V Receivers (#75816) 2022-07-27 14:17:22 +02:00
David F. Mulcahey 6254142b8a Fix ZHA on with timed off cluster command (#75815) 2022-07-27 14:03:51 +02:00
Bram Kragten 699fff08ed Update frontend to 20220727.0 (#75813) 2022-07-27 13:21:07 +02:00
Franck Nijhof 07a433a516 Deprecate the OpenALPR Local integration (#75810)
* Deprecate the OpenALPR Local integration

* Remove tests
2022-07-27 12:52:13 +02:00
Jc2k f8b115dd9d Add xiaomi_ble voltage, consumable and formaldehyde sensors (#75807)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-27 11:28:58 +01:00
Franck Nijhof aaf5837759 Deprecate the Ambee integration (#75805) 2022-07-27 11:29:52 +02:00
Jevgeni Kiski a4d4170279 Add new vallox temperature and fan sensors (#75783)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-27 10:58:43 +02:00
Erik Montnemery 51c3836ec2 Create Repairs based on Alerts (#75397)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-27 10:13:16 +02:00
jjlawren bbdce93291 Fix error on shutdown when no Sonos devices available (#75798) 2022-07-27 10:01:44 +02:00
rikroe 5687150786 Add state to CheckControlMessages in bmw_connected_drive (#75802)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-07-27 10:01:09 +02:00
uvjustin 5e6217f20c Use executor to finish stream recording (#75776) 2022-07-27 14:13:38 +08:00
Jean-François Roy 89493f2d7f Add occupancy sensor to the BAF integration (#75793)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-26 17:36:41 -10:00
GitHub Action 33c635809c [ci skip] Translation update 2022-07-27 00:28:57 +00:00
TheJulianJES 129b42cd23 Fix ZHA light brightness jumping around during transitions (#74849)
* Moved color commands to a new ``async_handle_color_commands`` method

* Fixed tests

* Fix brightness jumping around during transitions

* Add config option to disable "Enhanced brightness slider during light transition"
2022-07-26 20:03:17 -04:00
starkillerOG 6868865e3e Add 1.5 second sleep to motion blinds update (#75494) 2022-07-27 00:01:49 +02:00
João Henriques fb52f5098f Add en-GB locale for AlexaMotionSensor and AlexaContactSensor (#75705)
Added en-GB as supported locale for AlexaMotionSensor and AlexaContactSensor
2022-07-26 17:36:46 -04:00
uvjustin c5912f0fae Cleanup unused camera constants (#75772)
Cleanup unused camera constants after #75452
2022-07-26 23:04:08 +02:00
Franck Nijhof 0ff34f232c Add events to repairs issue registry changes (#75784) 2022-07-26 22:42:19 +02:00
David F. Mulcahey e2dd2c9424 Add guards to ZHA light groups when using hs color mode (#75599)
* fix polling currentSaturation

* Guard light groups against enhanced current hue

* Use XY if all group members do not support HS

* add config option to always prefer XY color mode

* use correct enum

* remove periods
2022-07-26 16:42:08 -04:00
puddly 2b1a5e5549 Bump ZHA dependencies (#75785) 2022-07-26 16:19:51 -04:00
Bouwe Westerdijk aaaca0b2bd Add tests for the Plugwise Select platform (#75774) 2022-07-26 22:02:50 +02:00
Teemu R 184e254a43 Bump python-eq3bt requirement (#75145) 2022-07-26 21:50:41 +02:00
Franck Nijhof bb4ee1ba32 Adjust wording in raised mitemp_bt issue (#75779) 2022-07-26 21:44:12 +02:00
J. Nick Koston 1e85ddabfd Fix startup race in BLE integrations (#75780) 2022-07-26 09:29:23 -10:00
Franck Nijhof 157f7292d7 Raise YAML removal issue for Lyric (#75756) 2022-07-26 20:02:50 +02:00
Franck Nijhof cb17a01e48 Raise YAML removal issue for nVent RAYCHEM SENZ (#75757) 2022-07-26 20:01:15 +02:00
J. Nick Koston fad7a6cb08 Bump sensorpush-ble to 1.5.1 (#75771) 2022-07-26 19:09:46 +02:00
Franck Nijhof c63a838b47 Raise repair issue for Xiaomi Mijia BLE Temperature and Humidity Sensor (#75754) 2022-07-26 17:42:22 +02:00
Franck Nijhof 3ee0ca8550 Raise repair issue for Mi Flora (#75752) 2022-07-26 17:35:47 +02:00
Franck Nijhof d39afaa264 Merge branch 'master' into dev 2022-07-26 17:25:30 +02:00
Franck Nijhof 35f4220f4e Merge pull request #75758 from home-assistant/rc 2022-07-26 17:22:42 +02:00
J. Nick Koston e6802f4f7e Add support for switchbot contact/door sensor (#75730) 2022-07-26 05:14:02 -10:00
Jevgeni Kiski 7d895c79e8 Bump vallox-websocket-api to 2.12.0 (#75734) 2022-07-26 16:58:22 +02:00
Marc Mueller 516324ff54 Fix small type issue [fritz] (#75761) 2022-07-26 16:30:12 +02:00
Marc Mueller af7df260a0 Fix small type issues [core] (#75760) 2022-07-26 16:28:22 +02:00
uvjustin 9ad273a59f Fix entity typo (#75767) 2022-07-26 16:27:16 +02:00
J. Nick Koston 5cb4bbd906 Fix min and max mireds with HKC (#75744) 2022-07-26 04:17:28 -10:00
Marc Mueller 0006629ca2 Fix small type issue [synology_dsm] (#75762) 2022-07-26 12:26:31 +02:00
Franck Nijhof fc43ee772c Bumped version to 2022.7.7 2022-07-26 10:56:44 +02:00
Aaron Bach d756936a4e Fix AssertionError in RainMachine (#75668) 2022-07-26 10:56:02 +02:00
mvn23 674a59f138 Update pyotgw to 2.0.1 (#75663) 2022-07-26 10:55:57 +02:00
Aaron Bach 9173aef1ef Revert SimpliSafe auth flow to the quasi-manual OAuth method from 2021.11.0 (#75641)
* Revert "Migrate SimpliSafe to new web-based authentication (#57212)"

This reverts commit bf7c99c1f8.

* Tests 100%

* Version bump

* Add manifest version for custom component testing

* Remove manifest version

* Code review

* Fix tests
2022-07-26 10:55:15 +02:00
uvjustin 0407fc4581 Round up for stream record lookback (#75580) 2022-07-26 10:50:36 +02:00
On Freund ec4835ef04 Change monoprice config flow to sync (#75306) 2022-07-26 10:50:33 +02:00
Pawel a3950937e0 Fix Epson wrong volume value (#75264) 2022-07-26 10:50:30 +02:00
Tom Schneider 58b7f9a032 Fix hvv departures authentication (#75146) 2022-07-26 10:50:25 +02:00
Tom Schneider eaee923e4c Fix hvv departures authentication (#75146) 2022-07-26 10:47:03 +02:00
Matthias Alphart a98f658854 Update xknx to 0.22.0 (#75749) 2022-07-26 10:32:26 +02:00
Allen Porter 47713d9686 Raise issue for Google Calendar YAML deprecations (#75743) 2022-07-26 09:52:15 +02:00
Franck Nijhof 5e45b0baf9 Automatically set up Xiaomi BLE during onboarding (#75748) 2022-07-26 08:03:31 +01:00
Pawel b57e0d13b4 Fix Epson wrong volume value (#75264) 2022-07-26 08:50:21 +02:00
On Freund ce4e53938c Change monoprice config flow to sync (#75306) 2022-07-25 21:24:39 -07:00
qiz-li 1f73a553c8 Bump Switchmate dependency to 0.5.1 (#75163)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-25 16:50:04 -10:00
Marc Mueller 2b617e3885 Improve mqtt MessageCallback typing (#75614)
* Improve mqtt MessageCallback typing

* Use MQTTMessage
2022-07-26 03:04:19 +02:00
GitHub Action 9c725bc106 [ci skip] Translation update 2022-07-26 00:26:43 +00:00
starkillerOG 7fd47717cf Bump goodwe to 0.2.18 (#75615) 2022-07-25 14:10:05 -10:00
Franck Nijhof 4ea532b3ea Add issue to repairs for removed Steam YAML configuration (#75737) 2022-07-25 19:11:07 -04:00
Franck Nijhof c7ddc595ed Add issue to repairs for removed Spotify YAML configuration (#75736)
* Add issue to repairs for removed Spotify YAML configuration

* Tweak message
2022-07-25 19:09:59 -04:00
Joakim Sørensen e87c2b9e25 Bump pytraccar to 1.0.0 (#75671) 2022-07-26 00:45:01 +02:00
Brett Adams ea354f3d5f Remove deprecated MyZone service in Advantage Air (#75160) 2022-07-25 23:56:36 +02:00
Zack Barett a287abe763 Update name of Z-WaveJS to Z-Wave (#75136) 2022-07-25 22:53:22 +02:00
Marc Mueller 274584f2a4 Add strict typing for litterrobot (#75540) 2022-07-25 22:52:13 +02:00
uvjustin 3aa75f3fcc Don't use executor for lutron subscription (#75726) 2022-07-25 22:32:00 +02:00
J. Nick Koston 2df20e7a42 Make lifx async_migrate_legacy_entries a callback (#75719) 2022-07-25 20:21:43 +02:00
hahn-th f4e7436421 Add device HmIP-STE2-PCB to homematicip_cloud (#75369) 2022-07-25 18:15:02 +02:00
mkmer e3fb4ceb09 Bump AIOAladdinConnect to 0.1.31 (#75721) 2022-07-25 17:31:05 +02:00
J. Nick Koston a813cf987b Add bluetooth options flow to pick the adapter (#75701) 2022-07-25 16:52:35 +02:00
Franck Nijhof 3df7892454 Merge branch 'master' into dev 2022-07-25 15:51:24 +02:00
TheJulianJES b8ae883f18 Set min transition time for Sengled lights in ZHA groups (#75644)
* Set min transition time for Sengled lights in ZHA groups

* Change test to expect correct min transition time for group with Sengled light

* Fix turn_off with transition 0 for Sengled lights
2022-07-25 08:13:01 -04:00
Franck Nijhof de46243ce5 Raise YAML deprecation issue for Radio Therm (#75513) 2022-07-25 12:31:53 +02:00
Brett Adams fc9a0ba46b Refactor Advantage Air classes for expansion (#75422) 2022-07-25 12:20:15 +02:00
Pedro Lamas f31f2cca07 Use DataUpdateCoordinator in london_underground (#75304)
* Use DataUpdateCoordinator in london_underground

* Update homeassistant/components/london_underground/sensor.py

Co-authored-by: avee87 <6134677+avee87@users.noreply.github.com>

* Follow up on PR comments

* Removes unused callback import

* Update homeassistant/components/london_underground/sensor.py

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

* Update homeassistant/components/london_underground/sensor.py

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

* Adds missing PlatformNotReady import

* Linting fixes

Co-authored-by: avee87 <6134677+avee87@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-25 12:03:56 +02:00
GitHub Action 4a50010458 [ci skip] Translation update 2022-07-25 00:25:55 +00:00
J. Nick Koston 22ca28b93d Ensure bluetooth can be reloaded when hot plugging a bluetooth adapter (#75699) 2022-07-24 19:23:23 -05:00
J. Nick Koston 511af3c455 Update switchbot bluetooth matchers for sensor devices (#75690) 2022-07-24 16:55:52 -05:00
J. Nick Koston bbb9443b00 Fix bluetooth integration matching with service_data_uuids and service_uuids (#75687)
* Fix bluetooth integration with service_data and service_uuids

We would only dispatch a new flow when the address was seen for
the first time or the manufacturer_data appeared in a followup
advertisement. Its also possible for the service_data and
service_uuids to appear in a followup advertisement so we
need to track these as well

* improve logging to avoid overly large messages

* improve logging to avoid overly large messages

* adjust

* adjsut

* split

* coverage

* coverage

* coverage

* coverage

* fix matcher

* more coverage

* more coverage

* more coverage

* revert switchbot changes and move to seperate PR
2022-07-24 16:39:53 -05:00
J. Nick Koston d890598da7 Update PySwitchbot to improve connection reliability (#75692) 2022-07-24 16:38:07 -05:00
Franck Nijhof c9ae409d9a Update sentry-sdk to 1.8.0 (#75691) 2022-07-24 22:38:09 +02:00
Aaron Bach 2d4bd4d7c1 Revert SimpliSafe auth flow to the quasi-manual OAuth method from 2021.11.0 (#75641)
* Revert "Migrate SimpliSafe to new web-based authentication (#57212)"

This reverts commit bf7c99c1f8.

* Tests 100%

* Version bump

* Add manifest version for custom component testing

* Remove manifest version

* Code review

* Fix tests
2022-07-24 22:09:02 +02:00
Marc Mueller c0e6852077 Update pip version range to 22.3 (#75572) 2022-07-24 21:11:30 +02:00
Jc2k e18819c678 Support for encrypted BLE MiBeacon devices (#75677)
* Support for encrypted devices

* Sensor should use bindkey if available

* Error message if encryption fails

* Let mypy know this is always set by now

* Towards supporting encryption in step_user

* Add tests for the 4 new happy paths

* Add test coverage for failure cases

* Add strings

* Bump to 0.5.1. Legacy MiBeacon does not use an authentication token, so harder to detect incorrect key

* Add _title() helper

* Fix test after rebase

* Update homeassistant/components/xiaomi_ble/strings.json

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

* Remove unused lines

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-24 21:00:56 +02:00
starkillerOG f94a79b409 Bump motionblinds to 0.6.11 (#75581) 2022-07-24 20:59:25 +02:00
Glenn Waters 9fae638f65 Migrate ElkM1 to new entity naming style (#75023) 2022-07-24 20:40:42 +02:00
J. Nick Koston 0df08b6b0c Bump aiohomekit to 1.2.0 (#75686) 2022-07-24 20:12:16 +02:00
J. Nick Koston 198167a2c8 Update switchbot to be local push (#75645)
* Update switchbot to be local push

* fixes

* fixes

* fixes

* fixes

* adjust

* cover is not assumed anymore

* cleanups

* adjust

* adjust

* add missing cover

* import compat

* fixes

* uses lower

* uses lower

* bleak users upper case addresses

* fixes

* bump

* keep conf_mac and deprecated options for rollback

* reuse coordinator

* adjust

* move around

* move around

* move around

* move around

* refactor fixes

* compat with DataUpdateCoordinator

* fix available

* Update homeassistant/components/bluetooth/passive_update_processor.py

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

* Update homeassistant/components/bluetooth/passive_update_coordinator.py

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

* Update homeassistant/components/bluetooth/update_coordinator.py

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

* Split bluetooth coordinator into PassiveBluetoothDataUpdateCoordinator and PassiveBluetoothProcessorCoordinator

The PassiveBluetoothDataUpdateCoordinator is now used to replace instances
of DataUpdateCoordinator where the data is coming from bluetooth
advertisements, and the integration may also mix in active updates

The PassiveBluetoothProcessorCoordinator is used for integrations that
want to process each bluetooth advertisement with multiple processors
which can be dispatched to individual platforms or areas or the integration
as it chooes

* change connections

* reduce code churn to reduce review overhead

* reduce code churn to reduce review overhead

* Update homeassistant/components/bluetooth/passive_update_coordinator.py

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

* add basic test

* add basic test

* complete coverage

* Update homeassistant/components/switchbot/coordinator.py

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

* Update homeassistant/components/switchbot/coordinator.py

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

* Update homeassistant/components/switchbot/__init__.py

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

* Update homeassistant/components/switchbot/__init__.py

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

* lint

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-24 11:38:45 -05:00
mvn23 79be87f9ce Update pyotgw to 2.0.1 (#75663) 2022-07-24 10:48:22 +02:00
J. Nick Koston ba71a3c24d Add Govee BLE integration (#75631)
* Add Govee BLE integration

* add missing files

* remove test file not needed yet

* fix

* add bbq sensors

* fixed lib

* bump again to fix the names

* fix discovery of the newer bbq devices

* fix the test to test the right thing

* verify no outstanding flows

* only accept entities that match the platform

* refactor

* refactor

* refactor

* Refactor PassiveBluetoothDataUpdateCoordinator to support multiple platforms

* cover

* Update for new model

* Update for new model

* Update tests/components/govee_ble/test_sensor.py

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

* purge dead code

* backmerge from integration

* Update docstring

* Update docstring

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-24 10:39:23 +02:00
Dave T 7075032bf7 Fix diagnostics export for generic camera (#75665)
Fix url redaction and add tests

Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-07-24 10:21:01 +02:00
J. Nick Koston 82c92b5634 Add Moat (BLE) integration (#75643)
* Add Moat (BLE) integration

* fix pin

* resync

* Update tests/components/moat/test_sensor.py

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

* Update homeassistant/components/moat/sensor.py

* backmerge from integration

* purge dead code

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-24 09:51:14 +02:00
Aaron Bach a499dfb8ff Fix AssertionError in RainMachine (#75668) 2022-07-23 20:06:10 -06:00
J. Nick Koston da131beced Split bluetooth coordinator into two classes (#75675) 2022-07-23 19:33:47 -05:00
GitHub Action 19f82e5201 [ci skip] Translation update 2022-07-24 00:28:19 +00:00
On Freund 7cf2d1759d Upgrade pyrisco to 0.5.0 (#75648)
* Upgrade to pyrisco 0.4.0

* Parametrized error tests in config flow

* Inline error parameters

* Switch to RiscoCloud
2022-07-23 23:44:48 +02:00
J. Nick Koston c5afaa2e6a Refactor PassiveBluetoothDataUpdateCoordinator to support multiple platforms (#75642) 2022-07-23 13:03:01 -05:00
J. Nick Koston 8300d5b89e Add bluetooth connection constant to the device registry (#75666) 2022-07-23 19:59:35 +02:00
J. Nick Koston 240bbfa080 Retry later if bluetooth fails to start (#75647) 2022-07-23 12:00:34 -05:00
Joakim Sørensen 2951a941b6 Import correct scan interval in traccar (#75660) 2022-07-23 18:44:58 +02:00
J. Nick Koston 759add5184 Add state class to HKC sensors (#75662) 2022-07-23 11:14:06 -05:00
Franck Nijhof 8d6247446b Automatically set up Bluetooth during onboarding (#75658) 2022-07-23 10:47:12 -05:00
uvjustin b71e3397fd Add error message for duplicate stream recordings (#75654) 2022-07-23 08:40:45 -07:00
James 5c234a3504 Use CO Device Class Instead of Gas in zwave_js (#75649)
Use CO Device Class Instead of Gas

Switches the carbon monoxide sensor from `Gas` to `CO`
2022-07-23 13:24:34 +02:00
Jelte Zeilstra 5e10716dd8 Do not access hass.data in unifi test (#75348)
* Do not access hass.data in test

* Process review feedback
2022-07-23 12:42:43 +02:00
Jc2k b60a59270c Add support for rest of sensors for HHCCJCY01 (#75646) 2022-07-23 09:40:56 +01:00
J. Nick Koston edaebcd85d Pass in the bleak scanner instance to HKC (#75636) 2022-07-23 02:47:02 -05:00
GitHub Action 8e86124470 [ci skip] Translation update 2022-07-23 00:25:17 +00:00
J. Nick Koston 326e05dcf1 Fix async_get_scanner to return the correct bluetooth scanner (#75637) 2022-07-22 18:12:08 -05:00
Maciej Bieniek cb543a21b3 Address NextDNS late review (#75635)
* Init instance attributes

* Remove condition

* Improve typing in tests

* Suggested change
2022-07-23 00:58:48 +02:00
Jc2k 402e533fef Initial xiaomi_ble integration (#75618)
* Initial xiaomi_ble integration

* black

* Update homeassistant/components/xiaomi_ble/config_flow.py

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Update homeassistant/components/xiaomi_ble/config_flow.py

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Apply suggestions from code review

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Update tests/components/xiaomi_ble/test_config_flow.py

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Update homeassistant/components/xiaomi_ble/sensor.py

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Update tests/components/xiaomi_ble/test_config_flow.py

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>

* Remove debug code

* Need 'proper' MAC when running tests on linux

* Need to use proper MAC so validation passes

* Add tests for already_in_progress and already_configured

* copy test, add session fixture

* fix test

Co-authored-by: Ernst Klamer <e.klamer@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-23 00:55:06 +02:00
J. Nick Koston 6bb51782fa Add missing config flow tests for sensorpush (#75629)
* Add missing config flow tests for sensorpush

* merge correct commits from integration
2022-07-23 00:45:22 +02:00
J. Nick Koston 88b9a51811 Fix inkbird config flow tests to correctly test discovery and user flow (#75638)
* Fix inkbird config flow tests to correctly test discovery and user flow

* Fix inkbird config flow tests to correctly test discovery and user flow
2022-07-23 00:43:13 +02:00
Maciej Bieniek 5b555066ea Add new NextDNS sensors (#74789) 2022-07-23 00:18:22 +02:00
J. Nick Koston 19db6ecf6d Add missing inkbird config flow tests (#75630) 2022-07-22 23:02:15 +02:00
J. Nick Koston 38bccadaa6 Add support for setting up and removing bluetooth in the UI (#75600)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-07-22 13:19:53 -05:00
J. Nick Koston 20b6c4c48e Fix recorder hanging at start (#75627) 2022-07-22 12:37:25 -05:00
Martin Hjelmare c05905ebda Remove callback decorator from coroutine functions (#75626)
* Remove callback decorator from coroutine functions

* Remove some more callback decorators
2022-07-22 19:09:02 +02:00
Diogo F. Andrade Murteira 148f963510 Add Switchbot hygrometers (#75325)
* Switchbot add support for hygrometers

* Update CODEOWNERS

* Improve debug

* Remove redundant mention to temp unit

* Adopt FlowResultType

* Modify SwitchBot data within coordinator

* Increase logging for switchbot sensor

* Revert "Increase logging for switchbot sensor"

This reverts commit d8b377429c.

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-22 11:03:02 -05:00
Marc Mueller e9697872c8 Fix small homekit type error (#75617) 2022-07-22 09:02:10 -05:00
Erik Montnemery fd6ffef52f Support non-live database migration (#72433)
* Support non-live database migration

* Tweak startup order, add test

* Address review comments

* Fix typo

* Clarify comment about promoting dependencies

* Tweak

* Fix merge mistake

* Fix some tests

* Fix additional test

* Fix additional test

* Adjust tests

* Improve test coverage
2022-07-22 15:11:34 +02:00
Erik Montnemery 9d0a252ca7 Improve handling of MQTT config entry data (#72691)
* Improve handling of MQTT config entry data

* Add test

* Add warning

* Adjust tests
2022-07-22 13:36:43 +02:00
Erik Montnemery 606d544157 Use recorder get_instance function to improve typing (#75567) 2022-07-22 11:58:26 +02:00
G Johansson 06c8eb0304 Migrate SMHI to new entity naming style (#75213) 2022-07-22 11:57:36 +02:00
Aaron Bach 630c28d253 Fix incorrect battery unit on paired Guardian sensors (#75402) 2022-07-22 11:24:07 +02:00
Erik Montnemery f0eea62c1e Address some MQTT review comments (#75482) 2022-07-22 11:12:00 +02:00
Thijs W dddd4e24e2 Bump afsapi to 0.2.7 (#75579) 2022-07-22 11:11:31 +02:00
uvjustin a612d7a0f3 Round up for stream record lookback (#75580) 2022-07-22 11:46:00 +08:00
J. Nick Koston 06115bcbff Add inkbird (BLE) integration (#75594) 2022-07-21 22:17:09 -05:00
Aaron Bach b0261dd2eb Modify Guardian to store a single dataclass in hass.data (#75454)
* Modify Guardian to store a single dataclass in `hass.data`

* Clarity is better

* Allow entry unload to cancel task
2022-07-21 20:32:42 -06:00
J. Nick Koston 67e16d77e8 Add SensorPush BLE integration (#75531) 2022-07-21 20:31:23 -05:00
GitHub Action 36138afb93 [ci skip] Translation update 2022-07-22 00:29:27 +00:00
J. Nick Koston 90ca3fe350 Improve availability tracking and coordinator setup in bluetooth (#75582) 2022-07-21 19:16:45 -05:00
TheJulianJES 975378ba44 Add ZHA config option for "enhanced light transition from an off-state" (#75151)
* Add ZHA config option for "enhanced light transition from an off-state"

* Default option to disabled

* Always disable "enhanced light transition" for ZHA LightGroups

* Rename _enhanced_light_transition to _zha_config_enhanced_light_transition

* Remove LightGroup check, as config option always disables for groups

* Remove duplicated line

* Remove duplicated line

* Move ZHA config transition line below other config line

* Renamed comments of renamed variable in tests
color_provided_while_off -> new_color_provided_while_off

* Enable "enhanced light transitions" for testing
2022-07-21 19:46:16 -04:00
David F. Mulcahey 04c6b9c519 ZHA light entity cleanup (#75573)
* use base class attributes

* initial hue and saturation support

* spec is 65536 not 65535

* fixes

* enhanced current hue

* fix comparison

* clean up

* fix channel test

* oops

* report enhanced current hue
2022-07-21 17:54:50 -04:00
J. Nick Koston 6cb1794720 Bump aiohomekit to 1.1.9 (#75591) 2022-07-21 15:58:45 -05:00
Maciej Bieniek 05b463b282 Migrate AccuWeather to new entity naming style (#75127)
* Use new entity naming style

* Move AccuWeatherSensorDescription and SENSOR consts to sensor platform

* Remove duplicate code

* Suggested change

* Format url
2022-07-21 18:38:59 +02:00
J. Nick Koston f3c4bf571b Raise on bad update data instead of log in PassiveBluetoothDataUpdateCoordinator (#75536) 2022-07-21 09:44:53 -05:00
Franck Nijhof 8523c66bb5 Deprecate U.S. Citizenship and Immigration Services (USCIS) integration (#75562) 2022-07-21 13:56:55 +02:00
Marc Mueller b1ed1543c8 Improve http decorator typing (#75541) 2022-07-21 13:07:42 +02:00
Thibault Cohen 1d7d2875e1 Add websocket command recorder/import_statistics (#73937)
* Expose ws_add_external_statistics in websocket API

* Refactor

* Add tests

* Improve test coverage

Co-authored-by: Thibault Cohen <titilambert@users.noreply.github.com>
Co-authored-by: Erik <erik@montnemery.com>
2022-07-21 12:36:49 +02:00
Bram Kragten 41f6383957 Update icons for breaking changes in MDI 7.0.96 (#75560) 2022-07-21 12:24:29 +02:00
Franck Nijhof baeb55e313 Add sync methods for create/deleting issues in repairs (#75557) 2022-07-21 11:11:51 +02:00
Erik Montnemery c861259749 Hide inactive repairs issues (#75556) 2022-07-21 10:56:53 +02:00
Brandon Rothweiler 46551a50ef Bump pymazda to 0.3.7 (#75546) 2022-07-21 09:04:04 +02:00
GitHub Action 87797c8b66 [ci skip] Translation update 2022-07-21 00:26:18 +00:00
Marc Mueller ca1f0909fb Fix spelling in recorder integration (#75539) 2022-07-20 19:13:10 -05:00
Marc Mueller ac858cc2b5 Improve singleton helper typing (#75461)
* Improve singleton helper typing

* Fix type errors
2022-07-21 00:19:02 +02:00
J. Nick Koston 6da25c733e Add coordinator and entity for passive bluetooth devices (#75468)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-20 15:54:37 -05:00
Franck Nijhof cd0656bab0 Merge pull request #75528 from home-assistant/rc 2022-07-20 22:52:11 +02:00
Maciej Bieniek 01c105b89c Use DeviceInfo.hw_version in DenonAVR integration (#75300) 2022-07-20 22:34:49 +02:00
Franck Nijhof 7402dc824e Bumped version to 2022.7.6 2022-07-20 21:49:42 +02:00
Shay Levy 67fc1ac40a Bump aioshelly to 2.0.1 (#75523) 2022-07-20 21:49:18 +02:00
Aaron Bach e692d2e284 Fix incorrect Ambient PWS lightning strike sensor state classes (#75520) 2022-07-20 21:49:15 +02:00
J. Nick Koston 4ac7d68552 Fix failure to raise on bad YAML syntax from include files (#75510)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-20 21:49:11 +02:00
Klaas Schoute e53a072e8a Fix - Forcast.solar issue on saving settings in options flow without api key (#75504) 2022-07-20 21:49:08 +02:00
starkillerOG 787f55e513 Fix Netgear update entity (#75496) 2022-07-20 21:49:04 +02:00
Pascal Winters 0a11a623a5 Bump pySwitchbot to 0.14.1 (#75487) 2022-07-20 21:49:01 +02:00
Raman Gupta 55ef33af26 Bump pytomorrowio to 0.3.4 (#75478) 2022-07-20 21:48:57 +02:00
mkmer 5c2ef50fca Bump AIOAladdinConnect to 0.1.27 (#75400) 2022-07-20 21:48:06 +02:00
J. Nick Koston 630f731020 Fix HKC device triggers (#75371) 2022-07-20 21:42:42 +02:00
Aaron Bach 219d1a8a1e Handle (and better log) more AirVisual cloud API errors (#75332) 2022-07-20 21:42:38 +02:00
uvjustin 75641b6cd4 Apply filter to libav.hls logging namespace (#75330) 2022-07-20 21:42:35 +02:00
J. Nick Koston 340da786af Use default encoder when saving storage (#75319) 2022-07-20 21:42:32 +02:00
J. Nick Koston 7f43064f36 Use the orjson equivalent default encoder when save_json is passed the default encoder (#74377) 2022-07-20 21:42:26 +02:00
Nick Whyte 97b6912856 Upgrade ness_alarm dependencies (#75298)
* Upgrade ness alarm dependencies to fix #74571

* Update requirements
2022-07-20 21:35:26 +02:00
Aaron Bach 8b270cb487 Bump simplisafe-python to 2022.07.0 (#75294) 2022-07-20 21:35:23 +02:00
rikroe 8232a780eb Bump bimmer_connected to 0.10.1 (#75287)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-07-20 21:35:19 +02:00
Khole 34c30f5ab9 Add fixes for hive light (#75286) 2022-07-20 21:35:15 +02:00
mvn23 75aea68b75 Update pyotgw to 2.0.0 (#75285)
* Update pyotgw to 2.0.0

* Include updated tests
2022-07-20 21:35:11 +02:00
Christopher Bailey 3a2beb2212 Improve UniFi Protect unauth handling (#75269) 2022-07-20 21:35:07 +02:00
clayton craft bccdb29edc Bump venstarcolortouch to 0.18 (#75237)
venstarcolortouch: bump to 0.18
2022-07-20 21:35:03 +02:00
rikroe 8b4cf288e3 Force _attr_native_value to metric in bmw_connected_drive (#75225)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-07-20 21:35:00 +02:00
apaperclip 1b61d72eaf Fix aruba ssh host key algorithm (#75224) 2022-07-20 21:34:56 +02:00
David F. Mulcahey fdaaed6523 Fix ZHA light turn on issues (#75220)
* rename variable

* default transition is for color commands not level

* no extra command for groups

* don't transition color change when light off -> on

* clean up

* update condition

* fix condition again...

* simplify

* simplify

* missed one

* rename

* simplify

* rename

* tests

* color_provided_while_off with no changes

* fix missing flag clear

* more tests for transition scenarios

* add to comment

* fix comment

* don't transition when force on is set

* stale comment

* dont transition when colors don't change

* remove extra line

* remove debug print :)

* fix colors

* restore color to 65535 until investigated
2022-07-20 21:34:51 +02:00
Ville Skyttä b749622c01 Migrate Huawei LTE to new entity naming style (#75303) 2022-07-20 22:28:53 +03:00
Shay Levy 079460d2dd Bump aioshelly to 2.0.1 (#75523) 2022-07-20 21:11:05 +02:00
Aaron Bach a91ca46342 Fix incorrect Ambient PWS lightning strike sensor state classes (#75520) 2022-07-20 19:29:23 +02:00
Klaas Schoute 7ba3227d52 Fix - Forcast.solar issue on saving settings in options flow without api key (#75504) 2022-07-20 19:27:11 +02:00
J. Nick Koston 48e82ff62f Fix failure to raise on bad YAML syntax from include files (#75510)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-20 19:25:17 +02:00
Franck Nijhof 4395b967f2 Remove Google Play Music Desktop Player (GPMDP) integration (#75508) 2022-07-20 20:15:55 +03:00
Franck Nijhof 518001f00b Remove SoChain integration (#75505) 2022-07-20 19:58:48 +03:00
Franck Nijhof 87cfe21567 Remove XBee integration (#75502) 2022-07-20 19:55:33 +03:00
Franck Nijhof 877a4030aa Add repairs as frontend dependency (#75501) 2022-07-20 16:29:07 +02:00
starkillerOG 8ad2bed363 Fix Netgear update entity (#75496) 2022-07-20 15:51:54 +02:00
Erik Montnemery fb4aff25a2 Create issues in demo integration (#75081)
* Create issues in demo integration

* Add unfixable non-expiring issue

* Update test

* Adjust tests

* update translations

* add hassfest translation schema

* Update homeassistant/components/demo/translations/en.json

Co-authored-by: Zack Barett <zackbarett@hey.com>

* Rename Resolution Center -> Repairs

* Update homeassistant/components/demo/strings.json

Co-authored-by: Zack Barett <zackbarett@hey.com>

* Adjust hassfest to require description or fix_flow

* Update homeassistant/components/demo/repairs.py

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

* Update tests/components/demo/test_init.py

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

* Add missing translation strings

* black

* Adjust repairs imports

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Zack Barett <zackbarett@hey.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-20 14:46:06 +02:00
Franck Nijhof 3920844dca Adjust repairs re-exports (#75492) 2022-07-20 14:00:35 +02:00
Franck Nijhof cd3e99564f Add repairs integration to core files (#75489) 2022-07-20 13:02:13 +02:00
Pascal Winters 95e07508e5 Bump pySwitchbot to 0.14.1 (#75487) 2022-07-20 12:57:00 +02:00
Zach Berger 712492b066 Update awair SensorDeviceClass to specify icon (#75385) 2022-07-20 12:08:34 +02:00
Franck Nijhof 39dc9aa179 Rename Resolution Center -> Repairs (#75486) 2022-07-20 12:06:52 +02:00
Marc Mueller a3b2b5c328 Add zha typing [classmethods] (#75472) 2022-07-20 12:03:30 +02:00
Jan Bouwhuis 5ef92e5e95 Fix MQTT race awaiting an ACK when disconnecting (#75117)
Co-authored-by: Erik <erik@montnemery.com>
2022-07-20 11:58:54 +02:00
Franck Nijhof 11e7ddaa71 Plugwise prefer use of Adam instead of Anna (#75161)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-20 11:58:17 +02:00
Franck Nijhof 460837e453 Allow account linking to phase out services (#75447) 2022-07-20 11:43:46 +02:00
Franck Nijhof fe97f6791d Map % RH unit in Tuya sensors (#75483) 2022-07-20 11:40:34 +02:00
Franck Nijhof 2db8b154c9 Update orjson to 3.7.8 (#75484) 2022-07-20 11:39:07 +02:00
Franck Nijhof 93425b0e4d Migrate Plugwise to new entity naming style (#75109) 2022-07-20 11:38:00 +02:00
Franck Nijhof 05d2b955ee Migrate CPUSpeed to new entity naming style (#75080) 2022-07-20 11:31:17 +02:00
Franck Nijhof b62ebbe974 Migrate DSMR to new entity naming style (#75077) 2022-07-20 11:30:08 +02:00
Franck Nijhof 0e59e8b925 Migrate Moon to new entity naming style (#75085) 2022-07-20 11:24:15 +02:00
Aaron Bach 3d31e62683 Modify Ridwell to store a single dataclass in hass.data (#75457) 2022-07-20 11:18:26 +02:00
Aaron Bach 2b752355d6 Modify Tile to store a single dataclass in hass.data (#75459) 2022-07-20 11:15:30 +02:00
Raman Gupta 8c7e329754 Bump pytomorrowio to 0.3.4 (#75478) 2022-07-20 09:15:36 +02:00
uvjustin d989e4373d Remove websocket_api send_big_result (#75452) 2022-07-19 21:08:11 -07:00
Marc Mueller 51ed9ee59d Fix bluetooth service_info typing (#75477)
* Fix bluetooth service_info typing

* Remove additional type ignores

* Remove pylint disable
2022-07-20 05:46:18 +02:00
Marc Mueller 8a48d54951 Improve entity_platform helper typing (#75464)
* Improve entity_platform helper typing

* Add protocol class

* Apply suggestions from code review

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-20 05:45:57 +02:00
J. Nick Koston 0f81d1d14a Drop RSSI update workaround from bluetooth on linux (#75467)
It turns out we do not need these are we can check the discovered
device list to see if bluez is still seeing the device
2022-07-20 04:14:31 +02:00
Marc Mueller 1626c53c13 Improve dispatcher helper typing (#75455)
* Improve dispatcher helper typing

* Code review
2022-07-20 04:11:46 +02:00
Marc Mueller 1a1eeb2274 Allow for subclass typing with StatisticsBase (#75476) 2022-07-20 04:02:03 +02:00
Marc Mueller 3193ea3359 Fix type narrowing in energy integration (#75462) 2022-07-20 04:00:14 +02:00
mkmer 07b4d48e7c Disable Aladdin Connect battery_level by default (#75441)
* Disable battery_level by default

* Removed async_setup_compnent, renamed constant.
2022-07-20 03:23:14 +02:00
Marc Mueller d09fff595c Rename existing TypeVars referencing Self type (#75473) 2022-07-20 03:03:22 +02:00
Marc Mueller b04c3e9adc Improve deprecation helper typing (#75453) 2022-07-20 02:54:46 +02:00
Marc Mueller 672883e19d Remove old type casting in esphome (#75475) 2022-07-20 02:50:37 +02:00
GitHub Action c29bd48373 [ci skip] Translation update 2022-07-20 00:22:51 +00:00
Marc Mueller 503e88642e Update pyupgrade to 2.37.2 (#75456) 2022-07-19 21:06:18 +02:00
Teemu R e4f6f738e8 Bump python-miio to 0.5.12 (#75415)
* Bump python-miio to 0.5.12

* Fix imports
2022-07-19 18:56:41 +02:00
Marc Mueller e02a24529f Update mypy to 0.971 (#75450) 2022-07-19 18:53:19 +02:00
J. Nick Koston 32311f240b Avoid converting discovery_info dataclasses to dict that will be thrown away in config flows (#75451)
* Avoid converting BluetoothServiceInfo to a dict for default discovery

Fixes
```
2022-07-19 09:46:48.303 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/Users/bdraco/home-assistant/homeassistant/helpers/discovery_flow.py", line 74, in _async_process_pending_flows
    await gather_with_concurrency(
  File "/Users/bdraco/home-assistant/homeassistant/util/async_.py", line 201, in gather_with_concurrency
    return await gather(
  File "/Users/bdraco/home-assistant/homeassistant/util/async_.py", line 199, in sem_task
    return await task
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 222, in async_init
    flow, result = await task
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 249, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data, init_done)
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 359, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/Users/bdraco/home-assistant/homeassistant/config_entries.py", line 1484, in async_step_bluetooth
    return await self.async_step_discovery(dataclasses.asdict(discovery_info))
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1239, in asdict
    return _asdict_inner(obj, dict_factory)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1246, in _asdict_inner
    value = _asdict_inner(getattr(obj, f.name), dict_factory)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1280, in _asdict_inner
    return copy.deepcopy(obj)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 271, in _reconstruct
    state = deepcopy(state, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 146, in deepcopy
    y = copier(x, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 161, in deepcopy
    rv = reductor(4)
TypeError: Cannot pickle Objective-C objects
```

* Avoid converting BluetoothServiceInfo to a dict for default discovery

Fixes
```
2022-07-19 09:46:48.303 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/Users/bdraco/home-assistant/homeassistant/helpers/discovery_flow.py", line 74, in _async_process_pending_flows
    await gather_with_concurrency(
  File "/Users/bdraco/home-assistant/homeassistant/util/async_.py", line 201, in gather_with_concurrency
    return await gather(
  File "/Users/bdraco/home-assistant/homeassistant/util/async_.py", line 199, in sem_task
    return await task
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 222, in async_init
    flow, result = await task
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 249, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data, init_done)
  File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 359, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/Users/bdraco/home-assistant/homeassistant/config_entries.py", line 1484, in async_step_bluetooth
    return await self.async_step_discovery(dataclasses.asdict(discovery_info))
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1239, in asdict
    return _asdict_inner(obj, dict_factory)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1246, in _asdict_inner
    value = _asdict_inner(getattr(obj, f.name), dict_factory)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/dataclasses.py", line 1280, in _asdict_inner
    return copy.deepcopy(obj)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 172, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 271, in _reconstruct
    state = deepcopy(state, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 146, in deepcopy
    y = copier(x, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/opt/homebrew/Cellar/python@3.10/3.10.5/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 161, in deepcopy
    rv = reductor(4)
TypeError: Cannot pickle Objective-C objects
```
2022-07-19 18:50:30 +02:00
Marc Mueller 5ae5ae5392 Improve debouncer typing (#75436) 2022-07-19 18:35:04 +02:00
Marc Mueller 4b036cbad9 Add typing to pilight Throttle decorator (#75443) 2022-07-19 18:33:53 +02:00
uvjustin 6b60fb9541 Don't use executor in send_big_result (#75427) 2022-07-19 08:40:23 -05:00
Marc Mueller b6d235c0c2 Improve tradfri decorator typing (#75439) 2022-07-19 15:21:17 +02:00
Matrix 25b874a609 Fix yolink leak sensor battery expose (#75423) 2022-07-19 14:05:28 +02:00
Erik Montnemery 403bbda959 Rename resolution_center dismiss to ignore (#75432) 2022-07-19 13:58:39 +02:00
Erik Montnemery c3d536b255 Store creation timestamps for resolution center issues (#75430) 2022-07-19 13:01:39 +02:00
Franck Nijhof 8e8c6e2394 Remove unused ignore file (#75416) 2022-07-18 21:15:22 -07:00
Franck Nijhof 24b3b5fc46 Remove deprecated Senz YAML configuration (#75419) 2022-07-18 21:14:55 -07:00
Franck Nijhof e65018fb85 Clean up deprecated connection class remainders (#75421) 2022-07-18 21:14:41 -07:00
Franck Nijhof d05160a402 Remove deprecated Lyric YAML configuration (#75418) 2022-07-18 21:13:53 -07:00
R0nd a9e9d7b112 Pass context to shopping list events (#75377) 2022-07-18 21:13:12 -07:00
GitHub Action ebabaeb364 [ci skip] Translation update 2022-07-19 00:29:06 +00:00
J. Nick Koston b37f15b1d5 Update bluetooth_le_tracker to use Bleak (#75013)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-18 19:16:24 -05:00
J. Nick Koston 41e4b38c3a Add device and advertisement to BluetoothServiceInfoBleak (#75381) 2022-07-18 17:58:08 -05:00
J. Nick Koston 1354952977 Migrate LIFX to config entry per device (#74316) 2022-07-18 17:56:34 -05:00
mkmer 983bcfa935 Bump AIOAladdinConnect to 0.1.27 (#75400) 2022-07-18 23:41:06 +02:00
Franck Nijhof e75d7dfb75 Update google-cloud-texttospeech to 2.12.0 (#75401) 2022-07-18 23:34:53 +02:00
Robert Hillis 9f33a0d6dd Migrate Tautulli to new entity naming style (#75382) 2022-07-18 23:22:38 +02:00
stegm 45d1f8bc55 Address late review of kostal plenticore (#75297)
* Changtes from review #64927

* Fix unit tests for number.

* Changes from review.
2022-07-18 23:08:18 +02:00
Brett Adams 5928a7d494 Correct devices in Advantage Air (#75395) 2022-07-18 23:02:58 +02:00
J. Nick Koston 8b912d1d91 Significantly improve BLE reliablity with linux/dbus for HKC (#75410) 2022-07-18 15:28:14 -05:00
Franck Nijhof 7adb0f0ef5 Custom component -> Custom integration (#75404) 2022-07-18 22:10:22 +02:00
Robert Svensson 3144d179e0 Make UniFi utilise forward_entry_setups (#74835) 2022-07-18 10:39:38 -05:00
Aaron Bach b3ef6f4d04 Simplify Guardian entity inheritance hierarchy (#75274) 2022-07-18 09:18:07 -06:00
David F. Mulcahey 6f5e4ca503 Fix ZHA light turn on issues (#75220)
* rename variable

* default transition is for color commands not level

* no extra command for groups

* don't transition color change when light off -> on

* clean up

* update condition

* fix condition again...

* simplify

* simplify

* missed one

* rename

* simplify

* rename

* tests

* color_provided_while_off with no changes

* fix missing flag clear

* more tests for transition scenarios

* add to comment

* fix comment

* don't transition when force on is set

* stale comment

* dont transition when colors don't change

* remove extra line

* remove debug print :)

* fix colors

* restore color to 65535 until investigated
2022-07-18 10:20:49 -04:00
Franck Nijhof 9d0c91d648 Migrate Sensor.Community to new entity naming style (#75014) 2022-07-18 15:13:46 +02:00
Franck Nijhof bfe34adf6e Update Home Assistant base image to 2022.07.0 (#75396) 2022-07-18 15:09:43 +02:00
Nick Whyte 11f80762ea Upgrade ness_alarm dependencies (#75298)
* Upgrade ness alarm dependencies to fix #74571

* Update requirements
2022-07-18 12:17:25 +02:00
Robert Hillis 6fdb414b58 Migrate Goalzero to new entity naming style (#75358) 2022-07-18 12:12:13 +02:00
Allen Porter ca5065a627 Improve google calendar config flow timeout error messages (#75364) 2022-07-18 11:44:51 +02:00
Matrix 943e0b9cf7 Yolink feature garage door (#75120) 2022-07-18 11:40:18 +02:00
J. Nick Koston e522b6e3b8 Bump aiohomekit to 1.1.7 (#75384)
BLEDevice is now passed around instead of the address
internally to avoid bleak creating a new scanner each
time a client needs to resolve the address to os details
2022-07-18 07:36:01 +01:00
GitHub Action 4d5673013b [ci skip] Translation update 2022-07-18 00:24:34 +00:00
J. Nick Koston a8bb00f305 Fix availability in HKC for sleeping bluetooth devices (#75357) 2022-07-17 17:45:04 -05:00
J. Nick Koston 91f2550bc3 Change manufacturer_data_first_byte to manufacturer_data_start (#75379) 2022-07-17 17:25:45 -05:00
J. Nick Koston a95c2c7850 Avoid throwing on unsupported bleak client filter (#75378)
* Avoid throwing on unsupported bleak client filter

* Avoid throwing on unsupported bleak client filter
2022-07-17 16:13:12 -05:00
Allen Porter 939c33b1dc Exclude calendar description from recorder (#75375) 2022-07-17 13:31:14 -07:00
J. Nick Koston 5beddb13c0 Fix HKC device triggers (#75371) 2022-07-17 12:56:07 -05:00
Franck Nijhof 98dae902a1 Migrate PVOutput to new entity naming style (#75016) 2022-07-17 16:45:38 +01:00
Robert Hillis 27e3ff9c69 Migrate Skybell to new entity naming style (#75341) 2022-07-17 17:16:14 +02:00
Robert Hillis 460f522d6d Migrate Deluge to new entity naming style (#75359) 2022-07-17 16:59:13 +02:00
J. Nick Koston 8d63f81821 Add bluetooth discovery to HomeKit Controller (#75333)
Co-authored-by: Jc2k <john.carr@unrouted.co.uk>
2022-07-17 08:19:05 -05:00
Maciej Bieniek 503b31fb15 Migrate Xiaomi Miio to new entity naming style - part 1 (#75350) 2022-07-17 15:15:24 +02:00
Maciej Bieniek cd223d91bb Migrate Tractive to new entity naming style (#75184) 2022-07-17 15:01:26 +02:00
hahn-th d8f3044ffa Bump homematicip 1.0.5 (#75334) 2022-07-17 14:30:43 +02:00
J. Nick Koston 9a27f1437d Use default encoder when saving storage (#75319) 2022-07-17 14:25:19 +02:00
Brett Adams 2eebda63fd Correct docstrings in Advantage Air (#75344) 2022-07-17 14:00:01 +02:00
J. Nick Koston ba8a530d19 Use shared bluetooth models for BluetoothServiceInfo (#75322) 2022-07-16 21:14:23 -07:00
GitHub Action 79a0940932 [ci skip] Translation update 2022-07-17 00:25:56 +00:00
Christopher Bailey 59c99e0d60 Improve UniFi Protect unauth handling (#75269) 2022-07-16 17:28:17 -05:00
uvjustin 2f92c47fe3 Apply filter to libav.hls logging namespace (#75330) 2022-07-16 14:07:47 -07:00
mvn23 4ceda65889 Update pyotgw to 2.0.0 (#75285)
* Update pyotgw to 2.0.0

* Include updated tests
2022-07-16 22:26:22 +02:00
Aaron Bach 08d6487997 Handle (and better log) more AirVisual cloud API errors (#75332) 2022-07-16 14:04:44 -06:00
Franck Nijhof cb12f77e33 Update sentry-sdk to 1.7.2 (#75331) 2022-07-16 22:00:58 +02:00
Robert Svensson ae4b1967a3 Use pydeconz interface controls for lights (#75261) 2022-07-16 20:56:48 +02:00
Jelte Zeilstra 514e826fed Add install UniFi device update feature (#75302)
* Add install UniFi device update feature

* Add tests for install UniFi device update feature

* Fix type error

* Process review feedback

* Process review feedback
2022-07-16 20:39:11 +02:00
J. Nick Koston b9c8d65940 Restore accessory state into pairing using new HKC methods (#75276) 2022-07-16 12:49:15 -05:00
J. Nick Koston ecc219fbc1 Include the source in the bluetooth service info (#75112) 2022-07-16 11:02:08 -05:00
Maciej Bieniek 859189421b Migrate BraviaTV to new entity naming style (#75253) 2022-07-16 17:43:47 +02:00
G Johansson 20d70337d5 Migrate Trafikverket Weatherstation to new entity naming style (#75211) 2022-07-16 17:07:16 +02:00
rikroe 686449cef6 Force _attr_native_value to metric in bmw_connected_drive (#75225)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-07-16 17:00:42 +02:00
rikroe c52d4c64bf Bump bimmer_connected to 0.10.1 (#75287)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-07-16 16:57:17 +02:00
Aaron Bach 952c90efcd Bump simplisafe-python to 2022.07.0 (#75294) 2022-07-16 16:45:09 +02:00
Franck Nijhof 393610c534 Migrate Season to new entity naming style (#75088) 2022-07-16 06:28:13 -07:00
Franck Nijhof 8d88562d40 Migrate Uptime to new entity naming style (#75090) 2022-07-16 06:27:20 -07:00
Maciej Bieniek 0f3cc4a4aa Migrate GIOS to new entity naming style (#75051)
Use new entity naming style
2022-07-16 06:25:07 -07:00
Franck Nijhof 13cea26e74 Migrate Tailscale to new entity naming style (#75018) 2022-07-16 06:21:19 -07:00
G Johansson 027cdbdb38 Fix Sensibo new entity naming style (#75307) 2022-07-16 14:33:18 +02:00
GitHub Action d0c4d39ae2 [ci skip] Translation update 2022-07-16 00:26:06 +00:00
clayton craft 1ce4714722 Bump venstarcolortouch to 0.18 (#75237)
venstarcolortouch: bump to 0.18
2022-07-16 00:38:06 +02:00
Khole dbcd98d029 Add fixes for hive light (#75286) 2022-07-16 00:03:22 +03:00
J. Nick Koston 2106c9f247 Fix delay adding entities in HKC (#75273) 2022-07-15 11:21:09 -05:00
J. Nick Koston 97fd669924 HomeKit Controller BLE Fixes (#75271) 2022-07-15 10:44:25 -05:00
Franck Nijhof c6c063e8c5 Various cleanups in AdGuard Home (#75250)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-15 12:38:20 +02:00
G Johansson 48f4b51a1d Migrate DNSIP to new entity naming style (#75197) 2022-07-15 11:07:39 +02:00
apaperclip 06e905054e Fix aruba ssh host key algorithm (#75224) 2022-07-15 10:57:23 +02:00
Franck Nijhof 3f3ed3a2c5 Add multi-factor authentication support to Verisure (#75113)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-15 10:52:40 +02:00
G Johansson d2e5d01aca Migrate Yale Smart Alarm to new entity naming style (#75202) 2022-07-15 10:52:07 +02:00
G Johansson cba3c8cf65 Migrate Sensibo to new entity naming style (#75212) 2022-07-15 10:51:18 +02:00
epenet 911402e747 Remove cloud from mypy ignore list (#74449) 2022-07-15 10:47:30 +02:00
G Johansson 3e98ac180c Migrate Trafikverket Ferry to new entity naming style (#75206) 2022-07-15 10:44:29 +02:00
Paulus Schoutsen 4e29bdf715 Merge pull request #75243 from home-assistant/rc 2022-07-14 22:46:51 -07:00
Allen Porter a23b427025 Remove nest mac prefix that matches cast devices (#75108) 2022-07-14 22:01:41 -07:00
Allen Porter b4003713b6 Remove nest mac prefix that matches cast devices (#75108) 2022-07-14 22:01:18 -07:00
Paulus Schoutsen c185e636ed Bumped version to 2022.7.5 2022-07-14 21:31:07 -07:00
Nathan Spencer 99d39b203f Bump pylitterbot to 2022.7.0 (#75241) 2022-07-14 21:31:03 -07:00
mkmer e4f1fa48d3 Bump AIOAladdinConnect to 0.1.25 (#75235)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-14 21:31:02 -07:00
Zack Barett c56caca182 Bump frontend to 20220707.1 (#75232) 2022-07-14 21:30:41 -07:00
Khole 62d77a135b Fix Hive power unit of measurement (#75210) 2022-07-14 21:29:41 -07:00
puddly b231eea0c6 Skip iso4217 version 1.10, which includes a broken __init__.pyi file (#75200) 2022-07-14 21:29:41 -07:00
puddly 5eaa15138c Bump zigpy from 0.47.2 to 0.47.3 (#75194) 2022-07-14 21:29:40 -07:00
mkmer d401faac7c Bumped AIOAladdin Connect to 0.1.24 (#75182) 2022-07-14 21:29:39 -07:00
Christopher Bailey 674e02914b Bump version of pyunifiprotect to 4.0.10 (#75180) 2022-07-14 21:29:38 -07:00
uvjustin 326ffdcd49 Fix playback of hls cameras in stream (#75166) 2022-07-14 21:29:37 -07:00
Michał Huryn b5e24048db Fix Blebox light scenes (#75106)
* Bug fix for light platform, when async_turn_on recieves multiple keys.

* Changes according to @MartinHjelmare suggestion.

* Moved effect set call in BleBoxLightEntity.async_turn_on method.

* Added tests for effect in light platform. Added ValueError raise if effect not in effect list.

* Removed duplicated line from test as @MartinHjelmare suggested.
2022-07-14 21:29:36 -07:00
Thomas Hollstegge b1c07ac17a Fix Alexa: Only trigger doorbell event on actual state change to "ON" (#74924)
* Alexa: Only trigger doorbell event on actual state change to "ON"

* Remove unnecessary check for new_state

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>

* First check state is `on` before checking the old state

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-07-14 21:29:35 -07:00
Michał Huryn a5693c083f Address Blebox uniapi review sidenotes (#74298)
* Changes accordingly to sidenotes given by @MartinHjelmare in pull #73834.

* Mini version bump according to notes in pull #73834.

* Error message fix, test adjustment.
2022-07-14 21:29:35 -07:00
Nathan Spencer 2dde3d02cc Bump pylitterbot to 2022.7.0 (#75241) 2022-07-14 21:29:11 -07:00
mkmer 98807f7efc Bump AIOAladdinConnect to 0.1.25 (#75235)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-14 21:28:00 -07:00
Franck Nijhof 700081e160 Add entity descriptions in AdGuard Home switches (#75229) 2022-07-14 21:09:11 -07:00
GitHub Action 08a361dab9 [ci skip] Translation update 2022-07-15 00:28:00 +00:00
Zack Barett ea6bb370a6 Bump frontend to 20220707.1 (#75232) 2022-07-15 01:12:48 +02:00
Robert Svensson 4a3d047dff Use pydeconz interface controls for fans (#75156) 2022-07-14 23:53:09 +02:00
Jc2k ff297cb902 Bump aiohomekit to 1.0.0 (#75198)
* Bump to 1.0.0rc1

* 1.0.0rc2

* fix one of the tests

* simplify test

* 1.0.0

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-14 16:51:48 -05:00
J. Nick Koston 03e3ebb238 Use json_loads by default for the aiohttp helper (#75214) 2022-07-14 15:37:12 -05:00
J. Nick Koston 61cc9f5288 Consolidate executor jobs when loading integration manifests (#75176) 2022-07-14 13:06:08 -07:00
Franck Nijhof fef1b842ce Update wled to 0.14.1 (#75174) 2022-07-14 13:04:46 -07:00
Franck Nijhof d004adf833 Add entity descriptions in AdGuard Home sensors (#75179) 2022-07-14 13:04:19 -07:00
Glenn Waters 72906bf154 Migrate UPB to new entity naming style (#75096)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-14 21:56:36 +02:00
G Johansson 09f37fc522 Migrate SQL to new entity naming style (#75203) 2022-07-14 21:46:26 +02:00
Franck Nijhof 9a4a7e2f4d Extend failed login message with the request URL (#75218) 2022-07-14 21:43:14 +02:00
Thomas Hollstegge f0cc565f6c Fix Alexa: Only trigger doorbell event on actual state change to "ON" (#74924)
* Alexa: Only trigger doorbell event on actual state change to "ON"

* Remove unnecessary check for new_state

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>

* First check state is `on` before checking the old state

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-07-14 12:40:53 -07:00
epenet e7ae2fada7 Remove evohome from mypy ignore list (#75175) 2022-07-14 21:40:39 +02:00
uvjustin 75892385bb Fix playback of hls cameras in stream (#75166) 2022-07-14 12:24:24 -07:00
J. Nick Koston 6184f0557d Bump pyunifiprotect to 4.0.11 (#75215) 2022-07-14 21:18:55 +02:00
puddly bdc63b692b Bump zigpy from 0.47.2 to 0.47.3 (#75194) 2022-07-14 12:15:51 -07:00
epenet 5287980f48 Remove template from mypy ignore list (#74426) 2022-07-14 21:15:37 +02:00
mkmer b7cdf5412b Bumped AIOAladdin Connect to 0.1.24 (#75182) 2022-07-14 12:14:41 -07:00
Peter Galantha 3d2101cac5 Add total state_class for esphome (#75015) 2022-07-14 21:14:25 +02:00
G Johansson 54a939e223 Migrate Filesize to new entity naming style (#75199) 2022-07-14 21:04:41 +02:00
J. Nick Koston 3f6e930489 Bump nexia to 2.0.2 (#75209) 2022-07-14 21:03:12 +02:00
Robert Svensson 874043f596 Migrate Axis to new entity naming style (#74735) 2022-07-14 21:01:57 +02:00
Khole 124bfe1629 Fix Hive power unit of measurement (#75210) 2022-07-14 20:50:35 +02:00
J. Nick Koston 5f08052f40 Move lutron_caseta migration to happen after successful setup (#75204) 2022-07-14 20:48:30 +02:00
J. Nick Koston fde3489e86 Relocate BluetoothServiceInfo to helpers.service_info (#75195) 2022-07-14 11:36:54 -07:00
puddly 5e46fa6f8b Skip iso4217 version 1.10, which includes a broken __init__.pyi file (#75200) 2022-07-14 12:38:22 -05:00
Franck Nijhof 56da7d0ad0 Allow Mjpeg camera name to be None (#75002) 2022-07-14 19:00:06 +02:00
J. Nick Koston bb14f83b94 Bump unifi-discovery to 1.1.5 (#75189) 2022-07-14 11:30:20 -05:00
J. Nick Koston 666f715e76 Avoid importing MQTT into core for ServiceInfo dataclass (#74418)
* Avoid importing MQTT into core for discovery dataclass

Likely fixes #73863

* relo

* adjust

* rename

* rename

* rename

* adjust missed imports

* drop compat

* fix conflict correctly

* Update homeassistant/helpers/config_entry_flow.py

* fix black from trying to fix the conflict in github
2022-07-14 11:09:09 -05:00
epenet 1725948d4a Use instance attributes in minecraft_server (#75157)
* Remove minecraft_server from mypy ignore list

* Use new entity naming style
2022-07-14 18:06:33 +02:00
J. Nick Koston 89985b93fb Avoid loading platforms in HKC if we are going to raise ConfigEntryNotReady (#75177) 2022-07-14 10:17:16 -05:00
Christopher Bailey 2286dea636 Bump version of pyunifiprotect to 4.0.10 (#75180) 2022-07-14 09:55:24 -05:00
J. Nick Koston a31dde9cb4 Await startup in homekit controller (#75021) 2022-07-14 07:44:27 -05:00
J. Nick Koston a3c1926da5 Add mock_bluetooth fixture (#75075) 2022-07-14 07:40:17 -05:00
Chris Talkington 20432ccc76 Migrate roku to new entity naming (#74819)
* migrate roku to new entity naming

* Update binary_sensor.py

* Update sensor.py

* Update test_binary_sensor.py

* Update sensor.py

* Update entity.py

* Update media_player.py

* Update remote.py

* Update media_player.py

* Update remote.py

* Update entity.py

* Update entity.py

* Update entity.py

* Update entity.py
2022-07-14 07:02:13 -05:00
epenet e16bd1e471 Remove evohome climate from mypy ignore list (#75169)
* Remove evohome climate from mypy ignore list

* Raise error
2022-07-14 13:46:37 +02:00
epenet c260413e2a Remove lovelace from mypy ignore list (#75167)
* Remove lovelace from mypy ignore list

* Raise error on failed config
2022-07-14 13:08:50 +02:00
Franck Nijhof 28c082a080 Update sentry-sdk to 1.7.1 (#75154) 2022-07-14 12:42:18 +02:00
epenet debd475a6d Remove onvif from mypy ignore list (#75162) 2022-07-14 11:55:43 +02:00
Franck Nijhof b60f6c7cdd Bump pip_check (#75164) 2022-07-14 11:50:21 +02:00
epenet 51c17197c5 Remove nzbget from mypy ignore list (#75158) 2022-07-14 11:40:10 +02:00
Franck Nijhof 3bccac9949 Verisure config flow cleanups (#75144) 2022-07-14 11:37:59 +02:00
Michał Huryn 169264db66 Fix Blebox light scenes (#75106)
* Bug fix for light platform, when async_turn_on recieves multiple keys.

* Changes according to @MartinHjelmare suggestion.

* Moved effect set call in BleBoxLightEntity.async_turn_on method.

* Added tests for effect in light platform. Added ValueError raise if effect not in effect list.

* Removed duplicated line from test as @MartinHjelmare suggested.
2022-07-14 11:21:01 +02:00
mkmer c9df5888c2 Add Aladdin Connect wifi_rssi and battery_level sensors (#74258) 2022-07-14 11:09:27 +02:00
J. Nick Koston 08ff1b8986 Fix flapping system log test (#75111) 2022-07-14 11:05:52 +02:00
Franck Nijhof a720b2989a Migrate RDW to new entity naming style (#75017) 2022-07-14 10:56:14 +02:00
Franck Nijhof 2aa98da624 Migrate Whois to new entity naming style (#75019) 2022-07-14 10:56:01 +02:00
GitHub Action 1d2e64e3dc [ci skip] Translation update 2022-07-14 00:27:41 +00:00
Paulus Schoutsen 60e170c863 Merge pull request #75147 from home-assistant/rc 2022-07-13 15:25:35 -07:00
Paulus Schoutsen 533ae85a49 Bumped version to 2022.7.4 2022-07-13 14:14:13 -07:00
Paulus Schoutsen 1555f706e5 Block bad pubnub version (#75138) 2022-07-13 14:14:01 -07:00
Aaron Bach f052c3ca74 Ensure SimpliSafe diagnostics redact the code option (#75137) 2022-07-13 14:14:00 -07:00
puddly 89e87119f2 Bump ZHA dependencies (#75133) 2022-07-13 14:13:59 -07:00
kingy444 9e99ea68fb Fix Powerview top shade open position (#75110) 2022-07-13 14:13:58 -07:00
Joakim Plate b105b0fbcb Make sure device tuple is a list on save (#75103) 2022-07-13 14:13:58 -07:00
Artem Draft 98c3bc56b5 Fix missing ordered states in universal media player (#75099) 2022-07-13 14:13:57 -07:00
Tom Harris 06e7f71891 Fix Insteon thermostat issues (#75079) 2022-07-13 14:13:56 -07:00
mkmer 55ae0228a9 Bump AIOAladdinConnect to 0.1.23 (#75065) 2022-07-13 14:13:55 -07:00
hahn-th 5c882429d4 Bump homematicip to 1.0.4 (#75053) 2022-07-13 14:13:54 -07:00
Thijs W 51a4c98562 Bump afsapi to 0.2.6 (#75041) 2022-07-13 14:13:53 -07:00
Gabe Cook 620d2ed8fd Fix Ruckus Unleashed SSH connection failures (#75032) 2022-07-13 14:13:52 -07:00
Ville Skyttä bdc4171e37 Upgrade huawei-lte-api to 1.6.1 (#75030) 2022-07-13 14:13:51 -07:00
Phil Bruckner f738d39ad9 Do not spam log when Life360 member location is missing (#75029) 2022-07-13 14:13:50 -07:00
Franck Nijhof a34e72f3a1 Fix mix of aiohttp and requests in ClickSend TTS (#74985) 2022-07-13 14:13:50 -07:00
J. Nick Koston c45313e9de JSON serialize NamedTuple subclasses with aiohttp (#74971) 2022-07-13 14:13:49 -07:00
Markus 4d81d056da Fix Pyload request content type headers (#74957) 2022-07-13 14:13:48 -07:00
henryptung 3f53022b50 Remove pip --prefix workaround (#74922)
Remove --prefix workaround

See discussion in https://github.com/home-assistant/core/issues/74405.

This workaround is no longer needed on pip >= 21.0 and actively causes problems for pip >= 21.3.
2022-07-13 14:13:47 -07:00
Alexei Chetroi d31a0c8dca Correctly handle device triggers for missing ZHA devices (#74894) 2022-07-13 14:13:46 -07:00
Ludovico de Nittis cc79c3d6e1 Update pyialarm to 2.2.0 (#74874) 2022-07-13 14:13:45 -07:00
Erik Montnemery 5e7174a5f4 Migrate homematicip_cloud to native_* (#74385) 2022-07-13 14:13:45 -07:00
Erik Montnemery 8259ce9868 Migrate ecobee to native_* (#74043) 2022-07-13 14:13:44 -07:00
puddly 3166d4895f Bump ZHA dependencies (#75133) 2022-07-13 14:13:09 -07:00
Paulus Schoutsen 1768315c50 Block bad pubnub version (#75138) 2022-07-13 14:12:53 -07:00
kingy444 d1ffc7e9e3 Fix Powerview top shade open position (#75110) 2022-07-13 13:06:32 -07:00
Joakim Plate 755abbe2d0 Make sure device tuple is a list on save (#75103) 2022-07-13 13:05:43 -07:00
Aaron Bach ffeac9714f Ensure SimpliSafe diagnostics redact the code option (#75137) 2022-07-13 20:52:13 +02:00
Everything Smart Home 4a36318d56 Add Aqara E1 curtain motor direction select entity to ZHA (#75132)
* Add direction change select option for Aqara Curtain

* Add direction change select option for Aqara Curtain
2022-07-13 13:58:36 -04:00
Aaron Bach 2169d839ce Remove service descriptions for deprecated Guardian services (#75084) 2022-07-13 11:08:23 +02:00
Bouwe Westerdijk 34f1d5e094 Add Plugwise number platform (#74655) 2022-07-13 09:21:58 +02:00
Artem Draft b7a6f4e220 Fix missing ordered states in universal media player (#75099) 2022-07-13 09:12:50 +02:00
Tom Harris 1e5ada0f9d Fix Insteon thermostat issues (#75079) 2022-07-13 08:56:08 +02:00
mkmer ad82352dae Bump AIOAladdinConnect to 0.1.23 (#75065) 2022-07-13 08:46:32 +02:00
dependabot[bot] 3ca04aa33b Bump actions/cache from 3.0.4 to 3.0.5 (#75104)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-13 08:40:43 +02:00
GitHub Action a3fd5acf3f [ci skip] Translation update 2022-07-13 00:27:34 +00:00
Paulus Schoutsen 41ec8cd354 Expose supported brands via API (#75074) 2022-07-12 13:49:54 -07:00
Aaron Bach b54fe14a10 Replace Guardian reboot and reset_valve_diagnostics services with buttons (#75028) 2022-07-12 12:53:21 -06:00
Franck Nijhof d40978742c Update coverage to 6.4.2 (#75072) 2022-07-12 20:46:04 +02:00
Glenn Waters 96ecbe4388 Migrate Environment Canada to new entity naming style (#75024)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-12 20:45:38 +02:00
Franck Nijhof 397f94ee50 Migrate DSMR to use keys for entity unique ID (#74895) 2022-07-12 20:06:13 +02:00
Erik Montnemery b0fde206b8 Teach resolution center about fixing issues (#74694) 2022-07-12 10:26:06 -07:00
Sebastian Lövdahl cf612c4bec Migrate Vallox to new entity naming style (#75025) 2022-07-12 16:32:37 +02:00
Gabe Cook 5489b2111a Fix Ruckus Unleashed SSH connection failures (#75032) 2022-07-12 16:06:38 +02:00
Duco Sebel 5fdae0fc5b Migrate HomeWizard to new entity naming style (#74958) 2022-07-12 15:56:16 +02:00
Maciej Bieniek 7283d1b7fb Migrate Brother to new entity naming style (#75000) 2022-07-12 15:35:12 +02:00
hahn-th cd25bc1901 Bump homematicip to 1.0.4 (#75053) 2022-07-12 15:31:04 +02:00
Thijs W ff1cdb4de7 Bump afsapi to 0.2.6 (#75041) 2022-07-12 12:03:26 +02:00
Jan Bouwhuis 5930f056a8 Mqtt support config_entry unload (#70149)
* squashed commits for rebase

* Flake

* Fix reloading issue manual legacy items

* Improve ACS sync for unsubscribe at disconnect

* Processed review comments

* Update homeassistant/components/mqtt/client.py

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

* No need to await entry setup

* Remove complication is_connected

* Update homeassistant/components/mqtt/__init__.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-07-12 11:07:18 +02:00
Michał Huryn 6a37600936 Remove incorrect device class from blebox button (#75042)
* Removed redundant attr device class from button.

* Removed irrelevant test for checking buttons device_class.
2022-07-12 10:01:53 +02:00
dependabot[bot] dfe840c045 Bump actions/setup-python from 4.0.0 to 4.1.0 (#75040)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-12 08:51:24 +02:00
Phil Bruckner f4953e6e9b Do not spam log when Life360 member location is missing (#75029) 2022-07-12 08:42:33 +02:00
GitHub Action 5d8e1b8387 [ci skip] Translation update 2022-07-12 00:24:26 +00:00
Ville Skyttä 7b9a0eed22 Upgrade huawei-lte-api to 1.6.1 (#75030) 2022-07-11 15:35:45 -07:00
Erik Montnemery 2e228b2608 Tweak handling of entities with has_entity_name set (#74948)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-11 15:10:53 -07:00
J. Nick Koston da027fa390 JSON serialize NamedTuple subclasses with aiohttp (#74971) 2022-07-11 14:46:55 -07:00
Franck Nijhof ef025bccc0 Update tqdm to 4.64.0 (#75010) 2022-07-11 23:30:48 +02:00
0bmay 2d2fd3e48f Cache Canary camera image (#73923)
* Cache camera image

Cache camera image so a new image isn't generated each call.
Adds debug logging

* Apply suggestions from code review

code compression with walrus operator

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

* fix after walrus operator suggested tweak

fully use the live_stream_session variable in async_camera_image

* Invalidate cached image after 15 minutes

requested code change; invalidate cached image

* Removed unnecessary if statement

based on code review

* Image capture flow updates

now sets the image expiration upon getting an updated image
updates the cache image only when a new image is captured

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-07-11 21:53:33 +02:00
David F. Mulcahey 5774f2e7b9 Use forward_entry_setups in ZHA (#74834) 2022-07-11 14:29:42 -04:00
puddly 2986a2f01b Identify the active ZHA coordinator device in API responses (#74739)
* Remove deprecated zigpy properties

* Create a `ZHADevice.is_active_coordinator` property

* Add `@puddly` to the ZHA code owners

* Create a `ZHAGateway.coordinator_ieee` shortcut property
2022-07-11 14:19:30 -04:00
epenet 14baaf4b67 Remove plex from mypy ignore list (#74984) 2022-07-11 20:02:44 +02:00
epenet 28a34a1f89 Remove withings from mypy ignore list (#74966) 2022-07-11 19:14:23 +02:00
Franck Nijhof 7c2bd319f1 Migrate AdGuard Home to new entity naming style (#74999)
* Migrate AdGuard Home to new entity naming style

* sentence-casing
2022-07-11 18:59:21 +02:00
epenet ba18e11308 Remove profiler from mypy ignore list (#74453) 2022-07-11 18:34:27 +02:00
Franck Nijhof 8d6925b3ab Migrate Tuya to new entity naming style (#74975) 2022-07-11 09:17:54 -07:00
Matthias Alphart 75abf87611 Migrate Fronius to new entity naming style (#74974) 2022-07-11 09:16:29 -07:00
Franck Nijhof 4a39087fe7 Migrate Verisure to new entity naming style (#74997) 2022-07-11 09:14:17 -07:00
Franck Nijhof a30d7e5104 Migrate Speedtest.net to new entity naming style (#75004) 2022-07-11 09:13:09 -07:00
Franck Nijhof 964bb63da6 Migrate Spotify to new entity naming style (#74992) 2022-07-11 09:12:56 -07:00
epenet 7e0515b119 Remove conversation from mypy ignore list (#74991) 2022-07-11 17:47:33 +02:00
epenet 63706d2f67 Remove blueprint from mypy ignore list (#74990) 2022-07-11 17:46:32 +02:00
Erik Montnemery 924dce1b86 Log warning if number entities set _attr_unit_of_measurement (#74987) 2022-07-11 17:44:07 +02:00
Brett Adams 01ca7f657c Shorten Entity Name in Aussie Broadband (#74946) 2022-07-11 17:43:32 +02:00
Paulus Schoutsen 6fd47d035e Add basic Rhasspy integration (#74942)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-07-11 08:40:52 -07:00
epenet 6ac05784a6 Remove icloud from mypy ignore list (#75007) 2022-07-11 17:33:20 +02:00
Maciej Bieniek 7b5cf63a46 Migrate Airly to new entity naming style (#74995) 2022-07-11 17:30:22 +02:00
Maciej Bieniek e1e85caf18 Migrate Nettigo Air Monitor to new entity naming style (#74993) 2022-07-11 17:26:07 +02:00
epenet fa51a39f1d Use instance attributes in evohome (#74996) 2022-07-11 17:24:35 +02:00
J. Nick Koston c2fefe03b2 Add support for subscribing to bluetooth callbacks by address (#74773) 2022-07-11 08:14:00 -07:00
Erik Montnemery eb922b2a1f Add temperature number to demo integration (#74986) 2022-07-11 16:55:06 +02:00
Franck Nijhof af2feb3d40 Update pyupgrade to v2.37.1 (#74989) 2022-07-11 16:54:01 +02:00
epenet 73a8ae35c2 Remove izone from mypy ignore list (#75005) 2022-07-11 16:53:14 +02:00
Ludovico de Nittis fe1c23321e Update pyialarm to 2.2.0 (#74874) 2022-07-11 16:51:10 +02:00
epenet 06a4c226fd Remove konnected from mypy ignore list (#75003) 2022-07-11 16:44:44 +02:00
Joakim Plate ee4749b207 Change more properties to attributes for rfxtrx (#74880)
* Move more properties to attributes

* Apply suggestions from code review

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

* Convert states to attributes

* Adjustments from review

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-07-11 16:21:26 +02:00
Maciej Bieniek c1a4dc2f22 Add NextDNS switch platform (#74512)
* Add switch platform

* Use lambda to get state

* Use async with timeout

* Add tests

* Use correct type

* Use Generic for coordinator

* Use TCoordinatorData

* Cleanup generic

* Simplify coordinator data update methods

* Use new entity naming style

* Remove unnecessary code

* Only the first word should be capitalised

* Suggested change

* improve typing in tests

* Improve typing intests

* Update tests/components/nextdns/__init__.py

* black

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-07-11 16:00:13 +02:00
Maciej Bieniek 8820ce0bdd Migrate NextDNS to new entity naming style (#74951)
* Use new entity naming style

* Remove unnecessary code

* Only the first word should be capitalised
2022-07-11 15:59:46 +02:00
epenet 5f4713a200 Remove solaredge from mypy ignore list (#74983) 2022-07-11 15:07:54 +02:00
Erik Montnemery 9d2c213903 Support overriding unit of temperature number entities (#74977) 2022-07-11 14:49:36 +02:00
Franck Nijhof 66e27945ac Fix mix of aiohttp and requests in ClickSend TTS (#74985) 2022-07-11 14:38:08 +02:00
epenet ce353460b3 Fix Withings re-authentication flow (#74961) 2022-07-11 14:27:54 +02:00
epenet ab9950621b Remove toon from mypy ignore list (#74968) 2022-07-11 13:40:54 +02:00
Franck Nijhof d244d06711 Update PyTurboJPEG to 1.6.7 (#74965) 2022-07-11 13:21:37 +02:00
Franck Nijhof ba3f287c01 Update sentry-sdk to 1.7.0 (#74967) 2022-07-11 12:39:07 +02:00
Michał Huryn ca93aacc57 Add blebox tvLiftBox support (#74395)
* Added tvLiftBox support.

* Changes after @epenet code review.

* After @epenet code review, dictionaries moved to relevant modules.

* Import path changed to full path.

* Removed redundant code in BLEBOX_TO_<platform>_DEVICE_CLASSES for switch and button platforms.

* Post isort on covers.

* Added tests, required version bump. As property was added inside dependency.
2022-07-11 12:24:37 +02:00
Franck Nijhof c80066072c Update psutil to 5.9.1 (#74963) 2022-07-11 12:18:28 +02:00
Erik Montnemery 0d6bf08ff6 Don't allow using deprecated features of WeatherEntity (#74394) 2022-07-11 11:59:06 +02:00
henryptung 7d27dad190 Remove pip --prefix workaround (#74922)
Remove --prefix workaround

See discussion in https://github.com/home-assistant/core/issues/74405.

This workaround is no longer needed on pip >= 21.0 and actively causes problems for pip >= 21.3.
2022-07-11 11:33:28 +02:00
Erik Montnemery f6fd7d115e Migrate homematicip_cloud to native_* (#74385) 2022-07-11 10:58:57 +02:00
Markus ed1545fab0 Fix Pyload request content type headers (#74957) 2022-07-11 10:49:31 +02:00
Erik Montnemery 6e1cd4c48a Migrate ecobee to native_* (#74043) 2022-07-11 10:49:06 +02:00
Franck Nijhof 81f74d2053 Update pre-commit to 2.20.0 (#74955) 2022-07-11 10:42:23 +02:00
Franck Nijhof 34b8f2b283 Migrate Ambee to new entity naming style (#74877) 2022-07-11 09:51:01 +02:00
Franck Nijhof eb92f0e16c Migrate Forecast.Solar to new entity naming style (#74898) 2022-07-11 09:44:56 +02:00
Glenn Waters a3d0719c49 Add binary_sensor to ElkM1 integration (#74485)
* Add binary_sensor to ElkM1 integration

* Update for review comments.

* Fix black.

* Fix pylint error.

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-11 09:11:37 +02:00
Allen Porter f4e61eff18 Add update coordinator for google calendar (#74690)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-10 21:24:52 -07:00
Franck Nijhof 5451ccd2b5 Update wakeonlan to 2.1.0 (#74856) 2022-07-10 21:05:09 -07:00
Brandon Rothweiler 53502eb662 Migrate Mazda to new entity naming style (#74939) 2022-07-10 21:04:54 -07:00
Brett Adams d0f71d2e53 Migrate Aussie Broadband to new entity naming style (#74937) 2022-07-10 21:04:18 -07:00
Brett Adams 7a729aed54 Migrate Advantage Air to new entity naming style (#74940) 2022-07-10 21:03:48 -07:00
GitHub Action abb11009b4 [ci skip] Translation update 2022-07-11 00:23:28 +00:00
Franck Nijhof d697bb53c5 Update lru-dict to 1.1.8 (#74932) 2022-07-11 00:11:43 +02:00
Thomas Hollstegge 261c52e260 Alexa: Fix duplicate proactive reports (#74930) 2022-07-10 15:10:55 -07:00
Franck Nijhof 9ff77e0fa1 Update pytest-sugar is 0.9.5 (#74931) 2022-07-11 00:06:45 +02:00
Franck Nijhof a4517a4c1d Trigger full CI on Bluetooth integration changes (#74929) 2022-07-10 23:59:08 +02:00
Franck Nijhof 792c825699 Update numpy to 1.23.1 (#74851) 2022-07-10 14:58:05 -07:00
Franck Nijhof 08887a6faa Update yamllint to 1.27.1 (#74853) 2022-07-10 14:57:46 -07:00
Franck Nijhof f15d3fc5db Migrate WLED to new entity naming style (#74860) 2022-07-10 14:56:48 -07:00
Franck Nijhof 176e2754ec Update adb-shell to 0.4.3 (#74855) 2022-07-10 14:56:04 -07:00
Paulus Schoutsen 4418e6c4b6 Merge pull request #74926 from home-assistant/rc 2022-07-10 14:33:08 -07:00
Franck Nijhof 8054e309b3 Update flake8-noqa to 1.2.5 (#74896) 2022-07-10 14:23:40 -07:00
G Johansson c9330841a1 Add AirQ sensors to Sensibo (#74868) 2022-07-10 23:08:33 +02:00
Michael c2d8335cc5 Add "Home Assistant (skip pip)" to VS Code launch.json (#74887) 2022-07-10 23:06:27 +02:00
Aaron Bach b4e5c95e03 Migrate OpenUV to new entity naming style (#74919) 2022-07-10 22:45:09 +02:00
Aaron Bach a19ab389fc Migrate Flu Near You to new entity naming style (#74918) 2022-07-10 22:29:50 +02:00
Paulus Schoutsen 02452c7632 Bumped version to 2022.7.3 2022-07-10 13:25:47 -07:00
Thijs W 20f77ef832 Bump afsapi to 0.2.5 (#74907) 2022-07-10 13:25:43 -07:00
David Straub adbcd8adb4 Bump pysml to 0.0.8 (fixes #74382) (#74875) 2022-07-10 13:25:42 -07:00
Hans Oischinger bd069966f2 Fix Vicare One Time Charge (#74872) 2022-07-10 13:25:41 -07:00
Brandon Rothweiler 986a86ebed Bump pymazda to 0.3.6 (#74863) 2022-07-10 13:25:41 -07:00
Chris Talkington 01eae3687a Bump rokuecp to 0.17.0 (#74862) 2022-07-10 13:25:40 -07:00
Stephan Uhle 2f570fa715 Fixed unit of measurement. #70121 (#74838) 2022-07-10 13:25:39 -07:00
Aaron Bach 2ba285b8e5 Bump regenmaschine to 2022.07.1 (#74815) 2022-07-10 13:25:38 -07:00
Robert Svensson 07f4efcd83 Bump deCONZ dependency to fix #74791 (#74804) 2022-07-10 13:25:38 -07:00
Paul Annekov 357fe2a722 Bump python-gammu to 3.2.4 with Python 3.10 support (#74797) 2022-07-10 13:25:37 -07:00
Álvaro Fernández Rojas 2accc4c07d Update aioqsw to v0.1.1 (#74784) 2022-07-10 13:25:36 -07:00
Regev Brody 79b4f8ce0c Bump pyezviz to 0.2.0.9 (#74755)
* Bump ezviz dependency to fix #74618

* Bump ezviz dependency to fix #74618

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-10 13:25:36 -07:00
Pieter Mulder e233024533 Update pyCEC to version 0.5.2 (#74742) 2022-07-10 13:25:35 -07:00
Ethan Madden 43527d8d19 air_quality and filter_life fixes for Pur131S (#74740) 2022-07-10 13:25:34 -07:00
Aidan Timson 59471a6fbd Update systembridgeconnector to 3.3.2 (#74701) 2022-07-10 13:25:33 -07:00
kpine f5d18108d0 Fix KeyError from zwave_js diagnostics (#74579) 2022-07-10 13:25:33 -07:00
Franck Nijhof 5f728b955e Migrate Sonos to new entity naming style (#74909) 2022-07-10 13:19:13 -07:00
Franck Nijhof cdab725bf4 Migrate Slimproto to new entity naming style (#74910) 2022-07-10 13:18:15 -07:00
David F. Mulcahey 6f28e4bfee Migrate ZHA to new entity naming standard (#74846) 2022-07-10 13:17:59 -07:00
Aaron Bach 8285f42d26 Migrate IQVIA to new entity naming style (#74917) 2022-07-10 22:16:16 +02:00
Hans Oischinger 267057c989 Fix Vicare One Time Charge (#74872) 2022-07-10 13:15:43 -07:00
Franck Nijhof d6ceebbb68 Migrate Met.no to new entity naming style (#74908) 2022-07-10 13:13:22 -07:00
Franck Nijhof c81d63e070 Migrate Cast to new entity naming style (#74901) 2022-07-10 13:13:09 -07:00
Aaron Bach 4a38be2924 Migrate WattTime to new entity naming style (#74916) 2022-07-10 22:12:56 +02:00
Aaron Bach 07444dba2a Migrate ReCollect Waste to new entity naming style (#74914) 2022-07-10 22:11:02 +02:00
Aaron Bach 4433065438 Migrate Ridwell to new entity naming style (#74915) 2022-07-10 22:09:42 +02:00
Franck Nijhof b070bb8ef0 Migrate Supervisor integration to new entity naming style (#74906) 2022-07-10 13:05:54 -07:00
Franck Nijhof c5253d3da0 Migrate Geocaching to new entity naming style (#74899) 2022-07-10 13:05:00 -07:00
Franck Nijhof bb4b2014fc Migrate Wiz to new entity naming style (#74911) 2022-07-10 13:03:19 -07:00
Franck Nijhof 23f2e9014e Update feedparser to 6.0.10 (#74913) 2022-07-10 12:59:38 -07:00
Thijs W 1aeb15050e Bump afsapi to 0.2.5 (#74907) 2022-07-10 21:52:49 +02:00
Aaron Bach 98a27ed3ed Remove old RainMachine service descriptions (#74920) 2022-07-10 21:48:58 +02:00
Aaron Bach edf304718c Migrate Notion to new entity naming style (#74746) 2022-07-10 21:41:12 +02:00
Aaron Bach 5971ab6549 Migrate Flo to new entity naming style (#74744) 2022-07-10 21:40:06 +02:00
Aaron Bach f95c9d0f02 Migrate AirVisual to new entity naming style (#74753) 2022-07-10 21:38:00 +02:00
Aaron Bach ae4f2a0e34 Fix incorrect new entity naming for Guardian (#74912) 2022-07-10 21:37:14 +02:00
Aaron Bach a4d5ecb8ec Migrate RainMachine to new entity naming style (#74754) 2022-07-10 21:27:01 +02:00
Aaron Bach c92936cc7b Migrate Ambient PWS to new entity naming style (#74743) 2022-07-10 21:21:21 +02:00
Franck Nijhof c241e876ef Update url-normalize to 1.4.3 (#74897) 2022-07-10 21:55:54 +03:00
Jc2k 59170d3c54 Prepare homekit_controller for _hap._udp.local. (#74857)
* Prepare homekit_controller for _hap._udp.local.
2022-07-10 19:50:54 +01:00
Franck Nijhof c9aa3c112a Migrate GitHub to new entity naming style (#74903) 2022-07-10 20:05:24 +02:00
David F. Mulcahey edaafadde0 Remove ZHA device storage (#74837)
* Remove ZHA device storage

* remove storage file if it exists
2022-07-10 13:46:22 -04:00
Alexei Chetroi 240a83239a Correctly handle device triggers for missing ZHA devices (#74894) 2022-07-10 13:35:45 -04:00
Allen Porter 6f9fcdff99 Improve calendar error handling to match best practices (#74891) 2022-07-10 10:04:57 -07:00
Franck Nijhof 52130b227e Update flake8-comprehensions to 3.10.0 (#74882) 2022-07-10 14:55:43 +02:00
Franck Nijhof 70ceccb06a Update respx to 0.19.2 (#74878) 2022-07-10 14:21:14 +02:00
Chris Talkington 3429a75cc5 Bump rokuecp to 0.17.0 (#74862) 2022-07-10 12:51:40 +02:00
David Straub cb4d2d1b26 Bump pysml to 0.0.8 (fixes #74382) (#74875) 2022-07-10 12:49:18 +02:00
Brandon Rothweiler f7aea76e73 Bump pymazda to 0.3.6 (#74863) 2022-07-10 12:33:54 +02:00
Franck Nijhof 80727ff952 Update pyudev to 0.23.2 (#74859) 2022-07-09 20:30:22 -05:00
GitHub Action d40ad96916 [ci skip] Translation update 2022-07-10 00:27:48 +00:00
Franck Nijhof 2f37500443 Update shodan to 1.28.0 (#74850) 2022-07-10 01:51:46 +02:00
epenet 40ee7bab8f Fix false-positive in pylint plugin (#74244) 2022-07-10 00:31:09 +02:00
Robert Svensson d80d16aaa4 Use pydeconz interface controls for number platform (#74666) 2022-07-09 23:46:24 +02:00
J. Nick Koston 157d6dc83f Add missing Start Dimmer mapping for bond buttons (#74555) 2022-07-09 23:45:49 +02:00
Franck Nijhof 0f813b61c3 Migrate Elgato to new entity naming style (#74590) 2022-07-09 23:41:04 +02:00
Franck Nijhof 81e7eb623b Migrate Twente Milieu to new entity naming style (#74593) 2022-07-09 23:40:55 +02:00
Robert Svensson 63582c3f98 Bump deCONZ dependency to fix #74791 (#74804) 2022-07-09 23:40:15 +02:00
epenet db111645c2 Use instance attributes in nsw_rural_fire_service_feed (#74398) 2022-07-09 23:38:53 +02:00
Robert Svensson e3242d8d16 Move add/remove logic of deCONZ clip sensors to gateway class (#74481) 2022-07-09 23:35:06 +02:00
Rami Mosleh d33779d3a0 Cleanup mikrotik device extra_attributes (#74491) 2022-07-09 23:33:10 +02:00
epenet e529ef7b0e Use instance attributes in qld_bushfire (#74402) 2022-07-09 23:29:00 +02:00
epenet bb974ebf7e Use instance attributes in gdacs (#74400) 2022-07-09 23:21:58 +02:00
epenet 36bb34f391 Remove kostal_plenticore from mypy ignore list (#74433) 2022-07-09 23:18:53 +02:00
epenet d04e77ef7f Use instance attributes in geo_json_events (#74397) 2022-07-09 23:17:14 +02:00
epenet d49c58cf87 Use instance attributes in geonetnz_quakes (#74401) 2022-07-09 23:14:07 +02:00
epenet 3922141f5c Remove omnilogic from mypy ignore list (#74452) 2022-07-09 23:11:55 +02:00
epenet da133a7f05 Remove xbox from mypy ignore list (#74504) 2022-07-09 23:09:15 +02:00
Jc2k f53bf1127f Hide homekit_controller implementation that doesn't apply to BLE (#74836) 2022-07-09 23:07:32 +02:00
Paul Annekov 81cdbf4f9b Bump python-gammu to 3.2.4 with Python 3.10 support (#74797) 2022-07-09 22:53:47 +02:00
epenet 16900dcef1 Make Store a generic class (#74617) 2022-07-09 22:32:57 +02:00
Michel van de Wetering d37ad20894 Fix mediaplayer join service groupmembers definition (#74807) 2022-07-09 22:29:50 +02:00
Stephan Uhle cdcfd1149e Fixed unit of measurement. #70121 (#74838) 2022-07-09 22:22:30 +02:00
simeon-simsoft 5b32eea3d0 Add support for bidirectional chargers to Wallbox integration (#74313)
* Add support for the Quasar bidirectional charger to the Wallbox integration, including ability to control charger while discharging, set a negative charge rate and monitor discharged amount

* Make code more generic in order to support other bidirectional models in the future

* Updates to files to comply with HA formatting rules

* Change const file to fix black check failure

* Remove unnecessay loop in number entity
2022-07-09 20:41:39 +02:00
Robert Svensson 2cc9db5468 Make deCONZ utilise forward_entry_setups (#74823) 2022-07-09 13:30:48 -05:00
epenet 7cac1ae6a3 Use instance attributes in ign_sismologia (#74399) 2022-07-09 20:03:31 +02:00
epenet 0b1f29b2b9 Remove nilu from mypy ignore list (#74412) 2022-07-09 20:01:39 +02:00
Álvaro Fernández Rojas ac21dc929f Update aioairzone to v0.4.6 (#74810) 2022-07-09 20:00:24 +02:00
Aaron Bach ea1fc6b5d3 Migrate SimpliSafe to new entity naming style (#74763) 2022-07-09 19:59:36 +02:00
epenet 5360e56d09 Remove xiaomi_miio from mypy ignore list (#74669) 2022-07-09 19:59:11 +02:00
Aidan Timson e74f7d13ab Update systembridgeconnector to 3.3.2 (#74701) 2022-07-09 19:55:33 +02:00
epenet 0f33c08dca Remove telegram_bot from mypy ignore list (#74661) 2022-07-09 19:52:26 +02:00
Ethan Madden 5defe67269 air_quality and filter_life fixes for Pur131S (#74740) 2022-07-09 19:51:47 +02:00
Joakim Plate 8ce897f462 Convert fjaraskupan to entity naming (#74723) 2022-07-09 19:46:53 +02:00
Joakim Plate 4080d2b0da Convert philips_js to entity naming (#74721)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-09 19:34:51 +02:00
Franck Nijhof cdcc73a414 Migrate Stookalert to new entity naming style (#74693) 2022-07-09 19:22:23 +02:00
Allen Porter 1c4fee65c0 Migrate nest to new entity naming style (#74724) 2022-07-09 19:21:53 +02:00
Robert Svensson 24ca656372 Migrate deCONZ Group and Scenes to new entity naming style (#74761) 2022-07-09 19:17:50 +02:00
Pieter Mulder 04bb2d1e5d Update pyCEC to version 0.5.2 (#74742) 2022-07-09 19:13:46 +02:00
epenet d208bd461d Migrate Renault to new entity naming style (#74709) 2022-07-09 19:12:19 +02:00
Franck Nijhof 1cf8b76124 Migrate CO2 Signal to new entity naming style (#74696) 2022-07-09 19:11:14 +02:00
Franck Nijhof 3aff5fd2e6 Migrate Open-Meteo to new entity naming style (#74695) 2022-07-09 19:08:53 +02:00
Guido Schmitz 72d134be52 Migrate devolo Home Network to new entity naming (#74741) 2022-07-09 19:05:49 +02:00
Duco Sebel 124c8e8f73 Add sensors for HomeWizard Watermeter (#74756)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-07-09 18:39:30 +02:00
Aaron Bach 85148b343d Bump regenmaschine to 2022.07.1 (#74815) 2022-07-09 10:32:15 -06:00
J. Nick Koston cd03c49fc2 Wait for config entry platform forwards (#73806) 2022-07-09 17:27:42 +02:00
Joakim Plate 3a5cca3ff2 Convert rfxtrx to entity naming (#74720) 2022-07-09 17:15:08 +02:00
Álvaro Fernández Rojas 8bf692d046 Update aioqsw to v0.1.1 (#74784) 2022-07-09 17:13:27 +02:00
Ville Skyttä a9c97e5d3a Sort huawei_lte sensor meta dict, add section separators (#74782) 2022-07-09 17:08:40 +02:00
Ville Skyttä 430d3e4604 Look for huawei_lte device MACs in a few more device info attributes (#74795) 2022-07-09 17:07:46 +02:00
Robert Hillis 79b34090e8 Bump aiopyarr to 22.7.0 (#74749) 2022-07-09 16:54:15 +02:00
Robert Hillis e17db1fd0c Remove deprecated yaml config from Steam (#74805) 2022-07-09 16:43:50 +02:00
Aaron Bach 825e696d26 Migrate Guardian to new entity naming style (#74745) 2022-07-09 16:42:32 +02:00
J. Nick Koston f4c333626e Add coverage for lutron caseta bridges to hkc (#74765) 2022-07-09 08:29:18 -05:00
Regev Brody 36357fe45d Bump pyezviz to 0.2.0.9 (#74755)
* Bump ezviz dependency to fix #74618

* Bump ezviz dependency to fix #74618

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-09 13:22:29 +02:00
GitHub Action cdaefc8fda [ci skip] Translation update 2022-07-09 00:20:23 +00:00
J. Nick Koston a697672944 Add bluetooth integration (#74653)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-07-08 18:55:31 -05:00
Paulus Schoutsen 5080246fb6 Merge pull request #74760 from home-assistant/rc 2022-07-08 16:08:11 -07:00
kpine c27fbce7d0 Fix KeyError from zwave_js diagnostics (#74579) 2022-07-09 00:20:44 +02:00
Shay Levy a3abe7456e Fix CI failure due to integrations leaving dirty known_devices.yaml (#74329) 2022-07-08 14:29:24 -07:00
Paulus Schoutsen 14c6b8d41f Bumped version to 2022.7.2 2022-07-08 14:22:45 -07:00
Benoit Anastay ea709912d4 Fix error with HDD temperature report in Freebox integration (#74718)
* Fix error whith HDD temperature report

There was a non handled error case, documented in issue https://github.com/home-assistant/core/issues/43812 back in 2020 and the fix wasn't applied

* Use get method instead of ignoring the sensor

* Update test values

Add idle state drive with unkown temp

* update Tests for system sensors api

* Fix booleans values

* Fix disk unique_id

There was a typo in the code
2022-07-08 14:22:39 -07:00
Aaron Bach cb5658d7dc Bump regenmaschine to 2022.07.0 (#74680) 2022-07-08 14:22:38 -07:00
Benoit Anastay 766523cf8c Fix error with HDD temperature report in Freebox integration (#74718)
* Fix error whith HDD temperature report

There was a non handled error case, documented in issue https://github.com/home-assistant/core/issues/43812 back in 2020 and the fix wasn't applied

* Use get method instead of ignoring the sensor

* Update test values

Add idle state drive with unkown temp

* update Tests for system sensors api

* Fix booleans values

* Fix disk unique_id

There was a typo in the code
2022-07-08 14:22:31 -07:00
Aaron Bach 0cca086aab Bump regenmaschine to 2022.07.0 (#74680) 2022-07-08 14:18:40 -07:00
Paulus Schoutsen 7b1cad223d Bump atomicwrites (#74758) 2022-07-08 14:18:19 -07:00
Robert Svensson e80fd4fc78 Bump deconz dependency to fix #74523 (#74710) 2022-07-08 14:18:18 -07:00
TheJulianJES 88d723736f Fix ZHA group not setting the correct color mode (#74687)
* Fix ZHA group not setting the correct color mode

* Changed to use _attr_color_mode
2022-07-08 14:18:18 -07:00
siyuan-nz dc33d5db82 Add ssh-rsa as acceptable an host key algorithm (#74684) 2022-07-08 14:18:17 -07:00
Kevin Stillhammer 7ffc60fb2c Add missing strings for here_travel_time (#74641)
* Add missing strings for here_travel_time

* script.translations develop

* Correct origin_menu option
2022-07-08 14:18:16 -07:00
Paulus Schoutsen 010b18be34 Bump atomicwrites (#74758) 2022-07-08 14:17:56 -07:00
Antonino Piazza 4209d7733b Add huawei_lte wifi guest network switch (#71035) 2022-07-08 23:09:03 +03:00
Allen Porter ff324ab2fb Attempt to fix flaky test by waiting for setup to complete (#74734) 2022-07-08 09:50:56 -07:00
TheJulianJES 1d69e631b5 Fix ZHA group not setting the correct color mode (#74687)
* Fix ZHA group not setting the correct color mode

* Changed to use _attr_color_mode
2022-07-08 12:47:59 -04:00
Allen Porter 08d8304a52 Migrate google calendar to new entity naming (#74727)
* Migrate google calendar to new entity naming

* Update homeassistant/components/google/calendar.py

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-07-08 07:59:50 -07:00
epenet b2a3071658 Cleanup generic in NextDNS (#74705)
Cleanup generic in nextdns
2022-07-08 16:19:32 +02:00
Kevin Stillhammer e55a4dcab1 Add missing strings for here_travel_time (#74641)
* Add missing strings for here_travel_time

* script.translations develop

* Correct origin_menu option
2022-07-08 06:16:13 -07:00
Franck Nijhof 540ffe116e Update debugpy to 1.6.2 (#74692) 2022-07-08 13:59:20 +02:00
Robert Svensson 3b3766fbe0 Bump deconz dependency to fix #74523 (#74710) 2022-07-08 12:54:09 +02:00
Franck Nijhof 3f8cfa3b0a Always run pip_check in CI (#74706) 2022-07-08 12:39:29 +02:00
siyuan-nz 06530ebfa1 Add ssh-rsa as acceptable an host key algorithm (#74684) 2022-07-08 09:51:10 +02:00
Maciej Bieniek fd7330ea77 Bump NextDNS backend library (#74611) 2022-07-08 09:48:46 +02:00
Franck Nijhof ba0b98ef32 Remove deprecated Spotify YAML configuration (#74604) 2022-07-08 08:30:01 +02:00
Paulus Schoutsen d539acf2ff Merge pull request #74689 from home-assistant/rc 2022-07-07 23:11:02 -07:00
Paulus Schoutsen 5018b91f6c Bumped version to 2022.7.1 2022-07-07 21:59:59 -07:00
Michał Mrozek b73cc32ffb Update kaiterra-async-client to 1.0.0 (#74677) 2022-07-07 21:59:54 -07:00
J. Nick Koston 937d0d731d Fix exception in doorbird logbook during startup (#74649)
* Fix exception in doorbird logbook during startup

Fixes

```
2022-07-07 16:50:33.203 ERROR (MainThread) [homeassistant.helpers.integration_platform] Error processing platform doorbird.logbook
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/integration_platform.py", line 51, in _async_process_single_integration_platform_component
    await integration_platform.process_platform(hass, component_name, platform)
  File "/usr/src/homeassistant/homeassistant/components/logbook/__init__.py", line 159, in _process_logbook_platform
    platform.async_describe_events(hass, _async_describe_event)
  File "/usr/src/homeassistant/homeassistant/components/doorbird/logbook.py", line 43, in async_describe_events
    door_station = data[DOOR_STATION]
KeyError: door_station
```

* py39
2022-07-07 21:59:53 -07:00
TheJulianJES bac9af50df Fix smart energy polling for Tuya plugs (#74640)
* Add PolledSmartEnergySummation to poll summation_delivered for some ZHA plugs

* Remove PolledSmartEnergyMetering, add stop_on_match_group to summation sensors
2022-07-07 21:59:52 -07:00
Franck Nijhof 0da09ba47e Fix mix of aiohttp and requests in ZAMG (#74628) 2022-07-07 21:59:51 -07:00
Bram Kragten cd7f2eb73e Update frontend to 20220707.0 (#74625) 2022-07-07 21:59:51 -07:00
Arne Mauer 8b01c132c1 Ikea Starkvind support all models (#74615)
* Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component

* Fixed black and flake8 test

* New sensors and manufacturer cluster to support IKEA STARKVIND (with quirk)

* Fix multi_match for FilterLifeTime, device_run_time, filter_run_time sensors for Ikea starkvind

* Remove model match because sensors are matched with manufacturer channel

* Update manufacturerspecific.py

* Update number.py
2022-07-07 21:59:50 -07:00
Erik Montnemery ed6a65156c Poll cast groups when media player is added or reconnected (#74610) 2022-07-07 21:59:49 -07:00
Franck Nijhof 5a7e506c38 Update aiokafka to 0.7.2 (#74601) 2022-07-07 21:59:48 -07:00
Franck Nijhof 9514b0f100 Fix mix of aiohttp and requests in Bloomsky (#74598) 2022-07-07 21:59:48 -07:00
Erik Montnemery fdc1b6ea9e Fix openweathermap hourly forecast (#74578) 2022-07-07 21:59:47 -07:00
Glenn Waters 174837dddf ElkM1 bump lib to support Python 3.10 SSL (#74569)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-07 21:59:46 -07:00
ufodone c9a31aab15 Bump pyenvisalink version to 4.6 (#74561) 2022-07-07 21:59:45 -07:00
Robert Hillis 606a1b57e6 Bump aioskybell to 22.7.0 (#74559) 2022-07-07 21:59:45 -07:00
jjlawren f6a23492fa Minimize Sonos media_player.unjoin timeout (#74549) 2022-07-07 21:59:44 -07:00
Joakim Plate 414ea6fd8c fjaraskupan: Make sure we stop bleak on home assistant stop (#74545)
* Make sure we stop bleak on home assistant stop

* Fix typing

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-07 21:59:43 -07:00
c-soft fa220c5c25 Bump satel_integra to 0.3.7 to fix compat with python 3.10 (#74543) 2022-07-07 21:59:43 -07:00
Robert Svensson bf5633fa43 Bump deCONZ dependency to v96 (#74460) 2022-07-07 21:59:42 -07:00
Franck Nijhof 97426911a3 Update lxml to 4.9.1 (#74663) 2022-07-07 20:50:31 -07:00
Allen Porter 561c9a77d8 Add google calendar service proper exception handling (#74686) 2022-07-07 20:50:19 -07:00
Erik Montnemery 0e3f7bc63a Resolution center MVP (#74243)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-07 20:49:07 -07:00
GitHub Action 405d323709 [ci skip] Translation update 2022-07-08 00:27:47 +00:00
Michał Mrozek 5dd8dfb4dc Update kaiterra-async-client to 1.0.0 (#74677) 2022-07-07 15:46:23 -07:00
J. Nick Koston a84d92be4d Fix climacell/tomorrowio config flow test failure (#74660) 2022-07-07 22:45:40 +02:00
Franck Nijhof 3a61a0de2e Standardize EntityDescription in DSMR (#74671) 2022-07-07 22:38:10 +02:00
Franck Nijhof 6ebdf0580b Remove last occurrences of RESULT_TYPE_* from codebase (#74670)
Remove last ocurrances of RESULT_TYPE_* from codebase
2022-07-07 22:35:06 +02:00
epenet c6bff8ae18 Remove philips_js from mypy ignore list (#74659)
* Remove philips_js from mypy ignore list

* Use class attribute
2022-07-07 22:00:19 +02:00
Franck Nijhof a6244eea28 Search/replace RESULT_TYPE_* by FlowResultType enum (#74656) 2022-07-07 21:28:18 +02:00
Franck Nijhof 46beae9061 Bump number of test groups from 6 -> 10 (#74648) 2022-07-07 20:55:47 +02:00
Kostas Chatzikokolakis 3f53ed5d5c Add trigger/arm_custom_bypass to Template Alarm Control Panel (#74629) 2022-07-07 20:31:03 +02:00
Arne Mauer d8030ed9e7 Ikea Starkvind support all models (#74615)
* Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component

* Fixed black and flake8 test

* New sensors and manufacturer cluster to support IKEA STARKVIND (with quirk)

* Fix multi_match for FilterLifeTime, device_run_time, filter_run_time sensors for Ikea starkvind

* Remove model match because sensors are matched with manufacturer channel

* Update manufacturerspecific.py

* Update number.py
2022-07-07 14:28:33 -04:00
TheJulianJES b9b6ed33ee Fix smart energy polling for Tuya plugs (#74640)
* Add PolledSmartEnergySummation to poll summation_delivered for some ZHA plugs

* Remove PolledSmartEnergyMetering, add stop_on_match_group to summation sensors
2022-07-07 14:27:48 -04:00
Robert Svensson ac85a3ce64 Use pydeconz interface controls for button platform (#74654) 2022-07-07 21:13:03 +03:00
epenet bd43f0393c Remove influxdb from mypy ignore list (#74612) 2022-07-07 20:51:38 +03:00
epenet dc0c41982f Remove meteo_france from mypy ignore list (#74613) 2022-07-07 20:50:08 +03:00
Franck Nijhof f2706aa8c0 Update debugpy to 1.6.1 (#74637) 2022-07-07 20:48:39 +03:00
J. Nick Koston ff877b8144 Fix exception in doorbird logbook during startup (#74649)
* Fix exception in doorbird logbook during startup

Fixes

```
2022-07-07 16:50:33.203 ERROR (MainThread) [homeassistant.helpers.integration_platform] Error processing platform doorbird.logbook
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/integration_platform.py", line 51, in _async_process_single_integration_platform_component
    await integration_platform.process_platform(hass, component_name, platform)
  File "/usr/src/homeassistant/homeassistant/components/logbook/__init__.py", line 159, in _process_logbook_platform
    platform.async_describe_events(hass, _async_describe_event)
  File "/usr/src/homeassistant/homeassistant/components/doorbird/logbook.py", line 43, in async_describe_events
    door_station = data[DOOR_STATION]
KeyError: door_station
```

* py39
2022-07-07 20:46:19 +03:00
Glenn Waters d3db4da11a ElkM1 bump lib to support Python 3.10 SSL (#74569)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-07 12:07:05 -05:00
Franck Nijhof 7cd68381f1 Search/replace RESULT_TYPE_* by FlowResultType enum (#74642) 2022-07-07 19:57:36 +03:00
Franck Nijhof 68ccb96089 Refactor CI (#74014) 2022-07-07 18:53:24 +02:00
J. Nick Koston 1dd9e705f2 Switch dispatcher to use async_run_hass_job (#74514)
* Switch dispatcher to use async_run_hass_job

- Since we already wrap all the callbacks in catch_log_exception
  we can use async_run_hass_job here

- The overhead of wrapping the call in a call_soon, queuing it
  and running it later usually exceeds the overhead of running
  the job itself

* fix size change during iteration

* fix out of order send

* fix missing mocking in unifi test

* Fix Legrand Home+ Control updating entities before the coordinator update had finished

* stray debug
2022-07-07 10:39:05 -05:00
Franck Nijhof 323d4a0e1b Use FlowResultType enum in Plugwise tests (#74638) 2022-07-07 17:25:23 +02:00
Franck Nijhof c01f7d75d5 Fix mix of aiohttp and requests in ZAMG (#74628) 2022-07-07 16:59:49 +02:00
Diogo Gomes 4e2de2479a Add SetSystemDateandTime Button (#66419)
* add SetSystemDateandTime

* fix

* address review

* follow recommendation to set date and time on start

* add set date and time button test
2022-07-07 16:25:44 +02:00
Bram Kragten 29cbd9d469 Update frontend to 20220707.0 (#74625) 2022-07-07 16:19:56 +02:00
Franck Nijhof dfdd037878 Update aiokafka to 0.7.2 (#74601) 2022-07-07 08:02:36 -06:00
epenet 6540ba6239 Remove hassio from mypy ignore list (#74603)
* Remove hassio from mypy ignore list

* Avoid if TYPE_CHECKING
2022-07-07 15:14:36 +02:00
Erik Montnemery 996544da2d Poll cast groups when media player is added or reconnected (#74610) 2022-07-07 14:51:16 +02:00
Franck Nijhof 2169b70874 Use FlowResultType enum in WLED tests (#74594) 2022-07-07 12:31:54 +02:00
Franck Nijhof 4fcf8280f6 Use FlowResultType enum in Tuya tests (#74596) 2022-07-07 12:31:19 +02:00
Franck Nijhof 19f33d205c Fix mix of aiohttp and requests in Bloomsky (#74598) 2022-07-07 12:27:25 +02:00
jjlawren ba7ad1029c Remove legacy Sonos grouping services (#74476) 2022-07-07 12:17:13 +02:00
epenet f19c542d6d Remove denonavr from mypy ignore list (#74580) 2022-07-07 12:14:46 +02:00
Franck Nijhof 4604694255 Add deprecation to PR template (#74583) 2022-07-07 11:40:17 +02:00
epenet 5ae593672e Remove google_assistant from mypy ignore list (#74587) 2022-07-07 11:35:45 +02:00
Franck Nijhof 4261595078 Update orjson to 3.7.7 (#74581) 2022-07-07 11:00:34 +02:00
J. Nick Koston 0c29b68cf8 Switch linear search to a dict lookup for ip bans (#74482) 2022-07-07 10:57:44 +02:00
puddly ae295f1bf5 Add three decimal places of sub-second resolution to root logger timestamps (#74518) 2022-07-07 10:49:32 +02:00
jjlawren d203cb0658 Minimize Sonos media_player.unjoin timeout (#74549) 2022-07-07 09:43:10 +02:00
Robert Hillis 681735b94c Bump aioskybell to 22.7.0 (#74559) 2022-07-07 09:39:37 +02:00
ufodone e56357b4f2 Bump pyenvisalink version to 4.6 (#74561) 2022-07-07 09:33:32 +02:00
epenet 46f2abc38c Use generics in NextDNS (#74517)
Use generics in nextdns
2022-07-07 09:22:35 +02:00
Erik Montnemery 4a4dabaaa5 Fix openweathermap hourly forecast (#74578) 2022-07-07 09:03:43 +02:00
Joakim Plate 104d236646 fjaraskupan: Make sure we stop bleak on home assistant stop (#74545)
* Make sure we stop bleak on home assistant stop

* Fix typing

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-07 08:40:10 +02:00
Franck Nijhof c303d6e717 Merge branch 'master' into dev 2022-07-07 08:25:19 +02:00
GitHub Action 235abb0c10 [ci skip] Translation update 2022-07-07 00:27:55 +00:00
c-soft fef78939e1 Bump satel_integra to 0.3.7 to fix compat with python 3.10 (#74543) 2022-07-06 19:02:08 -05:00
J. Nick Koston 099e7e0637 Add oui for tplink es20m (#74526) 2022-07-07 01:20:29 +02:00
Robert Svensson b071affcb4 Use pydeconz interface controls for cover platform (#74535) 2022-07-07 00:31:47 +02:00
epenet 5e63a44e71 Remove home_plus_control from mypy ignore list (#74448) 2022-07-06 22:45:54 +03:00
J. Nick Koston 332cf3cd2d Resolve and caches paths for CachingStaticResource in the executor (#74474) 2022-07-06 13:49:48 -05:00
Franck Nijhof eb0f8f9542 Merge pull request #74522 from home-assistant/rc 2022-07-06 20:32:56 +02:00
Franck Nijhof 06c6ddb2d6 Bumped version to 2022.7.0 2022-07-06 19:33:46 +02:00
Franck Nijhof 8e5b6ff185 Update Home Assistant Frontend to 20220706.0 (#74520)
Bump Home Assistant Frontend to 20220706.0
2022-07-06 19:33:27 +02:00
Franck Nijhof 380244fa7b Update homematicip to 1.0.3 (#74516) 2022-07-06 19:33:23 +02:00
Erik Montnemery 9d3dde60ff Fix openweathermap forecast sensors (#74513) 2022-07-06 19:33:20 +02:00
Gyosa3 519d15428c Add new alias for valid Celcius temperature units in Tuya (#74511) 2022-07-06 19:33:17 +02:00
Marcel van der Veldt b277c28ed7 Bump aioslimproto to 2.1.1 (#74499) 2022-07-06 19:33:14 +02:00
Erik Montnemery c7c8887719 Migrate aemet weather to native_* (#74494) 2022-07-06 19:33:10 +02:00
J. Nick Koston 06aa92b0b6 Bump aiohomekit to 0.7.20 (#74489) 2022-07-06 19:33:07 +02:00
J. Nick Koston cd42555238 Fix apple tv not coming online if connected before entity created (#74488) 2022-07-06 19:33:03 +02:00
Franck Nijhof 113ccfe6af Update Home Assistant Frontend to 20220706.0 (#74520)
Bump Home Assistant Frontend to 20220706.0
2022-07-06 19:31:57 +02:00
Franck Nijhof d3d2e25090 Update homematicip to 1.0.3 (#74516) 2022-07-06 18:34:51 +02:00
Erik Montnemery d6df26465f Fix openweathermap forecast sensors (#74513) 2022-07-06 17:49:06 +02:00
Gyosa3 85dac3d47e Add new alias for valid Celcius temperature units in Tuya (#74511) 2022-07-06 17:48:12 +02:00
Maciej Bieniek 41fd1a24bb Add NextDNS button platform (#74492)
* Add button platform

* Add button tests

* Fix typo

* Use Platform enum

* Fix coordinator type
2022-07-06 16:29:53 +02:00
Erik Montnemery 47048e4df4 Migrate aemet weather to native_* (#74494) 2022-07-06 16:22:45 +02:00
Maciej Bieniek 8ccb008834 Address NextDNS late review (#74503)
* Fix coordinator type

* Remove pylint disable
2022-07-06 14:29:26 +02:00
Marcel van der Veldt c4855909fa Bump aioslimproto to 2.1.1 (#74499) 2022-07-06 13:35:25 +02:00
Lerosen 8b97271c26 Telegram bot map user data for callback query (#74302)
fix(component/telegram-bot): map user data for callback query
2022-07-06 11:21:15 +02:00
epenet 8fb9b45e42 Remove input_datetime from mypy ignore list (#74447)
* Remove input_datetime from mypy ignore list

* Use assert

* Use cast

* Use common logic for initial parsing
2022-07-06 10:26:24 +02:00
epenet a27d483009 Remove unifi from mypy ignore list (#74456)
* Remove unifi diagnostics from mypy ignore list

* Remove unifi init from mypy ignore list

* Remove unifi device tracker from mypy ignore list

* Adjust doc string

* Adjust doc string

* Remove unifi entity base from mypy ignore list

* Keep comprehension

* Remove unifi config flow from mypy ignore list

* Fix circular import
2022-07-06 10:25:53 +02:00
Robert Svensson ef6fd78ede Use FlowResultType in Axis config flow tests (#74496) 2022-07-06 09:54:26 +02:00
Guido Schmitz 1b37d9cbc6 Use FlowResultType in Devolo Home Control tests (#74490)
* Use FlowResultType in devolo Home Control tests

* Add return types
2022-07-06 09:52:41 +02:00
Robert Svensson 05416f56aa Use FlowResultType in deCONZ config flow tests (#74495) 2022-07-06 09:45:30 +02:00
J. Nick Koston 148035c8ca Bump aiohomekit to 0.7.20 (#74489) 2022-07-06 00:52:41 -05:00
J. Nick Koston ce35324e73 Cache the response from config/entity_registry/list (#74443) 2022-07-05 21:11:51 -07:00
J. Nick Koston 8dfb0cb4e7 Fix SIGN_QUERY_PARAM in check in auth_middleware (#74479) 2022-07-05 21:09:33 -07:00
J. Nick Koston 3875fc5953 Cache the response from config/device_registry/list (#74483) 2022-07-05 21:08:39 -07:00
J. Nick Koston df6892b908 Offer HKC local push control option when there are multiple zeroconf homekit matches (#74441) 2022-07-05 21:02:18 -07:00
J. Nick Koston 3d63d4fb36 Fix apple tv not coming online if connected before entity created (#74488) 2022-07-05 23:00:40 -05:00
Maciej Bieniek a70cb8af78 Add NextDNS diagnostics platform (#74367)
Add diagnostics platform
2022-07-05 20:14:56 -07:00
Maciej Bieniek a2a4361d6e Address late comment for NextDNS (#74365)
* Simplify code

* Use async_config_entry_first_refresh()

* Use lambda to get value
2022-07-05 20:12:09 -07:00
Maciej Bieniek f5e3344bfc Add NextDNS system health (#74368)
Add system_health
2022-07-05 20:10:04 -07:00
GitHub Action 2e81be7721 [ci skip] Translation update 2022-07-06 00:27:50 +00:00
Paulus Schoutsen 56e90dd30b Bumped version to 2022.7.0b5 2022-07-05 13:56:38 -07:00
Erik Montnemery 89360516d7 Revert "Migrate aemet to native_*" (#74471) 2022-07-05 13:56:34 -07:00
Zack Barett 9cbb684d50 Bump Frontend to 20220705.0 (#74467) 2022-07-05 13:56:33 -07:00
J. Nick Koston 43fe351f1b Avoid loading mqtt for type checking (#74464) 2022-07-05 13:56:32 -07:00
J. Nick Koston 59aba0bc75 Bump aiohomekit to 0.7.19 (#74463) 2022-07-05 13:56:32 -07:00
Erik Montnemery a7158fee67 Revert "Migrate aemet to native_*" (#74471) 2022-07-05 22:24:08 +02:00
epenet cbe9eda0a8 Remove lyric from mypy ignore list (#74451) 2022-07-05 13:24:18 -05:00
G Johansson 89ab78371f Bump Sensibo dependency (#74466) 2022-07-05 13:18:14 -05:00
J. Nick Koston e4fd5100c4 Bump aiohomekit to 0.7.19 (#74463) 2022-07-05 19:43:38 +02:00
Zack Barett 87d7c024bf Bump Frontend to 20220705.0 (#74467) 2022-07-05 19:43:10 +02:00
J. Nick Koston e7b2d4672c Avoid loading mqtt for type checking (#74464) 2022-07-05 10:27:27 -07:00
Robert Svensson b590e51f88 Bump deCONZ dependency to v96 (#74460) 2022-07-05 18:54:03 +02:00
Paulus Schoutsen 98d5c415b3 Bumped version to 2022.7.0b4 2022-07-05 08:50:00 -07:00
Franck Nijhof c79b741971 Re-introduce default scan interval in Scrape sensor (#74455) 2022-07-05 08:49:47 -07:00
Arne Mauer c933a49c71 Fix multi_match to match with the IKEA airpurifier channel (#74432)
Fix multi_match for FilterLifeTime, device_run_time, filter_run_time sensors for ikea starkvind
2022-07-05 08:49:46 -07:00
epenet 18b3ffbf99 Remove lutron_caseta from mypy ignore list (#74427) 2022-07-05 08:49:25 -07:00
J. Nick Koston 54516ee939 Bump pyunifiprotect to 4.0.9 (#74424) 2022-07-05 08:47:15 -07:00
J. Nick Koston 82b9eae882 Bump rflink to 0.0.63 (#74417) 2022-07-05 08:47:14 -07:00
Erik Montnemery edb5c7d2c8 Correct climacell weather migration to native_* (#74409) 2022-07-05 08:47:13 -07:00
Erik Montnemery 3ff0218326 Migrate accuweather weather to native_* (#74407) 2022-07-05 08:47:12 -07:00
Shay Levy db83c78478 Bump aioimaplib to 1.0.0 (#74393) 2022-07-05 08:47:11 -07:00
Erik Montnemery 25639ccf25 Migrate meteoclimatic weather to native_* (#74392) 2022-07-05 08:47:10 -07:00
Erik Montnemery 6ba06c0f53 Migrate met_eireann weather to native_* (#74391)
Co-authored-by: avee87 <6134677+avee87@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-07-05 08:47:10 -07:00
Erik Montnemery d0a86b3cd2 Migrate ipma weather to native_* (#74387) 2022-07-05 08:47:09 -07:00
Erik Montnemery f0993ca4a8 Migrate knx weather to native_* (#74386) 2022-07-05 08:47:08 -07:00
Paulus Schoutsen bb84484096 Guard invalid data sensor significant change (#74369) 2022-07-05 08:47:07 -07:00
Kevin Stillhammer ce04480e60 Support unload for multiple adguard entries (#74360) 2022-07-05 08:47:07 -07:00
David Brückmann a90654bd63 Fix unreachable DenonAVR reporting as available when polling fails (#74344) 2022-07-05 08:47:06 -07:00
Erik Montnemery 3aafa0cf49 Migrate aemet to native_* (#74037) 2022-07-05 08:47:05 -07:00
J. Nick Koston f6cb2833ca Improve fans in homekit_controller (#74440) 2022-07-05 09:25:30 -05:00
Franck Nijhof 809f101f55 Re-introduce default scan interval in Scrape sensor (#74455) 2022-07-05 13:41:33 +02:00
epenet a1a887ddac Add GeolocationEvent checks to pylint plugin (#74286) 2022-07-05 12:27:00 +02:00
David Brückmann b5c5531180 Fix unreachable DenonAVR reporting as available when polling fails (#74344) 2022-07-05 12:25:20 +02:00
Arne Mauer f975d30258 Fix multi_match to match with the IKEA airpurifier channel (#74432)
Fix multi_match for FilterLifeTime, device_run_time, filter_run_time sensors for ikea starkvind
2022-07-05 10:35:05 +02:00
J. Nick Koston 6422040262 Remove asserts from lutron_caseta async_attach_trigger (#74429) 2022-07-05 09:51:53 +02:00
dependabot[bot] 2ee5ac02cf Bump home-assistant/builder from 2022.06.2 to 2022.07.0 (#74446)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-05 09:50:36 +02:00
Rami Mosleh b09aaba421 Add type hints and code cleanup for mikrotik (#74296)
* Add type hints and code cleanup for mikrotik

* update test and increase coverage

* move setup_mikrotik_entry to __init__.py
2022-07-05 09:16:38 +02:00
epenet 110d9232cd Remove melcloud from mypy ignore list (#74410) 2022-07-04 23:05:53 -07:00
GitHub Action ebc8fba5bf [ci skip] Translation update 2022-07-05 00:23:09 +00:00
Ville Skyttä dd6725b80a Replace pylint-strict-informational with fail-on=I (#74311)
`fail-on` is available since pylint 2.9.0.

https://pylint.pycqa.org/en/latest/user_guide/configuration/all-options.html#fail-on
https://github.com/PyCQA/pylint/issues/3251#issuecomment-1170941337

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-04 23:04:56 +02:00
epenet a7da8673bf Use instance attributes in usgs_earthquakes_feed (#74403) 2022-07-04 21:26:33 +02:00
epenet 560fbd1a0e Remove lutron_caseta from mypy ignore list (#74427) 2022-07-04 14:10:26 -05:00
epenet 02a0b8b649 Add more type hints to demo (#74408) 2022-07-04 20:59:52 +02:00
J. Nick Koston e02574c6d9 Bump pyunifiprotect to 4.0.9 (#74424) 2022-07-04 20:53:25 +02:00
epenet 1536936177 Remove harmony from mypy ignore list (#74425) 2022-07-04 13:39:14 -05:00
avee87 b3fec4c401 Typehints and cleanup for metoffice (#74338)
* Typehints and cleanup for metoffice

* add myself as owner
2022-07-04 19:12:41 +03:00
J. Nick Koston b082764e30 Bump rflink to 0.0.63 (#74417) 2022-07-04 10:36:56 -05:00
Erik Montnemery fde829c4f0 Correct climacell weather migration to native_* (#74409) 2022-07-04 16:59:36 +02:00
epenet e3bd63934b Remove gree from mypy ignore list (#74411) 2022-07-04 16:47:35 +02:00
epenet 035e96a79b Remove system_health from mypy ignore list (#74415) 2022-07-04 16:46:59 +02:00
epenet 18840c8af5 Add instance attributes to GeolocationEvent (#74389) 2022-07-04 16:43:53 +02:00
J. Nick Koston 8d0e54d776 Use the orjson equivalent default encoder when save_json is passed the default encoder (#74377) 2022-07-04 08:41:23 -05:00
Erik Montnemery 4e1359e2cc Migrate ipma weather to native_* (#74387) 2022-07-04 15:18:57 +02:00
Erik Montnemery 5f5f1343cd Migrate accuweather weather to native_* (#74407) 2022-07-04 15:12:45 +02:00
Guido Schmitz 402a40c108 Remove explicit use of mock_zeroconf in devolo Home Network (#74390) 2022-07-04 14:59:24 +02:00
J. Nick Koston 6c3baf03aa Make dispatcher setup lazy (#74374) 2022-07-04 14:58:35 +02:00
Kevin Stillhammer dd57d7d77f Support unload for multiple adguard entries (#74360) 2022-07-04 14:24:21 +02:00
Erik Montnemery 1c0ece6ac1 Migrate met_eireann weather to native_* (#74391)
Co-authored-by: avee87 <6134677+avee87@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-07-04 14:20:47 +02:00
epenet 14e5001d0c Cleanup known_devices.yaml in device_tracker tests (#74404) 2022-07-04 14:10:25 +02:00
Erik Montnemery 0768ed453d Migrate aemet to native_* (#74037) 2022-07-04 14:06:32 +02:00
Erik Montnemery ab37f59345 Migrate meteoclimatic weather to native_* (#74392) 2022-07-04 13:38:53 +02:00
Franck Nijhof b5387ed769 Update Pillow to 9.2.0 (#74371) 2022-07-04 13:16:01 +02:00
Shay Levy f851877449 Bump aioimaplib to 1.0.0 (#74393) 2022-07-04 13:14:27 +02:00
Thanasis 227d8b69a7 Allowing for TOON cost sensors to work with Energy (#74315) 2022-07-04 13:11:36 +02:00
Erik Montnemery 07f677e9e8 Migrate knx weather to native_* (#74386) 2022-07-04 10:47:59 +02:00
J. Nick Koston 810b2a2bd6 Inline building entity registry dict (#74378) 2022-07-04 00:36:42 -05:00
Paulus Schoutsen b62c0dcb32 Guard invalid data sensor significant change (#74369) 2022-07-03 22:03:13 -07:00
GitHub Action 269e414e84 [ci skip] Translation update 2022-07-04 00:27:42 +00:00
J. Nick Koston 02c7261b74 Small naming improvements and basic tests for ecobee 501s (#74370) 2022-07-03 16:32:30 -05:00
Paulus Schoutsen b7a02d9465 Bumped version to 2022.7.0b3 2022-07-03 13:56:29 -07:00
shbatm c530e965f8 Onvif: bump onvif-zeep-async to 1.2.1 (#74341)
* Update requirements_all.txt

* Update requirements_test_all.txt

* Update manifest.json
2022-07-03 13:56:24 -07:00
J. Nick Koston c2072cc92b Fix esphome state mapping (#74337) 2022-07-03 13:56:24 -07:00
G Johansson 2a1a6301a9 Fix unique id issue for OpenWeatherMap (#74335) 2022-07-03 13:56:23 -07:00
Franck Nijhof fe437cc9b7 Add configuration directory to system health (#74318) 2022-07-03 13:56:22 -07:00
avee87 ec03631339 Remove visibility from metoffice weather (#74314)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-03 13:56:21 -07:00
avee87 0ca4e81e13 Migrate metoffice to native_* (#74312) 2022-07-03 13:56:20 -07:00
Paulus Schoutsen 08ee73d671 Guard creating areas in onboarding (#74306) 2022-07-03 13:56:20 -07:00
mbo18 373347950c Migrate Meteo_france to native_* (#74297) 2022-07-03 13:56:19 -07:00
Dave T 4e793a51ba Dont substitute user/pass for relative stream urls on generic camera (#74201)
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-07-03 13:56:18 -07:00
G Johansson d91f5b77c8 Fix unique id issue for OpenWeatherMap (#74335) 2022-07-03 13:53:44 -07:00
mbo18 5bd9c5aee8 Migrate Meteo_france to native_* (#74297) 2022-07-03 13:49:03 -07:00
J. Nick Koston 40ed44cbea Fix esphome state mapping (#74337) 2022-07-03 13:48:34 -07:00
J. Nick Koston 30a5df5895 Append name char value from the service to HomeKit Controller Entities (#74359) 2022-07-03 15:47:54 -05:00
Dave T 737a1fd9fa Dont substitute user/pass for relative stream urls on generic camera (#74201)
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-07-03 13:26:00 -07:00
Franck Nijhof 57114c1a55 Add tomli as nightly build dependency (#74364) 2022-07-03 22:16:29 +02:00
Franck Nijhof 936b271448 Fix typo in nightly build (#74363) 2022-07-03 22:06:50 +02:00
Maciej Bieniek 84119eefaa Add NextDNS integration (#74150)
* Initial commit

* Update manifest

* Add first test

* Simplify init

* More tests

* Update tests

* More tests

* More tests

* Add tests for sensor platform

* More tests for sensor platform

* Add tests for system_health

* Fix typo

* Improve test coverage

* Improve test coverage

* Add tests for diagnostics

* Add comment

* Run hassfest

* Fix typo

* Run gen_requirements_all

* Fix tests

* Change key name in diagnostics

* Remove diagnostics and system_health platforms

* Bump library
2022-07-03 09:51:50 -07:00
Michał Huryn e7e940afa5 Address Blebox uniapi review sidenotes (#74298)
* Changes accordingly to sidenotes given by @MartinHjelmare in pull #73834.

* Mini version bump according to notes in pull #73834.

* Error message fix, test adjustment.
2022-07-03 17:06:38 +02:00
Allen Porter a4c6cd2fbe Cleanup Google Calendar unused test fixtures (#74353) 2022-07-03 17:05:38 +02:00
mbo18 5919082a53 Expose temperature and humidity sensors from AC (#74328)
Expose temperature and humidity from AC
2022-07-03 07:47:06 -07:00
shbatm 820a782f94 Onvif: bump onvif-zeep-async to 1.2.1 (#74341)
* Update requirements_all.txt

* Update requirements_test_all.txt

* Update manifest.json
2022-07-02 21:38:48 -04:00
GitHub Action 8581db1da7 [ci skip] Translation update 2022-07-03 00:26:52 +00:00
avee87 98052646f2 Remove visibility from metoffice weather (#74314)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-02 13:42:58 -07:00
avee87 08c2bd82bd Migrate metoffice to native_* (#74312) 2022-07-02 13:27:47 -07:00
Franck Nijhof 3bebbf7970 Add configuration directory to system health (#74318) 2022-07-02 13:10:38 -07:00
David Barshow c24c6b38b1 Support climate reproduce state fan_mode (#74317)
climate reproduce state fan_mode support
2022-07-02 13:04:38 -07:00
Álvaro Fernández Rojas d9b326dd48 Remove duplicated QNAP QSW format_mac call in config_flow (#74333)
qnap_qsw: config_flow: remove duplicated format_mac

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-07-02 22:44:20 +03:00
Shay Levy d56a487169 Fix CI failure due to integrations leaving dirty known_devices.yaml (#74329) 2022-07-02 11:20:40 -07:00
epenet 64bfa20f6a Improve type hints in mqtt (#74295) 2022-07-02 20:15:54 +03:00
Franck Nijhof 6f67ae1dfc Add nightly frontend to nightly builds (#74327) 2022-07-02 09:04:35 -07:00
Frank 2464322dc5 Address HomeConnect late review (#74308)
* Small changes as requested in PR 58768

* Fix ValueError message formatting

* Use f-string

* Remove None as return type of _get_appliance_by_device_id

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-02 16:06:07 +02:00
atlflyer da11cef29a Report error code in log when command fails (#74319) 2022-07-02 09:58:08 -04:00
Khole 255c3c5b9a Hive add entity categories to entities (#74324)
add enitity categories to entities
2022-07-02 08:33:10 -04:00
GitHub Action 647a023776 [ci skip] Translation update 2022-07-02 00:25:27 +00:00
Paulus Schoutsen 810e29f1ef Guard creating areas in onboarding (#74306) 2022-07-01 11:01:07 -07:00
Paulus Schoutsen bc41832c71 Bumped version to 2022.7.0b2 2022-07-01 10:12:02 -07:00
J. Nick Koston 2305c625fb Revert scrape changes to 2022.6.6 (#74305) 2022-07-01 10:11:57 -07:00
Álvaro Fernández Rojas 877803169b Fix QNAP QSW DHCP discover bugs (#74291)
qnqp_qsw: fix DHCP discover bugs

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-07-01 10:11:56 -07:00
Paulus Schoutsen 4817f9f905 Add scan interval to scrape sensor (#74285) 2022-07-01 10:11:55 -07:00
David F. Mulcahey 78e5296d07 Fix bad conditional in ZHA logbook (#74277)
* Fix bad conditional in ZHA logbook

* change syntax
2022-07-01 10:11:55 -07:00
J. Nick Koston b61530742e Fix key collision between platforms in esphome state updates (#74273) 2022-07-01 10:11:54 -07:00
Christopher Hoage 1351b83731 Bump venstarcolortouch to 0.17 (#74271) 2022-07-01 10:11:53 -07:00
Joakim Plate 135d104430 Bump pyRFXtrx to 0.30.0 (#74146) 2022-07-01 10:11:51 -07:00
J. Nick Koston 1288085b31 Revert scrape changes to 2022.6.6 (#74305) 2022-07-01 10:10:40 -07:00
epenet 9211ba8371 Improve type hints in template (#74294) 2022-07-01 10:05:37 -07:00
danaues 72917f1d2c Lutron caseta ra3keypads (#74217)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-07-01 10:39:00 -05:00
Álvaro Fernández Rojas c0ea1a38a6 Fix QNAP QSW DHCP discover bugs (#74291)
qnqp_qsw: fix DHCP discover bugs

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-07-01 11:52:46 +02:00
Álvaro Fernández Rojas a58301a97d Improve qnap_qsw firmware coordinator failures (#74288)
qnap_qsw: update: improve firmware coordinator failures

Address late comments from @MartinHjelmare (MartinHjelmare).

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-07-01 09:48:59 +02:00
Paulus Schoutsen c78c159d72 Add scan interval to scrape sensor (#74285) 2022-07-01 09:40:05 +02:00
BrianWithAHat 7094b7e62f Bump quantum_gateway to v0.0.8. (#74284) 2022-07-01 09:17:27 +02:00
J. Nick Koston 57b63db567 Improve typing for device_automation (#74282) 2022-07-01 01:23:00 -05:00
Stefan Rado 273e9b287f Add config flow for Bose SoundTouch (#72967)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-30 22:20:00 -07:00
J. Nick Koston 7655b84494 Fix key collision between platforms in esphome state updates (#74273) 2022-06-30 22:19:40 -07:00
Guido Schmitz 43595f7e17 Add light tests for devolo_home_control (#74183) 2022-06-30 21:08:21 -07:00
GitHub Action 3970639c34 [ci skip] Translation update 2022-07-01 00:27:03 +00:00
rappenze 7eae3691c2 Add device info to fibaro integration (#73352) 2022-06-30 14:57:35 -07:00
Alberto Geniola 73a0197cac Elmax/sensor platform (#64090) 2022-06-30 14:55:57 -07:00
epenet 2c171e30fa Add ClimateEntity checks to pylint plugin (#74275)
* Add ClimateEntity checks to pylint plugin

* Update pylint/plugins/hass_enforce_type_hints.py
2022-06-30 14:49:23 -07:00
Joakim Plate 11cdf542ac Bump pyRFXtrx to 0.30.0 (#74146) 2022-06-30 14:48:50 -07:00
Khole 4f842014ee Add ability to forget hive device when removing integration (#74144) 2022-06-30 14:47:02 -07:00
David F. Mulcahey 269fa14721 Fix bad conditional in ZHA logbook (#74277)
* Fix bad conditional in ZHA logbook

* change syntax
2022-06-30 23:59:35 +03:00
Christopher Hoage dc559f2439 Bump venstarcolortouch to 0.17 (#74271) 2022-06-30 22:06:22 +02:00
epenet f80d522c6a Add Camera checks to pylint plugin (#74264) 2022-06-30 21:50:57 +02:00
mbo18 24d2d62121 Add vacation mode to Template Alarm Control Panel (#74261) 2022-06-30 12:22:03 -07:00
Guido Schmitz 7656ca8313 Add presence detection to devolo_home_network (#72030) 2022-06-30 12:12:12 -07:00
epenet 8ef87205f9 Improve type hints in mqtt (#74247) 2022-06-30 21:11:45 +02:00
Rami Mosleh 9a9fea4423 Migrate glances unique_id to new format (#74033) 2022-06-30 12:10:19 -07:00
Álvaro Fernández Rojas 768b98ae77 Add QNAP QSW Update platform (#71019)
* qnap_qsw: add Update platform

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

* qnap_qsw: update: allow init if firmware coordinator fails

QSW API can return an error if update servers aren't reachable and this
prevents the integration from loading.

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

* tests: qnap_qsw: achieve 100% coverage

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-06-30 12:09:08 -07:00
Erik J. Olson 0caeeb56c5 Add Matrix.io HTML message format support (#69951) 2022-06-30 12:00:29 -07:00
epenet 1bfd8b1a76 Add enforce_type_hints to vscode tasks (#74227) 2022-06-30 20:49:41 +02:00
R. de Veen 3899c9e6d3 Links to Esphomelib.com is changed to esphome.io (#72680) 2022-06-30 20:27:31 +02:00
Franck Nijhof e3d250a623 Do not pin numpy in wheels (#74268) 2022-06-30 20:12:58 +02:00
Paulus Schoutsen 762fe17f48 Bumped version to 2022.7.0b1 2022-06-30 11:02:38 -07:00
Zack Barett 4755f00549 Bump frontend to 20220630.0 (#74266) 2022-06-30 11:02:22 -07:00
Phil Bruckner 3db1552f26 Fix Life360 unload (#74263)
* Fix life360 async_unload_entry

* Update tracked_members when unloading config entry
2022-06-30 11:02:22 -07:00
J. Nick Koston 6f63cd731b Add debug logging to esphome state updates (#74260) 2022-06-30 11:02:21 -07:00
G Johansson 249af3a78d Met.no use native_* (#74259) 2022-06-30 11:02:20 -07:00
J. Nick Koston d47e1d28de Filter out CONF_SCAN_INTERVAL from scrape import (#74254) 2022-06-30 11:02:19 -07:00
Franck Nijhof 00468db5af Update numpy to 1.23.0 (#74250) 2022-06-30 11:02:18 -07:00
David F. Mulcahey 15149f4aa1 Fix ZHA events for logbook (#74245) 2022-06-30 11:02:18 -07:00
Erik Montnemery e1fc2ed046 Fire event_mqtt_reloaded only after reload is completed (#74226) 2022-06-30 11:02:17 -07:00
Erik Montnemery a36a2d53ec Correct native_pressure_unit for zamg weather (#74225) 2022-06-30 11:02:16 -07:00
Allen Porter 518468a70b Allow legacy nest integration with no configuration.yaml (#74222) 2022-06-30 11:02:15 -07:00
Pierre Ståhl b71205acd7 Make media_player.toggle turn on a standby device (#74221) 2022-06-30 11:02:14 -07:00
Paulus Schoutsen e3b99fe62a Treat thermostat unknown state like unavailable in alexa (#74220) 2022-06-30 11:02:13 -07:00
Franck Nijhof f4df584f13 Fix input_number invalid state restore handling (#74213)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-30 11:02:11 -07:00
Franck Nijhof 1e8c897702 Update requests to 2.28.1 (#74210) 2022-06-30 11:02:11 -07:00
J. Nick Koston b135560274 Allow tuple subclasses to be json serialized (#74207) 2022-06-30 11:02:10 -07:00
Jesse Hills dbe552b1a1 ESPHome use dhcp responses to update connection host of known devices (#74206)
* ESPHome use dhcp responses to update connection host of known devices

* Add test for dhcp

* Add another test to cover when there are no changes required
2022-06-30 11:02:09 -07:00
Christopher Bailey d36643947d Fix duplicate key for motion sensor for UniFi Protect (#74202) 2022-06-30 11:02:08 -07:00
Shay Levy 9d727d2a71 Fix Shelly Duo RGBW color mode attribute (#74193) 2022-06-30 11:02:07 -07:00
Franck Nijhof 7690ecc4ff Fix clicksend request content type headers (#74189) 2022-06-30 11:02:07 -07:00
MasonCrawford 71c2f99ee4 Add config flow to lg_soundbar (#71153)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-30 11:02:06 -07:00
Zack Barett 382b5d5073 Bump frontend to 20220630.0 (#74266) 2022-06-30 11:01:23 -07:00
G Johansson 25a5ebe0c7 Met.no use native_* (#74259) 2022-06-30 10:47:29 -07:00
Maximilian dc22726425 Optimize optionflow tests (#74262)
* Optimize optionflow tests

* Extend mocking
2022-06-30 19:45:11 +02:00
J. Nick Koston 2723ca0b85 Filter out CONF_SCAN_INTERVAL from scrape import (#74254) 2022-06-30 10:39:36 -07:00
Erik Montnemery f05b4a0ca0 Fire event_mqtt_reloaded only after reload is completed (#74226) 2022-06-30 10:15:25 -07:00
Phil Bruckner 1bdd93cc77 Fix Life360 unload (#74263)
* Fix life360 async_unload_entry

* Update tracked_members when unloading config entry
2022-06-30 19:10:05 +02:00
Jesse Hills f311d53c60 ESPHome use dhcp responses to update connection host of known devices (#74206)
* ESPHome use dhcp responses to update connection host of known devices

* Add test for dhcp

* Add another test to cover when there are no changes required
2022-06-30 10:07:03 -07:00
J. Nick Koston ce03157f16 Add debug logging to esphome state updates (#74260) 2022-06-30 10:05:29 -07:00
Franck Nijhof 105b1b9d58 Update numpy to 1.23.0 (#74250) 2022-06-30 10:04:59 -07:00
David F. Mulcahey 8bcccb17f9 Fix ZHA events for logbook (#74245) 2022-06-30 10:03:39 -07:00
MasonCrawford 5fa3b90b2c Add config flow to lg_soundbar (#71153)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-30 10:00:39 -07:00
epenet 781e4571b2 Add CalendarEntity checks to pylint plugin (#74228)
* Add CalendarEntity checks to pylint plugin

* adjust air_quality ignore

* Mark state property as final
2022-06-30 19:00:34 +02:00
Paulus Schoutsen 7573dc34aa Treat thermostat unknown state like unavailable in alexa (#74220) 2022-06-30 10:00:10 -07:00
Pierre Ståhl de700e7859 Make media_player.toggle turn on a standby device (#74221) 2022-06-30 09:59:46 -07:00
Jeef d38e8e213a Fix intellifire climate control not needing a default fireplace (#74253) 2022-06-30 10:35:06 -05:00
Alex Henry f5c6a6be3a Add config flow to AnthemAV integration (#53268)
* Add config flow to AnthemAV integration

* Add importing of existing configuration

* Change setting to optional and add default value

* Use entity attribute

* Reduce changes by removing additional media player properties

* Remove title from translation

* Refactor config flow and fix PR comments

* Fix a failing test because of wrong renaming

* Add typing and use existing class and enum

* Bump dependency to v1.3.1

* Remove unecessary async_reload_entry

* Fix requirements_test_all after rebase

* Add const for timeout and remove async_block in test

* Reapply CodeOwner and configflow after rebase

* Remove name from configflow

* Fix manifest prettier failure

* Simplify code and avoid catching broad exception

* Removed unused strings and translations

* Avoid asserting hass.data
2022-06-30 07:13:08 -07:00
epenet 57fd84e20c Improve type hints in demo (#74236) 2022-06-30 15:34:48 +02:00
Franck Nijhof fdb7a23171 Update black to 22.6.0 (#74209)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-30 10:08:06 +02:00
Erik Montnemery 407da8c4b8 Correct native_pressure_unit for zamg weather (#74225) 2022-06-30 09:42:15 +02:00
Franck Nijhof 3a57f4363f Revert "Patch out life360 entry setup in tests" (#74223)
Revert "Patch out life360 entry setup in tests (#74212)"

This reverts commit ab6e92f996.
2022-06-30 09:13:25 +02:00
Marc Mueller 42d7f2a3b2 Update pylint to 2.14.4 (#74192) 2022-06-30 08:56:43 +02:00
Allen Porter 0cf922cc4e Allow legacy nest integration with no configuration.yaml (#74222) 2022-06-30 08:54:51 +02:00
Marc Mueller 48c5aab5ee Fix netgear method return type annotation (#74200) 2022-06-30 08:16:05 +02:00
Kevin Stillhammer bef512c425 Split attributes into sensors for here_travel_time (#72405) 2022-06-29 22:09:52 -07:00
Franck Nijhof 555e9c6762 Fix input_number invalid state restore handling (#74213)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 22:06:35 -07:00
Franck Nijhof f721b9e3df Fix clicksend request content type headers (#74189) 2022-06-29 20:43:14 -05:00
Franck Nijhof 42533ebbb3 Update requests to 2.28.1 (#74210) 2022-06-29 20:40:58 -05:00
Franck Nijhof ab6e92f996 Patch out life360 entry setup in tests (#74212) 2022-06-29 17:35:49 -07:00
GitHub Action 721741281e [ci skip] Translation update 2022-06-30 00:23:07 +00:00
J. Nick Koston e2fe1a1c5d Allow tuple subclasses to be json serialized (#74207) 2022-06-29 19:14:56 -05:00
Christopher Bailey 1555f40bad Add UniFi Protect views (#74190)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 18:10:38 -05:00
Shay Levy 0028dc46e6 Fix Shelly Duo RGBW color mode attribute (#74193) 2022-06-30 01:10:25 +02:00
Christopher Bailey e4bd53b395 Fix duplicate key for motion sensor for UniFi Protect (#74202) 2022-06-30 00:52:54 +02:00
Franck Nijhof fe68c15a4a Bump version to 2022.8.0dev0 (#74184) 2022-06-29 21:20:57 +03:00
Jeef 6127a9a041 Intellifire climate Entity (#70818)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 13:01:38 -05:00
Franck Nijhof 78fe1fb102 Bumped version to 2022.7.0b0 2022-06-29 19:29:36 +02:00
Zack Barett 466ba47b35 Frontend bump to 20220629.0 (#74180) 2022-06-29 12:10:21 -05:00
TheJulianJES 4d673278c7 Fix color transition when turning on a ZHA light (#74024)
* Initial implementation of fixing color transition when turning on a ZHA light

* Add off_with_transition attribute, very slightly cleanup

* Fix unnecessarily using last off_brightness when just turning on light

Now it uses the Zigbee on_off call again if possible (instead of always move_to_level_with_on_off)

* Use DEFAULT_TRANSITION constant for color transition, add DEFAULT_MIN_BRIGHTNESS constant

* Add _DEFAULT_COLOR_FROM_OFF_TRANSITION = 0 but override transition for Sengled lights to 0.1s
2022-06-29 13:09:52 -04:00
Jeef d6e9118f36 IntelliFire DHCP Discovery Patch (#72617)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 12:01:18 -05:00
Phil Bruckner 0a65f53356 Convert life360 integration to entity based (#72461)
* Convert life360 integration to entity based

* Improve config_flow.py type checking

* Add tests for config flow

Fix form defaults for reauth flow.

* Cover reauth when config entry loaded

* Update per review (except for dataclasses)

* Restore check for missing location information

This is in current code but was accidentally removed in this PR.

* Fix updates from review

* Update tests per review changes

* Change IntegData to a dataclass

* Use dataclasses to represent fetched Life360 data

* Always add extra attributes

* Update per review take 2

* Tweak handling of bad last_seen or location_accuracy

* Fix type of Life360Member.gps_accuracy

* Update per review take 3

* Update .coveragerc

* Parametrize successful reauth flow test

* Fix test coverage failure

* Update per review take 4

* Fix config schema
2022-06-29 18:40:02 +02:00
Jeef b6f16f87a7 Bump intellifire4py to 2.0.0 (#72563)
* Enable Flame/Pilot switch

* Enable Flame/Pilot switch

* Update homeassistant/components/intellifire/switch.py

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

* Update homeassistant/components/intellifire/switch.py

Thats a great fix!

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

* write not update

* fixed forced upates

* removed data field

* Refactor to support update to backing library

* pre-push-ninja-style

* moving over

* fixed coverage

* removed tuple junk

* re-added description

* Update homeassistant/components/intellifire/translations/en.json

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

* adressing PR comments

* actually store generated values

* Update homeassistant/components/intellifire/__init__.py

Way better option!

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

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-06-29 10:51:39 -05:00
Arne Mauer fa678d0408 New sensors and manufacturer cluster to support IKEA STARKVIND (with Quirk) (#73450)
* Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component

* Fixed black and flake8 test

* New sensors and manufacturer cluster to support IKEA STARKVIND (with quirk)

* Isort and codespell fixes

* Instead using the fan cluster, i've created a Ikea air purifier cluster/channel that supports all sensors and fan modes

* update sensors to support the new ikea_airpurifier channel

* Fix black, flake8, isort

* Mylint/mypy fixes + Use a TypedDict for REPORT_CONFIG in zha #73629

* Last fix for test_fan.py

* fix fan test

Co-authored-by: David F. Mulcahey <david.mulcahey@me.com>
2022-06-29 11:44:40 -04:00
Daniel Baulig 73bff4dee5 Expose Envisalink's zone number as an attribute (#71468)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 10:30:55 -05:00
G Johansson 97dcfe4445 Smhi reverse change of unique id change (#74176) 2022-06-29 17:13:07 +02:00
Erik Montnemery 4e079c4417 Fix typo in recorder (#74178) 2022-06-29 09:50:24 -05:00
Erik Montnemery d3f4108a91 Support knots and ft/s in weather wind speed (#74175) 2022-06-29 16:34:41 +02:00
Aaron Bach e6d115e765 Add time remaining sensors for RainMachine programs (#73878) 2022-06-29 09:27:34 -05:00
Anders Liljekvist f5d8487768 Add send_poll to telegram bot (#68666) 2022-06-29 07:08:58 -07:00
Guido Schmitz 8dd5f25da9 Add cover tests for devolo_home_control (#72428) 2022-06-29 06:46:32 -07:00
Rami Mosleh 8905e6f726 Use DataUpdateCoordinator for mikrotik (#72954) 2022-06-29 08:32:29 -05:00
jjlawren 329ecc74c4 Optimize Sonos join behavior when using media_player.join (#74174)
Optimize Sonos media_player.join service
2022-06-29 15:23:22 +02:00
Aidan Timson 46b4be5b41 Add boot time sensor to System Bridge (#73039)
* Add boot time to System Bridge

* Update homeassistant/components/system_bridge/sensor.py

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

* Add missing import

* Update homeassistant/components/system_bridge/sensor.py

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

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-29 08:24:50 -04:00
Mike Degatano 9392f59913 Trigger Alexa routines from toggles and buttons (#67889) 2022-06-29 13:56:02 +02:00
beren12 4bdec1589d Ambient sensors are not diagnostic/internal (#73928) 2022-06-29 13:10:48 +02:00
Eric Svärd e32694c146 Make SolarEdge energy value validation a bit less aggressive (#69998)
* Make energy value validation a bit less aggressive

Attempt to solve issue 69600 introduced by previous fix for issue
59285.

- Introduce a tolerance factor for energy value validation.
- Only skip update the specific invalid energy entity. An energy entity
  with invalid values will now show "State unknown".

* Remove the tolerance factor. Let's just ignore the specific invalid energy entity.
2022-06-29 12:53:55 +02:00
epenet 5167535b03 Add LightEntity type hint checks to pylint plugin (#73826) 2022-06-29 12:51:37 +02:00
Frank e6daed9719 Add support for services to Home Connect (#58768)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-29 12:45:55 +02:00
Khole f6f7fa1c2d Add Hive power usage sensor (#74011) 2022-06-29 12:39:35 +02:00
epenet a6ef330b63 Add ButtonEntity to pylint checks (#74171) 2022-06-29 12:36:57 +02:00
Robert Svensson fd89108483 Move add/remove logic of deCONZ groups to gateway class (#73952) 2022-06-29 12:31:50 +02:00
Joakim Sørensen 29a546f4e8 Remove deprecated YAML import for Tautulli (#74172) 2022-06-29 12:29:47 +02:00
Malte Franken 21d28dd356 Migrate usgs_earthquakes_feed to async library (#68370)
* use new async integration library

* migrate to new async integration library

* updated unit tests

* updated logger

* fix tests and improve test coverage

* fix test

* fix requirements

* time control to fix tests
2022-06-29 12:13:33 +02:00
Pierre Ståhl 21e765207c Bump pyatv to 0.10.2 (#74119) 2022-06-29 12:03:32 +02:00
Erik Montnemery c186a73e57 Tweak speed util (#74160) 2022-06-29 12:01:09 +02:00
Michał Huryn b5af96e4bb Bump blebox_uniapi to 2.0.0 and adapt integration (#73834) 2022-06-29 11:57:55 +02:00
epenet 078c5cea86 Adjust async_step_reauth in blink (#74167) 2022-06-29 11:54:21 +02:00
epenet 2fce301b34 Adjust async_step_reauth in broadlink (#74168) 2022-06-29 11:53:35 +02:00
epenet 9c991d9c6f Adjust async_step_reauth in isy994 (#74169) 2022-06-29 11:53:08 +02:00
epenet 306486edfd Adjust async_step_reauth in smarttub (#74170) 2022-06-29 11:51:57 +02:00
epenet 1b85929617 Adjust async_step_reauth in samsungtv (#74165) 2022-06-29 11:46:59 +02:00
epenet 75efb54cc2 Adjust async_step_reauth in apple_tv (#74166) 2022-06-29 11:45:31 +02:00
starkillerOG 79fdb0d847 Netgear add update entity (#72429) 2022-06-29 11:43:51 +02:00
Jaroslav Hanslík 5b73cb10c1 MWh is valid unit for energy dashboard (#73929)
MWh is valid unit for energy
2022-06-29 11:42:52 +02:00
epenet ebf21d1bd7 Add BinarySensorEntity to pylint checks (#74131) 2022-06-29 11:41:56 +02:00
starkillerOG f2809262d5 Netgear add CPU and Memory utilization sensors (#72667) 2022-06-29 11:28:46 +02:00
epenet d323508f79 Add type hints to async_step_reauth (#74164) 2022-06-29 11:25:37 +02:00
Robert Hillis 500105fa86 Move Tautulli attributes to their own sensors (#71712) 2022-06-29 11:21:01 +02:00
Aaron Bach 981249d330 Ensure _attr_native_value type matches what SensorExtraStoredData produces (#73970) 2022-06-29 11:16:06 +02:00
epenet 1970e36f10 Fix CI (tuya number and abode light) (#74163)
* Fix tuya unit_of_measurement

* Fix abode ColorMode
2022-06-29 11:03:53 +02:00
mbo18 9d73f9a2c5 Move power and energy attributes to sensors for SmartThings Air conditioner (#72594)
Move power and energy attribute to sensor for Air conditioner
2022-06-29 11:02:20 +02:00
Dave T e64336cb91 Allow configuring username and password in generic camera config flow (#73804)
* Add ability to use user & pw not in stream url

* Increase test coverage to 100%

* Increase test coverage

* Verify that stream source includes user:pass

* Code review: refactor test to use MockConfigEntry

* Code review: Improve test docstring

* Edit comment; retrigger CI.

Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-06-29 10:54:04 +02:00
Erik Montnemery fbaff21b67 Format viaggiatreno/sensor.py (#74161) 2022-06-29 10:43:58 +02:00
Erik Montnemery 1590c0a46c Migrate abode light to color_mode (#69070) 2022-06-29 10:42:24 +02:00
alexanv1 0404c76c41 Add Tuya Sous Vide Cooker (#69777) 2022-06-29 10:29:19 +02:00
Lorenzo Milesi 8087982193 Update base url for ViaggiaTreno API (#71974) 2022-06-29 10:25:38 +02:00
epenet edc1ee2985 Add type hints to async_step_reauth in components (#74138) 2022-06-29 10:21:58 +02:00
epenet 6dc6e71f01 Use attributes in manual alarm (#74122) 2022-06-29 10:19:39 +02:00
Erik Montnemery 0769b33e19 Migrate darksky to native_* (#74047) 2022-06-29 10:16:23 +02:00
uvjustin f45afe7379 Use bitstream filter to allow ADTS AAC audio in stream (#74151) 2022-06-29 10:15:22 +02:00
J. Nick Koston 99329ef04f Wait for discovery to complete before starting apple_tv (#74133) 2022-06-29 10:13:10 +02:00
Erik Montnemery 6a0ca2b36d Migrate kostal_plenticore number to native_* (#74159) 2022-06-29 10:04:22 +02:00
Maximilian 20680535ec Add options flow to NINA (#65890)
* Added options flow

* Resolve conflicts

* Fix lint

* Implement improvements
2022-06-29 09:52:21 +02:00
epenet aca0fd3178 Adjust type hints in rflink cover (#73946)
* Adjust type hints in rflink cover

* Move definition back to init

* Use attributes

* Revert "Use attributes"

This reverts commit ff4851015d.

* Use _attr_should_poll
2022-06-29 09:46:05 +02:00
Erik Montnemery 00810235c9 Track tasks adding entities (#73828)
* Track tasks adding entities

* Update homeassistant/config_entries.py

* fix cast tests

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-29 09:38:35 +02:00
Thomas Schamm 90c68085be Differ device and domain entities in bosch_shc integration (#67957) 2022-06-28 22:08:16 -07:00
Chris Browet 596f60bdb5 Universal media player: ordered states (#68036) 2022-06-28 22:03:56 -07:00
Andre Lengwenus b7b8feda0f Add tests for LCN sensor and binary_sensor platforms (#67263) 2022-06-28 21:59:19 -07:00
Edward 22b8afe966 Propagate destination of watched folder moves (#70252) 2022-06-28 21:52:17 -07:00
Nick Dawson 9f15234b92 Add Anywair in IntesisHome (#71686) 2022-06-28 21:48:30 -07:00
Paul Annekov 551929a175 More sensors for SMS integration (#70486)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-06-28 21:37:23 -07:00
stegm 305dff0dc1 Add number platform for kostal_plenticore (#64927) 2022-06-28 21:29:21 -07:00
mletenay 9b60b0c23f Keep sum energy sensors always available (#69218) 2022-06-28 21:09:24 -07:00
Christopher Bailey 54320ff134 UniFi Protect bugfixes (#74156) 2022-06-28 22:00:26 -05:00
J. Nick Koston 309cf030b0 Fix typo in enphase doc string (#74155) 2022-06-28 17:57:17 -07:00
J. Nick Koston 629c68221e Avoid retriggering HomeKit doorbells on forced updates (#74141) 2022-06-28 19:54:27 -05:00
J. Nick Koston ee6866b8a3 Bump nexia to 2.0.1 (#74148) 2022-06-28 19:48:58 -05:00
GitHub Action f5fe210eca [ci skip] Translation update 2022-06-29 00:23:03 +00:00
starkillerOG ef76073d83 Add Netgear ethernet link status (#72582) 2022-06-28 14:31:15 -07:00
Felipe Santos 4aa8570107 Set Google Cast audio devices as speakers (#73832) 2022-06-28 23:26:25 +02:00
epenet ef5fccad9e Use standard argument name in async_step_reauth (#74139) 2022-06-28 23:23:32 +02:00
Matthias Alphart 48c7e414f6 Update xknx to 0.21.5 - Fix discovery of IP-Secure interfaces (#74147) 2022-06-28 14:23:17 -07:00
mkmer c3a2fce5cc Move to async for aladdin connect integration (#73954)
* Moved to AIOAladdinConnect API

* Added callback logic for door status

* close unused connections

* Close connection after verification

* Matched to current version

* Matched __init__.py to current release

* Matched cover.py to existing version

* added missing awaits

* Moved callback

* Bumped AIOAladdinConnect to 0.1.3

* Removed await from callback config

* Finished tests

* Added callback test

* Bumped AIOAladdinConnect to 0.1.4

* Finished tests

* Callback correct call to update HA

* Modified calls to state machine

* Modified update path

* Removed unused status

* Bumped AIOAladdinConnect to 0.1.7

* Revised test_cover cover tests and bumped AIOAladdinConnect to 0.1.10

* Bumped AIOAladdinConnect to 0.1.11

* Bumped AIOAladdinConenct to 0.1.12

* Bumped AIOAladdinConnect to 0.1.13

* Bumped AIOAladdinConnect to 0.1.14

* Added ability to handle multiple doors

* Added timout errors to config flow

* asyncio timout error added to setup retry

* Cleanup added to hass proceedure

* Bumped AIOAladdinConnect to 0.1.16

* Bumped AIOAladdinConnect to 0.1.18

* Bumped AIOAladdinConnect to 0.1.19

* Bumped AIOAladdinConnect to 0.1.20

* Addressed recommended changes: SCAN_INTERVAL and spelling

* Moved to async_get_clientsession and bumped AIOAladdinConnect to 0.1.21

* Missing test for new code structure

* removed extra call to write_ha_state, callback decorator, cleaned up tests

* Update tests/components/aladdin_connect/test_init.py

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

* Removed extra_attributes.

* Added typing to variable acc

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-28 23:22:18 +02:00
Thijs W 7d74301045 Add sound mode to frontier silicon (#72760) 2022-06-28 14:13:43 -07:00
Ville Skyttä 1a55c7db34 Take Huawei LTE XML parse errors to mean unsupported endpoint (#72781) 2022-06-28 14:13:26 -07:00
Stefan Rado efbd47c828 Rewrite SoundTouch tests to use mocked payloads (#72984) 2022-06-28 14:02:39 -07:00
Andre Lengwenus 389f1f4eda Add lcn_codelock event and corresponding device trigger (#73022) 2022-06-28 14:01:18 -07:00
elBoz73 9e61c7ec49 Add target management for the service call (#73332) 2022-06-28 13:57:47 -07:00
Erik Montnemery 146ff83a16 Migrate rest binary_sensor and switch to TemplateEntity (#73307) 2022-06-28 13:53:38 -07:00
Robert Svensson abf67c3153 Normalize deCONZ binary sensor unique IDs (#73657) 2022-06-28 13:45:25 -07:00
Mick Vleeshouwer a284ebe771 Add support for Atlantic Electrical Towel Dryer to Overkiz integration (#73788) 2022-06-28 13:39:37 -07:00
Allen Porter 02d1676301 Fix unexpected exception in Google Calendar OAuth exchange (#73963) 2022-06-28 13:29:11 -07:00
Stefan Rado 1d185388a9 Bump homeconnect to 0.7.1 (#74130) 2022-06-28 22:22:53 +02:00
jjlawren 4bfdb1433e Optimize Sonos unjoin behavior when using media_player.unjoin (#74086)
* Coalesce Sonos unjoins to process together

* Refactor for readability

* Skip unjoin call if already ungrouped

* Store unjoin data in a dedicated dataclass

* Revert import adjustment
2022-06-28 13:19:27 -07:00
puddly abe44a100f Bump all of ZHA's zigpy dependencies (#73964)
Bump zigpy and radio library versions
2022-06-28 16:02:16 -04:00
Aaron Bach c4ad5aa68a Bump simplisafe-python to 2022.06.1 (#74142) 2022-06-28 21:11:29 +02:00
Franck Nijhof 0e1f368b6f Merge branch 'master' into dev 2022-06-28 19:47:51 +02:00
epenet e0d2344db3 Use attributes in manual_mqtt alarm (#74124) 2022-06-28 10:31:33 -07:00
J. Nick Koston a8349a4866 Adjust entity filters to make includes stronger than excludes (#74080)
* Adjust entity filters to make includes stronger than excludes

Fixes #59080

* adjust test for stronger entity glob includes

* sync with docs
2022-06-28 11:42:51 -05:00
Maikel Punie 040ece76ab Add velbus buttons platform (#73323) 2022-06-28 18:41:29 +02:00
Bryton Hall 9fef1004a2 Bump venstarcolortouch to 0.16 (#73038) 2022-06-28 18:38:30 +02:00
Erik Montnemery 26a85c6644 Add Entity.has_entity_name attribute (#73217) 2022-06-28 09:38:05 -07:00
starkillerOG c883aec711 Bump pynetgear to 0.10.6 (#74123) 2022-06-28 18:21:54 +02:00
Joakim Sørensen 2f60db6f80 Pin charset-normalizer to 2.0.12 (#74104) 2022-06-28 18:20:56 +02:00
Pierre Ståhl 54138cda41 Fix app browsing and local file streaming in Apple TV integration (#74112) 2022-06-28 09:08:31 -07:00
epenet b9c135870a Fix model in vicare device_info (#74135) 2022-06-28 17:54:07 +02:00
epenet b51ad16db9 Adjust button type hints in components (#74132) 2022-06-28 17:19:03 +02:00
epenet dc039f5218 Use standard argument name in async_step_reauth (#74137) 2022-06-28 17:12:32 +02:00
J. Nick Koston 2225d0e899 Enable serialization of float subclasses with orjson (#74136) 2022-06-28 17:07:40 +02:00
David F. Mulcahey a053a3a8a4 Add cluster attr data to ZHA device diagnostics (#70238)
* Add cluster attr data to ZHA device diagnostics

* add unsupported attributes and refactor

* remove await

* make parseable
2022-06-28 11:01:27 -04:00
David F. Mulcahey 12c49e1c94 Add Aqara FP1 configuration entities to ZHA (#73027)
* add multi state input

* config entities

* remove multistate input sensor used for testing

* mypy
2022-06-28 10:41:21 -04:00
[pʲɵs] 0e9164b082 Add bool template filter and function (#74068)
Co-authored-by: Erik <erik@montnemery.com>
2022-06-28 16:22:09 +02:00
TheJulianJES ed7ea1423a Fix ZHA color mode not being set correctly when changing light state (#74018) 2022-06-28 09:53:00 -04:00
epenet f3a24d5a45 Use attributes in xiaomi_miio alarm (#74125) 2022-06-28 15:29:33 +02:00
epenet 670af6fde3 Use attributes in risco alarm (#74117) 2022-06-28 15:26:50 +02:00
J. Nick Koston 0063274f83 Bump HAP-python to 4.5.0 (#74127) 2022-06-28 15:24:20 +02:00
epenet 29c389b342 Adjust remaining type hints in alarm properties (#74126) 2022-06-28 15:22:46 +02:00
epenet 3836da48b3 Use attributes in ness_alarm alarm (#74121) 2022-06-28 15:12:56 +02:00
epenet b75a6d265d Use attributes in spc alarm and binary sensor (#74120) 2022-06-28 14:49:01 +02:00
G Johansson c4ff317ec6 Smhi minor fixes (#72606)
* Initial commit

* Tests

* From review comments
2022-06-28 14:29:00 +02:00
Pascal Vizeli 50cba60d1f Update base image to 2022.06.2 (#74114) 2022-06-28 14:07:28 +02:00
epenet 4335cafb3f Use attributes in totalconnect alarm (#74113) 2022-06-28 14:01:49 +02:00
epenet 3b30d8a279 Use attributes in satel_integra alarm (#74103) 2022-06-28 13:56:14 +02:00
epenet 8bed2e6459 Remove zha from mypy ignore list (#73603) 2022-06-28 13:53:20 +02:00
G Johansson 4b5c0be896 Native to Weather Template (#74060)
* Native to Weather template

* Add validation
2022-06-28 13:42:58 +02:00
epenet c1f621e9c0 Use attributes in nx584 alarm (#74105) 2022-06-28 13:42:43 +02:00
epenet dac8f242e0 Improve type hints in mqtt and template alarms (#74101) 2022-06-28 13:41:23 +02:00
G Johansson 2a0b2ecca1 Fix depreciation period for Weather (#74106)
Fix period
2022-06-28 13:40:36 +02:00
Erik Montnemery 39c7056be5 Migrate climacell to native_* (#74039) 2022-06-28 13:39:37 +02:00
epenet 79b3865b60 Use attributes in ialarm alarm (#74099) 2022-06-28 13:15:38 +02:00
epenet 03d2d50393 Use attributes in ifttt alarm (#74107) 2022-06-28 13:07:46 +02:00
epenet 389664e37c Use attributes in lupusec alarm (#74109) 2022-06-28 13:05:30 +02:00
epenet 45cdfa1049 Use attributes in point alarm (#74111) 2022-06-28 12:53:50 +02:00
Pascal Vizeli 5787eb058d Build opencv at core build pipeline (#73961) 2022-06-28 11:14:06 +02:00
epenet bc33818b20 Use attributes in egardia alarm (#74098) 2022-06-28 11:12:46 +02:00
Erik Montnemery ae63cd8677 Add support for unavailable to cover groups (#74053) 2022-06-28 11:12:14 +02:00
epenet af71c250d5 Use attributes in concord232 alarm (#74097) 2022-06-28 11:10:31 +02:00
epenet 38759bb98b Adjust tilt_position method in esphome cover (#74041) 2022-06-28 11:08:31 +02:00
epenet 734b99e6ac Improve type hints in zha alarm (#74094)
* Improve type hints in zha alarm

* Allow None code
2022-06-28 11:07:46 +02:00
Erik Montnemery 37e8f113d4 Migrate zamg to native_* (#74034) 2022-06-28 11:02:13 +02:00
Erik Montnemery f66fc65d0b Migrate environment_canada to native_* (#74048) 2022-06-28 11:01:14 +02:00
Erik Montnemery 7d709c074d Add support for unavailable and unknown to fan groups (#74054) 2022-06-28 10:58:52 +02:00
epenet 28c1a5c09f Enforce config-flow type hints for reauth step (#72830) 2022-06-28 10:52:41 +02:00
Paulus Schoutsen 6eeb1855ff Remove entities from Alexa when disabling Alexa (#73999)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-28 10:32:50 +02:00
Erik Montnemery 824de2ef4c Modify behavior of lock groups (#74055) 2022-06-28 10:29:56 +02:00
epenet 8328f9b623 Cleanup async_update in smartthings cover (#74040) 2022-06-28 10:26:36 +02:00
Erik Montnemery 9a613aeb96 Modify behavior of media_player groups (#74056) 2022-06-28 10:22:46 +02:00
epenet c19a8ef8e0 Enforce flow-handler result type hint for step_* (#72834) 2022-06-28 10:08:36 +02:00
epenet 35df012b6e Fix reauth step in nest (#74090) 2022-06-28 10:06:05 +02:00
epenet 319ef38d34 Add AlarmControlPanelEntity to pylint checks (#74091) 2022-06-28 10:02:57 +02:00
epenet f66acf293f Adjust type hints in prosegur alarm (#74093)
* Adjust type hints in prosegur alarm

* Adjust hint
2022-06-28 10:02:16 +02:00
epenet 8e1ec07f3d Adjust type hints in component alarm methods (#74092)
* Adjust type hints in component alarm methods

* Undo related change

* Undo related change
2022-06-28 10:00:23 +02:00
jjlawren 800bae68a8 Fix clearing of Sonos library cache during regrouping (#74085)
Fix clearing of ZoneGroupState attribute cache
2022-06-28 09:51:33 +02:00
J. Nick Koston cb46bb5bfa Revert "Partially revert "Switch loader to use json helper (#73872)" (#74077)" (#74087) 2022-06-28 09:34:56 +02:00
J. Nick Koston 567df9cc4d Add async_remove_config_entry_device to enphase_envoy (#74012) 2022-06-28 08:53:17 +02:00
epenet 87b46a699a Fix mypy issues in zha store (#74032) 2022-06-28 08:52:20 +02:00
Erik Montnemery cc8170fcfe Align code between group platforms (#74057) 2022-06-28 08:50:31 +02:00
epenet fb10853358 Fix mypy issues in zha core modules (#74028)
* Fix mypy issues in zha gateway, group and helpers

* Cleanup device

* Apply suggestion

* Raise ValueError

* Use hass.config.path
2022-06-28 08:50:16 +02:00
J. Nick Koston 720768560d Fix devices missing in logbook when all requested entities are filtered (#74073) 2022-06-28 08:44:06 +02:00
epenet b6676df1cb Adjust config-flow reauth type hints in components (#74088) 2022-06-28 08:43:06 +02:00
epenet 530e1f9080 Fix reauth step in geocaching (#74089) 2022-06-28 08:40:46 +02:00
Matrix 1804f70a5b Fix missing leak sensor battery expose (#74084) 2022-06-28 08:39:12 +02:00
[pʲɵs] 91a119917d List more private and link-local IP networks (#74064)
List more private and link-local IP networks

The IPv6 link-local network is especially important as without it
local accounts don't work on IPv6-capable networks with no IPv6 DHCP
server.
2022-06-27 22:00:44 -07:00
J. Nick Koston df357962b3 Bump orjson to 3.7.5 (#74083) 2022-06-27 21:59:08 -07:00
Franck Nijhof 1e0788aeea Allow partial tests to take 20 minutes, use all cores (#74079) 2022-06-27 19:51:02 -07:00
maikukun cdaa6c0d42 Update tesla_powerwall to 0.3.18 (#74026) 2022-06-27 21:31:30 -05:00
GitHub Action 7e341aaef2 [ci skip] Translation update 2022-06-28 00:26:39 +00:00
Erik Montnemery 192986ba8a Migrate buienradar to native_* (#74059) 2022-06-28 01:57:46 +02:00
uvjustin fef21c02ee Clean up disabling audio in stream (#74038) 2022-06-28 01:56:10 +02:00
leroyloren e706c6a15f Visiblity fix unit km to m (#74008) 2022-06-28 01:53:57 +02:00
G Johansson 2f0fe0df82 Fix wind speed SMHI (#72999) 2022-06-28 01:50:06 +02:00
epenet b2c84a4c4a Adjust reauth in awair config flow (#72386)
* Adjust config-flow type hints in awair

* Improve typing of dict arguments

* Use mapping for async_step_reauth

* Add async_step_reauth_confirm

* Don't try old token

* Adjust translations

* Adjust tests

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-28 01:49:10 +02:00
Iván Cea Fontenla c62bfcaa4c Nuki opener event on ring (#72793)
* feat(nuki): add ring action timestamp attribute

* feat(nuki): add ring action state attribute

* Emit event on Nuki Opener ring

* Removed event attributes

* Use entity registry to get entity id

* Move event firing to the async update method

* Move events code outside try-except

* Black autoformat

* Added missing period to doc

* Import order

Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-28 01:47:55 +02:00
Franck Nijhof 09dca3cd94 Remove invalid unit of measurement from Glances (#73983) 2022-06-28 01:46:58 +02:00
epenet e8917af823 Cleanup update/async_update typing in Entities (#74035) 2022-06-28 00:48:56 +02:00
Franck Nijhof 21b842cf9c Partially revert "Switch loader to use json helper (#73872)" (#74077) 2022-06-28 00:48:18 +02:00
shbatm 08c5c6ca1c ISY994: Bump pyisy to 3.0.7 (#74071) 2022-06-27 16:24:25 -05:00
Christopher Bailey b9c636ba4e Automatically add newly added devices for UniFi Protect (#73879) 2022-06-27 16:03:25 -05:00
Robert Svensson 33f5b225fb Use aiounifi v34 to utilise orjson for better performance (#74065)
Bump aiounifi to v34
2022-06-27 21:29:19 +02:00
Erik Montnemery 84ea8a3c43 Fix misleading comments in tomorrowio (#74049)
* Fix misleading comments in tomorrowio

* Add test
2022-06-27 14:26:04 -04:00
Erik Montnemery 5f06404db5 Migrate tomorrowio to native_* (#74050) 2022-06-27 14:25:36 -04:00
Joakim Plate 992ceb1a09 Google Assistant diagnostics and synchronization (#73574)
* Add config flow import for local google assistant
* Add diagnostic with sync response
* Add button for device sync
2022-06-27 20:24:15 +02:00
Robert Svensson 320fa25a99 Fix re-login logic when UniFi integration receives a 401 (#74013) 2022-06-27 19:50:56 +02:00
epenet f9c83dd991 Add CoverEntity to pylint checks (#74036)
* Add CoverEntity to pylint checks

* Avoid false positivies on device_class

* Adjust device_class handling

* Adjust device_class again using a singleton

* Adjust device_class (again)

* Simplify DEVICE_CLASS check

* Keep device_class in base class
2022-06-27 14:58:23 +02:00
RenierM26 10ea88e0ea Switchbot bump Dependency 0.14.0 (#74001)
* Bump requirement.

* Switchbot depenacy update, full async.

* Update tests, remove redundant config entry check.

* Update requirements_test_all.txt

* Update requirements_all.txt

* Remove asyncio lock. Not required anymore with bleak.

* Update requirements_all.txt

* Update requirements_test_all.txt

* pyswitchbot no longer uses bluepy
2022-06-27 13:56:51 +02:00
epenet b185de0ac0 Add base Entity to pylint checks (#73902)
* Add base entity properties

* Add special case of Mapping[xxx, Any]

* Add Mapping tests

* Add entity functions

* Adjust docstring

* Add update/async_update
2022-06-27 12:10:31 +02:00
MatthewFlamm e32c7dbf92 Use built in unit handling for nws weather (#73981)
use built in unit handling for nws
2022-06-27 11:39:02 +02:00
Joakim Sørensen a94579107c Bump awesomeversion from 22.5.2 to 22.6.0 (#74030) 2022-06-27 11:38:40 +02:00
akloeckner aa314a0901 Add this variable to trigger-based templates (#72437)
add this variables to trigger-based templates

follow-up for https://github.com/home-assistant/core/issues/70359
2022-06-27 08:59:29 +02:00
GitHub Action 11ec8b9186 [ci skip] Translation update 2022-06-27 00:25:49 +00:00
J. Nick Koston 9a0b3796d3 Bump xmltodict to 0.13.0 (#73974)
Changelog: https://github.com/martinblech/xmltodict/blob/v0.13.0/CHANGELOG.md
2022-06-26 12:38:17 +02:00
avee87 fb5e6aaa29 Clean up Glances sensors a bit (#73998) 2022-06-26 12:33:11 +02:00
J. Nick Koston 6ec6f0a835 Fix file sensor reading the whole file to get the last line (#73986) 2022-06-25 21:02:50 -05:00
GitHub Action ba64d9db64 [ci skip] Translation update 2022-06-26 00:28:21 +00:00
Khole ce144bf631 Add Hive device configuration to config flow (#73955)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-26 00:13:30 +02:00
rikroe f78d209f93 Bump bimmer_connected to 0.9.6 (#73977)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-25 10:26:57 -07:00
J. Nick Koston 949922ef2c Fix exception when as_dict is called on a TemplateState (#73984) 2022-06-25 09:19:11 -07:00
J. Nick Koston 15ed329108 Add async_remove_config_entry_device support to nexia (#73966)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-25 12:02:38 -04:00
Christopher Bailey e67f8720e8 Refactor UniFi Protect tests (#73971)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-25 08:15:38 -07:00
J. Nick Koston 85fdc56240 Bump aiosteamist to 0.3.2 (#73976)
Changelog: https://github.com/bdraco/aiosteamist/compare/0.3.1...0.3.2
2022-06-25 16:41:47 +02:00
rappenze eb6afd27b3 Fix fibaro cover state (#73921) 2022-06-25 12:34:30 +02:00
epenet 9eed8b2ef4 Adjust freedompro cover position method (#73945) 2022-06-25 12:32:55 +02:00
epenet 3743d42ade Adjust smartthings cover type hints (#73948) 2022-06-25 12:31:53 +02:00
epenet 10dc38e0ec Adjust CoverEntity property type hints in components (#73943)
* Adjust CoverEntity property type hints in components

* Revert changes to rflink

* Revert changes to wilight
2022-06-25 11:59:56 +02:00
J. Nick Koston 55b5ade586 Prime platform.uname cache at startup to fix blocking subprocess in the event loop (#73975)
Prime platform.uname cache at startup to fix blocking subprocess

- Multiple modules check platform.uname()[0] at startup which
  does a blocking subprocess call. We can avoid this happening
  in the eventloop and distrupting startup stability by priming
  the cache ahead of time in the executor
2022-06-25 04:31:44 -04:00
GitHub Action 0166816200 [ci skip] Translation update 2022-06-25 00:24:25 +00:00
avee87 ad3bd6773c Add device_info to Glances entities (#73047) 2022-06-25 01:23:26 +02:00
Erik Montnemery a267045a31 Migrate open_meteo to native_* (#73910) 2022-06-25 01:05:31 +02:00
epenet 9b88b77b66 Use attributes in wilight (#73898)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-25 00:55:01 +02:00
epenet 15b7564171 Fix coverage issue in CI (#73959)
* Fix coverage issue in CI

* Adjust to latest findings

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-25 00:48:27 +02:00
epenet 0461eda83b Adjust demo cover position methods (#73944) 2022-06-25 00:34:49 +02:00
J. Nick Koston 32e0d9f47c Speed up generation of template states (#73728)
* Speed up generation of template states

* tweak

* cache

* cache hash

* weaken

* Revert "weaken"

This reverts commit 4856f50080.

* lower cache size as it tends to be the same ones over and over

* lower cache size as it tends to be the same ones over and over

* lower cache size as it tends to be the same ones over and over

* cover

* Update homeassistant/helpers/template.py

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

* id reuse is possible

* account for iterting all sensors

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-06-24 17:28:26 -04:00
Paulus Schoutsen 57efa9569c Cache is_supported for Google entities (#73936) 2022-06-24 17:05:36 -04:00
J. Nick Koston 44da543ca0 Bump nexia to 2.0.0 (#73935) 2022-06-24 09:59:41 -05:00
J. Nick Koston 1866a1e925 Handle non-str keys when storing json data (#73958) 2022-06-24 09:59:01 -05:00
epenet b880a05e45 Fix type hints in zha remaining channels (#73778)
* Fix hvac channel type hints

* Fix security channel type hints

* Fix homeautomation channel type hints

* Fix type hints in zha base channel

* Adjust select entity

* Remove unused arg
2022-06-24 10:35:38 -04:00
J. Nick Koston f29cc33fa0 Fix selecting entity_ids and device_ids in events with MySQL and PostgreSQL with logbook (#73918)
* Fix selecting entity_ids and device_ids in events with MySQL and PostgreSQL

Fixes #73818

* add cover
2022-06-24 15:43:35 +02:00
epenet 6cafcb016f Adjust rfxtrx cover type hints (#73947) 2022-06-24 10:22:40 +02:00
J. Nick Koston 2f78faa718 Make aiohttp mockers aware of the json loads kwarg (#73939) 2022-06-24 08:44:35 +02:00
Rami Mosleh d1708861db Add config flow for simplepush (#73471)
* Add config flow for `simplepush`

* fix warning message

* fix typos

* Add importing yaml config

* patch integration setup

* Add check for errrors raised by the library

* fix coverage

* Adjust comment and logging message

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-24 08:39:48 +02:00
epenet a92ab7a669 Adjust CoverEntity function type hints in components (#73912)
Adjust CoverEntity functions in components
2022-06-24 06:40:26 +02:00
Zack Barett 307666da7f Bump Frontend to 20220624.0 (#73938) 2022-06-23 22:51:31 -05:00
Christopher Bailey e4a770984d Bump version of pyunifiprotect to 4.0.8 (#73934) 2022-06-23 21:50:39 -05:00
J. Nick Koston e5c40d58ff Add roku 3820X model to discovery (#73933) 2022-06-23 21:13:43 -05:00
GitHub Action c607994fbe [ci skip] Translation update 2022-06-24 00:23:27 +00:00
Raman Gupta 768e53ac2d Add zwave_js/get_any_firmware_update_progress WS cmd (#73905) 2022-06-23 20:13:37 -04:00
Franck Nijhof dc0ea6fd55 Flush CI caches (#73926) 2022-06-24 01:57:12 +02:00
J. Nick Koston 28dd92d928 Fix logbook state query with postgresql (#73924) 2022-06-23 23:35:10 +02:00
0bmay 3058a432a5 Bump py-canary to 0.5.3 (#73922) 2022-06-23 23:33:03 +02:00
Erik Montnemery 9b8c3e37bb Improve group tests (#73630) 2022-06-23 21:38:17 +02:00
epenet 186141ee4d Use attributes in keba locks and binary sensors (#73894)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-23 21:35:05 +02:00
avee87 8865a58f74 Improve Glances entity descriptions, add long term statistics (#73049) 2022-06-23 21:34:08 +02:00
epenet d19fc0622b Add ToggleEntity to pylint fan checks (#73886) 2022-06-23 21:31:30 +02:00
epenet 0df0533cd4 Use attributes in smarty fan (#73895) 2022-06-23 21:20:42 +02:00
tbertonatti 03f0916e7c Add embed image parameter for Discord notify (#73474) 2022-06-23 21:02:48 +02:00
Erik Montnemery e57f34f0f2 Migrate openweathermap to native_* (#73913) 2022-06-23 21:01:08 +02:00
J. Nick Koston 00a79635c1 Revert "Remove sqlalchemy lambda_stmt usage from history, logbook, and statistics (#73191)" (#73917) 2022-06-23 13:59:55 -05:00
J. Nick Koston 5c193323b2 Bump aiohomekit to 0.7.18 (#73919)
Changelog: https://github.com/Jc2k/aiohomekit/compare/0.7.17...0.7.18
2022-06-23 20:43:56 +02:00
Erik Montnemery 01606c34aa Correct handling of weather forecast (#73909) 2022-06-23 20:34:16 +02:00
J. Nick Koston fd9fdc6283 Fix error reporting with unserializable json (#73908) 2022-06-23 20:32:45 +02:00
Robert Svensson b3b4707579 Fix deCONZ group state regression (#73907) 2022-06-23 20:26:51 +02:00
J. Nick Koston edb386c736 Switch frontend to use json helper (#73874) 2022-06-23 20:19:13 +02:00
J. Nick Koston 3d59088a62 Bump sqlalchemy to 1.4.38 (#73916)
Changes: https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.38
2022-06-23 14:13:42 -04:00
Erik Montnemery 17d839df79 Set codeowner of weather to @home-assistant/core (#73915) 2022-06-23 19:50:46 +02:00
epenet e874ba2a42 Improve CoverEntity typing (#73903) 2022-06-23 16:48:49 +02:00
epenet 3c82c718cb Improve typing in fans and locks (#73901) 2022-06-23 16:34:40 +02:00
Raman Gupta ff7d840a6c Bump zwave-js-server-python to 0.39.0 (#73904) 2022-06-23 16:13:36 +02:00
kingy444 95abfb5748 Powerview polling tdbu (#73899) 2022-06-23 08:37:28 -05:00
J. Nick Koston 8015bb98a9 Switch recorder and templates to use json helper (#73876)
- These were using orjson directly, its a bit cleaner
  to use the helper so everything is easier to adjust
  in the future if we need to change anything about
  the loading
2022-06-23 14:32:26 +02:00
J. Nick Koston 2742bf86e3 Switch mqtt to use json helper (#73871)
* Switch mqtt to use json helper

* whitespace
2022-06-23 14:29:09 +02:00
Pascal Vizeli 95eeb8eff3 Update Builder & Wheels + support yellow (#73896) 2022-06-23 13:58:24 +02:00
epenet 0787ee1345 Use attributes in comfoconnect fan (#73892) 2022-06-23 12:42:05 +02:00
rikroe b4cc9367cf Bump bimmer_connected to 0.9.5 (#73888)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-23 12:18:01 +02:00
epenet 48bd7cf5e1 Add missing ToggleEntity type hints in fans (#73887) 2022-06-23 12:01:05 +02:00
epenet a3ce80baed Improve nuki type hints (#73891) 2022-06-23 11:44:25 +02:00
Paulus Schoutsen 10b083bbf5 Sync empty entities when Google is disabled in cloud (#72806) 2022-06-23 11:41:34 +02:00
Rami Mosleh 0dd181f922 Remove deprecated YAML for Islamic prayer times (#72483) 2022-06-23 11:35:47 +02:00
Hans Oischinger 4ee92f3953 Improve hvac_mode compatibility of vicare (#66454) 2022-06-23 11:34:34 +02:00
epenet f91a222034 Fix compensation (numpy) tests (#73890) 2022-06-23 11:12:22 +02:00
G Johansson 90e1fb6ce2 Weather unit conversion (#73441)
Co-authored-by: Erik <erik@montnemery.com>
2022-06-23 10:48:30 +02:00
henryptung bccec77e19 Fix Broadlink discovery for new RM Mini3 (#73822) 2022-06-23 09:38:39 +02:00
gigatexel 303ce715ed Adapt DSMR integration to changes in dsmr_parser for Belgian/Dutch meters (#73817) 2022-06-23 09:15:16 +02:00
J. Nick Koston 164eba7e5d Switch loader to use json helper (#73872) 2022-06-22 21:57:38 -05:00
J. Nick Koston b5f6f785d5 Switch mobile_app to use the json helper (#73870) 2022-06-22 22:32:48 -04:00
Christopher Bailey 168065a9a0 Bump version of pyunifiprotect to 4.0.7 (#73875) 2022-06-22 21:10:41 -05:00
J. Nick Koston 6c41a10142 Switch api and event stream to use json helper (#73868) 2022-06-22 20:13:02 -05:00
J. Nick Koston ab30d38469 Switch rest to use the json helper (#73867) 2022-06-22 20:12:48 -05:00
GitHub Action 33c263d09b [ci skip] Translation update 2022-06-23 00:20:13 +00:00
Christian Rodriguez 3ce5b05aa5 Add bypassed custom attribute to NX584ZoneSensor (#71767) 2022-06-23 01:59:59 +02:00
Liam 3cd18ba38f Update CODE_OF_CONDUCT.md (#73468) 2022-06-23 01:41:22 +02:00
Waldemar Tomme e855529f73 Fix fints integration (#69041) 2022-06-23 01:08:51 +02:00
Alex Groleau fe54db6eb9 Improve Tuya integration fan controller support (#73062) 2022-06-23 00:58:36 +02:00
jjlawren b0f4b3030f Extend timeouts for Spotify and Plex playback on Sonos (#73803) 2022-06-23 00:58:10 +02:00
epenet b17d4ac65c Remove replicated async definitions in pylint plugin (#73823)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-06-22 23:51:40 +02:00
Robert Svensson aef69f87f4 More enums in deCONZ Alarm Control Panel (#73800) 2022-06-22 23:02:34 +02:00
Christopher Bailey 01a9367281 UniFi Protect cleanup and enable unadopted devices (#73860) 2022-06-22 15:57:21 -05:00
Robert Hillis 5c5fd746fd Add digital loggers as a Belkin supported brand (#72515) 2022-06-22 22:38:45 +02:00
Franck Nijhof a8a033681f Automatically onboard DiscoveryFlows (#73841) 2022-06-22 22:37:49 +02:00
Franck Nijhof ec119ae718 Automatically onboard WLED (#73853) 2022-06-22 22:37:36 +02:00
Franck Nijhof 320ef55085 Automatically onboard Elgato (#73847) 2022-06-22 22:37:25 +02:00
epenet ad7da9803f Adjust lutron_caseta type hints (#73840)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-22 22:37:01 +02:00
Khole 73c54b14d0 Hive bump pyhiveapi version (#73846) 2022-06-22 22:20:47 +02:00
epenet 75cfe845e1 Adjust freedompro type hints (#73839) 2022-06-22 22:17:50 +02:00
J. Nick Koston 8b067e83f7 Initial orjson support take 3 (#73849)
* Initial orjson support take 2

Still need to work out problem building wheels

--

Redux of #72754 / #32153 Now possible since the following is solved:
ijl/orjson#220 (comment)

This implements orjson where we use our default encoder.  This does not implement orjson where `ExtendedJSONEncoder` is used as these areas tend to be called far less frequently.  If its desired, this could be done in a followup, but it seemed like a case of diminishing returns (except maybe for large diagnostics files, or traces, but those are not expected to be downloaded frequently).

Areas where this makes a perceptible difference:
- Anything that subscribes to entities (Initial subscribe_entities payload)
- Initial download of registries on first connection / restore
- History queries
- Saving states to the database
- Large logbook queries
- Anything that subscribes to events (appdaemon)

Cavets:
orjson supports serializing dataclasses natively (and much faster) which
eliminates the need to implement `as_dict` in many places
when the data is already in a dataclass. This works
well as long as all the data in the dataclass can also
be serialized. I audited all places where we have an `as_dict`
for a dataclass and found only backups needs to be adjusted (support for `Path` needed to be added for backups).  I was a little bit worried about `SensorExtraStoredData` with `Decimal` but it all seems to work out from since it converts it before it gets to the json encoding cc @dgomes

If it turns out to be a problem we can disable this
with option |= [orjson.OPT_PASSTHROUGH_DATACLASS](https://github.com/ijl/orjson#opt_passthrough_dataclass) and it
will fallback to `as_dict`

Its quite impressive for history queries
<img width="1271" alt="Screen_Shot_2022-05-30_at_23_46_30" src="https://user-images.githubusercontent.com/663432/171145699-661ad9db-d91d-4b2d-9c1a-9d7866c03a73.png">

* use for views as well

* handle UnicodeEncodeError

* tweak

* DRY

* DRY

* not needed

* fix tests

* Update tests/components/http/test_view.py

* Update tests/components/http/test_view.py

* black

* templates
2022-06-22 21:59:51 +02:00
epenet 9ac28d2076 Adjust vesync type hints (#73842) 2022-06-22 21:40:22 +02:00
Martin Hjelmare 0e674fc597 Clean up zwave_js logging and hass.data (#73856) 2022-06-22 21:35:26 +02:00
Franck Nijhof 1ead6d6762 Automatically onboard Yeelight (#73854) 2022-06-22 21:19:34 +02:00
Franck Nijhof 9229d14962 Automatically onboard Wiz (#73851) 2022-06-22 20:17:28 +02:00
jjlawren 8d66623036 Add ZoneGroupState statistics to Sonos diagnostics (#73848) 2022-06-22 12:29:34 -05:00
Christopher Bailey 54d04d233b Bump version of pyunifiprotect to 4.0.6 (#73843) 2022-06-22 12:13:43 -05:00
Pascal Vizeli 6cf9b22b5a Python 3.10 / Base image 2022.06.01 (#73830)
* Python 3.10 / Base image 2022.06.01

* Update requirements

* push opencv

* we don't need numpy on core for now

* Remove unused ignore

Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-22 12:04:39 -05:00
epenet 6b6e5fad3c Add missing type hints in fans (#73835) 2022-06-22 18:43:41 +02:00
G Johansson 532e25d087 Sensibo use switch for Pure boost (#73833)
* Initial commit

* Finalize pure boost switch

* Fix service required
2022-06-22 18:26:25 +02:00
epenet 837957d89e Adjust set_percentage routine in fans (#73837) 2022-06-22 18:22:01 +02:00
jjlawren 86fde1a644 Handle failures during initial Sonos subscription (#73456) 2022-06-22 10:56:17 -05:00
epenet 143e6a7adc Add missing type hints in locks (#73831) 2022-06-22 10:23:51 -05:00
G Johansson 7a407d09dc Fix filter & room occupied binary sensors (#73827) 2022-06-22 10:13:16 -05:00
Christopher Bailey 0461ec1566 Fix auth_sign_path with query params (take 2) (#73829) 2022-06-22 10:09:21 -05:00
J. Nick Koston 19b2b33037 Speed up subscribing to mqtt topics on connect (#73685)
* Speed up subscribing to mqtt topics

* update tests

* Remove extra function wrapper

* Recover debug logging for subscriptions

* Small changes and test

* Update homeassistant/components/mqtt/client.py

* Update client.py

Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-22 16:03:18 +02:00
rikroe 54591b8ca1 BMW Connected Drive: Handle HTTP 429 issues better (#73675)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-22 14:24:16 +02:00
epenet 754fe86dd9 Add fan to strict typing (#73820)
* Add fan to strict typing

* Adjust state_attributes

* Adjust capability_attributes

* Adjust is_on

* Adjust vallox component

* Revert "Adjust is_on"

This reverts commit 48d207f250.

* Fix is_on property
2022-06-22 14:15:44 +02:00
epenet 33a84838b4 Fix type hints in zha smartenergy channel (#73775)
* Fix type hints in zha smartenergy channel

* Adjust unit_of_measurement
2022-06-22 07:41:28 -04:00
Franck Nijhof fb2a3ae135 Update sentry-sdk to 1.6.0 (#73819) 2022-06-22 13:39:19 +02:00
uvjustin 03246d2649 Use ha-av instead of av and bump to v10.0.0b3 (#73789)
* Use ha-av instead of av and bump to v10.0.0b1

* Change generic

* Use v10.0.0b2

* Use v10.0.0b3
2022-06-22 13:38:44 +02:00
Franck Nijhof f97e95134b Merge pull request #73821 from home-assistant/rc 2022-06-22 13:22:39 +02:00
epenet 31af4b709e Add FanEntity type hint checks to pylint plugin (#73801)
* Add FanEntity type hint checks to pylint plugin

* Add test

* Add test

* Review comments

* Adjust tests

* Rename variable

* also test keyword_only args

* Use docstrings

* Fix tests

* Better return type
2022-06-22 12:48:23 +02:00
Franck Nijhof 08ff99a1e8 Bumped version to 2022.6.7 2022-06-22 11:50:42 +02:00
Franck Nijhof 505c4b0f77 Fix MQTT tests for RC 2022-06-22 11:50:34 +02:00
Franck Nijhof 30383e0102 Fix Plugwise migration error (#73812) 2022-06-22 11:48:56 +02:00
Tom Harris 29f8493a06 Insteon bug fixes (#73791) 2022-06-22 11:48:53 +02:00
Robert Svensson 5c71de8055 Fix CSRF token for UniFi (#73716)
Bump aiounifi to v32
2022-06-22 11:48:50 +02:00
micha91 d211399056 Update aiomusiccast (#73694) 2022-06-22 11:48:46 +02:00
Max Gashkov 14c11cd13a Fix AmbiClimate services definition (#73668) 2022-06-22 11:48:43 +02:00
J. Nick Koston eda2c8cb8f Retry on SenseAPIException during sense config entry setup (#73651) 2022-06-22 11:48:40 +02:00
Steven Looman 9e4ee0d36d Don't verify ssl certificates for ssdp/upnp devices (#73647) 2022-06-22 11:48:37 +02:00
J. Nick Koston 65c1d4812a Fix calling permanent off with nexia (#73623)
* Fix calling permanent off with nexia

Changelog: https://github.com/bdraco/nexia/compare/1.0.1...1.0.2

Fixes #73610

* one more
2022-06-22 11:48:32 +02:00
Jan Bouwhuis 1551177581 Fix MQTT config schema to ensure correct validation (#73619)
* Ensure config schema validation

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

* Remove loop to build schema
2022-06-22 11:47:58 +02:00
Michael 01053418f6 Fix voltage and current values for Fritz!DECT smart plugs (#73608)
fix voltage and current values
2022-06-22 11:22:14 +02:00
Erik Montnemery 8d41f8bbc2 Fix handling of illegal dates in onvif sensor (#73600)
* Fix handling of illegal dates in onvif sensor

* Address review comment

* Address review comment
2022-06-22 11:22:11 +02:00
Erik Montnemery 08382204a3 Don't attempt to reload MQTT device tracker (#73577) 2022-06-22 11:22:08 +02:00
J. Nick Koston cfbc2ed437 Handle offline generators in oncue (#73568)
Fixes #73565
2022-06-22 11:22:05 +02:00
muppet3000 66bcebbab7 Bump growattServer to 1.2.2 (#73561)
Fix #71577 - Updating growattServer dependency
2022-06-22 11:22:01 +02:00
Maciej Bieniek a310b28170 Use IP address instead of hostname in Brother integration (#73556) 2022-06-22 11:21:58 +02:00
Jean-François Roy 7b5258bc57 Bump aiobafi6 to 0.6.0 to fix logging performance (#73517) 2022-06-22 11:21:54 +02:00
Jonny Bergdahl 8dbc6b1085 Fix thumbnail issues in Twitch integration (#72564)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-22 11:21:51 +02:00
Gordon Allott 574ec5a507 Ensure metoffice daily are returned once daily (#72440)
* ensure metoffice daily are returned once daily

* Fixes metoffice tests for MODE_DAILY
2022-06-22 11:21:46 +02:00
Christopher Bailey 90ad6ca540 Bumps version of pyunifiprotect to 4.0.5 (#73798) 2022-06-22 10:46:38 +02:00
Jonny Bergdahl 95eb55dd66 Fix thumbnail issues in Twitch integration (#72564)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-22 10:22:09 +02:00
Tom Harris 08b69319ca Insteon bug fixes (#73791) 2022-06-22 10:04:11 +02:00
J. Nick Koston 4bfdc61045 Fix rachio webhook not being unregistered on unload (#73795) 2022-06-22 10:02:02 +02:00
Franck Nijhof 504f4a7acf Update Fibaro config entry on duplicate entry (#73814) 2022-06-22 09:55:36 +02:00
Franck Nijhof 998e63df61 Fix Plugwise migration error (#73812) 2022-06-22 09:54:35 +02:00
Franck Nijhof 39a00ffe09 Automatically onboard Cast (#73813) 2022-06-22 09:49:54 +02:00
jjlawren 07a46dee39 Additional surround controls for Sonos (#73805) 2022-06-22 09:08:31 +02:00
J. Nick Koston 1e0a3246f4 Revert "Fix auth_sign_path with query params (#73240)" (#73808) 2022-06-21 22:45:16 -05:00
epenet 243905ae3e Fix cover, light, select, sensor, switch type hints in zha (#73770)
* Fix zha sensor type hints

* Fix zha entity type hints

* Fix switch type hints

* Fix light type hints

* Fix cover type hints

* Fix select type hints
2022-06-21 21:04:24 -04:00
epenet 6c83ed4c9d Fix api, button and climate type hints in zha (#73771)
* Fix zha api type hints

* Fix zha button type hints

* Fix zha climate type hints
2022-06-21 21:02:08 -04:00
epenet 21275669d5 Fix inheritance in zha general channel (#73774)
Fix general channel type hints in zha
2022-06-21 21:00:58 -04:00
GitHub Action 78dd522ccd [ci skip] Translation update 2022-06-22 00:26:36 +00:00
Erik Montnemery 562ad18fb4 Bump pychromecast to 12.1.4 (#73792) 2022-06-22 00:45:47 +02:00
Erik Montnemery 274f585646 Tweak title of zha config entry created by yellow hw (#73797) 2022-06-21 16:21:31 -04:00
Christopher Bailey 67618311fa Fix auth_sign_path with query params (#73240)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 14:21:47 -05:00
J. Nick Koston adf0f62963 Add websocket api to fetch config entries (#73570)
* Add websocket api to fetch config entries

* add coverage for failure case
2022-06-21 20:09:22 +02:00
Christopher Bailey 9940a85e28 Add sensors for read-only devices for UniFi Protect (#73768) 2022-06-21 12:01:06 -05:00
J. Nick Koston db9c242723 Speed up creating group entities from YAML (#73649)
* Speed up creating group entities from YAML

- Pass all the entities to async_add_entities in one call to
  avoid multiple levels of gather

* Speed up creating group entities from YAML

- Pass all the entities to async_add_entities in one call to
  avoid multiple levels of gather

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* typing

* unbreak

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-21 18:56:32 +02:00
epenet 9fd48da132 Add lock checks to pylint type-hint plugin (#73521)
* Add ability to check kwargs type annotation

* Add checks for lock

* Add tests

* Fix components

* Fix spelling

* Revert "Fix components"

This reverts commit 121ff6dc51.

* Adjust comment

* Add comments to TypeHintMatch
2022-06-21 18:53:31 +02:00
Christopher Bailey 3823edda32 Add Permission checking for UniFi Protect (#73765)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 11:17:29 -05:00
kingy444 a816348616 Powerview dataclass (#73746)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 11:12:11 -05:00
rappenze f285b6099a Code cleanup fibaro sensor (#73388)
* Code cleanup fibaro sensor

* Adjustments based on code review

* Changes from code review, use dict instead of tuple

* Remove unneeded deafult in dict get

* Another variant to create dict
2022-06-21 18:08:47 +02:00
AdmiralStipe efb4b10629 Change Microsoft TTS default and not configurable audio settings from poor 16kHz/128kbit/s to better quality 24kHz/96kbit/s (#73609)
* Update tts.py

* Update tts.py

* Update tts.py
2022-06-21 18:05:16 +02:00
Mick Vleeshouwer 28cc0b9fb2 Expose ThreeWayWindowHandle direction as sensor in Overkiz integration (#73784)
* Expose ThreeWayWindowHandle direction as sensor

* Compile translations
2022-06-21 17:31:26 +02:00
Pascal Vizeli eac7c5f177 Remove deprecated X-Hassio-Key usage (#73783)
* Remove deprecated X-Hassio-Key usage

* ...

* Update const.py

* Update ingress.py

* Update test_ingress.py

Co-authored-by: Ludeeus <ludeeus@ludeeus.dev>
2022-06-21 17:11:20 +02:00
Robert Svensson 27209574d2 Use pydeconz interface controls for lock, scene, siren and switch platforms (#73748) 2022-06-21 16:50:44 +02:00
Allen Porter cf9cab900e Allow multiple configuration entries for nest integration (#73720)
* Add multiple config entry support for Nest

* Set a config entry unique id based on nest project id

* Add missing translations and remove untested committed

* Remove unnecessary translation

* Remove dead code

* Remove old handling to avoid duplicate error logs
2022-06-21 16:36:13 +02:00
Mick Vleeshouwer a96aa64dd1 Add Somfy to supported brands of Overkiz integration (#73786)
Add Somfy to supported brands
2022-06-21 16:35:22 +02:00
Allen Porter d399815bea Allow multiple google calendar config entries (#73715)
* Support multiple config entries at once

* Add test coverage for multiple config entries

* Add support for multiple config entries to google config flow

* Clear hass.data when unloading config entry

* Make google config flow defensive against reuse of the same account

* Assign existing google config entries a unique id

* Migrate entities to new unique id format

* Support muliple accounts per oauth client id

* Fix mypy typing errors

* Hard fail to keep state consistent, removing graceful degredation

* Remove invalid entity regsitry entries
2022-06-21 06:42:41 -07:00
epenet 1b8dd3368a Add checks for lock properties in type-hint plugin (#73729)
* Add checks for lock properties in type-hint plugin

* Adjust comment

* Simplify return-type

* Only check properties when ignore_missing_annotations is disabled

* Adjust tests

* Add comment

* Adjust docstring
2022-06-21 14:36:22 +02:00
Thibaut c674af3ba1 Remove hvac_action for Somfy Thermostat (#73776) 2022-06-21 10:22:06 +02:00
Pascal Vizeli ad2a41f774 Second run for eliminiate bluepy wheels (#73772) 2022-06-21 10:07:37 +02:00
rappenze 4813e6e420 Code cleanup fibaro lock (#73389)
* Code cleanup fibaro lock

* Adjust typings as suggested in code review
2022-06-21 09:55:08 +02:00
J. Nick Koston 9d13252142 Cleanup device callbacks in unifiprotect (#73463) 2022-06-20 22:52:41 -05:00
G Johansson 0007178d63 Add filters and service to Sensibo (#73687) 2022-06-20 22:33:47 -05:00
Christopher Bailey 3851c7b4b4 Bumps version of pyunifiprotect to 4.0.4 (#73722) 2022-06-20 22:09:13 -05:00
GitHub Action 109d1844b3 [ci skip] Translation update 2022-06-21 00:22:51 +00:00
Christopher Bailey b956d125f9 Fix UniFi Protect write rate sensor (#73759) 2022-06-20 19:10:59 -05:00
epenet 4bc1314499 Fix REPORT_CONFIG type hint in zha (#73762)
Fix REPORT_CONFIG type hint
2022-06-20 18:32:32 -04:00
Nate Harris 55eca2e2b4 Bump pycketcasts to 1.0.1 (#73262)
* Replace outdated pocketcast dependency

* Fix pycketcasts in requirements_all.txt

* Fix pycketcasts in requirements_all.txt

* Fix pycketcasts in requirements_all.txt
2022-06-20 21:04:31 +02:00
dependabot[bot] 6cf3c0ede2 Bump home-assistant/builder from 2022.03.1 to 2022.06.1 (#73466)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 21:00:00 +02:00
jjlawren c98419b031 Bump soco to 0.28.0 (#73750) 2022-06-20 20:59:29 +02:00
Franck Nijhof 16e7593a7b Add state class to Flipr sensors (#73747) 2022-06-20 20:29:50 +02:00
Gordon Allott 66b02ecff0 Ensure metoffice daily are returned once daily (#72440)
* ensure metoffice daily are returned once daily

* Fixes metoffice tests for MODE_DAILY
2022-06-20 20:27:39 +02:00
epenet f43cc18aa3 Fix type hints in zha platforms (#73745)
* Adjust binary_sensor

* Adjust device_action

* Adjust device_tracker

* Adjust fan

* Adjust lock

* Adjust siren
2022-06-20 11:31:16 -04:00
epenet 9a95649a22 Use a TypedDict for REPORT_CONFIG in zha (#73629)
* Introduce ReportConfig TypedDict in zha

* Fix hint

* Always use Tuple

* Replace empty list with empty tuple

* Allow float for third config tuple value

* ReportConfig -> AttrReportConfig

* dict -> AttrReportConfig

* Allow int attributes

* Add coments
2022-06-20 11:29:45 -04:00
epenet be2aa44559 Fix mypy issues in zha config_flow (#73744) 2022-06-20 16:25:24 +02:00
Rami Mosleh 81e3ed790d Add re-authentication for transmission (#73124)
* Add reauth flow to transmission

* fix async_setup

* add strings

* fix test coverage
2022-06-20 16:09:58 +02:00
Joel 3824703a64 Fix homematicip cloud cover tilt position (#73410)
* cover slats fixed set tilt position

* Update cover.py

* Adjust tests

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-20 16:08:43 +02:00
rappenze 483406dea5 Code cleanup fibaro switch and binary sensor (#73386) 2022-06-20 15:46:28 +02:00
Alessandro Ghedini 670bf0641a Update london-tube-status for TfL API breaking change (#73671)
* Update london-tube-status for TfL API breaking change

The TfL API used by the london_underground component (through the
london-tube-status module) introduced breaking changes recently, which
in turn broke the component, and require updating the london-tube-status
dependency to fix.

However the newer module versions also introduced other changes,
including switching from requests to aiohttp, which require converting
the london_underground component to use async APIs.

Fixes #73442

* Update sensor.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-20 15:08:50 +02:00
epenet b6d3e34ebc Drop custom type (CALLABLE_T) from zha (#73736)
* Drop CALLABLE_T from zha

* Adjust .coveragerc

* Apply suggestions from code review

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

* Add TypeVar

* Apply suggestions from code review

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

* One more

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

* Flake8

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-06-20 14:50:27 +02:00
w-marco c075760ca0 Display Windows as TYPE_WINDOW in Google Home (#73533)
* Display Windows as TYPE_WINDOW in Google Home

* set window type to window in smart_home test
2022-06-20 13:03:43 +02:00
Thibaut 3571a80c8d Add support for Somfy Thermostat in Overkiz integration (#67169)
* Add Somfy Thermostat

* Fix linked device

Co-authored-by: Vincent Le Bourlot <vlebourl@gmail.com>

* Mark Somfy thermostat as supported

* Fix wrong usage of cast

* Update presets to lowercase

* Rename constants

* Remove _saved_target_temp

* Apply black

* Clean code

* Fix mypy errors

* Use constants from pyoverkiz

* Use enum for target temp

* Add comment

* Use ClimateEntityFeature

* Ease code

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>

* Remove unused imports

* Use HVACAction

* Use HVACMode

* Use more Overkiz constants

* Don’t copy/paste

* Don’t use magic number

Co-authored-by: Vincent Le Bourlot <vlebourl@gmail.com>
Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
2022-06-20 12:58:08 +02:00
epenet 2de4b193e3 Remove unnecessary type definitions in zha (#73735)
* Cleanup ZigpyClusterType

* Cleanup ZigpyDeviceType

* Cleanup ZigpyEndpointType

* Cleanup ZigpyGroupType

* Cleanup ZigpyZdoType
2022-06-20 12:49:40 +02:00
Erik Montnemery b145aeaf75 Fix flaky recorder test (#73733) 2022-06-20 12:27:25 +02:00
Pascal Vizeli 961c33dcc1 Ditch bluepy wheels (#73732) 2022-06-20 12:27:11 +02:00
epenet b318b9b196 Improve onvif type hints (#73642)
* Remove onvif from mypy ignore list

* Adjust parsers

* Adjust event

* Adjust config_flow
2022-06-20 12:07:33 +02:00
Robert Svensson 474e0fd6d0 Use pydeconz interface controls for climate platform (#73670)
* Use pydeconz interface controls for climate

* Bump pydeconz to make use of enums in more places
2022-06-20 12:04:12 +02:00
Franck Nijhof edeb5b9286 Update spotipy to 2.20.0 (#73731) 2022-06-20 11:46:58 +02:00
epenet 06e45893aa Remove invalid type definitions in zha (#73596) 2022-06-20 11:28:53 +02:00
J. Nick Koston 120479acef Enable polling for hardwired powerview devices (#73659)
* Enable polling for hardwired powerview devices

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* docs were wrong

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* Update homeassistant/components/hunterdouglas_powerview/sensor.py
2022-06-20 11:10:01 +02:00
Peter Galantha 8e3d9d7435 Specify device_class and state_class on OpenEVSE sensors (#73672)
* Specify device_class and state_class

* import SensorStateClass
2022-06-20 10:45:35 +02:00
micha91 d733a0547a Update aiomusiccast (#73694) 2022-06-20 10:36:04 +02:00
Robert Svensson e0dbf10808 Fix CSRF token for UniFi (#73716)
Bump aiounifi to v32
2022-06-20 10:31:19 +02:00
Duco Sebel db5e94c93b Fix HomeWizard is not catching RequestError (#73719)
* Fix RequestError was not catched

* Add test for RequestError
2022-06-20 10:30:57 +02:00
J. Nick Koston 006ea441ad Pickup emulated_hue codeowner (#73725)
- I made some changes to this during this cycle so I
  want to get notifications for the next release.
2022-06-20 10:27:38 +02:00
Erik Montnemery cd08f1d0c0 Don't attempt to reload MQTT device tracker (#73577) 2022-06-20 10:26:50 +02:00
Erik Montnemery 9680a367c8 Prevent using deprecated number features (#73578) 2022-06-20 10:26:24 +02:00
Erwin Oldenkamp 4e6d753d2f Add support for the locked status but car is connected (#73551) 2022-06-20 10:10:10 +02:00
epenet bd29b91867 Use Mapping for async_step_reauth (a-e) (#72763)
* Adjust abode

* Adjust airvisual

* Adjust aladdin_connect

* Adjust ambee

* Adjust aussie-broadband

* Adjust brunt

* Adjust cloudflare

* Adjust deconz

* Adjust deluge

* Adjust devolo_home_control

* Adjust efergy

* Adjust esphome
2022-06-20 09:08:11 +02:00
Max Gashkov 1f4add0119 Fix AmbiClimate services definition (#73668) 2022-06-20 09:05:28 +02:00
J. Nick Koston cf000fae1b Remove self from tplink codeowners (#73723) 2022-06-20 09:04:54 +02:00
Erik Montnemery 2c936addd2 Fix handling of illegal dates in onvif sensor (#73600)
* Fix handling of illegal dates in onvif sensor

* Address review comment

* Address review comment
2022-06-20 08:52:37 +02:00
Jan Bouwhuis 57daeaa174 Fix MQTT config schema to ensure correct validation (#73619)
* Ensure config schema validation

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

* Remove loop to build schema
2022-06-20 08:51:12 +02:00
J. Nick Koston fcd8859542 Remove self from logbook codeowners (#73724) 2022-06-19 22:24:42 -04:00
GitHub Action 6f8e0419f0 [ci skip] Translation update 2022-06-20 00:22:34 +00:00
epenet a92105171c Remove vizio from mypy ignore list (#73585)
* Remove vizio config_flow from mypy ignore list

* Fix mypy errors

* Adjust media_player

* Add space
2022-06-19 21:39:24 +02:00
epenet e7e9c65e44 Adjust zha routine to get name and original_name (#73646) 2022-06-19 21:38:01 +02:00
Raman Gupta e53372f559 Add zwave_js/get_firmware_update_progress WS command (#73304)
Add zwave_js/get_firmware_update_progress WS command
2022-06-19 15:33:58 -04:00
Raman Gupta bb5a6a7104 Add zwave_js/get_firmware_update_capabilties WS command (#73691)
* Add zwave_js/get_firmware_update_capabilties WS command

* Fix test
2022-06-19 14:50:47 -04:00
Raman Gupta 801ba6ff8e Add target option to zwave_js firmware upload view (#73690) 2022-06-19 14:50:05 -04:00
Allen Porter ab95299150 Bump gcal_sync to 0.10.0 and fix google typing (#73710)
Bump gcal_sync to 0.10.0
2022-06-19 20:16:07 +02:00
Raman Gupta 9b93071720 Bump zwave-js-server-python to 0.38.0 (#73707)
* Bump zwave-js-server-python to 0.38.0

* Fix test
2022-06-19 20:12:01 +02:00
Steven Looman 26641fc90d Bump async-upnp-client to 0.31.2 (#73712) 2022-06-19 12:59:37 -05:00
Álvaro Fernández Rojas be6c2554dd Add QNAP QSW DHCP discovery (#73130)
* qnap_qsw: add DHCP discovery

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

* qnap_qsw: config_flow: add async_step_dhcp

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

* qnap_qsw: config_flow: lower DHCP logging

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

* tests: qnap_qsw: fix copy & paste

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

* qnap_qsw: dhcp: introduce changes suggested by @bdraco

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

* Update homeassistant/components/qnap_qsw/config_flow.py

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

* qnap_qsw: async_step_user: disable raising on progress

Allows async_step_user to win over a discovery.

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

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-19 09:43:29 -05:00
Marc Mueller 24bf42cfbe Update pylint to 2.14.3 (#73703) 2022-06-19 16:29:57 +02:00
G Johansson 68135e57af Split timer service for Sensibo (#73684) 2022-06-19 09:28:33 -05:00
Christopher Bailey b19b6ec6ea Update UniFi Protect to use MAC address for unique ID (#73508) 2022-06-19 09:22:33 -05:00
Raman Gupta 7714183118 Add zwave_js/subscribe_node_status WS API cmd (#73249)
* Add zwave_js/subscribe_node_status WS API cmd

* add ready to event
2022-06-19 10:09:26 -04:00
Rechner Fox 45142558ef Bump pyenvisalink to 4.5 (#73663)
* Bump pyenvisalink to latest version 4.5

* Minor bugfixes:
* Prevent reconnects from being scheduled simultaneously
* Fix parsing keypad messages containing extra commas

* Add pyenvisalink updated dependency
2022-06-19 08:54:10 +02:00
GitHub Action dcf6c2d3a4 [ci skip] Translation update 2022-06-19 00:23:14 +00:00
G Johansson d5df2b2ee7 Sensibo Add Pure Boost Service (#73114)
* Pure Boost Service

* Fix tests

* Fix mypy

* One service to two services

* Minor fix test

* Fix issues
2022-06-18 15:15:44 -05:00
G Johansson 046d7d2a23 Add tests for trafikverket_ferry (#71912) 2022-06-18 12:58:10 -05:00
Christopher Bailey 691d49f23b Refactor migration code for UniFi Protect (#73499) 2022-06-18 12:56:28 -05:00
Pascal Vizeli f4c3bd7e00 Fix issue with pandas wheels (#73669)
* Fix issue with pandas wheels

* Update builder
2022-06-18 11:41:26 +02:00
J. Nick Koston 0a27211356 Switch bond data to use a dataclass (#73514) 2022-06-17 22:45:20 -05:00
J. Nick Koston 7a792b093f Fix calling permanent off with nexia (#73623)
* Fix calling permanent off with nexia

Changelog: https://github.com/bdraco/nexia/compare/1.0.1...1.0.2

Fixes #73610

* one more
2022-06-17 21:57:44 -05:00
GitHub Action 027f54ca15 [ci skip] Translation update 2022-06-18 00:24:33 +00:00
uvjustin 7a3f632c1d Make stream recorder work concurrently (#73478) 2022-06-18 05:13:07 +10:00
J. Nick Koston 600d23e052 Retry on SenseAPIException during sense config entry setup (#73651) 2022-06-17 14:03:42 -05:00
J. Nick Koston 4bc5d7bfed Speed up zha tests (#73627) 2022-06-17 11:41:10 -05:00
Steven Looman bf15df75dd Ignore fake upnp/IGD devices when upnp is discovered (#73645) 2022-06-17 11:26:45 -05:00
Steven Looman 2be54de448 Don't verify ssl certificates for ssdp/upnp devices (#73647) 2022-06-17 11:26:25 -05:00
Erik Montnemery baa810aabb Improve warnings for datetime and date sensors with invalid states (#73598) 2022-06-17 12:17:13 +02:00
Erik Montnemery 66feac2257 Finish migrating zha NumberEntity to native_value (#73580) 2022-06-17 12:15:59 +02:00
Erik Montnemery 2107966fa8 Finish migrating sleepiq NumberEntity to native_value (#73582) 2022-06-17 12:14:35 +02:00
Erik Montnemery d90f029772 Finish migrating demo NumberEntity to native_value (#73581) 2022-06-17 12:14:11 +02:00
epenet e0b362ef3b Fix zha log message (#73626) 2022-06-17 12:13:16 +02:00
Pascal Vizeli 546d342604 Update wheels builder to 2022.06.5 (#73633) 2022-06-17 11:44:56 +02:00
Pascal Vizeli 01ccf721e7 Update wheels builder to 2022.06.4 (#73628) 2022-06-17 10:09:41 +02:00
Allen Porter ea21a36e52 Remove default use of google calendars yaml file in tests (#73621)
Remove default use of
 google_calendars.yaml in tests
2022-06-17 09:04:41 +02:00
Michael e30478457b Fix voltage and current values for Fritz!DECT smart plugs (#73608)
fix voltage and current values
2022-06-17 07:40:02 +02:00
Dave T cdd5a5f68b Generic ipcam configflow2 followup (#73511)
* Address code review comments

* Add type hints

* Remvoe unused strings

* Remove persistent notification setup

* Patch async_configre

* Fix pylint warning

* Address review comments

* Clean types

* Code review: defer local var assignment

Co-authored-by: Dave T <davet2001@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-17 07:07:21 +02:00
uvjustin f276523ef3 Ignore in progress segment when adding stream recorder lookback (#73604) 2022-06-17 11:07:08 +10:00
GitHub Action d43178db06 [ci skip] Translation update 2022-06-17 00:20:34 +00:00
Pascal Vizeli 1c6337d548 Update wheels builder to 2022.06.3 (#73615) 2022-06-16 22:47:02 +02:00
Pascal Vizeli ea71630768 Musllinux legacy resolver & cargo git (#73614) 2022-06-16 22:19:47 +02:00
epenet 187d56b88b Add ability to run plugin on unannotated functions (#73520)
* Add ability to run plugin on unannotated functions

* Use options

* Adjust help text

* Add test for the option
2022-06-16 20:12:30 +02:00
uvjustin 01a4a83bab Improve stream playback on high latency cameras (#72547)
* Disable LL-HLS for HLS sources
* Add extra wait for Nest cameras
2022-06-17 01:48:52 +10:00
Pascal Vizeli 9687aab802 Add yaml-dev core wheel apk (#73597) 2022-06-16 17:17:30 +02:00
Pascal Vizeli 63ff3f87dc Fix wheel pipeline (#73594) 2022-06-16 17:00:36 +02:00
Pascal Vizeli f7945cdc64 Add build musllinux wheel (#73587)
* Add build musllinux wheel

* cleanup
2022-06-16 16:43:09 +02:00
Erik Montnemery 3e1a4d86a3 Fix modification of mutable global in xiaomi_miio number (#73579) 2022-06-16 16:35:00 +02:00
Erik Montnemery e2327622c3 Migrate SNMP sensor to TemplateEntity (#73324) 2022-06-16 15:02:50 +02:00
Martin Hjelmare 8049170e5a Initialize hass.config_entries for check config (#73575) 2022-06-16 14:40:41 +02:00
Erik Montnemery ddca199961 Migrate tuya NumberEntity to native_value (#73491) 2022-06-16 13:49:16 +02:00
Erik Montnemery dea8041461 Add device_class to MQTT number and migrate to native_value (#73534) 2022-06-16 13:34:54 +02:00
epenet 67b0354632 Adjust FlowResult construction in data entry flow (#72884) 2022-06-16 12:57:41 +02:00
Maciej Bieniek c2b484e38b Use IP address instead of hostname in Brother integration (#73556) 2022-06-16 11:43:36 +02:00
epenet 7731cfd978 Add lock typing in freedompro (#73544) 2022-06-16 10:40:55 +02:00
epenet 521d52a8b9 Add lock typing in nuki (#73545) 2022-06-16 10:20:34 +02:00
epenet 2b5748912d Add lock typing in starline (#73546) 2022-06-16 10:20:08 +02:00
epenet 6374fd0992 Add lock typing in volvooncall (#73548) 2022-06-16 10:19:44 +02:00
muppet3000 7a7729678e Bump growattServer to 1.2.2 (#73561)
Fix #71577 - Updating growattServer dependency
2022-06-16 10:15:19 +02:00
Erik Montnemery 2d07cda4e7 Improve number deprecation warnings (#73552) 2022-06-16 09:05:13 +02:00
J. Nick Koston af81ec1f5f Handle offline generators in oncue (#73568)
Fixes #73565
2022-06-16 07:51:55 +02:00
Corbeno 90dba36f80 Proxmoxve code cleanup (#73571)
code cleanup
2022-06-16 07:35:58 +02:00
jjlawren 90e402eca5 Allow removing Sonos devices (#73567) 2022-06-15 19:21:39 -10:00
GitHub Action b4359c7721 [ci skip] Translation update 2022-06-16 00:22:45 +00:00
Erik Montnemery 0ace5af914 Correct migration of unifiprotect number (#73553) 2022-06-15 11:07:18 -10:00
Erik Montnemery 7a82794ad7 Migrate template NumberEntity to native_value (#73537) 2022-06-15 17:06:44 +02:00
Allen Porter b014d558ff Add application credentials platform for nest and deprecate yaml for SDM API (#73050)
* Update the nest integration to be useable fully from the config flow

* Support discovery in nest config flow

* Remove configuration entries

* Remove unused import

* Remove dead code

* Update homeassistant/components/nest/strings.json

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

* Remove commented out code

* Use config flow for app auth reauthentication path

* Improves for re-auth for upgrading existing project and creds

* More dead code removal

* Apply suggestions from code review

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

* Remove outdated code

* Update homeassistant/components/nest/config_flow.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-15 07:15:53 -07:00
epenet f8f1bfde21 Add lock typing in components (#73539)
* Add lock typing in components

* Revert freedompro amends
2022-06-15 15:23:36 +02:00
Erik Montnemery 8c0ae545c9 Migrate knx NumberEntity to native_value (#73536) 2022-06-15 14:39:56 +02:00
Franck Nijhof 8007effd4f Update pyupgrade to v2.34.0 (#73530) 2022-06-15 13:32:39 +02:00
Thibaut 658ce9d4f2 Remove Somfy integration (#73527)
* Remove somfy

* Remove somfy
2022-06-15 12:18:15 +02:00
Franck Nijhof 05d7d31dfd Improve Elgato error handling (#73444) 2022-06-15 12:12:07 +02:00
Erik Montnemery e05e79e53d Migrate NumberEntity r-t to native_value (#73485) 2022-06-15 10:56:41 +02:00
Erik Montnemery 4ace2c4d3a Migrate overkiz NumberEntity to native_value (#73493) 2022-06-15 10:49:40 +02:00
epenet 94a8fe0052 Remove xiaomi_aqara from mypy ignore list (#73526) 2022-06-15 10:45:47 +02:00
Bram Goolaerts 17eb8c95dd Fix De Lijn 'tzinfo' error (#73502)
* Fix De Lijn component tzinfo error

This fix should update the issue "Error:'str' object has no attribute 'tzinfo'" (issue #67455)

* fix Black and isort errors

fixing errors from Black and isort CI validation

* Fix black and flake8 issues

Fixing black and flake8 issues to pass CI
2022-06-15 10:33:53 +02:00
Corbeno a77ea1c390 Add device class to proxmoxve binary sensor (#73465)
* add device class property to binary sensor

* add newline
2022-06-15 08:49:55 +02:00
J. Nick Koston 16dd70ba99 Switch to a dataclass for lutron_caseta entry data (#73500) 2022-06-14 20:32:38 -10:00
jjlawren 77c92b0b77 Mark Sonos speaker as offline when switching to bluetooth (#73519) 2022-06-14 20:32:13 -10:00
J. Nick Koston 1e956bc52f Reduce bond startup time (#73506) 2022-06-14 20:30:59 -10:00
Jean-François Roy c64b108789 Bump aiobafi6 to 0.6.0 to fix logging performance (#73517) 2022-06-14 17:11:37 -10:00
GitHub Action 188b1670a3 [ci skip] Translation update 2022-06-15 00:25:37 +00:00
G Johansson 32b61e15a1 Strict typing Trafikverket Ferry (#72459) 2022-06-14 13:35:29 -10:00
J. Nick Koston d25a5f3836 Bump zeroconf to 0.38.7 (#73497) 2022-06-14 12:16:30 -10:00
Paulus Schoutsen c73eca5923 Merge pull request #73504 from home-assistant/rc 2022-06-14 14:49:29 -07:00
Michael 103a6266a2 Fix fetching upgrade data during setup of Synology DSM (#73507) 2022-06-14 11:18:59 -10:00
Michael 3bbb4c052c Add camera diagnostics to Synology DSM (#73391) 2022-06-14 10:49:06 -10:00
Paulus Schoutsen 063e680589 Fix unifiprotect import 2022-06-14 13:23:27 -07:00
J. Nick Koston a0ed54465f Migrate lutron caseta occupancygroup unique ids so they are actually unique (#73378) 2022-06-14 10:02:45 -10:00
Paulus Schoutsen a4a511b6db Bumped version to 2022.6.6 2022-06-14 12:31:51 -07:00
Thibaut 0b22e47c53 Fix max_value access for number platform in Overkiz (#73479)
Fix wrong property name
2022-06-14 12:31:46 -07:00
Paulus Schoutsen d8f2afb772 Guard withings accessing hass.data without it being set (#73454)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-14 12:31:45 -07:00
Allen Porter d6bfb86da2 Fix fan support in nest, removing FAN_ONLY which isn't supported (#73422)
* Fix fan support in nest, removing FAN_ONLY which isn't supported

* Revert change to make supported features dynamic
2022-06-14 12:31:44 -07:00
Paulus Schoutsen 1ab91bcf0f Bump aiohue to 4.4.2 (#73420) 2022-06-14 12:31:44 -07:00
Marcio Granzotto Rodrigues 8822feaf85 Fix smart by bond detection with v3 firmware (#73414) 2022-06-14 12:31:24 -07:00
J. Nick Koston c59b03e3dc Only update unifiprotect ips from discovery when the console is offline (#73411) 2022-06-14 12:27:39 -07:00
J. Nick Koston 7b7fc12513 Fix reload race in yeelight when updating the ip address (#73390) 2022-06-14 12:27:38 -07:00
Khole 8dc61a8c2e Hive Bump pyhiveapi to 0.5.10 for credentials fix (#73365) 2022-06-14 12:27:38 -07:00
Raman Gupta 003de09c48 Fix zwave_js add node schemas (#73343)
* Fix zwave_js add node schemas

* Code cleanup

* Add test
2022-06-14 12:27:37 -07:00
J. Nick Koston 28bf9db5a2 Filter out forced updates in live logbook when the state has not changed (#73335) 2022-06-14 12:27:36 -07:00
IceBotYT 8e6fa54e0a Improve PECO integration (#73460) 2022-06-14 21:08:47 +02:00
Erik Montnemery 1f7340313a Migrate NumberEntity a-j to native_value (#73486) 2022-06-14 08:16:36 -10:00
Erik Montnemery 576de9ac40 Migrate NumberEntity u-z to native_value (#73488) 2022-06-14 08:15:56 -10:00
Erik Montnemery 23fa19b75a Support restoring NumberEntity native_value (#73475) 2022-06-14 10:56:27 -07:00
Paulus Schoutsen 61e4b56e19 Guard withings accessing hass.data without it being set (#73454)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-14 10:55:58 -07:00
J. Nick Koston 9b157f974d Reduce overhead to refire events from async_track_point_in_utc_time when an asyncio timer fires early (#73295)
* Reduce overhead to refire events

- asyncio timers can fire early for a varity of reasons including
  poor clock resolution and performance. To solve this problem
  we re-arm async_track_point_in_utc_time and try again later
  when this happens.

- On some platforms this means the async_track_point_in_utc_time can
  end up trying many times to prevent firing the timer early since as
  soon as it rearms it fires again and this repeats until we reach
  the appointed time. While there is not much we can do to prevent
  asyncio from firing the timer callback early, we can reduce the
  overhead when this happens by using avoiding creating datetime
  objects

* tweak mocking

* -vvv

* fix time freeze being too broad in litterrobot

* adjust
2022-06-14 07:46:00 -10:00
Franck Nijhof f69ea6017d Add device class support to Tuya number entities (#73483) 2022-06-14 16:00:07 +02:00
Allen Porter 0b7a030bd4 Fix fan support in nest, removing FAN_ONLY which isn't supported (#73422)
* Fix fan support in nest, removing FAN_ONLY which isn't supported

* Revert change to make supported features dynamic
2022-06-14 06:19:22 -07:00
Thibaut e08465fe8c Fix max_value access for number platform in Overkiz (#73479)
Fix wrong property name
2022-06-14 15:17:40 +02:00
Mick Vleeshouwer 04c60d2183 Add support for AtlanticPassAPCZoneControl to Overkiz integration (#72384)
* Add support for AtlanticPassAPCZoneControl (overkiz)

* Remove unneeded comments

* Remove supported features

* Fix new standards
2022-06-14 13:27:58 +02:00
Mick Vleeshouwer 1ef0102f12 Add active alarm zones as select entity to Overkiz integration (#68997)
* Add active zones as select entity

* Clean up for PR
2022-06-14 13:21:35 +02:00
Franck Nijhof 99db2a5afe Update requests to 2.28.0 (#73406)
* Update requests to 2.28.0

* Fix mypy warning

* Fix Facebook messenger tests
2022-06-14 12:21:32 +02:00
Franck Nijhof 65378f19c8 Update caldav to 0.9.1 (#73472) 2022-06-14 12:21:02 +02:00
Erik Montnemery 3da3503673 Add temperature unit conversion support to NumberEntity (#73233)
* Add temperature unit conversion to number

* Remove type enforcements

* Lint

* Fix legacy unit_of_measurement

* Address review comments

* Fix unit_of_measurement, improve test coverage
2022-06-14 09:40:57 +02:00
Erik Montnemery e3b6c7a66f Add Home Assistant Yellow integration (#73272)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-13 23:25:11 -07:00
GitHub Action 4005af99aa [ci skip] Translation update 2022-06-14 00:26:59 +00:00
J. Nick Koston 08b55939fb Avoid creating executor job in requirements if another call satisfied the requirement (#73451) 2022-06-13 14:33:29 -07:00
J. Nick Koston bb8b51eda3 Fix typos in ConfigEntryState.recoverable (#73449) 2022-06-13 10:56:08 -10:00
J. Nick Koston 51b4d15c8c Speed up mqtt tests (#73423)
Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-06-13 10:17:10 -10:00
J. Nick Koston 034c0c0593 Improve YAML Dump times with C Dumper (#73424) 2022-06-13 13:14:30 -07:00
J. Nick Koston 0ffeb6c304 Check if requirements are installed in the executor (#71611) 2022-06-13 13:10:05 -07:00
G Johansson c660fae8d8 Sensibo Add timer (#73072) 2022-06-13 09:17:08 -10:00
J. Nick Koston dca4d3cd61 Significantly improve yaml load times when the C loader is available (#73337) 2022-06-13 08:44:46 -10:00
epenet b84e844c76 Add async_get_options_flow type hints (cast) (#73432) 2022-06-13 13:55:38 +02:00
epenet c195d462cc Add async_get_options_flow type hints (hvv) (#73433) 2022-06-13 13:53:47 +02:00
Jan Bouwhuis 657e7f9a4c Simplify MQTT test for setup manual mqtt item from yaml (#72916)
simplify test setup manual mqtt item from yaml
2022-06-13 13:44:12 +02:00
Jan Bouwhuis 48e3d68b53 Clean up MQTT platform entry setup at discovery (#72371)
* Setup MQTT discovery with entry setup

* Wait for entry setup in test

* flake
2022-06-13 13:38:53 +02:00
epenet f846cd033f Add async_get_options_flow type hints (mqtt) (#73434) 2022-06-13 13:35:50 +02:00
epenet 42ed0fd47b Add async_get_options_flow type hints (n-z) (#73431) 2022-06-13 13:30:41 +02:00
epenet b589700651 Add async_get_options_flow type hints (a-m) (#73430) 2022-06-13 13:17:59 +02:00
epenet ca0a185b32 Enforce config-flow type hints to get options flow (#72831)
* Enforce config-flow type hints to get options flow

* Add checks on return_type

* Fix tests

* Add tests

* Add BinOp to test

* Update tests/pylint/test_enforce_type_hints.py

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

* Update pylint/plugins/hass_enforce_type_hints.py

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

* Add TypeHintMatch property

* Update pylint/plugins/hass_enforce_type_hints.py

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

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-06-13 11:14:30 +02:00
kingy444 d9f3e9a71c Add supported_brands to powerview (#73421) 2022-06-12 22:26:35 -10:00
Dave T b261f0fb41 Use more specific exception and simplify aurora_abb_powerone (#73338)
* Use more specific exception for comms timeout

* Remove defered uniqueid assigner now yaml has gone

Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-06-13 09:36:46 +02:00
Avi Miller a0974e0c72 Refactor LIFX discovery to prevent duplicate discovery response handling (#72213)
* Partially revert #70458 and allow duplicate LIFX discoveries

Signed-off-by: Avi Miller <me@dje.li>

* Only process one discovery at a time

* Revert all LIFX duplicate/inflight discovery checks

Also remember LIFX Switches and do as little processing for them
as possible.

Signed-off-by: Avi Miller <me@dje.li>

* Bump aiolifx version to support the latest LIFX devices

LIFX added 22 new product definitions to their public product
list at the end of January and those new products are defined in
aiolifx v0.8.1, so bump the dependency version.

Also switched to testing for relays instead of maintaining a
seperate list of switch product IDs.

Fixes #72894.

Signed-off-by: Avi Miller <me@dje.li>

* Refactor LIFX discovery to better handle duplicate responses

Signed-off-by: Avi Miller <me@dje.li>

* Update clear_inflight_discovery with review suggestion

Signed-off-by: Avi Miller <me@dje.li>

* Move the existing entity check to before the asyncio lock

Signed-off-by: Avi Miller <me@dje.li>

* Bail out of discovery early and if an entity was created

Also ensure that the entity always has a unique ID even if the bulb was
not successfully discovered.

Signed-off-by: Avi Miller <me@dje.li>

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-12 20:05:41 -10:00
J. Nick Koston 7a422774b6 Prevent config entries from being reloaded while they are setting up (#73387) 2022-06-12 23:05:08 -07:00
Paulus Schoutsen 1187009280 Bump aiohue to 4.4.2 (#73420) 2022-06-12 19:33:45 -10:00
Franck Nijhof f0a5dbacf8 Update pytest to 7.1.2 (#73417) 2022-06-12 20:48:17 -07:00
J. Nick Koston ad9e1fe166 Fix reload race in yeelight when updating the ip address (#73390) 2022-06-12 20:29:44 -07:00
J. Nick Koston a05c539abe Add support for async_remove_config_entry_device to lutron_caseta (#73382) 2022-06-12 20:28:53 -07:00
Robert Hillis f732c51600 Add support for playing latest activity video for Skybell (#73373)
* Add support for playing latest activity video

* ffmpeg

* uno mas

* uno mas
2022-06-12 20:27:19 -07:00
Brandon Rothweiler f85409b2ea Remove deprecated services from Mazda integration (#73403) 2022-06-12 20:18:48 -07:00
Franck Nijhof 23e17c5b47 Update coverage to 6.4.1 (#73405) 2022-06-12 20:17:58 -07:00
Franck Nijhof 1d5290b03f Update watchdog to 2.1.9 (#73407) 2022-06-12 20:17:51 -07:00
Corbeno 7756ddbe80 Bump proxmoxer to 1.3.1 (#73418)
bump proxmoxer
2022-06-13 05:15:01 +02:00
J. Nick Koston c6a6d7039e Add unique ids to lutron_caseta scenes (#73383) 2022-06-12 20:14:19 -07:00
J. Nick Koston a7f72931ad Simplify esphome state updates (#73409) 2022-06-12 20:12:49 -07:00
J. Nick Koston 9159db4b4a Only update unifiprotect ips from discovery when the console is offline (#73411) 2022-06-12 20:04:17 -07:00
kingy444 9ae713f128 Improve error handling of powerview hub maintenance, remove invalid device classes (#73395) 2022-06-12 16:26:38 -10:00
Marcio Granzotto Rodrigues 5854dfa84f Fix smart by bond detection with v3 firmware (#73414) 2022-06-12 15:27:18 -10:00
GitHub Action 42d39d2c7e [ci skip] Translation update 2022-06-13 00:25:34 +00:00
Franck Nijhof 02d18a2e1f Update whois to 0.9.16 (#73408) 2022-06-13 02:16:15 +02:00
J. Nick Koston 0bcc5d7a29 Add async_remove_config_entry_device support to lookin (#73381) 2022-06-13 01:46:20 +02:00
GitHub Action a1637e4fce [ci skip] Translation update 2022-06-12 00:25:33 +00:00
J. Nick Koston 51f88d3dad Use get_ffmpeg_manager instead of accessing hass.data directly in ring (#73374)
Use get_ffmpeg_manager intead of accessing hass.data directly in ring
2022-06-12 00:05:19 +02:00
Aidan Timson 297072c1f6 Fix initial data load for System Bridge (#73339)
* Update package to 3.1.5

* Fix initial loading of data

* Remove additional log and make method
2022-06-11 22:25:07 +02:00
Khole d70ec35468 Hive Bump pyhiveapi to 0.5.10 for credentials fix (#73365) 2022-06-11 12:43:57 -07:00
G Johansson dd923b2eed Minor fix scrape (#73369) 2022-06-11 12:35:15 -07:00
Robert Hillis 4feb5977ef Bump aioskybell to 22.6.1 (#73364) 2022-06-11 12:34:32 -07:00
J. Nick Koston 8c96845135 Add missing exception handlers to radiotherm (#73349) 2022-06-11 12:31:25 -07:00
jjlawren cb1011156d Rely on core config entry error logging in Plex setup (#73368)
Rely on core config entry error logging
2022-06-11 08:39:43 -10:00
Raman Gupta b4e9a9b1ed Bump zwave-js-server-python to 0.37.2 (#73345) 2022-06-11 09:38:13 -04:00
Raman Gupta dc48791864 Add config flow to eight_sleep (#71095)
* Add config flow to eight_sleep

* simplify tests

* Remove extra file

* remove unused import

* fix redundant code

* Update homeassistant/components/eight_sleep/__init__.py

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

* incorporate feedback

* Review comments

* remove typing from tests

* Fix based on changes

* Fix requirements

* Remove stale comment

* Fix tests

* Reverse the flow and force the config entry to reconnect

* Review comments

* Abort if import flow fails

* Split import and user logic

* Fix error

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-11 02:16:46 -04:00
Raman Gupta 63b51f566d Fix zwave_js add node schemas (#73343)
* Fix zwave_js add node schemas

* Code cleanup

* Add test
2022-06-11 02:13:50 -04:00
uvjustin b1f2e5f897 Use create_stream in generic camera config flow (#73237)
* Use create_stream in generic camera config flow
2022-06-11 15:38:43 +10:00
Nathan Spencer 21cfbe875e Remove logic to mark litterrobot vacuum entity as unavailable (#73234) 2022-06-11 00:16:47 +03:00
J. Nick Koston e4f354998d Filter out forced updates in live logbook when the state has not changed (#73335) 2022-06-10 14:04:43 -07:00
Paulus Schoutsen 3759adcf2b Merge pull request #73334 from home-assistant/rc 2022-06-10 14:01:57 -07:00
Paulus Schoutsen 17fd03d8fd Bumped version to 2022.6.5 2022-06-10 12:51:48 -07:00
Paulus Schoutsen 972aab3c26 Guard MySQL size calculation returning None (#73331) 2022-06-10 12:51:42 -07:00
Erik Montnemery c5adee6821 Improve MQTT reload performance (#73313)
* Improve MQTT reload performance

* Update homeassistant/components/mqtt/__init__.py

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

* Update homeassistant/components/mqtt/mixins.py

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

* Update homeassistant/components/mqtt/__init__.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-10 12:51:41 -07:00
hesselonline f98f7f2022 Fix wallbox sensor rounding (#73310) 2022-06-10 12:51:40 -07:00
Erik Montnemery c6b68ed916 Fix initial tilt value of MQTT cover (#73308) 2022-06-10 12:51:39 -07:00
Christopher Bailey 343c2672bb Bumps version of pyunifiprotect to 3.9.2 to fix compat with protect 2.1.1 (#73299) 2022-06-10 12:51:39 -07:00
Christopher Bailey 31a4c649ff Bumps version of pyunifiprotect to 3.9.1 (#73252) 2022-06-10 12:51:38 -07:00
Christopher Bailey 300d2a0881 Bump version of pyunifiprotect to 3.9.0 (#73168)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-10 12:51:37 -07:00
Paulus Schoutsen 1253f7f85d Fix reloading themes crashing if no themes configured (#73287) 2022-06-10 12:50:40 -07:00
Adam Dullage 6dbe5942ed Fix polling frequency for Starling integration (#73282) 2022-06-10 12:50:40 -07:00
starkillerOG e41cb1e020 Improve Netgear logging (#73274)
* improve logging

* fix black

* invert checks
2022-06-10 12:50:39 -07:00
Aaron Bach 44a4f4115f Bump regenmaschine to 2022.06.1 (#73250) 2022-06-10 12:50:38 -07:00
Michael db148b65e5 Fix handling of connection error during Synology DSM setup (#73248)
* dont reload on conection error during setup

* also fetch API errors during update
2022-06-10 12:50:37 -07:00
Khole 89dfd4b162 Hive auth fix for users (#73247) 2022-06-10 12:50:37 -07:00
d0nni3q84 a24463f7ea Fix Feedreader Atom feeds using updated date (#73208)
* Feedreader: Properly support Atom feeds that use only the `updated` date format and resolve #73207.

* Revert "Feedreader: Properly support Atom feeds that use only the `updated` date format and resolve #73207."

This reverts commit 4dbd11ee04.

* Properly support Atom feeds that use only the `updated` date format and resolve #73207.

* Revert "Properly support Atom feeds that use only the `updated` date format and resolve #73207."

This reverts commit 14366c6a24.

* Properly support Atom feeds that use only the `updated` date format and resolve #73207.
2022-06-10 12:50:36 -07:00
Matrix 498da3bba3 Bump yolink-api to 0.0.8 (#73173)
* update api libray fix hearbeat message valiation

* update yolink-api ignore invalidate message
2022-06-10 12:50:35 -07:00
starkillerOG 8cf6f50193 Ensure netgear devices are tracked with one enabled config entry (#72969)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-10 12:50:34 -07:00
Paulus Schoutsen 53b3d2ee87 Guard MySQL size calculation returning None (#73331) 2022-06-10 12:49:58 -07:00
Dave T 2b07082cf6 Bump aurorapy version to 0.2.7 (#73327)
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-06-10 22:19:02 +03:00
hesselonline 8ffd4cf0f9 Fix wallbox sensor rounding (#73310) 2022-06-10 11:55:55 -07:00
Joakim Sørensen a82a1bfd64 Allow more addon image paths (#73322) 2022-06-10 15:41:42 +02:00
Erik Montnemery de2fade8c6 Improve MQTT reload performance (#73313)
* Improve MQTT reload performance

* Update homeassistant/components/mqtt/__init__.py

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

* Update homeassistant/components/mqtt/mixins.py

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

* Update homeassistant/components/mqtt/__init__.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-10 14:23:08 +02:00
Matrix b4a6ccfbc8 Add yolink thermostat support (#73243)
* Add yolink thermostat support

* suggest and bugs fix

* fix suggest and bugs
2022-06-10 14:18:46 +02:00
Erik Montnemery 3d78240cee Fix initial tilt value of MQTT cover (#73308) 2022-06-10 11:11:40 +02:00
J. Nick Koston 06ebc1fa14 Add support for async_remove_config_entry_device to august (#72627) 2022-06-10 09:53:42 +02:00
J. Nick Koston f4d339119f Cache which entities are exposed in emulated_hue (#73093) 2022-06-09 21:17:37 -10:00
Allen Porter 7a5fa8eb58 Update more nest tests to use common fixtures (#73303)
Update nest tests to use fixtures
2022-06-10 07:14:43 +02:00
Adam Dullage 15621bee3f Fix polling frequency for Starling integration (#73282) 2022-06-10 06:37:36 +02:00
J. Nick Koston 0f4080bca3 Fix synology_dsm coordinator typing (#73301) 2022-06-10 06:24:39 +02:00
J. Nick Koston 0505c596a5 Fix dropouts in history_stats graphs on restart (#73110) 2022-06-09 21:11:23 -07:00
J. Nick Koston a9ab98fb45 Add power sensor to WiZ (#73260) 2022-06-09 18:10:15 -10:00
J. Nick Koston 5863d57e73 Add strict typing to homekit locks (#73264) 2022-06-09 20:56:58 -07:00
Khole 1dd7781acc Hive auth fix for users (#73247) 2022-06-09 20:54:24 -07:00
J. Nick Koston d3f01f7ea9 Reduce memory pressure from history_stats with large data sets (#73289) 2022-06-09 20:49:37 -07:00
J. Nick Koston 211e5432ac Add EVENT_USER_UPDATED (#71965) 2022-06-09 20:49:02 -07:00
J. Nick Koston 2f106112df Add async_remove_config_entry_device to synology_dsm (#73293) 2022-06-09 20:48:07 -07:00
Christopher Bailey 15aecbb6ef Bumps version of pyunifiprotect to 3.9.2 to fix compat with protect 2.1.1 (#73299) 2022-06-09 17:32:16 -10:00
GitHub Action c74159109a [ci skip] Translation update 2022-06-10 00:25:26 +00:00
Dave T e67aa09bf2 Add zeroconf discovery to hive (#73290)
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-06-09 11:40:01 -10:00
J. Nick Koston 22daea27c2 Cleanup coordinators in synology_dsm (#73257)
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2022-06-09 10:22:16 -10:00
Franck Nijhof 1d6068fa09 Update google-cloud-texttospeech to 2.11.1 (#73210) 2022-06-09 22:47:21 +03:00
Paulus Schoutsen f25fdf0d2e Fix reloading themes crashing if no themes configured (#73287) 2022-06-09 22:46:13 +03:00
Erik Montnemery 82afbd1d12 Improve raspberry_pi tests (#73269)
* Improve raspberry_pi tests

* Address review comments
2022-06-09 16:12:10 +02:00
Erik Montnemery 542eae1cf3 Add additional board types to hassio (#73267)
* Add additional board types to hassio

* Remove unsupported boards

* Add rpi2 back
2022-06-09 16:09:00 +02:00
Allen Porter 91cd61804e Deprecate google calendar add_event service, replaced with entity service (#72473)
* Deprecate google calendar add_event service, replaced with entity service

* Fix inconsistencies and bugs in input validation

* Update validation rules and exceptions

* Resolve merge conflicts
2022-06-09 16:08:08 +02:00
starkillerOG 1dc8c085e9 Improve Netgear logging (#73274)
* improve logging

* fix black

* invert checks
2022-06-09 13:48:39 +02:00
Maikel Punie b3677cdff6 Bump velbus-aio version to 2022.6.1 (#73261) 2022-06-09 12:26:20 +02:00
b3nj1 69050d5942 Add Vesync voltage sensor, and yearly, weekly, montly energy sensors (#72570) 2022-06-09 11:14:18 +02:00
Rami Mosleh a7398b8a73 Remove deprecated yaml and code cleanup for nfandroidtv (#73227) 2022-06-09 11:06:59 +02:00
dependabot[bot] 86723ea02b Bump actions/setup-python from 3.1.2 to 4.0.0 (#73265)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-09 09:41:55 +02:00
kingy444 d6e7a3e537 Add powerview advanced features (#73061)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-08 18:46:45 -10:00
Michael 8b735ffabe Fix handling of connection error during Synology DSM setup (#73248)
* dont reload on conection error during setup

* also fetch API errors during update
2022-06-08 15:30:13 -10:00
GitHub Action 8f8c1348ba [ci skip] Translation update 2022-06-09 00:23:40 +00:00
Christopher Bailey 004ff8fb30 Overhaul UniFi Protect NVR Disk sensors (#73197)
* Overhauls NVR Disk sensors

* Updates from latest version of pyunifiprotect
2022-06-08 14:13:56 -10:00
Christopher Bailey 5c49d0a761 Bumps version of pyunifiprotect to 3.9.1 (#73252) 2022-06-08 13:58:06 -10:00
Aaron Bach 8af0d91676 Bump regenmaschine to 2022.06.1 (#73250) 2022-06-08 12:31:39 -10:00
Christopher Bailey 4c45cb5c52 Add UniFi Protect chime button/camera switch (#73195) 2022-06-08 12:29:46 -10:00
Erik Montnemery 4435c641de Enforce RegistryEntryHider in entity registry (#73219) 2022-06-08 12:36:43 -07:00
Erik Montnemery 6bf219550e Cleanup some code in SensorEntity (#73241) 2022-06-08 22:27:40 +03:00
Erik Montnemery 921245a490 Remove deprecated temperature conversion of non sensors (#73222) 2022-06-08 20:47:47 +02:00
d0nni3q84 f7bd88c952 Fix Feedreader Atom feeds using updated date (#73208)
* Feedreader: Properly support Atom feeds that use only the `updated` date format and resolve #73207.

* Revert "Feedreader: Properly support Atom feeds that use only the `updated` date format and resolve #73207."

This reverts commit 4dbd11ee04.

* Properly support Atom feeds that use only the `updated` date format and resolve #73207.

* Revert "Properly support Atom feeds that use only the `updated` date format and resolve #73207."

This reverts commit 14366c6a24.

* Properly support Atom feeds that use only the `updated` date format and resolve #73207.
2022-06-08 20:32:01 +02:00
Robert Hillis b4a5abce16 Clean up phone modem (#73181) 2022-06-08 21:15:07 +03:00
Franck Nijhof 56d28e13f7 Update apprise to 0.9.9 (#73218) 2022-06-08 21:12:44 +03:00
b3nj1 0dc1e7d1e6 Fix VeSync device to match pyvesync type (#73034)
* vesync: change device to match pyvesync type

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for annotations

* vesync: fix imports

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-08 16:43:24 +02:00
Allen Porter e74c711ef3 Add application credentials description strings (#73014) 2022-06-08 07:09:32 -07:00
Erik Montnemery 5987266e56 Refactor template entity to allow reuse (#72753)
* Refactor template entity to allow reuse

* Fix schema and default name

* Add tests

* Update requirements

* Improve test

* Tweak TemplateSensor initializer

* Drop attributes and availability from TemplateEntity

* Use rest sensor for proof of concept

* Revert changes in SNMP sensor

* Don't set _attr_should_poll in mixin class

* Update requirements
2022-06-08 15:55:49 +02:00
Matrix 79096864eb Add yolink CoSmoke Sensor and Switch (#73209)
add CoSmoke Sensor and Switch
2022-06-08 11:54:32 +02:00
starkillerOG 4bc04383d1 Ensure netgear devices are tracked with one enabled config entry (#72969)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-08 10:52:01 +02:00
dependabot[bot] 95e9bd106e Bump actions/cache from 3.0.3 to 3.0.4 (#73203)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 09:07:05 +02:00
Matrix 6c3d402777 Bump yolink-api to 0.0.8 (#73173)
* update api libray fix hearbeat message valiation

* update yolink-api ignore invalidate message
2022-06-08 08:11:41 +02:00
Raman Gupta 7980e3f406 Tweak zwave_js firmware upload view (#73202)
Small tweaks to zwave_js firmware upload view
2022-06-08 08:10:48 +02:00
epenet f91aa33c5f Add FlowResultType enum to data entry flow (#72955) 2022-06-07 22:02:44 -07:00
Paulus Schoutsen 8b0e10d8a5 Merge pull request #73193 from home-assistant/rc 2022-06-07 17:32:30 -07:00
J. Nick Koston 329595bf73 Make radiotherm hold mode a switch (#73104) 2022-06-07 14:26:06 -10:00
GitHub Action 1331c75ec2 [ci skip] Translation update 2022-06-08 00:22:19 +00:00
Paulus Schoutsen 2ee4cd02c7 Bumped version to 2022.6.4 2022-06-07 16:16:30 -07:00
J. Nick Koston d63569da82 Remove sqlalchemy lambda_stmt usage from history, logbook, and statistics (#73191) 2022-06-07 16:16:25 -07:00
Eric Severance bc7cf1f649 Bump pywemo to 0.9.1 (#73186) 2022-06-07 16:16:24 -07:00
Michael d6b1a7ca68 Fix creating unique IDs for WiFi switches in Fritz!Tools (#73183) 2022-06-07 16:16:23 -07:00
Aaron Bach af248fa386 Fix bugs with RainMachine zone run time sensors (#73179) 2022-06-07 16:16:22 -07:00
Jesse Hills fa56e3633d Fix KeyError from ESPHome media players on startup (#73149) 2022-06-07 16:16:22 -07:00
Michael e886d37124 Use default None for voltage property of FritzDevice in Fritz!Smarthome (#73141)
use default None for device.voltage
2022-06-07 16:16:21 -07:00
Steven Looman f4ed7720de Bump async-upnp-client==0.31.1 (#73135)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-07 16:16:20 -07:00
jjlawren 70473df2fe Fix errors when unjoining multiple Sonos devices simultaneously (#73133) 2022-06-07 16:16:19 -07:00
J. Nick Koston 7ae8bd5137 Remove sqlalchemy lambda_stmt usage from history, logbook, and statistics (#73191) 2022-06-07 16:15:50 -07:00
Aaron Bach db0f089a2e Fix bugs with RainMachine zone run time sensors (#73179) 2022-06-07 16:14:40 -07:00
Michael 8c34067f17 Fix creating unique IDs for WiFi switches in Fritz!Tools (#73183) 2022-06-07 16:11:38 -07:00
Michael eca6768016 Use default None for voltage property of FritzDevice in Fritz!Smarthome (#73141)
use default None for device.voltage
2022-06-07 16:01:44 -07:00
Eric Severance d587e4769a Bump pywemo to 0.9.1 (#73186) 2022-06-07 23:39:15 +02:00
Robert Hillis 94c037605a Address late comment on Goalzero refactor (#73180) 2022-06-07 22:35:59 +02:00
Christopher Bailey 1bc9867940 Bump version of pyunifiprotect to 3.9.0 (#73168)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-07 08:19:39 -10:00
Maciej Bieniek f10cae1052 Add missing state_class to xiaomi_aqara sensors (#73167)
Add missing state_class
2022-06-07 20:57:29 +03:00
Maciej Bieniek 981c34f88d Use class attribute instead of property in min_max integration (#73175) 2022-06-07 19:15:25 +02:00
Maciej Bieniek 0b5c0f8249 Bump nam backend library (#72771)
* Update config flow

* Fix discovery with auth

* Call check_credentials() on init

* Update tests

* Bump library version

* Cleaning

* Return dataclass instead of tuple

* Fix pylint error
2022-06-07 06:56:11 -10:00
David F. Mulcahey a5dc7c5f28 Add logbook describe event support to ZHA (#73077) 2022-06-07 06:49:40 -10:00
uvjustin 73f2bca377 Make Stream.stop() async (#73107)
* Make Stream.start() async
* Stop streams concurrently on shutdown
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-08 00:10:53 +08:00
Maciej Bieniek c6b835dd91 Add missing state_class to min_max sensors (#73169)
Add missing state_class
2022-06-07 17:02:12 +02:00
Matrix 68d67a3e49 Add yolink valve controller support (#73111) 2022-06-07 16:34:12 +02:00
Erik Montnemery 5f2b4001f3 Separate recorder database schema from other classes (#72977)
* Separate recorder database schema from other classes

* fix logbook imports

* migrate new tests

* few more

* last one

* fix merge

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-07 14:41:43 +02:00
epenet ab82f71b43 Adjust config-flow type hints in xiaomi_miio (#72503)
* Adjust config-flow type hints in xiaomi_miio

* Use Mapping

* Reduce size of PR
2022-06-07 11:30:12 +02:00
epenet 6971bb8f5b Adjust config-flow type hints in vera (#72409)
* Adjust config-flow type hints in vera

* Reduce size of PR
2022-06-07 11:15:31 +02:00
Marc Mueller a8763d7479 Update pylint to 2.14.1 (#73144) 2022-06-07 07:57:41 +02:00
J. Nick Koston 2e47cee72a Fix setup race when config entry is in a setup retry state (#73145) 2022-06-06 22:48:49 -07:00
BigMoby 0c21bf7c25 Remove iAlarm XR integration (#73083)
* fixing after MartinHjelmare review

* fixing after MartinHjelmare review conversion alarm state to hass state

* fixing after MartinHjelmare review conversion alarm state to hass state

* manage the status in the alarm control

* simplyfing return function

* Removing iAlarm XR integration because of Antifurto365 explicit request to remove after some issues in their cloud service
2022-06-06 22:23:10 -07:00
Raman Gupta 16bf6903bd Bump pyeight to 0.3.0 (#73151) 2022-06-07 00:07:49 -04:00
GitHub Action 05e5dd7baf [ci skip] Translation update 2022-06-07 00:20:09 +00:00
Jesse Hills ca54eaf40d Fix KeyError from ESPHome media players on startup (#73149) 2022-06-07 11:02:08 +12:00
jjlawren 4f75de2345 Fix errors when unjoining multiple Sonos devices simultaneously (#73133) 2022-06-06 15:18:07 -07:00
Paulus Schoutsen 0d31d94532 Merge pull request #73136 from home-assistant/rc 2022-06-06 15:07:58 -07:00
Steven Looman 6c9408aef5 Bump async-upnp-client==0.31.1 (#73135)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-06 11:46:52 -10:00
Álvaro Fernández Rojas dbd3ca5ecd airzone: update aioairzone to v0.4.5 (#73127)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-06-06 23:19:15 +03:00
J. Nick Koston 4678466560 Remove unused code from logbook (#72950) 2022-06-06 13:13:09 -07:00
Marc Mueller caed0a486f Update mypy to 0.961 (#73142) 2022-06-06 22:03:52 +02:00
J. Nick Koston a886c6110d Fix state_changes_during_period history query when no entities are passed (#73139) 2022-06-06 12:51:16 -07:00
J. Nick Koston de2e9b6d77 Fix state_changes_during_period history query when no entities are passed (#73139) 2022-06-06 12:50:52 -07:00
Paulus Schoutsen 33f282af46 Point iAlarm XR at PyPI fork (#73143) 2022-06-06 12:49:30 -07:00
Paulus Schoutsen 861de5c0f0 Point iAlarm XR at PyPI fork (#73143) 2022-06-06 12:49:15 -07:00
Marc Mueller 983a76a91c Update pylint to 2.14.0 (#73119) 2022-06-06 21:43:47 +02:00
Paulus Schoutsen 2f3232f087 Bumped version to 2022.6.3 2022-06-06 12:18:57 -07:00
Igor Loborec 54ff6ddd41 Remove available property from Kodi (#73103) 2022-06-06 12:18:29 -07:00
lymanepp eef79e2912 Tomorrowio utc fix (#73102)
* Discard past data using local time instead of UTC

* Tweak changes to fix tests

* Cleanup
2022-06-06 12:18:28 -07:00
J. Nick Koston 93aad108a7 Mark counter domain as continuous to exclude it from logbook (#73101) 2022-06-06 12:18:27 -07:00
Glenn Waters 792ebbb600 Fix elk attributes not being json serializable (#73096)
* Fix jsonifying.

* Only serialize Enums
2022-06-06 12:18:26 -07:00
J. Nick Koston c47774e273 Fix incompatiblity with live logbook and google_assistant (#73063) 2022-06-06 12:18:26 -07:00
Aaron Bach 22bdeab1e7 Bump regenmaschine to 2022.06.0 (#73056) 2022-06-06 12:18:25 -07:00
Aaron Bach ca05cde6ba Fix unhandled exception when RainMachine coordinator data doesn't exist (#73055) 2022-06-06 12:18:24 -07:00
Aaron Bach 1e59ce19f5 Bump simplisafe-python to 2022.06.0 (#73054) 2022-06-06 12:18:23 -07:00
J. Nick Koston 7bdada7898 Bump aiolookup to 0.1.1 (#73048) 2022-06-06 12:18:23 -07:00
J. Nick Koston 06a2fe94d3 Send an empty logbook response when all requested entity_ids are filtered away (#73046) 2022-06-06 12:18:22 -07:00
J. Nick Koston 854b0dbb2d Reduce branching in generated lambda_stmts (#73042) 2022-06-06 12:18:21 -07:00
rappenze bd8424d184 Fix fibaro cover detection (#72986) 2022-06-06 12:18:20 -07:00
hesselonline b50e3d5ce7 Bump wallbox to 0.4.9 (#72978) 2022-06-06 12:18:19 -07:00
Marcel van der Veldt 39c6a57c35 Throttle multiple requests to the velux gateway (#72974) 2022-06-06 12:18:18 -07:00
Jan Stienstra ed54cea3f2 Jellyfin: Add support for movie collections (#73086) 2022-06-06 12:17:21 -07:00
Igor Loborec a9e4673aff Bump holidays to 0.14.2 (#73121) 2022-06-06 19:07:02 +02:00
rappenze e5b447839a Fix fibaro cover detection (#72986) 2022-06-06 13:20:16 +02:00
J. Nick Koston 0b62944148 Mark counter domain as continuous to exclude it from logbook (#73101) 2022-06-05 21:25:26 -10:00
J. Nick Koston 457c7a4ddc Fix incompatiblity with live logbook and google_assistant (#73063) 2022-06-05 19:06:49 -10:00
G Johansson 7536586bed Add binary sensors for Pure devices Boost Config (#73032) 2022-06-05 18:58:48 -10:00
J. Nick Koston 6b2e5858b3 Send an empty logbook response when all requested entity_ids are filtered away (#73046) 2022-06-05 21:14:47 -07:00
J. Nick Koston c66b000d34 Reduce branching in generated lambda_stmts (#73042) 2022-06-05 21:13:31 -07:00
lymanepp 3744edc512 Tomorrowio utc fix (#73102)
* Discard past data using local time instead of UTC

* Tweak changes to fix tests

* Cleanup
2022-06-05 21:10:33 -07:00
Matrix db53ab5fd0 Add Yolink lock support (#73069)
* Add yolink lock support

* Update .coveragerct

* extract the commons
2022-06-06 05:58:29 +02:00
Igor Loborec 1744e7224b Remove available property from Kodi (#73103) 2022-06-05 16:27:46 -10:00
Glenn Waters c4763031ab Fix elk attributes not being json serializable (#73096)
* Fix jsonifying.

* Only serialize Enums
2022-06-05 16:27:21 -10:00
Marcel van der Veldt 5fe9e8cb1c Throttle multiple requests to the velux gateway (#72974) 2022-06-05 15:39:42 -10:00
Aaron Bach a6f6f0ac5e Fix unhandled exception when RainMachine coordinator data doesn't exist (#73055) 2022-06-05 15:33:27 -10:00
hesselonline 9ea504dd7b Bump wallbox to 0.4.9 (#72978) 2022-06-05 15:31:09 -10:00
GitHub Action 7f0091280f [ci skip] Translation update 2022-06-06 00:21:14 +00:00
J. Nick Koston cac84e4160 Add config flow to radiotherm (#72874) 2022-06-05 13:59:52 -10:00
J. Nick Koston f7626bd511 Speed up camera tokens (#73098) 2022-06-05 12:28:57 -10:00
G Johansson 35a0f59ec9 Bump pysensibo to 1.0.17 (#73092) 2022-06-05 10:42:46 -10:00
Robert Hillis b10bbc3e14 Add do not ring switch to Skybell (#73090) 2022-06-05 09:56:48 -10:00
Robert Hillis c13e55ca02 Move Skybell attributes to their own sensors (#73089) 2022-06-05 09:56:31 -10:00
Robert Hillis 58d4ea0db9 Bump aioskybell to 22.6.0 (#73073)
* Bump aioskybell to 22.6.0

* uno mas
2022-06-05 07:09:44 -10:00
Fabian Affolter b1073fb362 Remove myself from fixer codeowners (#73070) 2022-06-05 06:45:21 -10:00
Aaron Bach e8cfc747f9 Bump simplisafe-python to 2022.06.0 (#73054) 2022-06-05 09:13:54 -06:00
Aaron Bach 228fc02abb Bump regenmaschine to 2022.06.0 (#73056) 2022-06-05 09:13:43 -06:00
J. Nick Koston 4c11cc3dbb Additional cleanups for emulated_hue (#73004)
* Additional cleanups for emulated_hue

Followup to https://github.com/home-assistant/core/pull/72663#discussion_r884268731

* split long lines
2022-06-05 09:32:59 +02:00
G Johansson aad3253ed1 Bump pysensibo to 1.0.16 (#73029) 2022-06-04 18:47:08 -10:00
kingy444 41f38f1099 Use constant in powerview diagnostics (#73059) 2022-06-04 18:14:04 -10:00
kingy444 395d58840c Add Hunter Douglas Powerview Diagnostics (#72918)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-04 17:42:21 -10:00
Robert Hillis a502a8798f Add config flow to skybell (#70887) 2022-06-04 16:37:08 -10:00
J. Nick Koston cbea919c3d Bump aiolookup to 0.1.1 (#73048) 2022-06-04 16:34:04 -10:00
Robert Hillis e98a641376 Refactor goalzero (#72398) 2022-06-04 18:50:38 -07:00
J. Nick Koston bc22e79c7b Add a test for a complex entity filter (#73005) 2022-06-04 18:43:23 -07:00
GitHub Action 13734428bb [ci skip] Translation update 2022-06-05 00:26:15 +00:00
Paulus Schoutsen c0482bdbfd Merge pull request #73041 from home-assistant/rc 2022-06-04 14:13:48 -07:00
Paulus Schoutsen d9a41d10ff Bumped version to 2022.6.2 2022-06-04 13:03:51 -07:00
J. Nick Koston b401f16583 Fix history stats not comparing all times in UTC (#73040) 2022-06-04 13:03:41 -07:00
J. Nick Koston 373634cc50 Fix missing historical context data in logbook for MySQL and PostgreSQL (#73011) 2022-06-04 13:03:40 -07:00
Andre Lengwenus 10fb3035d6 Bump pypck to 0.7.15 (#73009) 2022-06-04 13:03:40 -07:00
jjlawren f3136c811c Provide Sonos media position if duration not available (#73001) 2022-06-04 13:03:39 -07:00
Allen Porter 085eee88c9 Fix google calendar bug where expired tokens are not refreshed (#72994) 2022-06-04 13:03:38 -07:00
shbatm 6a3b74adf6 Check ISY994 climate for unknown humidity value on Z-Wave Thermostat (#72990)
Check ISY994 climate for unknown humidity on Z-Wave Thermostat

Update to #72670 to compare the property value and not the parent object. Should actually fix #72628
2022-06-04 13:03:37 -07:00
Joakim Plate 5c512ad5cb fjaraskupan: Don't filter anything in backend (#72988) 2022-06-04 13:03:37 -07:00
rikroe 65cb82765b Bump bimmer_connected to 0.9.4 (#72973)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-04 13:03:36 -07:00
starkillerOG 9f8fe7fca6 Bump pynetgear to 0.10.4 (#72965)
bump pynetgear to 0.10.4
2022-06-04 13:03:35 -07:00
Raphaël Beamonte 73536c07d7 Allow log template function to return specified default on math domain error (#72960)
Fix regression for logarithm template
2022-06-04 13:03:35 -07:00
J. Nick Koston e0ca5bafda Fix statistics_during_period being incorrectly cached (#72947) 2022-06-04 13:03:34 -07:00
J. Nick Koston 7ac7af094f Fix missing historical context data in logbook for MySQL and PostgreSQL (#73011) 2022-06-04 12:54:10 -07:00
J. Nick Koston 0a2a166860 Fix history stats not comparing all times in UTC (#73040) 2022-06-04 12:47:30 -07:00
Matrix c7416c0bb9 Add yolink vibration sensor (#72926)
* Add yolink vibration sensor

* add battery entity

* fix suggest
2022-06-04 17:54:39 +02:00
G Johansson a1b372e4ca Minor fixes Trafikverket Train (#72996)
* Minor fixes Trafikverket Train

* Remove ConfigEntryAuthFailed
2022-06-04 12:37:39 +02:00
Andre Lengwenus 0829bec1c3 Bump pypck to 0.7.15 (#73009) 2022-06-04 07:52:39 +02:00
Allen Porter 9d933e732b Remove google scan_for_calendars service and simplify platform setup (#73010)
* Remove google scan_for_calendars service and simplify platform setup

* Update invalid calendar yaml test
2022-06-03 21:56:53 -07:00
Clifford Roche b5fe4e8474 Bump greeclimate to 1.2.0 (#73008) 2022-06-04 06:56:37 +02:00
GitHub Action 636f650563 [ci skip] Translation update 2022-06-04 00:23:28 +00:00
Allen Porter bdc41bf22a Fix google calendar bug where expired tokens are not refreshed (#72994) 2022-06-03 16:33:12 -07:00
jjlawren 04b2223f06 Provide Sonos media position if duration not available (#73001) 2022-06-03 15:03:21 -07:00
iAutom8 14030991cf Add ViCare additional temperature sensors (#72792) 2022-06-03 22:57:01 +01:00
Joakim Plate cc807b4d59 fjaraskupan: Don't filter anything in backend (#72988) 2022-06-03 13:05:37 -07:00
J. Nick Koston 8e8fa0399e Fix statistics_during_period being incorrectly cached (#72947) 2022-06-03 13:04:46 -07:00
rikroe 91df2db9e0 Bump bimmer_connected to 0.9.4 (#72973)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-03 09:59:10 -10:00
G Johansson 8d0dd1fe8c Config flow for scrape integration (#70476) 2022-06-03 09:24:04 -10:00
G Johansson 5ee2f4f438 Sensibo Set temperature improvement (#72992) 2022-06-03 09:11:57 -10:00
shbatm 18c2614802 Check ISY994 climate for unknown humidity value on Z-Wave Thermostat (#72990)
Check ISY994 climate for unknown humidity on Z-Wave Thermostat

Update to #72670 to compare the property value and not the parent object. Should actually fix #72628
2022-06-03 06:53:23 -10:00
epenet 6da409d6e5 Remove unused constant from auth (#72953) 2022-06-03 08:12:38 -07:00
J. Nick Koston a9d45d656d Add to codeowners for logbook so I get notifications (#72964)
- Adding explictly will get through my filters and I want
  to watch this one for at least this release
2022-06-03 15:49:17 +02:00
starkillerOG 6cadd4f665 MotionBlinds use device_name helper (#72438)
* use device_name helper

* fix typo

* fix import

* fix isort

* add gateway_test

* implement gateway test

* correct test blind mac
2022-06-03 15:33:43 +02:00
w35l3y beab6e2e5f Fix ended session when there isn't any response from the user (#72218)
* Fix end session when there isn't any response

This PR fixes #72153

* Added test case as requested

https://github.com/home-assistant/core/pull/72218#discussion_r881584812
2022-06-03 15:32:22 +02:00
Raphaël Beamonte 88129dbe91 Allow log template function to return specified default on math domain error (#72960)
Fix regression for logarithm template
2022-06-03 15:27:10 +02:00
starkillerOG 52149c442e Bump pynetgear to 0.10.4 (#72965)
bump pynetgear to 0.10.4
2022-06-03 13:57:59 +02:00
Joakim Plate 8910d265d6 Keep track of a context for each listener (#72702)
* Remove async_remove_listener

This avoids the ambuigity as to what happens if same callback is added multiple times.

* Keep track of a context for each listener

This allow a update coordinator to adapt what data to request on update from the backing service based on which entities are enabled.

* Clone list before calling callbacks

The callbacks can end up unregistering and modifying the dict while iterating.

* Only yield actual values

* Add a test for update context

* Factor out iteration of _listeners to helper

* Verify context is passed to coordinator

* Switch to Any as type instead of object

* Remove function which use was dropped earliers

The use was removed in 8bee25c938
2022-06-03 13:55:57 +02:00
J. Nick Koston a28fa5377a Remove unused code from logbook (#72950) 2022-06-03 08:59:00 +02:00
Avi Miller f5c6ad24c4 Bump aiolifx to 0.8.1 (#72897)
Bump aiolifx version to support the latest LIFX devices

LIFX added 22 new product definitions to their public product
list at the end of January and those new products are defined in
aiolifx v0.8.1, so bump the dependency version.

Also switched to testing for relays instead of maintaining a
seperate list of switch product IDs.

Fixes #72894.

Signed-off-by: Avi Miller <me@dje.li>
2022-06-03 08:09:00 +02:00
epenet fe1c3d3be8 Revert "Allow non-async functions in device automation (#72147)" (#72909) 2022-06-02 23:00:47 -07:00
Paulus Schoutsen ddc8c0a3b7 Merge pull request #72944 from home-assistant/rc 2022-06-02 21:53:58 -07:00
Allen Porter 3a8a816584 Cleanup nest config flow tests to use common setup fixtures (#72878)
* Cleanup nest config flow tests to use common setup

* Remove some conditionals in test setup
2022-06-02 21:42:52 -07:00
J. Nick Koston ff687a8248 Only create auto comfort entities for BAF devices that support them (#72948) 2022-06-02 20:53:26 -07:00
J. Nick Koston 0d9330c39e Fix misalignments between sql based filtering with the entityfilter based filtering (#72936) 2022-06-02 20:53:25 -07:00
J. Nick Koston 5b31414225 Fix misalignments between sql based filtering with the entityfilter based filtering (#72936) 2022-06-02 20:52:53 -07:00
J. Nick Koston f52fa3599f Only create auto comfort entities for BAF devices that support them (#72948) 2022-06-02 20:51:27 -07:00
GitHub Action 43b802252a [ci skip] Translation update 2022-06-03 00:19:45 +00:00
Paulus Schoutsen 69e8f5bb98 Bumped version to 2022.6.1 2022-06-02 16:20:09 -07:00
Paulus Schoutsen 6a8a97b57c Only sync when HA is started up as we already sync at startup (#72940) 2022-06-02 16:20:03 -07:00
Khole f5e0363117 Fix Hive authentication (#72929) 2022-06-02 16:20:03 -07:00
Allen Porter f1bcfedf84 Fix bug in caldav and avoid unnecessary copy of dataclass (#72922) 2022-06-02 16:20:02 -07:00
nojocodex 0e985284c9 Fix logging & exit code reporting to S6 on HA shutdown (#72921) 2022-06-02 16:20:01 -07:00
Matrix 12e6f143a4 Bump yolink-api to 0.0.6 (#72903)
* Bump yolink-api to 0.0.6

* update testcase
2022-06-02 16:20:00 -07:00
Erik Montnemery 2b77db2597 Fix reload of MQTT yaml config (#72901) 2022-06-02 16:20:00 -07:00
J. Nick Koston a4297c0411 Fix performance of logbook entity and devices queries with large MySQL databases (#72898) 2022-06-02 16:19:59 -07:00
J. Nick Koston 54b94c4826 Fix migration of MySQL data when InnoDB is not being used (#72893)
Fixes #72883
2022-06-02 16:19:58 -07:00
J. Nick Koston b28b204b86 Only present history_stats state as unknown if the time is in the future (#72880) 2022-06-02 16:19:57 -07:00
J. Nick Koston 8558ea2f9a Fix logbook not setting up with an recorder filter that has empty fields (#72869) 2022-06-02 16:19:57 -07:00
J. Nick Koston 01b3da1554 Ensure recorder shuts down when its startup future is canceled out from under it (#72866) 2022-06-02 16:19:56 -07:00
Bram Kragten 880590da64 Update frontend to 20220601.0 (#72855) 2022-06-02 16:19:55 -07:00
jjlawren b74bd1aa0a Remove announce workaround for Sonos (#72854) 2022-06-02 16:19:55 -07:00
Jan Bouwhuis caa79d8462 Update MQTT tests to use the config entry setup (#72373)
* New testframework and tests for fan platform

* Merge test_common_new to test_common

* Add alarm_control_panel

* Add binary_sensor

* Add button

* Add camera

* Add climate

* Add config_flow

* Add cover

* Add device_tracker_disovery

* Add device_trigger

* Add diagnostics

* Add discovery

* Add humidifier

* Add init

* Add lecacy_vacuum

* Add light_json

* Add light_template

* Add light

* Add lock

* Add number

* Add scene

* Add select

* Add sensor

* Add siren

* Add state_vacuum

* Add subscription

* Add switch

* Add tag

* Add trigger

* Add missed tests

* Add another missed test

* Add device_tracker

* Remove commented out code

* Correct tests according comments

* Improve mqtt_mock_entry and recover tests

* Split fixtures with and without yaml setup

* Update fixtures manual_mqtt

* Update fixtures mqtt_json

* Fix test tasmota

* Update fixture mqtt_room

* Revert fixture changes, improve test

* re-add test
2022-06-02 16:19:54 -07:00
Erik Montnemery 9295cc4df9 Move MQTT config schemas and client to separate modules (#71995)
* Move MQTT config schemas and client to separate modules

* Update integrations depending on MQTT
2022-06-02 16:19:26 -07:00
Jan Bouwhuis 24e148ab8e Cleanup and use new MQTT_BASE_SCHEMA constants (#72283)
* Use new MQTT_BASE_SCHEMA constants

* Update constants for mqtt_room and manual_mqtt

* Revert removing platform key
2022-06-02 16:19:15 -07:00
Paulus Schoutsen fbb08994f4 Only sync when HA is started up as we already sync at startup (#72940) 2022-06-02 16:15:04 -07:00
Khole a4c3585448 Fix Hive authentication (#72929) 2022-06-02 14:54:26 -07:00
J. Nick Koston 9fbde245d0 Fix performance of logbook entity and devices queries with large MySQL databases (#72898) 2022-06-02 14:54:06 -07:00
Erik Montnemery b97d346df7 Fix reload of MQTT yaml config (#72901) 2022-06-02 11:32:31 -07:00
nojocodex 8e4321af59 Fix logging & exit code reporting to S6 on HA shutdown (#72921) 2022-06-02 19:49:08 +02:00
Allen Porter 8c50c7fbd4 Fix bug in caldav and avoid unnecessary copy of dataclass (#72922) 2022-06-02 08:40:13 -07:00
J. Nick Koston d3b1896a06 Only present history_stats state as unknown if the time is in the future (#72880) 2022-06-02 08:39:53 -07:00
puddly 1c38c20cac Bump ZHA dependency zigpy from 0.45.1 to 0.46.0 (#72877) 2022-06-02 08:27:12 -07:00
J. Nick Koston f1a31d8d33 Add support for async_remove_config_entry_device to unifiprotect (#72742)
* Add support for async_remove_config_entry_device to unifiprotect

* tweaks

* tweaks

* more cleanups

* more cleanups

* fix unhelpful auto import

* add coverage

* fix mac formatting

* collapse logic
2022-06-02 08:26:08 -07:00
Matrix 9192d0e972 Bump yolink-api to 0.0.6 (#72903)
* Bump yolink-api to 0.0.6

* update testcase
2022-06-02 17:21:22 +02:00
Erik Montnemery b89cd37de8 Remove dead code from template fan (#72917) 2022-06-02 08:19:15 -07:00
epenet fc8727454a Use Mapping for async_step_reauth (p-s) (#72766) 2022-06-02 14:28:14 +02:00
Jan Bouwhuis 52561ce076 Update MQTT tests to use the config entry setup (#72373)
* New testframework and tests for fan platform

* Merge test_common_new to test_common

* Add alarm_control_panel

* Add binary_sensor

* Add button

* Add camera

* Add climate

* Add config_flow

* Add cover

* Add device_tracker_disovery

* Add device_trigger

* Add diagnostics

* Add discovery

* Add humidifier

* Add init

* Add lecacy_vacuum

* Add light_json

* Add light_template

* Add light

* Add lock

* Add number

* Add scene

* Add select

* Add sensor

* Add siren

* Add state_vacuum

* Add subscription

* Add switch

* Add tag

* Add trigger

* Add missed tests

* Add another missed test

* Add device_tracker

* Remove commented out code

* Correct tests according comments

* Improve mqtt_mock_entry and recover tests

* Split fixtures with and without yaml setup

* Update fixtures manual_mqtt

* Update fixtures mqtt_json

* Fix test tasmota

* Update fixture mqtt_room

* Revert fixture changes, improve test

* re-add test
2022-06-02 14:24:46 +02:00
epenet 756988fe20 Use Mapping for async_step_reauth (f-o) (#72764) 2022-06-02 14:17:09 +02:00
Robert Hillis 14f47c7450 Bump aiopyarr to 2022.6.0 (#72870) 2022-06-02 14:06:59 +02:00
J. Nick Koston cd590c79e2 Fix migration of MySQL data when InnoDB is not being used (#72893)
Fixes #72883
2022-06-02 14:01:06 +02:00
Guido Schmitz 219200b340 Fix test_hass_stop in devolo Home Network (#72833)
Fix test_hass_stop
2022-06-02 13:59:29 +02:00
Marc Mueller 62a5854e40 Fix bare except (#72906) 2022-06-02 13:58:04 +02:00
Raman Gupta 6ccaf33bdf Attempt to fix flaky tomorrowio test (#72890)
* Fix flaky tomorrowio test

* reset mock outside context manager

* add to hass outside of context manager
2022-06-02 03:16:00 -04:00
epenet c2fdac2014 Allow non-async functions in device automation (#72147)
* Remove async requirement for get_capabilities_func

* Add comment

* Remove async requirement for get_automations_func

* Update homeassistant/components/device_automation/__init__.py

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

* Update homeassistant/components/device_automation/__init__.py

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

* Add Exception to type hint

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-02 09:06:22 +02:00
epenet 999b3a4f7b Adjust astroid import in pylint plugin (#72841)
* import nodes from astroid

* Update remaining pylint plugins

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-06-02 07:48:59 +02:00
J. Nick Koston f79e5e002b Ensure recorder shuts down when its startup future is canceled out from under it (#72866) 2022-06-01 22:13:09 -07:00
jjlawren d368b9e24f Remove announce workaround for Sonos (#72854) 2022-06-01 22:12:38 -07:00
J. Nick Koston c6e56c26b3 Fix logbook not setting up with an recorder filter that has empty fields (#72869) 2022-06-01 22:12:00 -07:00
GitHub Action 7746715590 [ci skip] Translation update 2022-06-02 00:27:51 +00:00
epenet fe5fe148fa Add mypy checks to pylint plugins (#72821) 2022-06-02 00:06:19 +02:00
Bram Kragten d1a8f1ae40 Update frontend to 20220601.0 (#72855) 2022-06-02 00:04:14 +02:00
Arne Mauer 321394d3e2 Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component (#72826)
* Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component

* Fixed black and flake8 test
2022-06-01 18:00:58 -04:00
Aidan Timson 2ba45a9f99 System Bridge 3.x.x (#71218)
* Change to new package and tcp

* Rework integration pt1

* Show by default

* Handle auth error

* Use const

* New version avaliable (to be replaced in future by update entity)

* Remove visible

* Version latest

* Filesystem space use

* Dev package

* Fix sensor

* Add services

* Update package

* Add temperature and voltage

* GPU

* Bump package version

* Update config flow

* Add displays

* Fix displays connected

* Round to whole number

* GPU fan speed in RPM

* Handle disconnections

* Update package

* Fix

* Update tests

* Handle more errors

* Check submodule and return missing uuid in test

* Handle auth error on config flow

* Fix test

* Bump package version

* Handle key errors

* Update package to release version

* Client session in config flow

* Log

* Increase timeout and use similar logic in config flow to init

* 30 secs

* Add test for timeout error

* Cleanup logs

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

* Update tests/components/system_bridge/test_config_flow.py

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

* uuid raise specific error

* Type

* Lambda to functions for complex logic

* Unknown error test

* Bump package to 3.0.5

* Bump package to 3.0.6

* Use typings from package and pydantic

* Use dict()

* Use data listener function and map to models

* Use passed module handler

* Use lists from models

* Update to 3.1.0

* Update coordinator to use passed module

* Improve coordinator

* Add debug

* Bump package and avaliable -> available

* Add version check

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-01 23:54:22 +02:00
Franck Nijhof 05296fb86e Merge branch 'master' into dev 2022-06-01 20:14:54 +02:00
kingy444 d6e5c26b24 Add configuration_url to hunterdouglas_powerview (#72837)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-01 07:41:20 -10:00
Rami Mosleh 74e2d5c5c3 Remove deprecated YAML for transmission (#72832) 2022-06-01 17:25:49 +02:00
epenet df5285f681 Improve pylint disable rule in zha (#72835) 2022-06-01 16:49:43 +02:00
Franck Nijhof 3d75b0776f Merge pull request #72824 from home-assistant/rc 2022-06-01 15:21:30 +02:00
epenet 4c7837a576 Enforce type hints for config_flow (#72756)
* Enforce type hints for config_flow

* Keep astroid migration for another PR

* Defer elif case

* Adjust tests

* Use ancestors

* Match on single base_class

* Invert for loops

* Review comments

* slots is new in 3.10
2022-06-01 13:09:53 +02:00
Franck Nijhof 39da7a93ec Bumped version to 2022.6.0 2022-06-01 13:04:12 +02:00
J. Nick Koston bf47d86d30 Fix logbook spinner never disappearing when all entities are filtered (#72816) 2022-06-01 13:03:43 +02:00
J. Nick Koston 2f3359f376 Fix purge of legacy database events that are not state changed (#72815) 2022-06-01 13:03:39 +02:00
starkillerOG 1139136365 Add Motionblinds WoodShutter support (#72814) 2022-06-01 13:03:36 +02:00
J. Nick Koston 9e723f9b6d Bump sqlalchemy to 1.4.37 (#72809)
Fixes a bug where reconnects might fail with MySQL 8.0.24+

Changelog: https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.37
2022-06-01 13:03:32 +02:00
Paulus Schoutsen 9bd2e3ad7c Don't trigger entity sync when Google Assistant gets disabled (#72805) 2022-06-01 13:03:28 +02:00
jjlawren 384cb44d15 Cleanup handling of new enqueue & announce features in Sonos (#72801) 2022-06-01 13:03:25 +02:00
Christopher Bailey 1274448de1 Add package constraint for pydantic (#72799)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-01 13:03:20 +02:00
J. Nick Koston 5d2326386d Fix logbook spinner never disappearing when all entities are filtered (#72816) 2022-06-01 12:33:46 +02:00
starkillerOG 023990577c Add Motionblinds WoodShutter support (#72814) 2022-06-01 12:33:13 +02:00
Paulus Schoutsen d57a650290 Don't trigger entity sync when Google Assistant gets disabled (#72805) 2022-06-01 12:12:54 +02:00
J. Nick Koston d8b0376942 Fix purge of legacy database events that are not state changed (#72815) 2022-06-01 11:56:06 +02:00
dependabot[bot] ee861c8ea5 Bump actions/cache from 3.0.2 to 3.0.3 (#72817)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 11:35:36 +02:00
J. Nick Koston e874a04319 Bump sqlalchemy to 1.4.37 (#72809)
Fixes a bug where reconnects might fail with MySQL 8.0.24+

Changelog: https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.37
2022-06-01 10:56:05 +02:00
epenet 1aeba8a9bd Use Mapping for async_step_reauth in discord (#72812)
* Fix tests

* Cleanup code accordingly
2022-06-01 09:44:22 +02:00
Erik Montnemery 9ac0c5907f Add test for mikrotik device tracker with numerical device name (#72808)
Add mikrotik test for numerical device name
2022-06-01 09:39:56 +02:00
Marc Mueller 4902af2f4e Fix conftest for pylint plugin (#72777) 2022-06-01 09:22:47 +02:00
epenet 577be70da9 Add new method to pylint type-hint plugin (#72757)
Enforce type hints on remove_config_entry_device
2022-06-01 08:38:48 +02:00
Christopher Bailey 133cb7ccef Add package constraint for pydantic (#72799)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-31 20:04:35 -10:00
epenet a6db25219d Use Mapping for async_step_reauth in motioneye (#72769) 2022-06-01 06:58:29 +02:00
Raman Gupta 394442e8a9 Use device_id for zwave_js/replace_failed_node command (#72785) 2022-06-01 06:42:07 +02:00
jjlawren 1ef59d1e73 Cleanup handling of new enqueue & announce features in Sonos (#72801) 2022-05-31 21:39:07 -07:00
Paulus Schoutsen 354149e43c Bumped version to 2022.6.0b7 2022-05-31 20:41:59 -07:00
jjlawren 17a3c62821 Support add/next/play/replace enqueue options in Sonos (#72800) 2022-05-31 20:41:35 -07:00
Diogo Gomes 668f56f103 Fix #72749 (#72794) 2022-05-31 20:41:35 -07:00
Paulus Schoutsen 0db9863746 Sync entities when enabling/disabling Google Assistant (#72791) 2022-05-31 20:41:34 -07:00
Erik Montnemery e60dc1b503 Stringify mikrotik device_tracker name (#72788)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-31 20:41:33 -07:00
Erik Montnemery 8606447848 Improve cast HLS detection (#72787) 2022-05-31 20:41:32 -07:00
J. Nick Koston de0c672cc2 Ensure the statistics_meta table is using the dynamic row format (#72784) 2022-05-31 20:41:32 -07:00
Diogo Gomes f6517884b1 Fix #72749 (#72794) 2022-05-31 20:40:42 -07:00
jjlawren 275ea5b150 Support add/next/play/replace enqueue options in Sonos (#72800) 2022-05-31 20:36:45 -07:00
Erik Montnemery 44f332ed5f Improve cast HLS detection (#72787) 2022-05-31 20:35:56 -07:00
GitHub Action 0df9cc907a [ci skip] Translation update 2022-06-01 00:27:00 +00:00
Paulus Schoutsen 6d74149f22 Sync entities when enabling/disabling Google Assistant (#72791) 2022-05-31 14:58:45 -07:00
Erik Montnemery 02068a2013 Stringify mikrotik device_tracker name (#72788)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-31 11:57:16 -10:00
Michael 3258d572b0 Add re-auth flow to Tankerkoenig (#72682)
* add reauth flow

* add test

* use Mapping for async_step_reauth arguments

* only update changed data

* improve tests

* use different api key to test reauth
2022-05-31 23:46:12 +02:00
J. Nick Koston 856e1144c9 Ensure the statistics_meta table is using the dynamic row format (#72784) 2022-05-31 14:35:28 -07:00
Marc Mueller a8da0eedd3 Add comment for editable installs (#72782) 2022-05-31 23:04:47 +02:00
J. Nick Koston c365454afb Revert "Initial orjson support (#72754)" (#72789)
This was causing the wheels to fail to build. We need
to workout why when we don't have release pressure

This reverts commit d9d22a9556.
2022-05-31 13:51:55 -07:00
epenet 9cea936c22 Use Mapping for async_step_reauth (t-z) (#72767)
* Adjust tailscale

* Adjust tautulli

* Adjust tile

* Adjust tractive

* Adjust trafikverket_ferry

* Adjust trafikverket_train

* Adjust unifiprotect

* Adjust uptimerobot

* Adjust verisure

* Adjust vlc_telnet

* Adjust wallbox

* Adjust watttime

* Adjust yale_smart_alarm
2022-05-31 22:44:06 +02:00
Paulus Schoutsen c3acdcb2c8 Bumped version to 2022.6.0b6 2022-05-31 13:22:38 -07:00
J. Nick Koston 9effb78a7f Prevent live logbook from sending state changed events when we only want device ids (#72780) 2022-05-31 13:22:34 -07:00
Joakim Plate 647df29a00 Don't set headers kwargs multiple times (#72779) 2022-05-31 13:22:33 -07:00
J. Nick Koston a54a5b2d20 Fix queries for logbook context_ids running in the wrong executor (#72778) 2022-05-31 13:22:33 -07:00
Bram Kragten f4d280b59d Update frontend to 20220531.0 (#72775) 2022-05-31 13:22:32 -07:00
David F. Mulcahey d268c828ee Bump ZHA quirks lib to 0.0.75 (#72765) 2022-05-31 13:22:31 -07:00
Erik Montnemery 82ed6869d0 Improve integration sensor's time unit handling (#72759) 2022-05-31 13:22:30 -07:00
Malte Franken 6b3a284135 Make zone condition more robust by ignoring unavailable and unknown entities (#72751)
* ignore entities with state unavailable or unknown

* test for unavailable entity
2022-05-31 13:22:29 -07:00
J. Nick Koston ca8c750a5a Small performance improvement for matching logbook rows (#72750) 2022-05-31 13:22:29 -07:00
Aaron Bach 7c2f73ddba Alter RainMachine to not create entities if the underlying data is missing (#72733) 2022-05-31 13:22:28 -07:00
Khole 1b2cb4eab7 Fix hive authentication process (#72719)
* Fix hive authentication process

* Update hive test scripts to add new data
2022-05-31 13:22:27 -07:00
Alexey Zimarev 4bf5132a06 SmartThings issue with unique_id (#72715)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-05-31 13:22:26 -07:00
eyager1 6e06b6c9ed Add empty string to list of invalid states (#72590)
Add null state to list of invalid states
2022-05-31 13:22:26 -07:00
Joakim Plate 84779482b8 Don't set headers kwargs multiple times (#72779) 2022-05-31 13:08:50 -07:00
J. Nick Koston 35ee4ad55b Prevent live logbook from sending state changed events when we only want device ids (#72780) 2022-05-31 13:08:04 -07:00
David F. Mulcahey 7854aaa746 Bump ZHA quirks lib to 0.0.75 (#72765) 2022-05-31 12:24:35 -07:00
J. Nick Koston 935ef79156 Fix queries for logbook context_ids running in the wrong executor (#72778) 2022-05-31 12:24:18 -07:00
J. Nick Koston d9d22a9556 Initial orjson support (#72754) 2022-05-31 12:18:11 -07:00
Aaron Bach a3e1b285cf Alter RainMachine to not create entities if the underlying data is missing (#72733) 2022-05-31 13:09:07 -06:00
Malte Franken 638992f9c4 Make zone condition more robust by ignoring unavailable and unknown entities (#72751)
* ignore entities with state unavailable or unknown

* test for unavailable entity
2022-05-31 11:34:52 -07:00
Bram Kragten eda2be8489 Update frontend to 20220531.0 (#72775) 2022-05-31 11:30:33 -07:00
J. Nick Koston 52643d9abc Add support for async_remove_config_entry_device to isy994 (#72737) 2022-05-31 08:11:44 -10:00
Khole a53aaf696c Fix hive authentication process (#72719)
* Fix hive authentication process

* Update hive test scripts to add new data
2022-05-31 08:55:00 -07:00
Allen Porter d31e43b980 Bump google-nest-sdm to 2.0.0 and cleanup nest auth implementation in config flow (#72770)
Cleanup nest auth implementaton in config flow
2022-05-31 17:53:36 +02:00
Alexey Zimarev aab3fcad7b SmartThings issue with unique_id (#72715)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-05-31 16:35:29 +02:00
Erik Montnemery 78cb0e24bc Improve integration sensor's time unit handling (#72759) 2022-05-31 15:51:38 +02:00
Martin Hjelmare 8140ed724c Remove mysensors yaml (#72761) 2022-05-31 15:22:31 +02:00
epenet cf27b82d2f Separate words with underscore in onewire (#72758) 2022-05-31 12:26:15 +02:00
Thijs W 3ea304aaf1 Improve frontier_silicon style (#72752) 2022-05-31 11:56:44 +02:00
epenet cf17169b0e Refactor type-hint pylint plugin (#72692)
* Cleanup unused variable

* Adjust tests

* Refactor _METHOD_MATCH dict

* Remove duplicate function

* Early exit

* Undo object hint

* METHOD > FUNCTION

* Add comment

* Remove extend

* Remove break

* Extract __any_platform__

* Add tests

* Cache _PLATFORMS

* Adjust tests

* Review comments

* mypy

* shorthand
2022-05-31 11:20:31 +02:00
J. Nick Koston 5dc4c89acc Small performance improvement for matching logbook rows (#72750) 2022-05-31 10:41:33 +02:00
epenet ca5f13b576 Allow removing a onewire device (#72710) 2022-05-31 10:40:08 +02:00
epenet 627d6f7803 Ensure description_placeholders is always typed (#72716) 2022-05-31 10:33:34 +02:00
Thijs W db9c586404 Address late comments for frontier silicon (#72745)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-05-31 09:56:25 +02:00
Erik Montnemery 635d7085cf Move MQTT config schemas and client to separate modules (#71995)
* Move MQTT config schemas and client to separate modules

* Update integrations depending on MQTT
2022-05-31 09:32:44 +02:00
Paulus Schoutsen 103f324c52 Bumped version to 2022.6.0b5 2022-05-30 22:57:22 -07:00
Aaron Bach 48d36e49f0 Bump simplisafe-python to 2022.05.2 (#72740) 2022-05-30 22:57:12 -07:00
Aaron Bach a4e2d31a19 Bump regenmaschine to 2022.05.1 (#72735) 2022-05-30 22:57:11 -07:00
Aaron Bach 15bdfb2a45 Fix invalid RainMachine syntax (#72732) 2022-05-30 22:57:10 -07:00
Raman Gupta b842c76fbd Bump zwave-js-server-python to 0.37.1 (#72731)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-05-30 22:56:31 -07:00
jjlawren a98528c93f Bump plexapi to 4.11.2 (#72729) 2022-05-30 22:53:07 -07:00
J. Nick Koston a202ffe4c1 Make logbook inherit the recorder filter (#72728) 2022-05-30 22:53:06 -07:00
Paulus Schoutsen 77e4c86c07 Add support for announce to play_media (#72566) 2022-05-30 22:53:05 -07:00
J. Nick Koston 4ae3929a00 Revert wiz reload on setup_retry discovery (#72743) 2022-05-30 22:52:05 -07:00
J. Nick Koston b3682a5c81 Revert bond reload on setup_retry discovery (#72744) 2022-05-30 22:51:35 -07:00
Raman Gupta 5fdc694325 Bump zwave-js-server-python to 0.37.1 (#72731)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-05-30 22:05:09 -07:00
Aaron Bach 969b7bd448 Bump simplisafe-python to 2022.05.2 (#72740) 2022-05-30 22:04:53 -07:00
jjlawren 17abbd7f51 Bump plexapi to 4.11.2 (#72729) 2022-05-30 20:56:59 -07:00
Paulus Schoutsen 99f3ca1f08 Add support for announce to play_media (#72566) 2022-05-30 20:41:05 -07:00
J. Nick Koston f9bd384e6c Stop waiting for setup retry upon discovery (#72738) 2022-05-30 20:24:34 -07:00
Aaron Bach ec44a63a84 Bump regenmaschine to 2022.05.1 (#72735) 2022-05-30 18:58:08 -06:00
J. Nick Koston 587fd05603 Make logbook inherit the recorder filter (#72728) 2022-05-30 17:34:32 -07:00
GitHub Action 362f5720ed [ci skip] Translation update 2022-05-31 00:23:11 +00:00
Aaron Bach 6b3f6e22d0 Fix invalid RainMachine syntax (#72732) 2022-05-30 17:48:42 -06:00
Raman Gupta 565b60210d Add @lymanepp as codeowner to tomorrowio (#72725) 2022-05-30 18:41:30 -04:00
eyager1 6f8ba7ee2f Add empty string to list of invalid states (#72590)
Add null state to list of invalid states
2022-05-31 00:32:52 +02:00
epenet 285a7251df Adjust config-flow type hints in zwave_me (#72714) 2022-05-31 00:10:38 +02:00
Paulus Schoutsen 72a79736a6 Bumped version to 2022.6.0b4 2022-05-30 14:40:55 -07:00
Erik Montnemery 2809592e71 Improve handling of MQTT overridden settings (#72698)
* Improve handling of MQTT overridden settings

* Don't warn unless config entry overrides yaml
2022-05-30 14:40:45 -07:00
Erik Montnemery da7446bf52 Bump hatasmota to 0.5.1 (#72696) 2022-05-30 14:40:44 -07:00
rikroe 2942986a7b Bump bimmer_connected to 0.9.3 (#72677)
Bump bimmer_connected to 0.9.3, fix retrieved units

Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-05-30 14:40:43 -07:00
Michael 67ef3229fd Address late review comments for Tankerkoenig (#72672)
* address late review comment from #72654

* use entry_id instead of unique_id

* remove not needed `_hass` property

* fix skiping failing stations

* remove not neccessary error log

* set DeviceEntryType.SERVICE

* fix use entry_id instead of unique_id

* apply suggestions on tests

* add return value also to other tests

* invert data check to early return user form
2022-05-30 14:40:42 -07:00
shbatm 952433d16e Check ISY994 climate for unknown humidity on Z-Wave Thermostat (#72670) 2022-05-30 14:40:42 -07:00
Joakim Sørensen 6f01c13845 Switch severity for gesture logging (#72668) 2022-05-30 14:40:41 -07:00
Paulus Schoutsen f8b7527bf0 Allow removing a ring device (#72665) 2022-05-30 14:40:40 -07:00
Raman Gupta f039aac31c Fix zwave_js custom trigger validation bug (#72656)
* Fix zwave_js custom trigger validation bug

* update comments

* Switch to ValueError

* Switch to ValueError
2022-05-30 14:40:39 -07:00
Aaron Bach c62692dff1 Guard against missing data in 1st generation RainMachine controllers (#72632) 2022-05-30 14:40:39 -07:00
BigMoby 4b524c0776 iAlarm XR integration refinements (#72616)
* fixing after MartinHjelmare review

* fixing after MartinHjelmare review conversion alarm state to hass state

* fixing after MartinHjelmare review conversion alarm state to hass state

* manage the status in the alarm control

* simplyfing return function
2022-05-30 14:40:38 -07:00
Duco Sebel f41b2fa2cf Fix homewizard diagnostics and add tests (#72611) 2022-05-30 14:40:37 -07:00
Matrix ce4825c9e2 Fix yolink device unavailable on startup (#72579)
* fetch device state on startup

* Suggest change

* suggest fix

* fix

* fix

* Fix suggest

* suggest fix
2022-05-30 14:40:36 -07:00
Paulus Schoutsen 6bf6a0f7bc Convert media player enqueue to an enum (#72406) 2022-05-30 14:40:35 -07:00
Shawn Saenger f33517ef2c Incorporate various improvements for the ws66i integration (#71717)
* Improve readability and remove unused code

* Remove ws66i custom services. Scenes can be used instead.

* Unmute WS66i Zone when volume changes

* Raise CannotConnect instead of ConnectionError in validation method

* Move _verify_connection() method to module level
2022-05-30 14:40:35 -07:00
Duco Sebel 59f155b482 Fix homewizard diagnostics and add tests (#72611) 2022-05-30 14:37:28 -07:00
Aaron Bach 8e75547ca4 Guard against missing data in 1st generation RainMachine controllers (#72632) 2022-05-30 14:36:58 -07:00
Ethan Madden 8c16ac2e47 Vesync air quality (#72658) 2022-05-30 22:13:53 +02:00
Franck Nijhof 7ecb527648 Remove unneeded token_request override in Geocaching (#72713) 2022-05-30 21:55:44 +02:00
kingy444 45e4dd379b Add support for topdown shades to hunterdouglas_powerview (#62788)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-30 07:54:39 -10:00
J. Nick Koston 3399be2dad Retry bond setup when zeroconf discovery happens (#72687) 2022-05-30 18:41:07 +02:00
Dimiter Geelen f06ceef43d Bump PyVLX to 0.2.20 (#72678) 2022-05-30 18:36:01 +02:00
Thijs W d5fc7e3174 Upgrade frontier_silicon library to AFSAPI 0.2.4 (#69371) 2022-05-30 18:31:57 +02:00
epenet 640f53ce21 Remove YAML configuration from upnp (#72410) 2022-05-30 17:07:18 +02:00
epenet 57ed667257 Remove YAML configuration from nzbget (#72424) 2022-05-30 16:46:55 +02:00
epenet f2fde5c1f9 Adjust config-flow type hints in sharkiq (#72688) 2022-05-30 16:35:50 +02:00
epenet 5273e3ea9d Adjust config-flow type hints in motion_blinds (#72444) 2022-05-30 16:30:41 +02:00
epenet c48591ff29 Adjust config-flow type hints in denonavr (#72477) 2022-05-30 16:30:11 +02:00
epenet 3d19d2d24f Adjust config flow type hints in withings (#72504) 2022-05-30 16:29:47 +02:00
jjlawren 30e71dd96f Add support for Sonos loudness switch (#72572) 2022-05-30 16:09:14 +02:00
rappenze c10a523055 Sync fibaro entity visible state (#72379) 2022-05-30 15:53:57 +02:00
Rami Mosleh dd5b1681e7 Remove YAML configuration from mikrotik (#72581) 2022-05-30 15:34:28 +02:00
Rami Mosleh ce94168c50 Remove YAML support for glances (#72706) 2022-05-30 15:25:02 +02:00
Jan Bouwhuis b7040efef6 Cleanup and use new MQTT_BASE_SCHEMA constants (#72283)
* Use new MQTT_BASE_SCHEMA constants

* Update constants for mqtt_room and manual_mqtt

* Revert removing platform key
2022-05-30 14:26:01 +02:00
Erik Montnemery 84243cf560 Tweak MQTT hassio discovery flow (#72699) 2022-05-30 14:25:36 +02:00
Erik Montnemery 342ccb5bf1 Improve handling of MQTT overridden settings (#72698)
* Improve handling of MQTT overridden settings

* Don't warn unless config entry overrides yaml
2022-05-30 14:21:20 +02:00
Paulus Schoutsen 42bcd0263c Allow removing a ring device (#72665) 2022-05-30 12:38:52 +02:00
Joakim Sørensen 3a0111e65d Use supervisor envs instead of hassio (#72601) 2022-05-30 12:00:13 +02:00
Erik Montnemery c8f677ce4c Bump hatasmota to 0.5.1 (#72696) 2022-05-30 11:40:36 +02:00
Bouwe Westerdijk 7e2f4ebd5c Plugwise: correct config_flow strings (#72554) 2022-05-30 09:45:33 +02:00
Marc Mueller b417ae72e5 Add generic parameters to HassJob (#70973) 2022-05-30 09:22:37 +02:00
epenet 6bc09741c7 Adjust config-flow type hints in gogogate2 (#72445) 2022-05-29 20:54:29 -10:00
rikroe 8d72891d83 Bump bimmer_connected to 0.9.3 (#72677)
Bump bimmer_connected to 0.9.3, fix retrieved units

Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-05-30 08:52:58 +02:00
J. Nick Koston 1c334605b6 Enable strict typing to emulated_hue (#72676)
* Add typing to emulated_hue part 2

* cleanups

* adjust targets in test
2022-05-30 08:49:37 +02:00
BigMoby 6e355e1074 iAlarm XR integration refinements (#72616)
* fixing after MartinHjelmare review

* fixing after MartinHjelmare review conversion alarm state to hass state

* fixing after MartinHjelmare review conversion alarm state to hass state

* manage the status in the alarm control

* simplyfing return function
2022-05-30 08:26:05 +02:00
Maciej Bieniek 75669dba6e Use pysnmplib instead of pysnmp (#72645)
* Use pysnmp and bump brother

* Fix mypy errors

* Bump brother version
2022-05-30 07:25:35 +02:00
Joakim Sørensen b9e93207e3 Switch severity for gesture logging (#72668) 2022-05-29 15:14:43 -10:00
GitHub Action 3c5b778ee3 [ci skip] Translation update 2022-05-30 00:27:06 +00:00
Michael 1ed7e226c6 Address late review comments for Tankerkoenig (#72672)
* address late review comment from #72654

* use entry_id instead of unique_id

* remove not needed `_hass` property

* fix skiping failing stations

* remove not neccessary error log

* set DeviceEntryType.SERVICE

* fix use entry_id instead of unique_id

* apply suggestions on tests

* add return value also to other tests

* invert data check to early return user form
2022-05-29 20:57:47 +02:00
Matrix 7ff1b53d4f Fix yolink device unavailable on startup (#72579)
* fetch device state on startup

* Suggest change

* suggest fix

* fix

* fix

* Fix suggest

* suggest fix
2022-05-29 20:54:23 +02:00
Shawn Saenger 1d57626ff0 Incorporate various improvements for the ws66i integration (#71717)
* Improve readability and remove unused code

* Remove ws66i custom services. Scenes can be used instead.

* Unmute WS66i Zone when volume changes

* Raise CannotConnect instead of ConnectionError in validation method

* Move _verify_connection() method to module level
2022-05-29 18:33:33 +02:00
Raman Gupta 5031c3c8b4 Fix zwave_js custom trigger validation bug (#72656)
* Fix zwave_js custom trigger validation bug

* update comments

* Switch to ValueError

* Switch to ValueError
2022-05-29 18:30:00 +02:00
Raman Gupta 92be8b4f8e Make tomorrowio API rate limit handling more robust (#70412)
* Use the max request limit when setting tomorrowio update interval

* tests

* reduce lines

* simplify

* refactor

* Make Coordinator.async_setup_entry more efficient at determining when to refresh data and schedule refresh

* clean up

* clean up

* Remove unnecessary type definition

* typo

* fix logic ot be more deterministic

* Another fix

* Comment

* Reduce wasted API calls by doing partial updates when new entries get added with a new key

* Simplify and use asyncio event so that config entries only load after initial coordinator refresh

* Remove commented out piece

* Comment

* Remove unnecessary variable

* More cleanup

* Make future merge easier

* remove dupe

* switch order

* add comment

* Remove unnecessary error handling

* make code easier to read

* review feedback for code

* Fix logic

* Update test based on review

* Tweak comments

* reset mock so asertions are more clear

* Remove update interval check
2022-05-29 18:29:21 +02:00
J. Nick Koston 237ef6419b Add basic typing to emulated_hue (#72663)
* Add basic typing to emulated_hue

* type a few more places

* fixes

* numbers are always stringified

* numbers are always stringified

* coverage

* drop assert
2022-05-29 18:27:32 +02:00
shbatm d603952872 Check ISY994 climate for unknown humidity on Z-Wave Thermostat (#72670) 2022-05-29 06:00:18 -10:00
Khole d59ecc4c96 Refactor hive entity (#72311)
* Add hive category entity changes

* Updates based on PR feedback

* Revert libary bump

* Update after PR feedback

* Update Binary device class for smoke sensor

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

* Remove entity category

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

* Updates after PR review

* Remove unused import

* Update light based on PR feedback

* Update light code from PR review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-05-29 12:08:50 +02:00
Allen Porter e7e48cd9f6 Defer google calendar integration reload to a task to avoid races of reload during setup (#72608) 2022-05-28 20:28:22 -07:00
Paulus Schoutsen 6a3d2e54a2 Handle OAuth2 rejection (#72040) 2022-05-28 20:23:16 -07:00
J. Nick Koston 7d391846ff Retry right away on discovery for WiZ (#72659) 2022-05-28 16:38:38 -10:00
Chris Talkington 46031aff8d Avoid swallowing Roku errors (#72517) 2022-05-28 21:03:13 -05:00
GitHub Action 7a0657c386 [ci skip] Translation update 2022-05-29 00:23:25 +00:00
G Johansson 24c34c0ef0 Strict typing Sensibo (#72454) 2022-05-28 13:26:50 -10:00
Michael a4f678e7c9 Manage stations via integrations configuration in Tankerkoenig (#72654) 2022-05-28 13:31:03 -07:00
Allen Porter a598cdfeb3 Don't import google calendar user pref for disabling new entities (#72652) 2022-05-28 12:51:40 -07:00
J. Nick Koston e0614953a2 Add support for async_remove_config_entry_device to homekit_controller (#72630) 2022-05-28 09:47:14 -10:00
rikroe 233f086853 Bump bimmer_connected to 0.9.2 (#72653)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-05-28 20:55:50 +03:00
J. Nick Koston 4a5679db08 Prevent config entries from being reloaded concurrently (#72636)
* Prevent config entries being reloaded concurrently

- Fixes Config entry has already been setup when
  two places try to reload the config entry at the
  same time.

- This comes up quite a bit:
  https://github.com/home-assistant/core/issues?q=is%3Aissue+sort%3Aupdated-desc+%22Config+entry+has+already+been+setup%22+is%3Aclosed

* Make sure plex creates mocks in the event loop

* drop reload_lock, already inherits
2022-05-28 10:49:55 +02:00
GitHub Action 327c6964e2 [ci skip] Translation update 2022-05-28 00:24:05 +00:00
J. Nick Koston a43d47fa0b Escape % and _ in history/logbook entity_globs, and use ? as _ (#72623)
Co-authored-by: pyos <pyos100500@gmail.com>
2022-05-27 14:38:29 -07:00
Joakim Sørensen 9fe4aef4bc Bump awesomeversion from 22.5.1 to 22.5.2 (#72624) 2022-05-27 14:37:19 -07:00
J. Nick Koston 34323ce645 Add explict type casts for postgresql filters (#72615) 2022-05-27 08:11:33 -10:00
Aaron Bach ea1e40a424 Bump regenmaschine to 2022.05.0 (#72613) 2022-05-27 10:32:38 -07:00
J. Nick Koston 040e120101 Fix recorder system health when the db_url is lacking a hostname (#72612) 2022-05-27 10:32:26 -07:00
Paulus Schoutsen a733b92389 Include provider type in auth token response (#72560) 2022-05-27 10:31:48 -07:00
Paulus Schoutsen d59258bd25 Revert "Add service entity context (#71558)" (#72610) 2022-05-27 10:30:40 -07:00
xLarry 2a1405c4bd Bump laundrify_aio to v1.1.2 (#72605) 2022-05-27 19:19:18 +03:00
Erik Montnemery 47d0cc9b09 Update integrations to pass target player when resolving media (#72597) 2022-05-27 09:05:06 -07:00
Erik Montnemery f76afffd5a Require passing target player when resolving media (#72593) 2022-05-27 08:40:55 -07:00
Erik Montnemery b6575aa66b Minor cleanup of test integration's cover platform (#72598) 2022-05-27 17:53:49 +03:00
David F. Mulcahey 60387a417f Add support for polled Smart Energy Metering sensors to ZHA (#71527)
* Add framework for polled se metering sensors

* add model

* find attr

* type info
2022-05-27 09:43:39 -04:00
Erik Montnemery 5ca82b2d33 Migrate zha light to color_mode (#70970)
* Migrate zha light to color_mode

* Fix restoring color mode

* Correct set operations

* Derive color mode from group members

* Add color mode to color channel

* use Zigpy color mode enum

Co-authored-by: David Mulcahey <david.mulcahey@me.com>
2022-05-27 15:38:22 +02:00
Erik Montnemery 35bc6900ea Simplify MQTT PLATFORM_CONFIG_SCHEMA_BASE (#72589) 2022-05-27 15:09:43 +02:00
Allen Porter 371dfd85c8 Reduce the scope of the google calendar track deprecation (#72575) 2022-05-27 11:52:24 +02:00
epenet 43e66b3af9 Adjust config-flow type hints in firmata (#72502) 2022-05-27 11:44:31 +03:00
Álvaro Fernández Rojas 9b60b092c6 Update aioqsw to v0.1.0 (#72576)
qnap_qsw: update aioqsw to v0.1.0

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-05-27 11:41:40 +03:00
J. Nick Koston 39448009bf Revert "Remove sqlite 3.34.1 downgrade workaround by reverting "Downgrade sqlite-libs on docker image (#55591)" (#72342)" (#72578) 2022-05-26 22:15:43 -10:00
jjlawren 9cd9d06bcc Avoid network activity during Plex tests (#72499) 2022-05-27 09:46:22 +02:00
uvjustin 01b5f98414 Bump httpx to 0.23.0 (#72573)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-26 21:20:37 -10:00
Erik Montnemery cc42a95100 Migrate xiaomi_miio light to color_mode (#70998) 2022-05-27 08:36:32 +02:00
Paulus Schoutsen cbd0c8976b Attach SSL context to SMTP notify and IMAP sensor (#72568) 2022-05-26 22:15:20 -07:00
J. Nick Koston a526b2b819 Add support for async_remove_config_entry_device to bond (#72511) 2022-05-26 18:15:56 -10:00
J. Nick Koston 049c06061c Fix memory leak when firing state_changed events (#72571) 2022-05-26 20:54:26 -07:00
Joakim Plate 465210784f fjaraskupan: Don't set hardware filters for service id (#72569) 2022-05-26 20:51:24 -07:00
Bram Kragten 93f0945772 Update frontend to 20220526.0 (#72567) 2022-05-26 20:48:52 -07:00
GitHub Action 26d7c3cff8 [ci skip] Translation update 2022-05-27 00:24:01 +00:00
Raman Gupta 5e52b11050 Add additional data to zwave_js device statistics WS API (#72520)
* Add additional data to zwave_js device statistics WS API

* Rename variables

* fix logic

* correct typehint

* Update homeassistant/components/zwave_js/api.py

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

* black

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-05-26 19:21:50 -04:00
Raman Gupta d8295e2fad Add logbook entries for zwave_js events (#72508)
* Add logbook entries for zwave_js events

* Fix test

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* black

* Remove value updated event

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-05-26 19:20:05 -04:00
Paulus Schoutsen 86570fba19 Convert media player enqueue to an enum (#72406) 2022-05-26 13:57:00 -07:00
Erik Montnemery 0cca73fb23 Add hardkernel hardware integration (#72489)
* Add hardkernel hardware integration

* Remove debug prints

* Improve tests

* Improve test coverage
2022-05-26 13:15:44 -07:00
Paulus Schoutsen ff3374b4e0 Use modern WS API for auth integration + add auth provider type to refresh token info (#72552) 2022-05-26 13:06:34 -07:00
Jan Bouwhuis d092861926 Move manual configuration of MQTT device_tracker to the integration key (#72493) 2022-05-26 13:02:39 -07:00
jack5mikemotown b91a1c1b0a Fix Google Assistant brightness calculation (#72514)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-05-26 13:01:23 -07:00
Erik Montnemery d1578aacf2 Improve raspberry_pi tests (#72557) 2022-05-26 21:41:17 +02:00
Raman Gupta 828fcd0a48 Fix jitter in nzbget uptime sensor (#72518) 2022-05-26 12:17:44 -07:00
rappenze f82ec4d233 Address issues from late review in fibaro config flow tests (#72553) 2022-05-26 20:52:30 +02:00
Tom Barbette 33784446f6 Add nmbs canceled attribute (#57113)
* nmbs: Add canceled attribute

If a train is canceled, change the state to canceled and also add an attribute that can be matched.
Personnaly I look for the attribute and add a "line-through" CSS style to show my train was canceled.

I discovered this was not displayed the hard way :)

Signed-off-by: Tom Barbette <t.barbette@gmail.com>

* Update homeassistant/components/nmbs/sensor.py

canceled must be compared as an int, as suggested by @MartinHjelmare

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-05-26 18:04:22 +02:00
j-a-n 576fc9dc64 Fix Moehlenhoff Alpha2 set_target_temperature and set_heat_area_mode (#72533)
Fix set_target_temperature and set_heat_area_mode
2022-05-26 13:23:49 +02:00
Marc Mueller 48cc3638fa Cleanup unused function return values (#72512) 2022-05-26 13:17:08 +02:00
Marc Mueller e8feecf50b Fix androidtv type hint (#72513) 2022-05-26 09:58:04 +02:00
Raman Gupta 3a998f1d46 Update node statistics for zwave_js device diagnostics dump (#72509) 2022-05-26 03:03:43 -04:00
Marcio Granzotto Rodrigues c1f62d03a0 Fix bond device state with v3 firmwares (#72516) 2022-05-25 18:12:43 -10:00
J. Nick Koston 3537fa1dab Fix flux_led taking a long time to recover after offline (#72507) 2022-05-25 17:02:21 -10:00
epenet 2863c7ee5b Adjust config-flow type hints in sonarr (#72412)
* Adjust config-flow type hints in sonarr

* Use mapping for reauth

* Update init
2022-05-25 21:31:17 -05:00
J. Nick Koston bfa7693d18 Fixes for logbook filtering and add it to the live stream (#72501) 2022-05-25 15:17:08 -10:00
Marc Mueller 1ac71455cb Move remaining metadata to pyproject (#72469) 2022-05-26 02:54:49 +02:00
GitHub Action 30edc039ae [ci skip] Translation update 2022-05-26 00:23:39 +00:00
Allen Porter c181af92a2 Throw nest climate API errors as HomeAssistantErrors (#72474) 2022-05-25 13:00:48 -07:00
Franck Nijhof 3e0e8dd105 Bump version to 2022.7.0dev0 (#72500) 2022-05-25 12:57:55 -07:00
5049 changed files with 125056 additions and 52272 deletions
+3 -1
View File
@@ -52,6 +52,7 @@ components: &components
- homeassistant/components/auth/**
- homeassistant/components/automation/**
- homeassistant/components/backup/**
- homeassistant/components/bluetooth/**
- homeassistant/components/cloud/**
- homeassistant/components/config/**
- homeassistant/components/configurator/**
@@ -87,6 +88,7 @@ components: &components
- homeassistant/components/persistent_notification/**
- homeassistant/components/person/**
- homeassistant/components/recorder/**
- homeassistant/components/repairs/**
- homeassistant/components/safe_mode/**
- homeassistant/components/script/**
- homeassistant/components/shopping_list/**
@@ -132,7 +134,7 @@ requirements: &requirements
- homeassistant/package_constraints.txt
- script/pip_check
- requirements*.txt
- setup.cfg
- pyproject.toml
any:
- *base_platforms
+44 -29
View File
@@ -23,6 +23,7 @@ omit =
homeassistant/components/adax/climate.py
homeassistant/components/adguard/__init__.py
homeassistant/components/adguard/const.py
homeassistant/components/adguard/entity.py
homeassistant/components/adguard/sensor.py
homeassistant/components/adguard/switch.py
homeassistant/components/ads/*
@@ -136,6 +137,7 @@ omit =
homeassistant/components/bosch_shc/switch.py
homeassistant/components/braviatv/__init__.py
homeassistant/components/braviatv/const.py
homeassistant/components/braviatv/entity.py
homeassistant/components/braviatv/media_player.py
homeassistant/components/braviatv/remote.py
homeassistant/components/broadlink/__init__.py
@@ -210,8 +212,6 @@ omit =
homeassistant/components/denonavr/media_player.py
homeassistant/components/denonavr/receiver.py
homeassistant/components/deutsche_bahn/sensor.py
homeassistant/components/devolo_home_control/cover.py
homeassistant/components/devolo_home_control/light.py
homeassistant/components/devolo_home_control/sensor.py
homeassistant/components/devolo_home_control/switch.py
homeassistant/components/digital_ocean/*
@@ -262,10 +262,13 @@ omit =
homeassistant/components/eddystone_temperature/sensor.py
homeassistant/components/edimax/switch.py
homeassistant/components/egardia/*
homeassistant/components/eight_sleep/*
homeassistant/components/eight_sleep/__init__.py
homeassistant/components/eight_sleep/binary_sensor.py
homeassistant/components/eight_sleep/sensor.py
homeassistant/components/eliqonline/sensor.py
homeassistant/components/elkm1/__init__.py
homeassistant/components/elkm1/alarm_control_panel.py
homeassistant/components/elkm1/binary_sensor.py
homeassistant/components/elkm1/climate.py
homeassistant/components/elkm1/discovery.py
homeassistant/components/elkm1/light.py
@@ -275,6 +278,7 @@ omit =
homeassistant/components/elmax/__init__.py
homeassistant/components/elmax/common.py
homeassistant/components/elmax/const.py
homeassistant/components/elmax/binary_sensor.py
homeassistant/components/elmax/switch.py
homeassistant/components/elv/*
homeassistant/components/emby/media_player.py
@@ -384,6 +388,7 @@ omit =
homeassistant/components/flume/__init__.py
homeassistant/components/flume/sensor.py
homeassistant/components/flunearyou/__init__.py
homeassistant/components/flunearyou/repairs.py
homeassistant/components/flunearyou/sensor.py
homeassistant/components/folder/sensor.py
homeassistant/components/folder_watcher/*
@@ -407,6 +412,7 @@ omit =
homeassistant/components/fritzbox_callmonitor/const.py
homeassistant/components/fritzbox_callmonitor/base.py
homeassistant/components/fritzbox_callmonitor/sensor.py
homeassistant/components/frontier_silicon/const.py
homeassistant/components/frontier_silicon/media_player.py
homeassistant/components/futurenow/light.py
homeassistant/components/garadget/cover.py
@@ -437,7 +443,6 @@ omit =
homeassistant/components/google_cloud/tts.py
homeassistant/components/google_maps/device_tracker.py
homeassistant/components/google_pubsub/__init__.py
homeassistant/components/gpmdp/media_player.py
homeassistant/components/gpsd/sensor.py
homeassistant/components/greenwave/light.py
homeassistant/components/group/notify.py
@@ -447,6 +452,7 @@ omit =
homeassistant/components/gtfs/sensor.py
homeassistant/components/guardian/__init__.py
homeassistant/components/guardian/binary_sensor.py
homeassistant/components/guardian/button.py
homeassistant/components/guardian/sensor.py
homeassistant/components/guardian/switch.py
homeassistant/components/guardian/util.py
@@ -491,7 +497,6 @@ omit =
homeassistant/components/homematic/*
homeassistant/components/home_plus_control/api.py
homeassistant/components/home_plus_control/switch.py
homeassistant/components/homewizard/diagnostics.py
homeassistant/components/homeworks/*
homeassistant/components/honeywell/__init__.py
homeassistant/components/honeywell/climate.py
@@ -505,16 +510,21 @@ omit =
homeassistant/components/huawei_lte/switch.py
homeassistant/components/hue/light.py
homeassistant/components/hunterdouglas_powerview/__init__.py
homeassistant/components/hunterdouglas_powerview/button.py
homeassistant/components/hunterdouglas_powerview/coordinator.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/diagnostics.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hunterdouglas_powerview/model.py
homeassistant/components/hunterdouglas_powerview/scene.py
homeassistant/components/hunterdouglas_powerview/sensor.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hunterdouglas_powerview/shade_data.py
homeassistant/components/hunterdouglas_powerview/util.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hydrawise/*
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/ialarm_xr/alarm_control_panel.py
homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py
homeassistant/components/iaqualink/climate.py
@@ -549,6 +559,7 @@ omit =
homeassistant/components/insteon/utils.py
homeassistant/components/intellifire/__init__.py
homeassistant/components/intellifire/coordinator.py
homeassistant/components/intellifire/climate.py
homeassistant/components/intellifire/binary_sensor.py
homeassistant/components/intellifire/sensor.py
homeassistant/components/intellifire/switch.py
@@ -576,6 +587,7 @@ omit =
homeassistant/components/isy994/sensor.py
homeassistant/components/isy994/services.py
homeassistant/components/isy994/switch.py
homeassistant/components/isy994/util.py
homeassistant/components/itach/remote.py
homeassistant/components/itunes/media_player.py
homeassistant/components/jellyfin/__init__.py
@@ -625,21 +637,16 @@ omit =
homeassistant/components/launch_library/const.py
homeassistant/components/launch_library/diagnostics.py
homeassistant/components/launch_library/sensor.py
homeassistant/components/lcn/binary_sensor.py
homeassistant/components/lcn/climate.py
homeassistant/components/lcn/helpers.py
homeassistant/components/lcn/scene.py
homeassistant/components/lcn/sensor.py
homeassistant/components/lcn/services.py
homeassistant/components/lg_netcast/media_player.py
homeassistant/components/lg_soundbar/media_player.py
homeassistant/components/life360/__init__.py
homeassistant/components/life360/const.py
homeassistant/components/life360/coordinator.py
homeassistant/components/life360/device_tracker.py
homeassistant/components/life360/helpers.py
homeassistant/components/lifx/__init__.py
homeassistant/components/lifx/const.py
homeassistant/components/lifx/light.py
homeassistant/components/lifx_cloud/scene.py
homeassistant/components/lightwave/*
homeassistant/components/limitlessled/light.py
@@ -672,6 +679,7 @@ omit =
homeassistant/components/lutron_caseta/light.py
homeassistant/components/lutron_caseta/scene.py
homeassistant/components/lutron_caseta/switch.py
homeassistant/components/lutron_caseta/util.py
homeassistant/components/lw12wifi/light.py
homeassistant/components/lyric/__init__.py
homeassistant/components/lyric/api.py
@@ -710,7 +718,6 @@ omit =
homeassistant/components/microsoft/tts.py
homeassistant/components/miflora/sensor.py
homeassistant/components/mikrotik/hub.py
homeassistant/components/mikrotik/device_tracker.py
homeassistant/components/mill/climate.py
homeassistant/components/mill/const.py
homeassistant/components/mill/sensor.py
@@ -786,6 +793,7 @@ omit =
homeassistant/components/netgear/router.py
homeassistant/components/netgear/sensor.py
homeassistant/components/netgear/switch.py
homeassistant/components/netgear/update.py
homeassistant/components/netgear_lte/*
homeassistant/components/netio/switch.py
homeassistant/components/neurio_energy/sensor.py
@@ -920,7 +928,6 @@ omit =
homeassistant/components/plex/cast.py
homeassistant/components/plex/media_player.py
homeassistant/components/plex/view.py
homeassistant/components/plugwise/select.py
homeassistant/components/plum_lightpad/light.py
homeassistant/components/pocketcasts/sensor.py
homeassistant/components/point/__init__.py
@@ -958,7 +965,13 @@ omit =
homeassistant/components/radarr/sensor.py
homeassistant/components/radio_browser/__init__.py
homeassistant/components/radio_browser/media_source.py
homeassistant/components/radiotherm/__init__.py
homeassistant/components/radiotherm/entity.py
homeassistant/components/radiotherm/climate.py
homeassistant/components/radiotherm/coordinator.py
homeassistant/components/radiotherm/data.py
homeassistant/components/radiotherm/switch.py
homeassistant/components/radiotherm/util.py
homeassistant/components/rainbird/*
homeassistant/components/raincloud/*
homeassistant/components/rainmachine/__init__.py
@@ -966,6 +979,7 @@ omit =
homeassistant/components/rainmachine/model.py
homeassistant/components/rainmachine/sensor.py
homeassistant/components/rainmachine/switch.py
homeassistant/components/rainmachine/util.py
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/__init__.py
homeassistant/components/recollect_waste/sensor.py
@@ -1049,6 +1063,7 @@ omit =
homeassistant/components/shelly/sensor.py
homeassistant/components/shelly/utils.py
homeassistant/components/sigfox/sensor.py
homeassistant/components/simplepush/__init__.py
homeassistant/components/simplepush/notify.py
homeassistant/components/simplisafe/__init__.py
homeassistant/components/simplisafe/alarm_control_panel.py
@@ -1059,7 +1074,14 @@ omit =
homeassistant/components/sisyphus/*
homeassistant/components/sky_hub/*
homeassistant/components/skybeacon/sensor.py
homeassistant/components/skybell/*
homeassistant/components/skybell/__init__.py
homeassistant/components/skybell/binary_sensor.py
homeassistant/components/skybell/camera.py
homeassistant/components/skybell/coordinator.py
homeassistant/components/skybell/entity.py
homeassistant/components/skybell/light.py
homeassistant/components/skybell/sensor.py
homeassistant/components/skybell/switch.py
homeassistant/components/slack/__init__.py
homeassistant/components/slack/notify.py
homeassistant/components/sia/__init__.py
@@ -1087,7 +1109,6 @@ omit =
homeassistant/components/smtp/notify.py
homeassistant/components/snapcast/*
homeassistant/components/snmp/*
homeassistant/components/sochain/sensor.py
homeassistant/components/solaredge/__init__.py
homeassistant/components/solaredge/coordinator.py
homeassistant/components/solaredge/sensor.py
@@ -1100,12 +1121,6 @@ omit =
homeassistant/components/soma/cover.py
homeassistant/components/soma/sensor.py
homeassistant/components/soma/utils.py
homeassistant/components/somfy/__init__.py
homeassistant/components/somfy/api.py
homeassistant/components/somfy/climate.py
homeassistant/components/somfy/cover.py
homeassistant/components/somfy/sensor.py
homeassistant/components/somfy/switch.py
homeassistant/components/somfy_mylink/__init__.py
homeassistant/components/somfy_mylink/cover.py
homeassistant/components/sonos/__init__.py
@@ -1181,6 +1196,7 @@ omit =
homeassistant/components/synology_dsm/binary_sensor.py
homeassistant/components/synology_dsm/button.py
homeassistant/components/synology_dsm/camera.py
homeassistant/components/synology_dsm/coordinator.py
homeassistant/components/synology_dsm/diagnostics.py
homeassistant/components/synology_dsm/common.py
homeassistant/components/synology_dsm/entity.py
@@ -1284,9 +1300,6 @@ omit =
homeassistant/components/tradfri/light.py
homeassistant/components/tradfri/sensor.py
homeassistant/components/tradfri/switch.py
homeassistant/components/trafikverket_ferry/__init__.py
homeassistant/components/trafikverket_ferry/coordinator.py
homeassistant/components/trafikverket_ferry/sensor.py
homeassistant/components/trafikverket_train/__init__.py
homeassistant/components/trafikverket_train/sensor.py
homeassistant/components/trafikverket_weatherstation/__init__.py
@@ -1345,6 +1358,7 @@ omit =
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/velbus/__init__.py
homeassistant/components/velbus/binary_sensor.py
homeassistant/components/velbus/button.py
homeassistant/components/velbus/climate.py
homeassistant/components/velbus/const.py
homeassistant/components/velbus/cover.py
@@ -1476,9 +1490,12 @@ omit =
homeassistant/components/yolink/__init__.py
homeassistant/components/yolink/api.py
homeassistant/components/yolink/binary_sensor.py
homeassistant/components/yolink/climate.py
homeassistant/components/yolink/const.py
homeassistant/components/yolink/coordinator.py
homeassistant/components/yolink/cover.py
homeassistant/components/yolink/entity.py
homeassistant/components/yolink/lock.py
homeassistant/components/yolink/sensor.py
homeassistant/components/yolink/siren.py
homeassistant/components/yolink/switch.py
@@ -1500,12 +1517,10 @@ omit =
homeassistant/components/zha/core/gateway.py
homeassistant/components/zha/core/helpers.py
homeassistant/components/zha/core/registries.py
homeassistant/components/zha/core/typing.py
homeassistant/components/zha/entity.py
homeassistant/components/zha/light.py
homeassistant/components/zha/sensor.py
homeassistant/components/zhong_hong/climate.py
homeassistant/components/xbee/*
homeassistant/components/ziggo_mediabox_xl/media_player.py
homeassistant/components/zoneminder/*
homeassistant/components/supla/*
+1
View File
@@ -33,6 +33,7 @@
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New integration (thank you!)
- [ ] New feature (which adds functionality to an existing integration)
- [ ] Deprecation (breaking change to happen in the future)
- [ ] Breaking change (fix/feature causing existing functionality to break)
- [ ] Code quality improvements to existing code or addition of tests
+31 -6
View File
@@ -29,7 +29,7 @@ jobs:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -70,7 +70,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -102,9 +102,20 @@ jobs:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v2
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/frontend
branch: dev
workflow: nightly.yaml
workflow_conclusion: success
name: wheels
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -112,10 +123,23 @@ jobs:
if: needs.init.outputs.channel == 'dev'
shell: bash
run: |
python3 -m pip install packaging
python3 -m pip install packaging tomli
python3 -m pip install --use-deprecated=legacy-resolver .
version="$(python3 script/version_bump.py nightly)"
if [[ "$(ls home_assistant_frontend*.whl)" =~ ^home_assistant_frontend-(.*)-py3-none-any.whl$ ]]; then
echo "Found frontend wheel, setting version to: ${BASH_REMATCH[1]}"
frontend_version="${BASH_REMATCH[1]}" yq \
--inplace e -o json \
'.requirements = ["home-assistant-frontend=="+env(frontend_version)]' \
homeassistant/components/frontend/manifest.json
sed -i "s|home-assistant-frontend==.*|home-assistant-frontend==${BASH_REMATCH[1]}|" \
homeassistant/package_constraints.txt
python -m script.gen_requirements_all
fi
- name: Write meta info file
shell: bash
run: |
@@ -135,7 +159,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.03.1
uses: home-assistant/builder@2022.07.0
with:
args: |
$BUILD_ARGS \
@@ -171,6 +195,7 @@ jobs:
- raspberrypi4
- raspberrypi4-64
- tinker
- yellow
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -200,7 +225,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.03.1
uses: home-assistant/builder@2022.07.0
with:
args: |
$BUILD_ARGS \
+254 -263
View File
@@ -20,38 +20,53 @@ on:
type: boolean
env:
CACHE_VERSION: 9
PIP_CACHE_VERSION: 3
HA_SHORT_VERSION: 2022.6
CACHE_VERSION: 1
PIP_CACHE_VERSION: 1
HA_SHORT_VERSION: 2022.8
DEFAULT_PYTHON: 3.9
PRE_COMMIT_CACHE: ~/.cache/pre-commit
PIP_CACHE: /tmp/pip-cache
SQLALCHEMY_WARN_20: 1
PYTHONASYNCIODEBUG: 1
HASS_CI: 1
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
changes:
name: Determine what has changed
info:
name: Collect information & changes data
outputs:
# In case of issues with the partial run, use the following line instead:
# test_full_suite: 'true'
test_full_suite: ${{ steps.info.outputs.test_full_suite }}
core: ${{ steps.core.outputs.changes }}
integrations: ${{ steps.integrations.outputs.changes }}
integrations_glob: ${{ steps.info.outputs.integrations_glob }}
tests: ${{ steps.info.outputs.tests }}
tests_glob: ${{ steps.info.outputs.tests_glob }}
test_groups: ${{ steps.info.outputs.test_groups }}
test_group_count: ${{ steps.info.outputs.test_group_count }}
integrations: ${{ steps.integrations.outputs.changes }}
pre-commit_cache_key: ${{ steps.generate_pre-commit_cache_key.outputs.key }}
python_cache_key: ${{ steps.generate_python_cache_key.outputs.key }}
requirements: ${{ steps.core.outputs.requirements }}
runs-on: ubuntu-latest
test_full_suite: ${{ steps.info.outputs.test_full_suite }}
test_group_count: ${{ steps.info.outputs.test_group_count }}
test_groups: ${{ steps.info.outputs.test_groups }}
tests_glob: ${{ steps.info.outputs.tests_glob }}
tests: ${{ steps.info.outputs.tests }}
runs-on: ubuntu-20.04
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Generate partial Python venv restore key
id: generate_python_cache_key
run: >-
echo "::set-output name=key::venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Generate partial pre-commit restore key
id: generate_pre-commit_cache_key
run: >-
echo "::set-output name=key::${{ env.CACHE_VERSION }}-${{ env.DEFAULT_PYTHON }}-${{
hashFiles('.pre-commit-config.yaml') }}"
- name: Filter for core changes
uses: dorny/paths-filter@v2.10.2
id: core
@@ -78,8 +93,8 @@ jobs:
# Defaults
integrations_glob=""
test_full_suite="true"
test_groups="[1, 2, 3, 4, 5, 6]"
test_group_count=6
test_groups="[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
test_group_count=10
tests="[]"
tests_glob=""
@@ -122,8 +137,8 @@ jobs:
|| [[ "${{ github.event.inputs.full }}" == "true" ]] \
|| [[ "${{ contains(github.event.pull_request.labels.*.name, 'ci-full-run') }}" == "true" ]];
then
test_groups="[1, 2, 3, 4, 5, 6]"
test_group_count=6
test_groups="[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
test_group_count=10
test_full_suite="true"
fi
@@ -141,84 +156,39 @@ jobs:
echo "tests_glob: ${tests_glob}"
echo "::set-output name=tests_glob::${tests_glob}"
# Separate job to pre-populate the base dependency cache
# This prevent upcoming jobs to do the same individually
prepare-base:
name: Prepare base dependencies
runs-on: ubuntu-latest
timeout-minutes: 20
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
pre-commit-key: ${{ steps.generate-pre-commit-key.outputs.key }}
pre-commit:
name: Prepare pre-commit base
runs-on: ubuntu-20.04
needs:
- info
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
echo "::set-output name=key::base-venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Generate partial pip restore key
id: generate-pip-key
run: >-
echo "::set-output name=key::base-pip-${{ env.PIP_CACHE_VERSION }}-${{
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
cache: "pip"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-python-key.outputs.key }}
# Temporary disabling the restore of environments when bumping
# a dependency. It seems that we are experiencing issues with
# restoring environments in GitHub Actions, although unclear why.
# First attempt: https://github.com/home-assistant/core/pull/62383
#
# restore-keys: |
# ${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements_test.txt') }}-
# ${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements.txt') }}-
# ${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.2
with:
path: ${{ env.PIP_CACHE }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-pip-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-pip-${{ env.PIP_CACHE_VERSION }}-${{ env.HA_SHORT_VERSION }}-
key: ${{ runner.os }}-venv-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python --version
pip install --cache-dir=$PIP_CACHE -U "pip>=21.0,<22.2" setuptools wheel
pip install --cache-dir=$PIP_CACHE -r requirements.txt -r requirements_test.txt --use-deprecated=legacy-resolver
- name: Generate partial pre-commit restore key
id: generate-pre-commit-key
run: >-
echo "::set-output name=key::pre-commit-${{ env.CACHE_VERSION }}-${{
hashFiles('.pre-commit-config.yaml') }}"
pip install "$(cat requirements_test.txt | grep pre-commit)"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
${{ runner.os }}-${{ steps.generate-pre-commit-key.outputs.key }}
restore-keys: |
${{ runner.os }}-pre-commit-${{ env.CACHE_VERSION }}-
key: ${{ runner.os }}-pre-commit-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Install pre-commit dependencies
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -227,25 +197,24 @@ jobs:
lint-black:
name: Check black
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs:
- changes
- prepare-base
- info
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
key: ${{ runner.os }}-venv-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -253,49 +222,48 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
key: ${{ runner.os }}-pre-commit-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
echo "Failed to restore pre-commit environment from cache"
exit 1
- name: Run black (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
pre-commit run --hook-stage manual black --all-files --show-diff-on-failure
- name: Run black (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.changes.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
lint-flake8:
name: Check flake8
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs:
- changes
- prepare-base
- info
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
key: ${{ runner.os }}-venv-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -303,10 +271,10 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
key: ${{ runner.os }}-pre-commit-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -316,37 +284,38 @@ jobs:
run: |
echo "::add-matcher::.github/workflows/matchers/flake8.json"
- name: Run flake8 (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
pre-commit run --hook-stage manual flake8 --all-files
- name: Run flake8 (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.changes.outputs.integrations_glob }}/**/*
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
lint-isort:
name: Check isort
runs-on: ubuntu-latest
needs: prepare-base
runs-on: ubuntu-20.04
needs:
- info
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
key: ${{ runner.os }}-venv-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -354,10 +323,10 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
key: ${{ runner.os }}-pre-commit-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -370,25 +339,24 @@ jobs:
lint-other:
name: Check other linters
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs:
- changes
- prepare-base
- info
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
key: ${{ runner.os }}-venv-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -396,10 +364,10 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
key: ${{ runner.os }}-pre-commit-${{ needs.info.outputs.pre-commit_cache_key }}
- name: Fail job if pre-commit cache restore failed
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -407,17 +375,17 @@ jobs:
exit 1
- name: Run pyupgrade (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
pre-commit run --hook-stage manual pyupgrade --all-files --show-diff-on-failure
- name: Run pyupgrade (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.changes.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
- name: Register yamllint problem matcher
run: |
@@ -436,17 +404,17 @@ jobs:
pre-commit run --hook-stage manual check-json --all-files
- name: Run prettier (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
pre-commit run --hook-stage manual prettier --all-files
- name: Run prettier (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.changes.outputs.integrations_glob }}/**/*
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
- name: Register check executables problem matcher
run: |
@@ -477,36 +445,105 @@ jobs:
args: hadolint Dockerfile.dev
- name: Run bandit (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
pre-commit run --hook-stage manual bandit --all-files --show-diff-on-failure
- name: Run bandit (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.changes.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
hassfest:
name: Check hassfest
runs-on: ubuntu-latest
needs: prepare-tests
base:
name: Prepare dependencies
runs-on: ubuntu-20.04
needs: info
timeout-minutes: 60
strategy:
matrix:
python-version: [3.9]
container: homeassistant/ci-azure:${{ matrix.python-version }}
python-version: ["3.9", "3.10"]
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ matrix.python-version }}
- name: Generate partial pip restore key
id: generate-pip-key
run: >-
echo "::set-output name=key::pip-${{ env.PIP_CACHE_VERSION }}-${{
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.5
with:
path: ${{ env.PIP_CACHE }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-pip-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-pip-${{ env.PIP_CACHE_VERSION }}-${{ env.HA_SHORT_VERSION }}-
- name: Install additional OS dependencies
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswresample-dev \
libswscale-dev \
libudev-dev
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python --version
pip install --cache-dir=$PIP_CACHE -U "pip>=21.0,<22.3" setuptools wheel
pip install --cache-dir=$PIP_CACHE -r requirements_all.txt --use-deprecated=legacy-resolver
pip install --cache-dir=$PIP_CACHE -r requirements_test.txt --use-deprecated=legacy-resolver
pip install -e .
hassfest:
name: Check hassfest
runs-on: ubuntu-20.04
needs:
- info
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.5
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -519,23 +556,26 @@ jobs:
gen-requirements-all:
name: Check all requirements
runs-on: ubuntu-latest
needs: prepare-base
runs-on: ubuntu-20.04
needs:
- info
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -546,94 +586,29 @@ jobs:
. venv/bin/activate
python -m script.gen_requirements_all validate
prepare-tests:
name: Prepare tests for Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
python-version: ["3.9", "3.10"]
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
echo "::set-output name=key::venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}"
- name: Generate partial pip restore key
id: generate-pip-key
run: >-
echo "::set-output name=key::pip-${{ env.PIP_CACHE_VERSION }}-${{
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
with:
path: venv
key: >-
${{ runner.os }}-${{ matrix.python-version }}-${{
steps.generate-python-key.outputs.key }}
# Temporary disabling the restore of environments when bumping
# a dependency. It seems that we are experiencing issues with
# restoring environments in GitHub Actions, although unclear why.
# First attempt: https://github.com/home-assistant/core/pull/62383
#
# restore-keys: |
# ${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}-
# ${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-${{ hashFiles('requirements_test.txt') }}-
# ${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.2
with:
path: ${{ env.PIP_CACHE }}
key: >-
${{ runner.os }}-${{ matrix.python-version }}-${{
steps.generate-pip-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ matrix.python-version }}-pip-${{ env.PIP_CACHE_VERSION }}-${{ env.HA_SHORT_VERSION }}-
- name: Create full Python ${{ matrix.python-version }} virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
# Temporary addition of cmake, needed to build some Python 3.9 packages
apt-get update
apt-get -y install cmake
python -m venv venv
. venv/bin/activate
python --version
pip install --cache-dir=$PIP_CACHE -U "pip>=21.0,<22.2" setuptools wheel
pip install --cache-dir=$PIP_CACHE -r requirements_all.txt --use-deprecated=legacy-resolver
pip install --cache-dir=$PIP_CACHE -r requirements_test.txt --use-deprecated=legacy-resolver
pip install -e .
pylint:
name: Check pylint
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
timeout-minutes: 20
needs:
- changes
- prepare-tests
strategy:
matrix:
python-version: [3.9]
container: homeassistant/ci-azure:${{ matrix.python-version }}
- info
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -643,39 +618,41 @@ jobs:
run: |
echo "::add-matcher::.github/workflows/matchers/pylint.json"
- name: Run pylint (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
python --version
pylint homeassistant
pylint --ignore-missing-annotations=y homeassistant
- name: Run pylint (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
python --version
pylint homeassistant/components/${{ needs.changes.outputs.integrations_glob }}
pylint --ignore-missing-annotations=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
mypy:
name: Check mypy
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs:
- changes
- prepare-tests
strategy:
matrix:
python-version: [3.9]
container: homeassistant/ci-azure:${{ matrix.python-version }}
- info
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -685,41 +662,45 @@ jobs:
run: |
echo "::add-matcher::.github/workflows/matchers/mypy.json"
- name: Run mypy (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
run: |
. venv/bin/activate
python --version
mypy homeassistant
mypy homeassistant pylint
- name: Run mypy (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
python --version
mypy homeassistant/components/${{ needs.changes.outputs.integrations_glob }}
mypy homeassistant/components/${{ needs.info.outputs.integrations_glob }}
pip-check:
runs-on: ubuntu-latest
if: needs.changes.outputs.requirements == 'true' || github.event.inputs.full == 'true'
runs-on: ubuntu-20.04
needs:
- changes
- prepare-tests
- info
- base
strategy:
fail-fast: false
matrix:
python-version: [3.9]
python-version: ["3.9", "3.10"]
name: Run pip check ${{ matrix.python-version }}
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ matrix.python-version }}
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -731,38 +712,48 @@ jobs:
./script/pip_check $PIP_CACHE
pytest:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
if: |
(github.event_name != 'push' || github.event.repository.full_name == 'home-assistant/core')
&& github.event.inputs.lint-only != 'true'
&& (needs.changes.outputs.test_full_suite == 'true' || needs.changes.outputs.tests_glob)
&& (needs.info.outputs.test_full_suite == 'true' || needs.info.outputs.tests_glob)
needs:
- changes
- info
- base
- gen-requirements-all
- hassfest
- lint-black
- lint-other
- lint-isort
- mypy
- prepare-tests
strategy:
fail-fast: false
matrix:
group: ${{ fromJson(needs.changes.outputs.test_groups) }}
group: ${{ fromJson(needs.info.outputs.test_groups) }}
python-version: ["3.9", "3.10"]
name: >-
Run tests Python ${{ matrix.python-version }} (${{ matrix.group }})
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Install additional OS dependencies
run: |
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ matrix.python-version }}
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.5
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
needs.prepare-tests.outputs.python-key }}
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -782,7 +773,7 @@ jobs:
run: |
echo "::add-matcher::.github/workflows/matchers/pytest-slow.json"
- name: Run pytest (fully)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
timeout-minutes: 60
run: |
. venv/bin/activate
@@ -793,15 +784,15 @@ jobs:
--durations=10 \
-n auto \
--dist=loadfile \
--test-group-count ${{ needs.changes.outputs.test_group_count }} \
--test-group-count ${{ needs.info.outputs.test_group_count }} \
--test-group=${{ matrix.group }} \
--cov homeassistant \
--cov="homeassistant" \
--cov-report=xml \
-o console_output_style=count \
-p no:sugar \
tests
- name: Run pytest (partially)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
timeout-minutes: 10
shell: bash
run: |
@@ -818,7 +809,7 @@ jobs:
--timeout=9 \
--durations=10 \
-n auto \
--cov homeassistant.components.${{ matrix.group }} \
--cov="homeassistant.components.${{ matrix.group }}" \
--cov-report=xml \
--cov-report=term-missing \
-o console_output_style=count \
@@ -837,9 +828,9 @@ jobs:
coverage:
name: Upload test coverage to Codecov
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs:
- changes
- info
- pytest
steps:
- name: Check out code from GitHub
@@ -847,10 +838,10 @@ jobs:
- name: Download all coverage artifacts
uses: actions/download-artifact@v3
- name: Upload coverage to Codecov (full coverage)
if: needs.changes.outputs.test_full_suite == 'true'
if: needs.info.outputs.test_full_suite == 'true'
uses: codecov/codecov-action@v3.1.0
with:
flags: full-suite
- name: Upload coverage to Codecov (partial coverage)
if: needs.changes.outputs.test_full_suite == 'false'
if: needs.info.outputs.test_full_suite == 'false'
uses: codecov/codecov-action@v3.1.0
+2 -2
View File
@@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -43,7 +43,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
+35 -25
View File
@@ -47,6 +47,13 @@ jobs:
# execinfo-dev when building wheels. The setuptools build setup does not have an option for
# adding a single LDFLAG so copy all relevant linux flags here (as of 1.43.0)
echo "GRPC_PYTHON_LDFLAGS=-lpthread -Wl,-wrap,memcpy -static-libgcc -lexecinfo"
# Fix out of memory issues with rust
echo "CARGO_NET_GIT_FETCH_WITH_CLI=true"
# OpenCV headless installation
echo "CI_BUILD=1"
echo "ENABLE_HEADLESS=1"
) > .env_file
- name: Upload env_file
@@ -62,7 +69,7 @@ jobs:
path: ./requirements_diff.txt
core:
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for core
name: Build musllinux wheels with musllinux_1_2 / cp310 at ${{ matrix.arch }} for core
if: github.repository_owner == 'home-assistant'
needs: init
runs-on: ubuntu-latest
@@ -70,8 +77,6 @@ jobs:
fail-fast: false
matrix:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
tag:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -87,23 +92,21 @@ jobs:
name: requirements_diff
- name: Build wheels
uses: home-assistant/wheels@2022.01.2
uses: home-assistant/wheels@2022.06.7
with:
tag: ${{ matrix.tag }}
abi: cp310
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-host: wheels.hass.io
wheels-key: ${{ secrets.WHEELS_KEY }}
wheels-user: wheels
env-file: true
apk: "build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;cargo"
pip: "Cython;numpy==1.21.6"
apk: "libffi-dev;openssl-dev;yaml-dev"
skip-binary: aiohttp
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements.txt"
integrations:
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for integrations
name: Build musllinux wheels with musllinux_1_2 / cp310 at ${{ matrix.arch }} for integrations
if: github.repository_owner == 'home-assistant'
needs: init
runs-on: ubuntu-latest
@@ -111,8 +114,6 @@ jobs:
fail-fast: false
matrix:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
tag:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -132,35 +133,44 @@ jobs:
requirement_files="requirements_all.txt requirements_diff.txt"
for requirement_file in ${requirement_files}; do
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
sed -i "s|# evdev|evdev|g" ${requirement_file}
sed -i "s|# python-eq3bt|python-eq3bt|g" ${requirement_file}
sed -i "s|# pycups|pycups|g" ${requirement_file}
sed -i "s|# homekit|homekit|g" ${requirement_file}
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
sed -i "s|# decora|decora|g" ${requirement_file}
sed -i "s|# avion|avion|g" ${requirement_file}
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
sed -i "s|# opencv-python-headless|opencv-python-headless|g" ${requirement_file}
done
- name: Adjust build env
run: |
if [ "${{ matrix.arch }}" = "i386" ]; then
echo "NPY_DISABLE_SVML=1" >> .env_file
fi
(
# cmake > 3.22.2 have issue on arm
# Tested until 3.22.5
echo "cmake==3.22.2"
) >> homeassistant/package_constraints.txt
# Do not pin numpy in wheels building
sed -i "/numpy/d" homeassistant/package_constraints.txt
- name: Build wheels
uses: home-assistant/wheels@2022.01.2
uses: home-assistant/wheels@2022.06.7
with:
tag: ${{ matrix.tag }}
abi: cp310
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-host: wheels.hass.io
wheels-key: ${{ secrets.WHEELS_KEY }}
wheels-user: wheels
env-file: true
apk: "build-base;cmake;git;linux-headers;libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;cargo"
pip: "Cython;numpy;scikit-build"
skip-binary: aiohttp,grpcio
apk: "libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev"
skip-binary: aiohttp;grpcio
legacy: true
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txt"
-6
View File
@@ -1,6 +0,0 @@
# Patterns matched in this file will be ignored by supported search utilities
# Ignore generated html and javascript files
/homeassistant/components/frontend/www_static/*.html
/homeassistant/components/frontend/www_static/*.js
/homeassistant/components/frontend/www_static/panels/*.html
+10 -10
View File
@@ -1,11 +1,11 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.32.1
rev: v2.37.2
hooks:
- id: pyupgrade
args: [--py39-plus]
- repo: https://github.com/psf/black
rev: 22.3.0
rev: 22.6.0
hooks:
- id: black
args:
@@ -21,7 +21,7 @@ repos:
- --skip="./.*,*.csv,*.json"
- --quiet-level=2
exclude_types: [csv, json]
exclude: ^tests/fixtures/
exclude: ^tests/fixtures/|homeassistant/generated/
- repo: https://github.com/PyCQA/flake8
rev: 4.0.1
hooks:
@@ -31,8 +31,8 @@ repos:
- pyflakes==2.4.0
- flake8-docstrings==1.6.0
- pydocstyle==6.1.1
- flake8-comprehensions==3.8.0
- flake8-noqa==1.2.1
- flake8-comprehensions==3.10.0
- flake8-noqa==1.2.5
- mccabe==0.6.1
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/bandit
@@ -61,7 +61,7 @@ repos:
- --branch=master
- --branch=rc
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.26.3
rev: v1.27.1
hooks:
- id: yamllint
- repo: https://github.com/pre-commit/mirrors-prettier
@@ -93,10 +93,10 @@ repos:
language: script
types: [python]
require_serial: true
files: ^homeassistant/.+\.py$
files: ^(homeassistant|pylint)/.+\.py$
- id: pylint
name: pylint
entry: script/run-in-env.sh pylint -j 0
entry: script/run-in-env.sh pylint -j 0 --ignore-missing-annotations=y
language: script
types: [python]
files: ^homeassistant/.+\.py$
@@ -106,7 +106,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/manifest\.json|setup\.cfg|\.pre-commit-config\.yaml|script/gen_requirements_all\.py)$
files: ^(homeassistant/.+/manifest\.json|pyproject\.toml|\.pre-commit-config\.yaml|script/gen_requirements_all\.py)$
- id: hassfest
name: hassfest
entry: script/run-in-env.sh python3 -m script.hassfest
@@ -120,7 +120,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(script/hassfest/metadata\.py|homeassistant/const\.py$|setup\.cfg)$
files: ^(script/hassfest/metadata\.py|homeassistant/const\.py$|pyproject\.toml)$
- id: hassfest-mypy-config
name: hassfest-mypy-config
entry: script/run-in-env.sh python3 -m script.hassfest -p mypy_config
+18 -1
View File
@@ -15,12 +15,17 @@ homeassistant.auth.auth_store
homeassistant.auth.providers.*
homeassistant.helpers.area_registry
homeassistant.helpers.condition
homeassistant.helpers.debounce
homeassistant.helpers.deprecation
homeassistant.helpers.discovery
homeassistant.helpers.dispatcher
homeassistant.helpers.entity
homeassistant.helpers.entity_platform
homeassistant.helpers.entity_values
homeassistant.helpers.event
homeassistant.helpers.reload
homeassistant.helpers.script_variables
homeassistant.helpers.singleton
homeassistant.helpers.sun
homeassistant.helpers.translation
homeassistant.util.async_
@@ -57,6 +62,7 @@ homeassistant.components.automation.*
homeassistant.components.backup.*
homeassistant.components.baf.*
homeassistant.components.binary_sensor.*
homeassistant.components.bluetooth.*
homeassistant.components.bluetooth_tracker.*
homeassistant.components.bmw_connected_drive.*
homeassistant.components.bond.*
@@ -83,9 +89,11 @@ homeassistant.components.dunehd.*
homeassistant.components.efergy.*
homeassistant.components.elgato.*
homeassistant.components.elkm1.*
homeassistant.components.emulated_hue.*
homeassistant.components.esphome.*
homeassistant.components.energy.*
homeassistant.components.evil_genius_labs.*
homeassistant.components.fan.*
homeassistant.components.fastdotcom.*
homeassistant.components.filesize.*
homeassistant.components.fitbit.*
@@ -107,17 +115,20 @@ homeassistant.components.group.*
homeassistant.components.guardian.*
homeassistant.components.history.*
homeassistant.components.homeassistant.triggers.event
homeassistant.components.homeassistant_alerts.*
homeassistant.components.homekit
homeassistant.components.homekit.accessories
homeassistant.components.homekit.aidmanager
homeassistant.components.homekit.config_flow
homeassistant.components.homekit.diagnostics
homeassistant.components.homekit.logbook
homeassistant.components.homekit.type_locks
homeassistant.components.homekit.type_triggers
homeassistant.components.homekit.util
homeassistant.components.homekit_controller
homeassistant.components.homekit_controller.alarm_control_panel
homeassistant.components.homekit_controller.button
homeassistant.components.homekit_controller.config_flow
homeassistant.components.homekit_controller.const
homeassistant.components.homekit_controller.lock
homeassistant.components.homekit_controller.select
@@ -127,7 +138,6 @@ homeassistant.components.homewizard.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.hyperion.*
homeassistant.components.ialarm_xr.*
homeassistant.components.image_processing.*
homeassistant.components.input_button.*
homeassistant.components.input_select.*
@@ -143,6 +153,8 @@ homeassistant.components.lametric.*
homeassistant.components.laundrify.*
homeassistant.components.lcn.*
homeassistant.components.light.*
homeassistant.components.lifx.*
homeassistant.components.litterrobot.*
homeassistant.components.local_ip.*
homeassistant.components.lock.*
homeassistant.components.logbook.*
@@ -151,6 +163,7 @@ homeassistant.components.luftdaten.*
homeassistant.components.mailbox.*
homeassistant.components.media_player.*
homeassistant.components.media_source.*
homeassistant.components.metoffice.*
homeassistant.components.mjpeg.*
homeassistant.components.modbus.*
homeassistant.components.modem_callerid.*
@@ -188,6 +201,8 @@ homeassistant.components.recollect_waste.*
homeassistant.components.recorder.*
homeassistant.components.remote.*
homeassistant.components.renault.*
homeassistant.components.repairs.*
homeassistant.components.rhasspy.*
homeassistant.components.ridwell.*
homeassistant.components.rituals_perfume_genie.*
homeassistant.components.roku.*
@@ -196,6 +211,7 @@ homeassistant.components.rtsp_to_webrtc.*
homeassistant.components.samsungtv.*
homeassistant.components.scene.*
homeassistant.components.select.*
homeassistant.components.sensibo.*
homeassistant.components.sensor.*
homeassistant.components.senseme.*
homeassistant.components.senz.*
@@ -224,6 +240,7 @@ homeassistant.components.tplink.*
homeassistant.components.tolo.*
homeassistant.components.tractive.*
homeassistant.components.tradfri.*
homeassistant.components.trafikverket_ferry.*
homeassistant.components.trafikverket_train.*
homeassistant.components.trafikverket_weatherstation.*
homeassistant.components.tts.*
+8
View File
@@ -12,6 +12,14 @@
"justMyCode": false,
"args": ["--debug", "-c", "config"]
},
{
"name": "Home Assistant (skip pip)",
"type": "python",
"request": "launch",
"module": "homeassistant",
"justMyCode": false,
"args": ["--debug", "-c", "config", "--skip-pip"]
},
{
// Debug by attaching to local Home Asistant server using Remote Python Debugger.
// See https://www.home-assistant.io/integrations/debugpy/
+57 -24
View File
@@ -6,6 +6,7 @@
# Home Assistant Core
setup.cfg @home-assistant/core
pyproject.toml @home-assistant/core
/homeassistant/*.py @home-assistant/core
/homeassistant/helpers/ @home-assistant/core
/homeassistant/util/ @home-assistant/core
@@ -73,6 +74,8 @@ build.json @home-assistant/supervisor
/tests/components/analytics/ @home-assistant/core @ludeeus
/homeassistant/components/androidtv/ @JeffLIrion @ollo69
/tests/components/androidtv/ @JeffLIrion @ollo69
/homeassistant/components/anthemav/ @hyralex
/tests/components/anthemav/ @hyralex
/homeassistant/components/apache_kafka/ @bachya
/tests/components/apache_kafka/ @bachya
/homeassistant/components/api/ @home-assistant/core
@@ -128,13 +131,15 @@ build.json @home-assistant/supervisor
/homeassistant/components/binary_sensor/ @home-assistant/core
/tests/components/binary_sensor/ @home-assistant/core
/homeassistant/components/bizkaibus/ @UgaitzEtxebarria
/homeassistant/components/blebox/ @bbx-a @bbx-jp
/tests/components/blebox/ @bbx-a @bbx-jp
/homeassistant/components/blebox/ @bbx-a @riokuu
/tests/components/blebox/ @bbx-a @riokuu
/homeassistant/components/blink/ @fronzbot
/tests/components/blink/ @fronzbot
/homeassistant/components/blueprint/ @home-assistant/core
/tests/components/blueprint/ @home-assistant/core
/homeassistant/components/bluesound/ @thrawnarn
/homeassistant/components/bluetooth/ @bdraco
/tests/components/bluetooth/ @bdraco
/homeassistant/components/bmw_connected_drive/ @gerard33 @rikroe
/tests/components/bmw_connected_drive/ @gerard33 @rikroe
/homeassistant/components/bond/ @bdraco @prystupa @joshs85 @marciogranzotto
@@ -272,6 +277,7 @@ build.json @home-assistant/supervisor
/tests/components/efergy/ @tkdrob
/homeassistant/components/egardia/ @jeroenterheerdt
/homeassistant/components/eight_sleep/ @mezz64 @raman325
/tests/components/eight_sleep/ @mezz64 @raman325
/homeassistant/components/elgato/ @frenck
/tests/components/elgato/ @frenck
/homeassistant/components/elkm1/ @gwww @bdraco
@@ -283,6 +289,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/emoncms/ @borpin
/homeassistant/components/emonitor/ @bdraco
/tests/components/emonitor/ @bdraco
/homeassistant/components/emulated_hue/ @bdraco
/tests/components/emulated_hue/ @bdraco
/homeassistant/components/emulated_kasa/ @kbickar
/tests/components/emulated_kasa/ @kbickar
/homeassistant/components/energy/ @home-assistant/core
@@ -327,7 +335,6 @@ build.json @home-assistant/supervisor
/tests/components/firmata/ @DaAwesomeP
/homeassistant/components/fivem/ @Sander0542
/tests/components/fivem/ @Sander0542
/homeassistant/components/fixer/ @fabaff
/homeassistant/components/fjaraskupan/ @elupus
/tests/components/fjaraskupan/ @elupus
/homeassistant/components/flick_electric/ @ZephireNZ
@@ -363,6 +370,7 @@ build.json @home-assistant/supervisor
/tests/components/fronius/ @nielstron @farmio
/homeassistant/components/frontend/ @home-assistant/frontend
/tests/components/frontend/ @home-assistant/frontend
/homeassistant/components/frontier_silicon/ @wlcrs
/homeassistant/components/garages_amsterdam/ @klaasnicolaas
/tests/components/garages_amsterdam/ @klaasnicolaas
/homeassistant/components/gdacs/ @exxamalte
@@ -403,6 +411,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/google_cloud/ @lufton
/homeassistant/components/google_travel_time/ @eifinger
/tests/components/google_travel_time/ @eifinger
/homeassistant/components/govee_ble/ @bdraco
/tests/components/govee_ble/ @bdraco
/homeassistant/components/gpsd/ @fabaff
/homeassistant/components/gree/ @cmroche
/tests/components/gree/ @cmroche
@@ -445,6 +455,10 @@ build.json @home-assistant/supervisor
/tests/components/home_plus_control/ @chemaaa
/homeassistant/components/homeassistant/ @home-assistant/core
/tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_alerts/ @home-assistant/core
/tests/components/homeassistant_alerts/ @home-assistant/core
/homeassistant/components/homeassistant_yellow/ @home-assistant/core
/tests/components/homeassistant_yellow/ @home-assistant/core
/homeassistant/components/homekit/ @bdraco
/tests/components/homekit/ @bdraco
/homeassistant/components/homekit_controller/ @Jc2k @bdraco
@@ -465,8 +479,8 @@ build.json @home-assistant/supervisor
/tests/components/huisbaasje/ @dennisschroer
/homeassistant/components/humidifier/ @home-assistant/core @Shulyaka
/tests/components/humidifier/ @home-assistant/core @Shulyaka
/homeassistant/components/hunterdouglas_powerview/ @bdraco @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @trullock
/homeassistant/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/homeassistant/components/hvv_departures/ @vigonotion
/tests/components/hvv_departures/ @vigonotion
/homeassistant/components/hydrawise/ @ptcryan
@@ -474,8 +488,6 @@ build.json @home-assistant/supervisor
/tests/components/hyperion/ @dermotduffy
/homeassistant/components/ialarm/ @RyuzakiKK
/tests/components/ialarm/ @RyuzakiKK
/homeassistant/components/ialarm_xr/ @bigmoby
/tests/components/ialarm_xr/ @bigmoby
/homeassistant/components/iammeter/ @lewei50
/homeassistant/components/iaqualink/ @flz
/tests/components/iaqualink/ @flz
@@ -490,6 +502,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/incomfort/ @zxdavb
/homeassistant/components/influxdb/ @mdegat01
/tests/components/influxdb/ @mdegat01
/homeassistant/components/inkbird/ @bdraco
/tests/components/inkbird/ @bdraco
/homeassistant/components/input_boolean/ @home-assistant/core
/tests/components/input_boolean/ @home-assistant/core
/homeassistant/components/input_button/ @home-assistant/core
@@ -568,7 +582,9 @@ build.json @home-assistant/supervisor
/tests/components/lcn/ @alengwenus
/homeassistant/components/lg_netcast/ @Drafteed
/homeassistant/components/life360/ @pnbruckner
/homeassistant/components/lifx/ @Djelibeybi
/tests/components/life360/ @pnbruckner
/homeassistant/components/lifx/ @bdraco @Djelibeybi
/tests/components/lifx/ @bdraco @Djelibeybi
/homeassistant/components/light/ @home-assistant/core
/tests/components/light/ @home-assistant/core
/homeassistant/components/linux_battery/ @fabaff
@@ -623,8 +639,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/meteoalarm/ @rolfberkenbosch
/homeassistant/components/meteoclimatic/ @adrianmo
/tests/components/meteoclimatic/ @adrianmo
/homeassistant/components/metoffice/ @MrHarcombe
/tests/components/metoffice/ @MrHarcombe
/homeassistant/components/metoffice/ @MrHarcombe @avee87
/tests/components/metoffice/ @MrHarcombe @avee87
/homeassistant/components/miflora/ @danielhiversen @basnijholt
/homeassistant/components/mikrotik/ @engrbm87
/tests/components/mikrotik/ @engrbm87
@@ -636,6 +652,8 @@ build.json @home-assistant/supervisor
/tests/components/minecraft_server/ @elmurato
/homeassistant/components/minio/ @tkislan
/tests/components/minio/ @tkislan
/homeassistant/components/moat/ @bdraco
/tests/components/moat/ @bdraco
/homeassistant/components/mobile_app/ @home-assistant/core
/tests/components/mobile_app/ @home-assistant/core
/homeassistant/components/modbus/ @adamchengtkc @janiversen @vzahradnik
@@ -691,6 +709,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/nextbus/ @vividboarder
/tests/components/nextbus/ @vividboarder
/homeassistant/components/nextcloud/ @meichthys
/homeassistant/components/nextdns/ @bieniu
/tests/components/nextdns/ @bieniu
/homeassistant/components/nfandroidtv/ @tkdrob
/tests/components/nfandroidtv/ @tkdrob
/homeassistant/components/nightscout/ @marciogranzotto
@@ -824,7 +844,8 @@ build.json @home-assistant/supervisor
/tests/components/rachio/ @bdraco
/homeassistant/components/radio_browser/ @frenck
/tests/components/radio_browser/ @frenck
/homeassistant/components/radiotherm/ @vinnyfuria
/homeassistant/components/radiotherm/ @bdraco @vinnyfuria
/tests/components/radiotherm/ @bdraco @vinnyfuria
/homeassistant/components/rainbird/ @konikvranik
/homeassistant/components/raincloud/ @vanstinator
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
@@ -846,11 +867,15 @@ build.json @home-assistant/supervisor
/tests/components/remote/ @home-assistant/core
/homeassistant/components/renault/ @epenet
/tests/components/renault/ @epenet
/homeassistant/components/repairs/ @home-assistant/core
/tests/components/repairs/ @home-assistant/core
/homeassistant/components/repetier/ @MTrab @ShadowBr0ther
/homeassistant/components/rflink/ @javicalle
/tests/components/rflink/ @javicalle
/homeassistant/components/rfxtrx/ @danielhiversen @elupus @RobBie1221
/tests/components/rfxtrx/ @danielhiversen @elupus @RobBie1221
/homeassistant/components/rhasspy/ @balloob @synesthesiam
/tests/components/rhasspy/ @balloob @synesthesiam
/homeassistant/components/ridwell/ @bachya
/tests/components/ridwell/ @bachya
/homeassistant/components/ring/ @balloob
@@ -905,6 +930,8 @@ build.json @home-assistant/supervisor
/tests/components/sensibo/ @andrey-git @gjohansson-ST
/homeassistant/components/sensor/ @home-assistant/core
/tests/components/sensor/ @home-assistant/core
/homeassistant/components/sensorpush/ @bdraco
/tests/components/sensorpush/ @bdraco
/homeassistant/components/sentry/ @dcramer @frenck
/tests/components/sentry/ @dcramer @frenck
/homeassistant/components/senz/ @milanmeu
@@ -924,6 +951,8 @@ build.json @home-assistant/supervisor
/tests/components/sighthound/ @robmarkcole
/homeassistant/components/signal_messenger/ @bbernhard
/tests/components/signal_messenger/ @bbernhard
/homeassistant/components/simplepush/ @engrbm87
/tests/components/simplepush/ @engrbm87
/homeassistant/components/simplisafe/ @bachya
/tests/components/simplisafe/ @bachya
/homeassistant/components/sinch/ @bendikrb
@@ -931,6 +960,8 @@ build.json @home-assistant/supervisor
/tests/components/siren/ @home-assistant/core @raman325
/homeassistant/components/sisyphus/ @jkeljo
/homeassistant/components/sky_hub/ @rogerselwyn
/homeassistant/components/skybell/ @tkdrob
/tests/components/skybell/ @tkdrob
/homeassistant/components/slack/ @bachya @tkdrob
/tests/components/slack/ @bachya @tkdrob
/homeassistant/components/sleepiq/ @mfugate1 @kbickar
@@ -961,14 +992,14 @@ build.json @home-assistant/supervisor
/tests/components/solax/ @squishykid
/homeassistant/components/soma/ @ratsept @sebfortier2288
/tests/components/soma/ @ratsept @sebfortier2288
/homeassistant/components/somfy/ @tetienne
/tests/components/somfy/ @tetienne
/homeassistant/components/sonarr/ @ctalkington
/tests/components/sonarr/ @ctalkington
/homeassistant/components/songpal/ @rytilahti @shenxn
/tests/components/songpal/ @rytilahti @shenxn
/homeassistant/components/sonos/ @cgtobi @jjlawren
/tests/components/sonos/ @cgtobi @jjlawren
/homeassistant/components/soundtouch/ @kroimon
/tests/components/soundtouch/ @kroimon
/homeassistant/components/spaceapi/ @fabaff
/tests/components/spaceapi/ @fabaff
/homeassistant/components/speedtestdotnet/ @rohankapoorcom @engrbm87
@@ -1013,11 +1044,11 @@ build.json @home-assistant/supervisor
/tests/components/switch/ @home-assistant/core
/homeassistant/components/switch_as_x/ @home-assistant/core
/tests/components/switch_as_x/ @home-assistant/core
/homeassistant/components/switchbot/ @danielhiversen @RenierM26
/tests/components/switchbot/ @danielhiversen @RenierM26
/homeassistant/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
/tests/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
/homeassistant/components/switcher_kis/ @tomerfi @thecode
/tests/components/switcher_kis/ @tomerfi @thecode
/homeassistant/components/switchmate/ @danielhiversen
/homeassistant/components/switchmate/ @danielhiversen @qiz-li
/homeassistant/components/syncthing/ @zhulik
/tests/components/syncthing/ @zhulik
/homeassistant/components/syncthru/ @nielstron
@@ -1061,12 +1092,12 @@ build.json @home-assistant/supervisor
/tests/components/todoist/ @boralyl
/homeassistant/components/tolo/ @MatthiasLohr
/tests/components/tolo/ @MatthiasLohr
/homeassistant/components/tomorrowio/ @raman325
/tests/components/tomorrowio/ @raman325
/homeassistant/components/tomorrowio/ @raman325 @lymanepp
/tests/components/tomorrowio/ @raman325 @lymanepp
/homeassistant/components/totalconnect/ @austinmroczek
/tests/components/totalconnect/ @austinmroczek
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey
/tests/components/tplink/ @rytilahti @thegardenmonkey
/homeassistant/components/traccar/ @ludeeus
/tests/components/traccar/ @ludeeus
/homeassistant/components/trace/ @home-assistant/core
@@ -1157,8 +1188,8 @@ build.json @home-assistant/supervisor
/tests/components/watttime/ @bachya
/homeassistant/components/waze_travel_time/ @eifinger
/tests/components/waze_travel_time/ @eifinger
/homeassistant/components/weather/ @fabaff
/tests/components/weather/ @fabaff
/homeassistant/components/weather/ @home-assistant/core
/tests/components/weather/ @home-assistant/core
/homeassistant/components/webhook/ @home-assistant/core
/tests/components/webhook/ @home-assistant/core
/homeassistant/components/webostv/ @bendavid @thecode
@@ -1195,6 +1226,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/xbox_live/ @MartinHjelmare
/homeassistant/components/xiaomi_aqara/ @danielhiversen @syssi
/tests/components/xiaomi_aqara/ @danielhiversen @syssi
/homeassistant/components/xiaomi_ble/ @Jc2k @Ernst79
/tests/components/xiaomi_ble/ @Jc2k @Ernst79
/homeassistant/components/xiaomi_miio/ @rytilahti @syssi @starkillerOG @bieniu
/tests/components/xiaomi_miio/ @rytilahti @syssi @starkillerOG @bieniu
/homeassistant/components/xiaomi_tv/ @simse
@@ -1218,8 +1251,8 @@ build.json @home-assistant/supervisor
/tests/components/zeroconf/ @bdraco
/homeassistant/components/zerproc/ @emlove
/tests/components/zerproc/ @emlove
/homeassistant/components/zha/ @dmulcahey @adminiuga
/tests/components/zha/ @dmulcahey @adminiuga
/homeassistant/components/zha/ @dmulcahey @adminiuga @puddly
/tests/components/zha/ @dmulcahey @adminiuga @puddly
/homeassistant/components/zodiac/ @JulienTant
/tests/components/zodiac/ @JulienTant
/homeassistant/components/zone/ @home-assistant/core
+1 -1
View File
@@ -123,7 +123,7 @@ enforcement ladder][mozilla].
## Adoption
This Code of Conduct was first adopted January 21st, 2017 and announced in
This Code of Conduct was first adopted on January 21st, 2017, and announced in
[this][coc-blog] blog post and has been updated on May 25th, 2020 to version
2.0 of the [Contributor Covenant][homepage] as announced in [this][coc2-blog]
blog post.
+5 -17
View File
@@ -13,9 +13,12 @@ COPY homeassistant/package_constraints.txt homeassistant/homeassistant/
RUN \
pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
-r homeassistant/requirements.txt --use-deprecated=legacy-resolver
COPY requirements_all.txt homeassistant/
COPY requirements_all.txt home_assistant_frontend-* homeassistant/
RUN \
pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
if ls homeassistant/home_assistant_frontend*.whl 1> /dev/null 2>&1; then \
pip3 install --no-cache-dir --no-index homeassistant/home_assistant_frontend-*.whl; \
fi \
&& pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
-r homeassistant/requirements_all.txt --use-deprecated=legacy-resolver
## Setup Home Assistant Core
@@ -25,21 +28,6 @@ RUN \
-e ./homeassistant --use-deprecated=legacy-resolver \
&& python3 -m compileall homeassistant/homeassistant
# Fix Bug with Alpine 3.14 and sqlite 3.35
# https://gitlab.alpinelinux.org/alpine/aports/-/issues/12524
ARG BUILD_ARCH
RUN \
if [ "${BUILD_ARCH}" = "amd64" ]; then \
export APK_ARCH=x86_64; \
elif [ "${BUILD_ARCH}" = "i386" ]; then \
export APK_ARCH=x86; \
else \
export APK_ARCH=${BUILD_ARCH}; \
fi \
&& curl -O http://dl-cdn.alpinelinux.org/alpine/v3.13/main/${APK_ARCH}/sqlite-libs-3.34.1-r0.apk \
&& apk add --no-cache sqlite-libs-3.34.1-r0.apk \
&& rm -f sqlite-libs-3.34.1-r0.apk
# Home Assistant S6-Overlay
COPY rootfs /
+1
View File
@@ -18,6 +18,7 @@ RUN \
libavfilter-dev \
libpcap-dev \
libturbojpeg0 \
libyaml-dev \
libxml2 \
git \
cmake \
+5 -5
View File
@@ -1,11 +1,11 @@
image: homeassistant/{arch}-homeassistant
shadow_repository: ghcr.io/home-assistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.05.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.05.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.05.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.05.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.05.0
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.07.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.07.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.07.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.07.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.07.0
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io
+4 -1
View File
@@ -20,6 +20,7 @@ from .mfa_modules import MultiFactorAuthModule, auth_mfa_module_from_config
from .providers import AuthProvider, LoginFlow, auth_provider_from_config
EVENT_USER_ADDED = "user_added"
EVENT_USER_UPDATED = "user_updated"
EVENT_USER_REMOVED = "user_removed"
_MfaModuleDict = dict[str, MultiFactorAuthModule]
@@ -103,7 +104,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
"""Return a user as result of login flow."""
flow = cast(LoginFlow, flow)
if result["type"] != data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
if result["type"] != data_entry_flow.FlowResultType.CREATE_ENTRY:
return result
# we got final result
@@ -338,6 +339,8 @@ class AuthManager:
else:
await self.async_deactivate_user(user)
self.hass.bus.async_fire(EVENT_USER_UPDATED, {"user_id": user.id})
async def async_activate_user(self, user: models.User) -> None:
"""Activate a user."""
await self._store.async_activate_user(user)
+3 -2
View File
@@ -46,7 +46,7 @@ class AuthStore:
self._users: dict[str, models.User] | None = None
self._groups: dict[str, models.Group] | None = None
self._perm_lookup: PermissionLookup | None = None
self._store = Store(
self._store = Store[dict[str, list[dict[str, Any]]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._lock = asyncio.Lock()
@@ -483,9 +483,10 @@ class AuthStore:
jwt_key=rt_dict["jwt_key"],
last_used_at=last_used_at,
last_used_ip=rt_dict.get("last_used_ip"),
credential=credentials.get(rt_dict.get("credential_id")),
version=rt_dict.get("version"),
)
if "credential_id" in rt_dict:
token.credential = credentials.get(rt_dict["credential_id"])
users[rt_dict["user_id"]].refresh_tokens[token.id] = token
self._groups = groups
+5 -7
View File
@@ -7,7 +7,7 @@ from __future__ import annotations
import asyncio
from collections import OrderedDict
import logging
from typing import Any
from typing import Any, cast
import attr
import voluptuous as vol
@@ -100,7 +100,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
"""Initialize the user data store."""
super().__init__(hass, config)
self._user_settings: _UsersDict | None = None
self._user_store = Store(
self._user_store = Store[dict[str, dict[str, Any]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._include = config.get(CONF_INCLUDE, [])
@@ -119,10 +119,8 @@ class NotifyAuthModule(MultiFactorAuthModule):
if self._user_settings is not None:
return
if (data := await self._user_store.async_load()) is None or not isinstance(
data, dict
):
data = {STORAGE_USERS: {}}
if (data := await self._user_store.async_load()) is None:
data = cast(dict[str, dict[str, Any]], {STORAGE_USERS: {}})
self._user_settings = {
user_id: NotifySetting(**setting)
@@ -322,6 +320,7 @@ class NotifySetupFlow(SetupFlow):
errors: dict[str, str] = {}
hass = self._auth_module.hass
assert self._secret and self._count
if user_input:
verified = await hass.async_add_executor_job(
_verify_otp, self._secret, user_input["code"], self._count
@@ -336,7 +335,6 @@ class NotifySetupFlow(SetupFlow):
errors["base"] = "invalid_code"
# generate code every time, no retry logic
assert self._secret and self._count
code = await hass.async_add_executor_job(
_generate_otp, self._secret, self._count
)
+5 -7
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
import asyncio
from io import BytesIO
from typing import Any
from typing import Any, cast
import voluptuous as vol
@@ -77,7 +77,7 @@ class TotpAuthModule(MultiFactorAuthModule):
"""Initialize the user data store."""
super().__init__(hass, config)
self._users: dict[str, str] | None = None
self._user_store = Store(
self._user_store = Store[dict[str, dict[str, str]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._init_lock = asyncio.Lock()
@@ -93,16 +93,14 @@ class TotpAuthModule(MultiFactorAuthModule):
if self._users is not None:
return
if (data := await self._user_store.async_load()) is None or not isinstance(
data, dict
):
data = {STORAGE_USERS: {}}
if (data := await self._user_store.async_load()) is None:
data = cast(dict[str, dict[str, str]], {STORAGE_USERS: {}})
self._users = data.get(STORAGE_USERS, {})
async def _async_save(self) -> None:
"""Save data."""
await self._user_store.async_save({STORAGE_USERS: self._users})
await self._user_store.async_save({STORAGE_USERS: self._users or {}})
def _add_ota_secret(self, user_id: str, secret: str | None = None) -> str:
"""Create a ota_secret for user."""
+1 -1
View File
@@ -272,7 +272,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
if not errors:
return await self.async_finish(self.credential)
description_placeholders: dict[str, str | None] = {
description_placeholders: dict[str, str] = {
"mfa_module_name": auth_module.name,
"mfa_module_id": auth_module.id,
}
@@ -61,10 +61,10 @@ class Data:
def __init__(self, hass: HomeAssistant) -> None:
"""Initialize the user data store."""
self.hass = hass
self._store = Store(
self._store = Store[dict[str, list[dict[str, str]]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._data: dict[str, Any] | None = None
self._data: dict[str, list[dict[str, str]]] | None = None
# Legacy mode will allow usernames to start/end with whitespace
# and will compare usernames case-insensitive.
# Remove in 2020 or when we launch 1.0.
@@ -80,10 +80,8 @@ class Data:
async def async_load(self) -> None:
"""Load stored data."""
if (data := await self._store.async_load()) is None or not isinstance(
data, dict
):
data = {"users": []}
if (data := await self._store.async_load()) is None:
data = cast(dict[str, list[dict[str, str]]], {"users": []})
seen: set[str] = set()
@@ -123,7 +121,8 @@ class Data:
@property
def users(self) -> list[dict[str, str]]:
"""Return users."""
return self._data["users"] # type: ignore[index,no-any-return]
assert self._data is not None
return self._data["users"]
def validate_login(self, username: str, password: str) -> None:
"""Validate a username and password.
+3 -3
View File
@@ -4,15 +4,15 @@ from __future__ import annotations
from enum import Enum
from typing import Any, TypeVar
_StrEnumT = TypeVar("_StrEnumT", bound="StrEnum")
_StrEnumSelfT = TypeVar("_StrEnumSelfT", bound="StrEnum")
class StrEnum(str, Enum):
"""Partial backport of Python 3.11's StrEnum for our basic use cases."""
def __new__(
cls: type[_StrEnumT], value: str, *args: Any, **kwargs: Any
) -> _StrEnumT:
cls: type[_StrEnumSelfT], value: str, *args: Any, **kwargs: Any
) -> _StrEnumSelfT:
"""Create a new StrEnum instance."""
if not isinstance(value, str):
raise TypeError(f"{value!r} is not a string")
+60 -25
View File
@@ -7,6 +7,7 @@ from datetime import datetime, timedelta
import logging
import logging.handlers
import os
import platform
import sys
import threading
from time import monotonic
@@ -23,7 +24,7 @@ from .const import (
SIGNAL_BOOTSTRAP_INTEGRATONS,
)
from .exceptions import HomeAssistantError
from .helpers import area_registry, device_registry, entity_registry
from .helpers import area_registry, device_registry, entity_registry, recorder
from .helpers.dispatcher import async_dispatcher_send
from .helpers.typing import ConfigType
from .setup import (
@@ -34,7 +35,6 @@ from .setup import (
async_setup_component,
)
from .util import dt as dt_util
from .util.async_ import gather_with_concurrency
from .util.logging import async_activate_log_queue_handler
from .util.package import async_get_user_site, is_virtual_env
@@ -66,10 +66,19 @@ LOGGING_INTEGRATIONS = {
# Error logging
"system_log",
"sentry",
}
FRONTEND_INTEGRATIONS = {
# Get the frontend up and running as soon as possible so problem
# integrations can be removed and database migration status is
# visible in frontend
"frontend",
}
RECORDER_INTEGRATIONS = {
# Setup after frontend
# To record data
"recorder",
}
DISCOVERY_INTEGRATIONS = ("dhcp", "ssdp", "usb", "zeroconf")
DISCOVERY_INTEGRATIONS = ("bluetooth", "dhcp", "ssdp", "usb", "zeroconf")
STAGE_1_INTEGRATIONS = {
# We need to make sure discovery integrations
# update their deps before stage 2 integrations
@@ -83,10 +92,6 @@ STAGE_1_INTEGRATIONS = {
"cloud",
# Ensure supervisor is available
"hassio",
# Get the frontend up and running as soon
# as possible so problem integrations can
# be removed
"frontend",
}
@@ -284,7 +289,9 @@ def async_enable_logging(
This method must be run in the event loop.
"""
fmt = "%(asctime)s %(levelname)s (%(threadName)s) [%(name)s] %(message)s"
fmt = (
"%(asctime)s.%(msecs)03d %(levelname)s (%(threadName)s) [%(name)s] %(message)s"
)
datefmt = "%Y-%m-%d %H:%M:%S"
if not log_no_color:
@@ -398,7 +405,7 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
domains.update(hass.config_entries.async_domains())
# Make sure the Hass.io component is loaded
if "HASSIO" in os.environ:
if "SUPERVISOR" in os.environ:
domains.add("hassio")
return domains
@@ -476,14 +483,9 @@ async def _async_set_up_integrations(
integrations_to_process = [
int_or_exc
for int_or_exc in await gather_with_concurrency(
loader.MAX_LOAD_CONCURRENTLY,
*(
loader.async_get_integration(hass, domain)
for domain in old_to_resolve
),
return_exceptions=True,
)
for int_or_exc in (
await loader.async_get_integrations(hass, old_to_resolve)
).values()
if isinstance(int_or_exc, loader.Integration)
]
resolve_dependencies_tasks = [
@@ -507,11 +509,43 @@ async def _async_set_up_integrations(
_LOGGER.info("Domains to be set up: %s", domains_to_setup)
def _cache_uname_processor() -> None:
"""Cache the result of platform.uname().processor in the executor.
Multiple modules call this function at startup which
executes a blocking subprocess call. This is a problem for the
asyncio event loop. By primeing the cache of uname we can
avoid the blocking call in the event loop.
"""
platform.uname().processor # pylint: disable=expression-not-assigned
# Load the registries and cache the result of platform.uname().processor
await asyncio.gather(
device_registry.async_load(hass),
entity_registry.async_load(hass),
area_registry.async_load(hass),
hass.async_add_executor_job(_cache_uname_processor),
)
# Initialize recorder
if "recorder" in domains_to_setup:
recorder.async_initialize_recorder(hass)
# Load logging as soon as possible
if logging_domains := domains_to_setup & LOGGING_INTEGRATIONS:
_LOGGER.info("Setting up logging: %s", logging_domains)
await async_setup_multi_components(hass, logging_domains, config)
# Setup frontend
if frontend_domains := domains_to_setup & FRONTEND_INTEGRATIONS:
_LOGGER.info("Setting up frontend: %s", frontend_domains)
await async_setup_multi_components(hass, frontend_domains, config)
# Setup recorder
if recorder_domains := domains_to_setup & RECORDER_INTEGRATIONS:
_LOGGER.info("Setting up recorder: %s", recorder_domains)
await async_setup_multi_components(hass, recorder_domains, config)
# Start up debuggers. Start these first in case they want to wait.
if debuggers := domains_to_setup & DEBUGGER_INTEGRATIONS:
_LOGGER.debug("Setting up debuggers: %s", debuggers)
@@ -521,7 +555,8 @@ async def _async_set_up_integrations(
stage_1_domains: set[str] = set()
# Find all dependencies of any dependency of any stage 1 integration that
# we plan on loading and promote them to stage 1
# we plan on loading and promote them to stage 1. This is done only to not
# get misleading log messages
deps_promotion: set[str] = STAGE_1_INTEGRATIONS
while deps_promotion:
old_deps_promotion = deps_promotion
@@ -538,13 +573,13 @@ async def _async_set_up_integrations(
deps_promotion.update(dep_itg.all_dependencies)
stage_2_domains = domains_to_setup - logging_domains - debuggers - stage_1_domains
# Load the registries
await asyncio.gather(
device_registry.async_load(hass),
entity_registry.async_load(hass),
area_registry.async_load(hass),
stage_2_domains = (
domains_to_setup
- logging_domains
- frontend_domains
- recorder_domains
- debuggers
- stage_1_domains
)
# Start setup
+1 -1
View File
@@ -103,7 +103,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data[DOMAIN] = AbodeSystem(abode, polling)
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
await setup_hass_events(hass)
await hass.async_add_executor_job(setup_hass_services, hass)
@@ -1,6 +1,7 @@
"""Config flow for the Abode Security System component."""
from __future__ import annotations
from collections.abc import Mapping
from http import HTTPStatus
from typing import Any, cast
@@ -149,9 +150,9 @@ class AbodeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
return await self._async_abode_mfa_login()
async def async_step_reauth(self, config: dict[str, Any]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle reauthorization request from Abode."""
self._username = config[CONF_USERNAME]
self._username = entry_data[CONF_USERNAME]
return await self.async_step_reauth_confirm()
+21 -7
View File
@@ -11,9 +11,7 @@ from homeassistant.components.light import (
ATTR_BRIGHTNESS,
ATTR_COLOR_TEMP,
ATTR_HS_COLOR,
SUPPORT_BRIGHTNESS,
SUPPORT_COLOR,
SUPPORT_COLOR_TEMP,
ColorMode,
LightEntity,
)
from homeassistant.config_entries import ConfigEntry
@@ -101,11 +99,27 @@ class AbodeLight(AbodeDevice, LightEntity):
_hs = self._device.color
return _hs
@property
def color_mode(self) -> str | None:
"""Return the color mode of the light."""
if self._device.is_dimmable and self._device.is_color_capable:
if self.hs_color is not None:
return ColorMode.HS
return ColorMode.COLOR_TEMP
if self._device.is_dimmable:
return ColorMode.BRIGHTNESS
return ColorMode.ONOFF
@property
def supported_color_modes(self) -> set[str] | None:
"""Flag supported color modes."""
if self._device.is_dimmable and self._device.is_color_capable:
return {ColorMode.COLOR_TEMP, ColorMode.HS}
if self._device.is_dimmable:
return {ColorMode.BRIGHTNESS}
return {ColorMode.ONOFF}
@property
def supported_features(self) -> int:
"""Flag supported features."""
if self._device.is_dimmable and self._device.is_color_capable:
return SUPPORT_BRIGHTNESS | SUPPORT_COLOR | SUPPORT_COLOR_TEMP
if self._device.is_dimmable:
return SUPPORT_BRIGHTNESS
return 0
@@ -2,7 +2,7 @@
"config": {
"abort": {
"reauth_successful": "\u518d\u8a8d\u8a3c\u306b\u6210\u529f\u3057\u307e\u3057\u305f",
"single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002"
"single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a2d\u5b9a\u3067\u304d\u308b\u306e\u306f1\u3064\u3060\u3051\u3067\u3059\u3002"
},
"error": {
"cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
@@ -18,7 +18,7 @@
"user": {
"data": {
"password": "Palavra-passe",
"username": "Endere\u00e7o de e-mail"
"username": "Email"
}
}
}
@@ -4,6 +4,11 @@
"single_instance_allowed": "Endast en enda konfiguration av Abode \u00e4r till\u00e5ten."
},
"step": {
"reauth_confirm": {
"data": {
"username": "E-postadress"
}
},
"user": {
"data": {
"password": "L\u00f6senord",
@@ -11,12 +11,14 @@ from aiohttp.client_exceptions import ClientConnectorError
from async_timeout import timeout
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY, Platform
from homeassistant.const import CONF_API_KEY, CONF_NAME, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import ATTR_FORECAST, CONF_FORECAST, DOMAIN
from .const import ATTR_FORECAST, CONF_FORECAST, DOMAIN, MANUFACTURER
_LOGGER = logging.getLogger(__name__)
@@ -26,6 +28,7 @@ PLATFORMS = [Platform.SENSOR, Platform.WEATHER]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up AccuWeather as config entry."""
api_key: str = entry.data[CONF_API_KEY]
name: str = entry.data[CONF_NAME]
assert entry.unique_id is not None
location_key = entry.unique_id
forecast: bool = entry.options.get(CONF_FORECAST, False)
@@ -35,7 +38,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
websession = async_get_clientsession(hass)
coordinator = AccuWeatherDataUpdateCoordinator(
hass, websession, api_key, location_key, forecast
hass, websession, api_key, location_key, forecast, name
)
await coordinator.async_config_entry_first_refresh()
@@ -43,7 +46,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -73,12 +76,27 @@ class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
api_key: str,
location_key: str,
forecast: bool,
name: str,
) -> None:
"""Initialize."""
self.location_key = location_key
self.forecast = forecast
self.is_metric = hass.config.units.is_metric
self.accuweather = AccuWeather(api_key, session, location_key=self.location_key)
self.accuweather = AccuWeather(api_key, session, location_key=location_key)
self.device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, location_key)},
manufacturer=MANUFACTURER,
name=name,
# You don't need to provide specific details for the URL,
# so passing in _ characters is fine if the location key
# is correct
configuration_url=(
"http://accuweather.com/en/"
f"_/_/{location_key}/"
f"weather-forecast/{location_key}/"
),
)
# Enabling the forecast download increases the number of requests per data
# update, we use 40 minutes for current condition only and 80 minutes for
@@ -3,7 +3,6 @@ from __future__ import annotations
from typing import Final
from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass
from homeassistant.components.weather import (
ATTR_CONDITION_CLEAR_NIGHT,
ATTR_CONDITION_CLOUDY,
@@ -20,22 +19,6 @@ from homeassistant.components.weather import (
ATTR_CONDITION_SUNNY,
ATTR_CONDITION_WINDY,
)
from homeassistant.const import (
CONCENTRATION_PARTS_PER_CUBIC_METER,
LENGTH_FEET,
LENGTH_INCHES,
LENGTH_METERS,
LENGTH_MILLIMETERS,
PERCENTAGE,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
TIME_HOURS,
UV_INDEX,
)
from .model import AccuWeatherSensorDescription
API_IMPERIAL: Final = "Imperial"
API_METRIC: Final = "Metric"
@@ -45,7 +28,6 @@ CONF_FORECAST: Final = "forecast"
DOMAIN: Final = "accuweather"
MANUFACTURER: Final = "AccuWeather, Inc."
MAX_FORECAST_DAYS: Final = 4
NAME: Final = "AccuWeather"
CONDITION_CLASSES: Final[dict[str, list[int]]] = {
ATTR_CONDITION_CLEAR_NIGHT: [33, 34, 37],
@@ -63,264 +45,3 @@ CONDITION_CLASSES: Final[dict[str, list[int]]] = {
ATTR_CONDITION_SUNNY: [1, 2, 5],
ATTR_CONDITION_WINDY: [32],
}
FORECAST_SENSOR_TYPES: Final[tuple[AccuWeatherSensorDescription, ...]] = (
AccuWeatherSensorDescription(
key="CloudCoverDay",
icon="mdi:weather-cloudy",
name="Cloud Cover Day",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="CloudCoverNight",
icon="mdi:weather-cloudy",
name="Cloud Cover Night",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Grass",
icon="mdi:grass",
name="Grass Pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="HoursOfSun",
icon="mdi:weather-partly-cloudy",
name="Hours Of Sun",
unit_metric=TIME_HOURS,
unit_imperial=TIME_HOURS,
),
AccuWeatherSensorDescription(
key="Mold",
icon="mdi:blur",
name="Mold Pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Ozone",
icon="mdi:vector-triangle",
name="Ozone",
unit_metric=None,
unit_imperial=None,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Ragweed",
icon="mdi:sprout",
name="Ragweed Pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureMax",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature Max",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureMin",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature Min",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShadeMax",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature Shade Max",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShadeMin",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature Shade Min",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityDay",
icon="mdi:weather-lightning",
name="Thunderstorm Probability Day",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityNight",
icon="mdi:weather-lightning",
name="Thunderstorm Probability Night",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
),
AccuWeatherSensorDescription(
key="Tree",
icon="mdi:tree-outline",
name="Tree Pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="UVIndex",
icon="mdi:weather-sunny",
name="UV Index",
unit_metric=UV_INDEX,
unit_imperial=UV_INDEX,
),
AccuWeatherSensorDescription(
key="WindGustDay",
icon="mdi:weather-windy",
name="Wind Gust Day",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="WindGustNight",
icon="mdi:weather-windy",
name="Wind Gust Night",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="WindDay",
icon="mdi:weather-windy",
name="Wind Day",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
),
AccuWeatherSensorDescription(
key="WindNight",
icon="mdi:weather-windy",
name="Wind Night",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
),
)
SENSOR_TYPES: Final[tuple[AccuWeatherSensorDescription, ...]] = (
AccuWeatherSensorDescription(
key="ApparentTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Apparent Temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Ceiling",
icon="mdi:weather-fog",
name="Cloud Ceiling",
unit_metric=LENGTH_METERS,
unit_imperial=LENGTH_FEET,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="CloudCover",
icon="mdi:weather-cloudy",
name="Cloud Cover",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="DewPoint",
device_class=SensorDeviceClass.TEMPERATURE,
name="Dew Point",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShade",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel Temperature Shade",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Precipitation",
icon="mdi:weather-rainy",
name="Precipitation",
unit_metric=LENGTH_MILLIMETERS,
unit_imperial=LENGTH_INCHES,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="PressureTendency",
device_class="accuweather__pressure_tendency",
icon="mdi:gauge",
name="Pressure Tendency",
unit_metric=None,
unit_imperial=None,
),
AccuWeatherSensorDescription(
key="UVIndex",
icon="mdi:weather-sunny",
name="UV Index",
unit_metric=UV_INDEX,
unit_imperial=UV_INDEX,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WetBulbTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Wet Bulb Temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WindChillTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Wind Chill Temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Wind",
icon="mdi:weather-windy",
name="Wind",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WindGust",
icon="mdi:weather-windy",
name="Wind Gust",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
)
@@ -1,14 +0,0 @@
"""Type definitions for AccuWeather integration."""
from __future__ import annotations
from dataclasses import dataclass
from homeassistant.components.sensor import SensorEntityDescription
@dataclass
class AccuWeatherSensorDescription(SensorEntityDescription):
"""Class describing AccuWeather sensor entities."""
unit_metric: str | None = None
unit_imperial: str | None = None
+296 -23
View File
@@ -1,14 +1,31 @@
"""Support for the AccuWeather service."""
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, cast
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_NAME
from homeassistant.const import (
CONCENTRATION_PARTS_PER_CUBIC_METER,
LENGTH_FEET,
LENGTH_INCHES,
LENGTH_METERS,
LENGTH_MILLIMETERS,
PERCENTAGE,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
TIME_HOURS,
UV_INDEX,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity
@@ -20,28 +37,292 @@ from .const import (
ATTR_FORECAST,
ATTRIBUTION,
DOMAIN,
FORECAST_SENSOR_TYPES,
MANUFACTURER,
MAX_FORECAST_DAYS,
NAME,
SENSOR_TYPES,
)
from .model import AccuWeatherSensorDescription
PARALLEL_UPDATES = 1
@dataclass
class AccuWeatherSensorDescription(SensorEntityDescription):
"""Class describing AccuWeather sensor entities."""
unit_metric: str | None = None
unit_imperial: str | None = None
FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
AccuWeatherSensorDescription(
key="CloudCoverDay",
icon="mdi:weather-cloudy",
name="Cloud cover day",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="CloudCoverNight",
icon="mdi:weather-cloudy",
name="Cloud cover night",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Grass",
icon="mdi:grass",
name="Grass pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="HoursOfSun",
icon="mdi:weather-partly-cloudy",
name="Hours of sun",
unit_metric=TIME_HOURS,
unit_imperial=TIME_HOURS,
),
AccuWeatherSensorDescription(
key="Mold",
icon="mdi:blur",
name="Mold pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Ozone",
icon="mdi:vector-triangle",
name="Ozone",
unit_metric=None,
unit_imperial=None,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="Ragweed",
icon="mdi:sprout",
name="Ragweed pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureMax",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature max",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureMin",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature min",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShadeMax",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature shade max",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShadeMin",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature shade min",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityDay",
icon="mdi:weather-lightning",
name="Thunderstorm probability day",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityNight",
icon="mdi:weather-lightning",
name="Thunderstorm probability night",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
),
AccuWeatherSensorDescription(
key="Tree",
icon="mdi:tree-outline",
name="Tree pollen",
unit_metric=CONCENTRATION_PARTS_PER_CUBIC_METER,
unit_imperial=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="UVIndex",
icon="mdi:weather-sunny",
name="UV index",
unit_metric=UV_INDEX,
unit_imperial=UV_INDEX,
),
AccuWeatherSensorDescription(
key="WindGustDay",
icon="mdi:weather-windy",
name="Wind gust day",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="WindGustNight",
icon="mdi:weather-windy",
name="Wind gust night",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
),
AccuWeatherSensorDescription(
key="WindDay",
icon="mdi:weather-windy",
name="Wind day",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
),
AccuWeatherSensorDescription(
key="WindNight",
icon="mdi:weather-windy",
name="Wind night",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
),
)
SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
AccuWeatherSensorDescription(
key="ApparentTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Apparent temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Ceiling",
icon="mdi:weather-fog",
name="Cloud ceiling",
unit_metric=LENGTH_METERS,
unit_imperial=LENGTH_FEET,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="CloudCover",
icon="mdi:weather-cloudy",
name="Cloud cover",
unit_metric=PERCENTAGE,
unit_imperial=PERCENTAGE,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="DewPoint",
device_class=SensorDeviceClass.TEMPERATURE,
name="Dew point",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureShade",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature shade",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Precipitation",
icon="mdi:weather-rainy",
name="Precipitation",
unit_metric=LENGTH_MILLIMETERS,
unit_imperial=LENGTH_INCHES,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="PressureTendency",
device_class="accuweather__pressure_tendency",
icon="mdi:gauge",
name="Pressure tendency",
unit_metric=None,
unit_imperial=None,
),
AccuWeatherSensorDescription(
key="UVIndex",
icon="mdi:weather-sunny",
name="UV index",
unit_metric=UV_INDEX,
unit_imperial=UV_INDEX,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WetBulbTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Wet bulb temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WindChillTemperature",
device_class=SensorDeviceClass.TEMPERATURE,
name="Wind chill temperature",
unit_metric=TEMP_CELSIUS,
unit_imperial=TEMP_FAHRENHEIT,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="Wind",
icon="mdi:weather-windy",
name="Wind",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
state_class=SensorStateClass.MEASUREMENT,
),
AccuWeatherSensorDescription(
key="WindGust",
icon="mdi:weather-windy",
name="Wind gust",
unit_metric=SPEED_KILOMETERS_PER_HOUR,
unit_imperial=SPEED_MILES_PER_HOUR,
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
),
)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Add AccuWeather entities from a config_entry."""
name: str = entry.data[CONF_NAME]
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
sensors: list[AccuWeatherSensor] = []
for description in SENSOR_TYPES:
sensors.append(AccuWeatherSensor(name, coordinator, description))
sensors.append(AccuWeatherSensor(coordinator, description))
if coordinator.forecast:
for description in FORECAST_SENSOR_TYPES:
@@ -50,9 +331,7 @@ async def async_setup_entry(
# locations.
if description.key in coordinator.data[ATTR_FORECAST][0]:
sensors.append(
AccuWeatherSensor(
name, coordinator, description, forecast_day=day
)
AccuWeatherSensor(coordinator, description, forecast_day=day)
)
async_add_entities(sensors)
@@ -64,11 +343,11 @@ class AccuWeatherSensor(
"""Define an AccuWeather entity."""
_attr_attribution = ATTRIBUTION
_attr_has_entity_name = True
entity_description: AccuWeatherSensorDescription
def __init__(
self,
name: str,
coordinator: AccuWeatherDataUpdateCoordinator,
description: AccuWeatherSensorDescription,
forecast_day: int | None = None,
@@ -81,12 +360,11 @@ class AccuWeatherSensor(
)
self._attrs: dict[str, Any] = {}
if forecast_day is not None:
self._attr_name = f"{name} {description.name} {forecast_day}d"
self._attr_name = f"{description.name} {forecast_day}d"
self._attr_unique_id = (
f"{coordinator.location_key}-{description.key}-{forecast_day}".lower()
)
else:
self._attr_name = f"{name} {description.name}"
self._attr_unique_id = (
f"{coordinator.location_key}-{description.key}".lower()
)
@@ -96,12 +374,7 @@ class AccuWeatherSensor(
else:
self._unit_system = API_IMPERIAL
self._attr_native_unit_of_measurement = description.unit_imperial
self._attr_device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, coordinator.location_key)},
manufacturer=MANUFACTURER,
name=NAME,
)
self._attr_device_info = coordinator.device_info
self.forecast_day = forecast_day
@property
@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "Ya est\u00e1 configurado. Solo es posible una \u00fanica configuraci\u00f3n."
},
"create_entry": {
"default": "Algunos sensores no est\u00e1n habilitados de forma predeterminada. Puede habilitarlos en el registro de la entidad despu\u00e9s de la configuraci\u00f3n de la integraci\u00f3n.\n El pron\u00f3stico del tiempo no est\u00e1 habilitado de forma predeterminada. Puedes habilitarlo en las opciones de integraci\u00f3n."
},
"error": {
"cannot_connect": "No se pudo conectar",
"invalid_api_key": "Clave API no v\u00e1lida",
@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea."
},
"create_entry": {
"default": "\u05d7\u05d9\u05d9\u05e9\u05e0\u05d9\u05dd \u05de\u05e1\u05d5\u05d9\u05de\u05d9\u05dd \u05d0\u05d9\u05e0\u05dd \u05de\u05d5\u05e4\u05e2\u05dc\u05d9\u05dd \u05db\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc. \u05d1\u05d9\u05db\u05d5\u05dc\u05ea\u05da \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05d5\u05ea\u05dd \u05d1\u05e8\u05d9\u05e9\u05d5\u05dd \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05dc\u05d0\u05d7\u05e8 \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1.\n \u05ea\u05d7\u05d6\u05d9\u05ea \u05de\u05d6\u05d2 \u05d4\u05d0\u05d5\u05d5\u05d9\u05e8 \u05d0\u05d9\u05e0\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc\u05ea \u05db\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc. \u05d1\u05d9\u05db\u05d5\u05dc\u05ea\u05da \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d6\u05d4 \u05d1\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1."
},
"error": {
"cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4",
"invalid_api_key": "\u05de\u05e4\u05ea\u05d7 API \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9",
@@ -1,10 +1,10 @@
{
"config": {
"abort": {
"single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5358\u4e00\u306e\u8a2d\u5b9a\u3057\u304b\u3067\u304d\u307e\u305b\u3093\u3002"
"single_instance_allowed": "\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a2d\u5b9a\u3067\u304d\u308b\u306e\u306f1\u3064\u3060\u3051\u3067\u3059\u3002"
},
"create_entry": {
"default": "\u4e00\u90e8\u306e\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u69cb\u6210\u5f8c\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30ec\u30b8\u30b9\u30c8\u30ea\u3067\u305d\u308c\u3089\u3092\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002\n\u5929\u6c17\u4e88\u5831\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002"
"default": "\u4e00\u90e8\u306e\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u7d71\u5408\u306e\u69cb\u6210\u5f8c\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30ec\u30b8\u30b9\u30c8\u30ea\u3067\u305d\u308c\u3089\u3092\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002\n\u5929\u6c17\u4e88\u5831\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002\u7d71\u5408\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6709\u52b9\u306b\u3067\u304d\u307e\u3059\u3002"
},
"error": {
"cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
@@ -34,7 +34,7 @@
},
"system_health": {
"info": {
"can_reach_server": "Dost\u0119p do serwera AccuWeather",
"can_reach_server": "Dost\u0119p do serwera",
"remaining_requests": "Pozosta\u0142o dozwolonych \u017c\u0105da\u0144"
}
}
@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
},
"create_entry": {
"default": "Alguns sensores n\u00e3o s\u00e3o ativados por defeito. Podem ser ativados no registo da entidade ap\u00f3s a configura\u00e7\u00e3o da integra\u00e7\u00e3o.\nA previs\u00e3o do tempo n\u00e3o est\u00e1 ativada por defeito. Pode ativ\u00e1-la nas op\u00e7\u00f5es de integra\u00e7\u00e3o."
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"invalid_api_key": "Chave de API inv\u00e1lida"
@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}
+40 -45
View File
@@ -6,26 +6,30 @@ from typing import Any, cast
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_FORECAST_NATIVE_TEMP,
ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_FORECAST_NATIVE_WIND_SPEED,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
Forecast,
WeatherEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_NAME,
LENGTH_INCHES,
LENGTH_KILOMETERS,
LENGTH_MILES,
LENGTH_MILLIMETERS,
PRESSURE_HPA,
PRESSURE_INHG,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util.dt import utc_from_timestamp
@@ -38,8 +42,6 @@ from .const import (
ATTRIBUTION,
CONDITION_CLASSES,
DOMAIN,
MANUFACTURER,
NAME,
)
PARALLEL_UPDATES = 1
@@ -49,11 +51,10 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Add a AccuWeather weather entity from a config_entry."""
name: str = entry.data[CONF_NAME]
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities([AccuWeatherEntity(name, coordinator)])
async_add_entities([AccuWeatherEntity(coordinator)])
class AccuWeatherEntity(
@@ -61,37 +62,31 @@ class AccuWeatherEntity(
):
"""Define an AccuWeather entity."""
def __init__(
self, name: str, coordinator: AccuWeatherDataUpdateCoordinator
) -> None:
_attr_has_entity_name = True
def __init__(self, coordinator: AccuWeatherDataUpdateCoordinator) -> None:
"""Initialize."""
super().__init__(coordinator)
self._unit_system = API_METRIC if coordinator.is_metric else API_IMPERIAL
wind_speed_unit = self.coordinator.data["Wind"]["Speed"][self._unit_system][
"Unit"
]
if wind_speed_unit == "mi/h":
self._attr_wind_speed_unit = SPEED_MILES_PER_HOUR
# Coordinator data is used also for sensors which don't have units automatically
# converted, hence the weather entity's native units follow the configured unit
# system
if coordinator.is_metric:
self._attr_native_precipitation_unit = LENGTH_MILLIMETERS
self._attr_native_pressure_unit = PRESSURE_HPA
self._attr_native_temperature_unit = TEMP_CELSIUS
self._attr_native_visibility_unit = LENGTH_KILOMETERS
self._attr_native_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
self._unit_system = API_METRIC
else:
self._attr_wind_speed_unit = wind_speed_unit
self._attr_name = name
self._unit_system = API_IMPERIAL
self._attr_native_precipitation_unit = LENGTH_INCHES
self._attr_native_pressure_unit = PRESSURE_INHG
self._attr_native_temperature_unit = TEMP_FAHRENHEIT
self._attr_native_visibility_unit = LENGTH_MILES
self._attr_native_wind_speed_unit = SPEED_MILES_PER_HOUR
self._attr_unique_id = coordinator.location_key
self._attr_temperature_unit = (
TEMP_CELSIUS if coordinator.is_metric else TEMP_FAHRENHEIT
)
self._attr_attribution = ATTRIBUTION
self._attr_device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, coordinator.location_key)},
manufacturer=MANUFACTURER,
name=NAME,
# You don't need to provide specific details for the URL,
# so passing in _ characters is fine if the location key
# is correct
configuration_url="http://accuweather.com/en/"
f"_/_/{coordinator.location_key}/"
f"weather-forecast/{coordinator.location_key}/",
)
self._attr_device_info = coordinator.device_info
@property
def condition(self) -> str | None:
@@ -106,14 +101,14 @@ class AccuWeatherEntity(
return None
@property
def temperature(self) -> float:
def native_temperature(self) -> float:
"""Return the temperature."""
return cast(
float, self.coordinator.data["Temperature"][self._unit_system]["Value"]
)
@property
def pressure(self) -> float:
def native_pressure(self) -> float:
"""Return the pressure."""
return cast(
float, self.coordinator.data["Pressure"][self._unit_system]["Value"]
@@ -125,7 +120,7 @@ class AccuWeatherEntity(
return cast(int, self.coordinator.data["RelativeHumidity"])
@property
def wind_speed(self) -> float:
def native_wind_speed(self) -> float:
"""Return the wind speed."""
return cast(
float, self.coordinator.data["Wind"]["Speed"][self._unit_system]["Value"]
@@ -137,7 +132,7 @@ class AccuWeatherEntity(
return cast(int, self.coordinator.data["Wind"]["Direction"]["Degrees"])
@property
def visibility(self) -> float:
def native_visibility(self) -> float:
"""Return the visibility."""
return cast(
float, self.coordinator.data["Visibility"][self._unit_system]["Value"]
@@ -162,9 +157,9 @@ class AccuWeatherEntity(
return [
{
ATTR_FORECAST_TIME: utc_from_timestamp(item["EpochDate"]).isoformat(),
ATTR_FORECAST_TEMP: item["TemperatureMax"]["Value"],
ATTR_FORECAST_TEMP_LOW: item["TemperatureMin"]["Value"],
ATTR_FORECAST_PRECIPITATION: self._calc_precipitation(item),
ATTR_FORECAST_NATIVE_TEMP: item["TemperatureMax"]["Value"],
ATTR_FORECAST_NATIVE_TEMP_LOW: item["TemperatureMin"]["Value"],
ATTR_FORECAST_NATIVE_PRECIPITATION: self._calc_precipitation(item),
ATTR_FORECAST_PRECIPITATION_PROBABILITY: round(
mean(
[
@@ -173,7 +168,7 @@ class AccuWeatherEntity(
]
)
),
ATTR_FORECAST_WIND_SPEED: item["WindDay"]["Speed"]["Value"],
ATTR_FORECAST_NATIVE_WIND_SPEED: item["WindDay"]["Speed"]["Value"],
ATTR_FORECAST_WIND_BEARING: item["WindDay"]["Direction"]["Degrees"],
ATTR_FORECAST_CONDITION: [
k for k, v in CONDITION_CLASSES.items() if item["IconDay"] in v
+1 -1
View File
@@ -19,7 +19,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
return False
hass.data.setdefault(DOMAIN, {})[config_entry.entry_id] = hub
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
return True
+13 -11
View File
@@ -1,6 +1,8 @@
"""Support for Acmeda Roller Blinds."""
from __future__ import annotations
from typing import Any
from homeassistant.components.cover import (
ATTR_POSITION,
CoverEntity,
@@ -45,7 +47,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
"""Representation of a Acmeda cover device."""
@property
def current_cover_position(self):
def current_cover_position(self) -> int | None:
"""Return the current position of the roller blind.
None is unknown, 0 is closed, 100 is fully open.
@@ -56,7 +58,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return position
@property
def current_cover_tilt_position(self):
def current_cover_tilt_position(self) -> int | None:
"""Return the current tilt of the roller blind.
None is unknown, 0 is closed, 100 is fully open.
@@ -67,7 +69,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return position
@property
def supported_features(self):
def supported_features(self) -> int:
"""Flag supported features."""
supported_features = 0
if self.current_cover_position is not None:
@@ -88,35 +90,35 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return supported_features
@property
def is_closed(self):
def is_closed(self) -> bool:
"""Return if the cover is closed."""
return self.roller.closed_percent == 100
async def async_close_cover(self, **kwargs):
async def async_close_cover(self, **kwargs: Any) -> None:
"""Close the roller."""
await self.roller.move_down()
async def async_open_cover(self, **kwargs):
async def async_open_cover(self, **kwargs: Any) -> None:
"""Open the roller."""
await self.roller.move_up()
async def async_stop_cover(self, **kwargs):
async def async_stop_cover(self, **kwargs: Any) -> None:
"""Stop the roller."""
await self.roller.move_stop()
async def async_set_cover_position(self, **kwargs):
async def async_set_cover_position(self, **kwargs: Any) -> None:
"""Move the roller shutter to a specific position."""
await self.roller.move_to(100 - kwargs[ATTR_POSITION])
async def async_close_cover_tilt(self, **kwargs):
async def async_close_cover_tilt(self, **kwargs: Any) -> None:
"""Close the roller."""
await self.roller.move_down()
async def async_open_cover_tilt(self, **kwargs):
async def async_open_cover_tilt(self, **kwargs: Any) -> None:
"""Open the roller."""
await self.roller.move_up()
async def async_stop_cover_tilt(self, **kwargs):
async def async_stop_cover_tilt(self, **kwargs: Any) -> None:
"""Stop the roller."""
await self.roller.move_stop()
+1 -1
View File
@@ -10,7 +10,7 @@ PLATFORMS = [Platform.CLIMATE]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Adax from a config entry."""
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -0,0 +1,17 @@
{
"config": {
"abort": {
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
},
"step": {
"cloud": {
"data": {
"password": "Palavra-passe"
}
}
}
}
}
+10 -104
View File
@@ -1,12 +1,10 @@
"""Support for AdGuard Home."""
from __future__ import annotations
import logging
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
import voluptuous as vol
from homeassistant.config_entries import SOURCE_HASSIO, ConfigEntry
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_HOST,
CONF_NAME,
@@ -22,13 +20,10 @@ from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo, Entity
from .const import (
CONF_FORCE,
DATA_ADGUARD_CLIENT,
DATA_ADGUARD_VERSION,
DOMAIN,
SERVICE_ADD_URL,
SERVICE_DISABLE_URL,
@@ -37,8 +32,6 @@ from .const import (
SERVICE_REMOVE_URL,
)
_LOGGER = logging.getLogger(__name__)
SERVICE_URL_SCHEMA = vol.Schema({vol.Required(CONF_URL): cv.url})
SERVICE_ADD_URL_SCHEMA = vol.Schema(
{vol.Required(CONF_NAME): cv.string, vol.Required(CONF_URL): cv.url}
@@ -70,7 +63,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except AdGuardHomeConnectionError as exception:
raise ConfigEntryNotReady from exception
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
async def add_url(call: ServiceCall) -> None:
"""Service call to add a new filter subscription to AdGuard Home."""
@@ -115,102 +108,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload AdGuard Home config entry."""
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
hass.services.async_remove(DOMAIN, SERVICE_ENABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
if not hass.data[DOMAIN]:
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
hass.services.async_remove(DOMAIN, SERVICE_ENABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
del hass.data[DOMAIN]
return unload_ok
class AdGuardHomeEntity(Entity):
"""Defines a base AdGuard Home entity."""
def __init__(
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
def name(self) -> str:
"""Return the name of the entity."""
return self._name
@property
def icon(self) -> str:
"""Return the mdi icon of the entity."""
return self._icon
@property
def entity_registry_enabled_default(self) -> bool:
"""Return if the entity should be enabled when first added to the entity registry."""
return self._enabled_default
@property
def available(self) -> bool:
"""Return True if entity is available."""
return self._available
async def async_update(self) -> None:
"""Update AdGuard Home entity."""
if not self.enabled:
return
try:
await self._adguard_update()
self._available = True
except AdGuardHomeError:
if self._available:
_LOGGER.debug(
"An error occurred while updating AdGuard Home sensor",
exc_info=True,
)
self._available = False
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
raise NotImplementedError()
class AdGuardHomeDeviceEntity(AdGuardHomeEntity):
"""Defines a AdGuard Home device entity."""
@property
def device_info(self) -> DeviceInfo:
"""Return device information about this AdGuard Home instance."""
if self._entry.source == SOURCE_HASSIO:
config_url = "homeassistant://hassio/ingress/a0d7b954_adguard"
else:
if self.adguard.tls:
config_url = f"https://{self.adguard.host}:{self.adguard.port}"
else:
config_url = f"http://{self.adguard.host}:{self.adguard.port}"
return DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={
(DOMAIN, self.adguard.host, self.adguard.port, self.adguard.base_path) # type: ignore[arg-type]
},
manufacturer="AdGuard Team",
name="AdGuard Home",
sw_version=self.hass.data[DOMAIN][self._entry.entry_id].get(
DATA_ADGUARD_VERSION
),
configuration_url=config_url,
)
@@ -1,7 +1,10 @@
"""Constants for the AdGuard Home integration."""
import logging
DOMAIN = "adguard"
LOGGER = logging.getLogger(__package__)
DATA_ADGUARD_CLIENT = "adguard_client"
DATA_ADGUARD_VERSION = "adguard_version"
@@ -0,0 +1,69 @@
"""AdGuard Home base entity."""
from __future__ import annotations
from adguardhome import AdGuardHome, AdGuardHomeError
from homeassistant.config_entries import SOURCE_HASSIO, ConfigEntry
from homeassistant.helpers.device_registry import DeviceEntryType
from homeassistant.helpers.entity import DeviceInfo, Entity
from .const import DATA_ADGUARD_VERSION, DOMAIN, LOGGER
class AdGuardHomeEntity(Entity):
"""Defines a base AdGuard Home entity."""
_attr_has_entity_name = True
_attr_available = True
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
) -> None:
"""Initialize the AdGuard Home entity."""
self._entry = entry
self.adguard = adguard
async def async_update(self) -> None:
"""Update AdGuard Home entity."""
if not self.enabled:
return
try:
await self._adguard_update()
self._attr_available = True
except AdGuardHomeError:
if self._attr_available:
LOGGER.debug(
"An error occurred while updating AdGuard Home sensor",
exc_info=True,
)
self._attr_available = False
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
raise NotImplementedError()
@property
def device_info(self) -> DeviceInfo:
"""Return device information about this AdGuard Home instance."""
if self._entry.source == SOURCE_HASSIO:
config_url = "homeassistant://hassio/ingress/a0d7b954_adguard"
elif self.adguard.tls:
config_url = f"https://{self.adguard.host}:{self.adguard.port}"
else:
config_url = f"http://{self.adguard.host}:{self.adguard.port}"
return DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={
(DOMAIN, self.adguard.host, self.adguard.port, self.adguard.base_path) # type: ignore[arg-type]
},
manufacturer="AdGuard Team",
name="AdGuard Home",
sw_version=self.hass.data[DOMAIN][self._entry.entry_id].get(
DATA_ADGUARD_VERSION
),
configuration_url=config_url,
)
+98 -196
View File
@@ -1,24 +1,102 @@
"""Support for AdGuard Home sensors."""
from __future__ import annotations
from collections.abc import Callable, Coroutine
from dataclasses import dataclass
from datetime import timedelta
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
from homeassistant.components.sensor import SensorEntity
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, TIME_MILLISECONDS
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
from .entity import AdGuardHomeEntity
SCAN_INTERVAL = timedelta(seconds=300)
PARALLEL_UPDATES = 4
@dataclass
class AdGuardHomeEntityDescriptionMixin:
"""Mixin for required keys."""
value_fn: Callable[[AdGuardHome], Coroutine[Any, Any, int | float]]
@dataclass
class AdGuardHomeEntityDescription(
SensorEntityDescription, AdGuardHomeEntityDescriptionMixin
):
"""Describes AdGuard Home sensor entity."""
SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
AdGuardHomeEntityDescription(
key="dns_queries",
name="DNS queries",
icon="mdi:magnify",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.dns_queries(),
),
AdGuardHomeEntityDescription(
key="blocked_filtering",
name="DNS queries blocked",
icon="mdi:magnify-close",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.blocked_filtering(),
),
AdGuardHomeEntityDescription(
key="blocked_percentage",
name="DNS queries blocked ratio",
icon="mdi:magnify-close",
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda adguard: adguard.stats.blocked_percentage(),
),
AdGuardHomeEntityDescription(
key="blocked_parental",
name="Parental control blocked",
icon="mdi:human-male-girl",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_parental(),
),
AdGuardHomeEntityDescription(
key="blocked_safebrowsing",
name="Safe browsing blocked",
icon="mdi:shield-half-full",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safebrowsing(),
),
AdGuardHomeEntityDescription(
key="enforced_safesearch",
name="Safe searches enforced",
icon="mdi:shield-search",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safesearch(),
),
AdGuardHomeEntityDescription(
key="average_speed",
name="Average processing speed",
icon="mdi:speedometer",
native_unit_of_measurement=TIME_MILLISECONDS,
value_fn=lambda adguard: adguard.stats.avg_processing_time(),
),
AdGuardHomeEntityDescription(
key="rules_count",
name="Rules count",
icon="mdi:counter",
native_unit_of_measurement="rules",
value_fn=lambda adguard: adguard.filtering.rules_count(allowlist=False),
entity_registry_enabled_default=False,
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
@@ -34,215 +112,39 @@ async def async_setup_entry(
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
sensors = [
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)
async_add_entities(
[AdGuardHomeSensor(adguard, entry, description) for description in SENSORS],
True,
)
class AdGuardHomeSensor(AdGuardHomeDeviceEntity, SensorEntity):
class AdGuardHomeSensor(AdGuardHomeEntity, SensorEntity):
"""Defines a AdGuard Home sensor."""
entity_description: AdGuardHomeEntityDescription
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
measurement: str,
unit_of_measurement: str,
enabled_default: bool = True,
description: AdGuardHomeEntityDescription,
) -> None:
"""Initialize AdGuard Home sensor."""
self._state: int | str | None = None
self._unit_of_measurement = unit_of_measurement
self.measurement = measurement
super().__init__(adguard, entry, name, icon, enabled_default)
@property
def unique_id(self) -> str:
"""Return the unique ID for this sensor."""
return "_".join(
super().__init__(adguard, entry)
self.entity_description = description
self._attr_unique_id = "_".join(
[
DOMAIN,
self.adguard.host,
str(self.adguard.port),
adguard.host,
str(adguard.port),
"sensor",
self.measurement,
description.key,
]
)
@property
def native_value(self) -> int | str | None:
"""Return the state of the sensor."""
return self._state
@property
def native_unit_of_measurement(self) -> str | None:
"""Return the unit this state is expressed in."""
return self._unit_of_measurement
class AdGuardHomeDNSQueriesSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home DNS Queries sensor."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard DNS Queries",
"mdi:magnify",
"dns_queries",
"queries",
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.stats.dns_queries()
class AdGuardHomeBlockedFilteringSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked by filtering sensor."""
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",
"queries",
enabled_default=False,
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.stats.blocked_filtering()
class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home blocked percentage sensor."""
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",
PERCENTAGE,
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
percentage = await self.adguard.stats.blocked_percentage()
self._state = f"{percentage:.2f}"
class AdGuardHomeReplacedParentalSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by parental control sensor."""
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",
"requests",
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.stats.replaced_parental()
class AdGuardHomeReplacedSafeBrowsingSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe browsing sensor."""
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",
"requests",
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.stats.replaced_safebrowsing()
class AdGuardHomeReplacedSafeSearchSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home replaced by safe search sensor."""
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",
"requests",
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.stats.replaced_safesearch()
class AdGuardHomeAverageProcessingTimeSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home average processing time sensor."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Average Processing Speed",
"mdi:speedometer",
"average_speed",
TIME_MILLISECONDS,
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
average = await self.adguard.stats.avg_processing_time()
self._state = f"{average:.2f}"
class AdGuardHomeRulesCountSensor(AdGuardHomeSensor):
"""Defines a AdGuard Home rules count sensor."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(
adguard,
entry,
"AdGuard Rules Count",
"mdi:counter",
"rules_count",
"rules",
enabled_default=False,
)
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.filtering.rules_count(allowlist=False)
value = await self.entity_description.value_fn(self.adguard)
self._attr_native_value = value
if isinstance(value, float):
self._attr_native_value = f"{value:.2f}"
+92 -182
View File
@@ -1,27 +1,94 @@
"""Support for AdGuard Home switches."""
from __future__ import annotations
from collections.abc import Callable, Coroutine
from dataclasses import dataclass
from datetime import timedelta
import logging
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
from homeassistant.components.switch import SwitchEntity
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdGuardHomeDeviceEntity
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
_LOGGER = logging.getLogger(__name__)
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN, LOGGER
from .entity import AdGuardHomeEntity
SCAN_INTERVAL = timedelta(seconds=10)
PARALLEL_UPDATES = 1
@dataclass
class AdGuardHomeSwitchEntityDescriptionMixin:
"""Mixin for required keys."""
is_on_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any, bool]]]
turn_on_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any, None]]]
turn_off_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any, None]]]
@dataclass
class AdGuardHomeSwitchEntityDescription(
SwitchEntityDescription, AdGuardHomeSwitchEntityDescriptionMixin
):
"""Describes AdGuard Home switch entity."""
SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="protection",
name="Protection",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.protection_enabled,
turn_on_fn=lambda adguard: adguard.enable_protection,
turn_off_fn=lambda adguard: adguard.disable_protection,
),
AdGuardHomeSwitchEntityDescription(
key="parental",
name="Parental control",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.parental.enabled,
turn_on_fn=lambda adguard: adguard.parental.enable,
turn_off_fn=lambda adguard: adguard.parental.disable,
),
AdGuardHomeSwitchEntityDescription(
key="safesearch",
name="Safe search",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safesearch.enabled,
turn_on_fn=lambda adguard: adguard.safesearch.enable,
turn_off_fn=lambda adguard: adguard.safesearch.disable,
),
AdGuardHomeSwitchEntityDescription(
key="safebrowsing",
name="Safe browsing",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safebrowsing.enabled,
turn_on_fn=lambda adguard: adguard.safebrowsing.enable,
turn_off_fn=lambda adguard: adguard.safebrowsing.disable,
),
AdGuardHomeSwitchEntityDescription(
key="filtering",
name="Filtering",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.filtering.enabled,
turn_on_fn=lambda adguard: adguard.filtering.enable,
turn_off_fn=lambda adguard: adguard.filtering.disable,
),
AdGuardHomeSwitchEntityDescription(
key="querylog",
name="Query log",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.querylog.enabled,
turn_on_fn=lambda adguard: adguard.querylog.enable,
turn_off_fn=lambda adguard: adguard.querylog.disable,
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
@@ -37,203 +104,46 @@ async def async_setup_entry(
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
switches = [
AdGuardHomeProtectionSwitch(adguard, entry),
AdGuardHomeFilteringSwitch(adguard, entry),
AdGuardHomeParentalSwitch(adguard, entry),
AdGuardHomeSafeBrowsingSwitch(adguard, entry),
AdGuardHomeSafeSearchSwitch(adguard, entry),
AdGuardHomeQueryLogSwitch(adguard, entry),
]
async_add_entities(switches, True)
async_add_entities(
[AdGuardHomeSwitch(adguard, entry, description) for description in SWITCHES],
True,
)
class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
class AdGuardHomeSwitch(AdGuardHomeEntity, SwitchEntity):
"""Defines a AdGuard Home switch."""
entity_description: AdGuardHomeSwitchEntityDescription
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
name: str,
icon: str,
key: str,
enabled_default: bool = True,
description: AdGuardHomeSwitchEntityDescription,
) -> None:
"""Initialize AdGuard Home switch."""
self._state = False
self._key = key
super().__init__(adguard, entry, name, icon, enabled_default)
@property
def unique_id(self) -> str:
"""Return the unique ID for this sensor."""
return "_".join(
[DOMAIN, self.adguard.host, str(self.adguard.port), "switch", self._key]
super().__init__(adguard, entry)
self.entity_description = description
self._attr_unique_id = "_".join(
[DOMAIN, adguard.host, str(adguard.port), "switch", description.key]
)
@property
def is_on(self) -> bool:
"""Return the state of the switch."""
return self._state
async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn off the switch."""
try:
await self._adguard_turn_off()
await self.entity_description.turn_off_fn(self.adguard)()
except AdGuardHomeError:
_LOGGER.error("An error occurred while turning off AdGuard Home switch")
self._available = False
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
raise NotImplementedError()
LOGGER.error("An error occurred while turning off AdGuard Home switch")
self._attr_available = False
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn on the switch."""
try:
await self._adguard_turn_on()
await self.entity_description.turn_on_fn(self.adguard)()
except AdGuardHomeError:
_LOGGER.error("An error occurred while turning on AdGuard Home switch")
self._available = False
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
raise NotImplementedError()
class AdGuardHomeProtectionSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home protection switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, entry, "AdGuard Protection", "mdi:shield-check", "protection"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.disable_protection()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.enable_protection()
LOGGER.error("An error occurred while turning on AdGuard Home switch")
self._attr_available = False
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.protection_enabled()
class AdGuardHomeParentalSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home parental control switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, entry, "AdGuard Parental Control", "mdi:shield-check", "parental"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.parental.disable()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.parental.enable()
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.parental.enabled()
class AdGuardHomeSafeSearchSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, entry, "AdGuard Safe Search", "mdi:shield-check", "safesearch"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.safesearch.disable()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.safesearch.enable()
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.safesearch.enabled()
class AdGuardHomeSafeBrowsingSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home safe search switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, entry, "AdGuard Safe Browsing", "mdi:shield-check", "safebrowsing"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.safebrowsing.disable()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.safebrowsing.enable()
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.safebrowsing.enabled()
class AdGuardHomeFilteringSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home filtering switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard, entry, "AdGuard Filtering", "mdi:shield-check", "filtering"
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.filtering.disable()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.filtering.enable()
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.filtering.enabled()
class AdGuardHomeQueryLogSwitch(AdGuardHomeSwitch):
"""Defines a AdGuard Home query log switch."""
def __init__(self, adguard: AdGuardHome, entry: ConfigEntry) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(
adguard,
entry,
"AdGuard Query Log",
"mdi:shield-check",
"querylog",
enabled_default=False,
)
async def _adguard_turn_off(self) -> None:
"""Turn off the switch."""
await self.adguard.querylog.disable()
async def _adguard_turn_on(self) -> None:
"""Turn on the switch."""
await self.adguard.querylog.enable()
async def _adguard_update(self) -> None:
"""Update AdGuard Home entity."""
self._state = await self.adguard.querylog.enabled()
self._attr_is_on = await self.entity_description.is_on_fn(self.adguard)()
@@ -2,7 +2,7 @@
"config": {
"abort": {
"already_configured": "A szolg\u00e1ltat\u00e1s m\u00e1r konfigur\u00e1lva van",
"existing_instance_updated": "Friss\u00edtette a megl\u00e9v\u0151 konfigur\u00e1ci\u00f3t."
"existing_instance_updated": "A megl\u00e9v\u0151 konfigur\u00e1ci\u00f3 friss\u00edtve."
},
"error": {
"cannot_connect": "Sikertelen csatlakoz\u00e1s"
@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
},
@@ -14,7 +17,7 @@
"port": "Porta",
"ssl": "Utiliza um certificado SSL",
"username": "Nome de Utilizador",
"verify_ssl": "Verificar certificado SSL"
"verify_ssl": "Verificar o certificado SSL"
}
}
}
+9 -7
View File
@@ -1,6 +1,8 @@
"""Support for ADS covers."""
from __future__ import annotations
from typing import Any
import pyads
import voluptuous as vol
@@ -122,7 +124,7 @@ class AdsCover(AdsEntity, CoverEntity):
if ads_var_pos_set is not None:
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
async def async_added_to_hass(self):
async def async_added_to_hass(self) -> None:
"""Register device notification."""
if self._ads_var is not None:
await self.async_initialize_device(self._ads_var, pyads.PLCTYPE_BOOL)
@@ -133,7 +135,7 @@ class AdsCover(AdsEntity, CoverEntity):
)
@property
def is_closed(self):
def is_closed(self) -> bool | None:
"""Return if the cover is closed."""
if self._ads_var is not None:
return self._state_dict[STATE_KEY_STATE]
@@ -142,16 +144,16 @@ class AdsCover(AdsEntity, CoverEntity):
return None
@property
def current_cover_position(self):
def current_cover_position(self) -> int:
"""Return current position of cover."""
return self._state_dict[STATE_KEY_POSITION]
def stop_cover(self, **kwargs):
def stop_cover(self, **kwargs: Any) -> None:
"""Fire the stop action."""
if self._ads_var_stop:
self._ads_hub.write_by_name(self._ads_var_stop, True, pyads.PLCTYPE_BOOL)
def set_cover_position(self, **kwargs):
def set_cover_position(self, **kwargs: Any) -> None:
"""Set cover position."""
position = kwargs[ATTR_POSITION]
if self._ads_var_pos_set is not None:
@@ -159,14 +161,14 @@ class AdsCover(AdsEntity, CoverEntity):
self._ads_var_pos_set, position, pyads.PLCTYPE_BYTE
)
def open_cover(self, **kwargs):
def open_cover(self, **kwargs: Any) -> None:
"""Move the cover up."""
if self._ads_var_open is not None:
self._ads_hub.write_by_name(self._ads_var_open, True, pyads.PLCTYPE_BOOL)
elif self._ads_var_pos_set is not None:
self.set_cover_position(position=100)
def close_cover(self, **kwargs):
def close_cover(self, **kwargs: Any) -> None:
"""Move the cover down."""
if self._ads_var_close is not None:
self._ads_hub.write_by_name(self._ads_var_close, True, pyads.PLCTYPE_BOOL)
@@ -65,7 +65,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"async_change": async_change,
}
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -11,7 +11,7 @@ from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from .entity import AdvantageAirEntity
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
PARALLEL_UPDATES = 0
@@ -21,13 +21,13 @@ async def async_setup_entry(
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir motion platform."""
"""Set up AdvantageAir Binary Sensor platform."""
instance = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
entities: list[BinarySensorEntity] = []
for ac_key, ac_device in instance["coordinator"].data["aircons"].items():
entities.append(AdvantageAirZoneFilter(instance, ac_key))
entities.append(AdvantageAirFilter(instance, ac_key))
for zone_key, zone in ac_device["zones"].items():
# Only add motion sensor when motion is enabled
if zone["motionConfig"] >= 2:
@@ -38,19 +38,17 @@ async def async_setup_entry(
async_add_entities(entities)
class AdvantageAirZoneFilter(AdvantageAirEntity, BinarySensorEntity):
"""Advantage Air Filter."""
class AdvantageAirFilter(AdvantageAirAcEntity, BinarySensorEntity):
"""Advantage Air Filter sensor."""
_attr_device_class = BinarySensorDeviceClass.PROBLEM
_attr_entity_category = EntityCategory.DIAGNOSTIC
_attr_name = "Filter"
def __init__(self, instance, ac_key):
"""Initialize an Advantage Air Filter."""
"""Initialize an Advantage Air Filter sensor."""
super().__init__(instance, ac_key)
self._attr_name = f'{self._ac["name"]} Filter'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-filter'
)
self._attr_unique_id += "-filter"
@property
def is_on(self):
@@ -58,18 +56,16 @@ class AdvantageAirZoneFilter(AdvantageAirEntity, BinarySensorEntity):
return self._ac["filterCleanStatus"]
class AdvantageAirZoneMotion(AdvantageAirEntity, BinarySensorEntity):
"""Advantage Air Zone Motion."""
class AdvantageAirZoneMotion(AdvantageAirZoneEntity, BinarySensorEntity):
"""Advantage Air Zone Motion sensor."""
_attr_device_class = BinarySensorDeviceClass.MOTION
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Zone Motion."""
"""Initialize an Advantage Air Zone Motion sensor."""
super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} Motion'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}-motion'
)
self._attr_name = f'{self._zone["name"]} motion'
self._attr_unique_id += "-motion"
@property
def is_on(self):
@@ -77,19 +73,17 @@ class AdvantageAirZoneMotion(AdvantageAirEntity, BinarySensorEntity):
return self._zone["motion"] == 20
class AdvantageAirZoneMyZone(AdvantageAirEntity, BinarySensorEntity):
"""Advantage Air Zone MyZone."""
class AdvantageAirZoneMyZone(AdvantageAirZoneEntity, BinarySensorEntity):
"""Advantage Air Zone MyZone sensor."""
_attr_entity_registry_enabled_default = False
_attr_entity_category = EntityCategory.DIAGNOSTIC
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Zone MyZone."""
"""Initialize an Advantage Air Zone MyZone sensor."""
super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} MyZone'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}-myzone'
)
self._attr_name = f'{self._zone["name"]} myZone'
self._attr_unique_id += "-myzone"
@property
def is_on(self):
@@ -15,7 +15,6 @@ from homeassistant.components.climate.const import (
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
@@ -25,7 +24,7 @@ from .const import (
ADVANTAGE_AIR_STATE_OPEN,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from .entity import AdvantageAirEntity
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
ADVANTAGE_AIR_HVAC_MODES = {
"heat": HVACMode.HEAT,
@@ -53,7 +52,6 @@ ADVANTAGE_AIR_FAN_MODES = {
HASS_FAN_MODES = {v: k for k, v in ADVANTAGE_AIR_FAN_MODES.items()}
FAN_SPEEDS = {FAN_LOW: 30, FAN_MEDIUM: 60, FAN_HIGH: 100}
ADVANTAGE_AIR_SERVICE_SET_MYZONE = "set_myzone"
ZONE_HVAC_MODES = [HVACMode.OFF, HVACMode.HEAT_COOL]
PARALLEL_UPDATES = 0
@@ -79,26 +77,14 @@ async def async_setup_entry(
entities.append(AdvantageAirZone(instance, ac_key, zone_key))
async_add_entities(entities)
platform = entity_platform.async_get_current_platform()
platform.async_register_entity_service(
ADVANTAGE_AIR_SERVICE_SET_MYZONE,
{},
"set_myzone",
)
class AdvantageAirClimateEntity(AdvantageAirEntity, ClimateEntity):
"""AdvantageAir Climate class."""
class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
"""AdvantageAir AC unit."""
_attr_temperature_unit = TEMP_CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
class AdvantageAirAC(AdvantageAirClimateEntity):
"""AdvantageAir AC unit."""
_attr_fan_modes = [FAN_AUTO, FAN_LOW, FAN_MEDIUM, FAN_HIGH]
_attr_hvac_modes = AC_HVAC_MODES
_attr_supported_features = (
@@ -108,8 +94,6 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
def __init__(self, instance, ac_key):
"""Initialize an AdvantageAir AC unit."""
super().__init__(instance, ac_key)
self._attr_name = self._ac["name"]
self._attr_unique_id = f'{self.coordinator.data["system"]["rid"]}-{ac_key}'
if self._ac.get("myAutoModeEnabled"):
self._attr_hvac_modes = AC_HVAC_MODES + [HVACMode.AUTO]
@@ -160,9 +144,13 @@ class AdvantageAirAC(AdvantageAirClimateEntity):
await self.async_change({self.ac_key: {"info": {"setTemp": temp}}})
class AdvantageAirZone(AdvantageAirClimateEntity):
class AdvantageAirZone(AdvantageAirZoneEntity, ClimateEntity):
"""AdvantageAir Zone control."""
_attr_temperature_unit = TEMP_CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
_attr_hvac_modes = ZONE_HVAC_MODES
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
@@ -216,12 +204,3 @@ 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'."""
_LOGGER.warning(
"The advantage_air.set_myzone service has been deprecated and will be removed in a future version, please use the select.select_option service on the MyZone entity"
)
await self.async_change(
{self.ac_key: {"info": {"myZone": self._zone["number"]}}}
)
+12 -13
View File
@@ -1,4 +1,6 @@
"""Cover platform for Advantage Air integration."""
from typing import Any
from homeassistant.components.cover import (
ATTR_POSITION,
CoverDeviceClass,
@@ -14,7 +16,7 @@ from .const import (
ADVANTAGE_AIR_STATE_OPEN,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from .entity import AdvantageAirEntity
from .entity import AdvantageAirZoneEntity
PARALLEL_UPDATES = 0
@@ -37,8 +39,8 @@ async def async_setup_entry(
async_add_entities(entities)
class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
"""Advantage Air Cover Class."""
class AdvantageAirZoneVent(AdvantageAirZoneEntity, CoverEntity):
"""Advantage Air Zone Vent."""
_attr_device_class = CoverDeviceClass.DAMPER
_attr_supported_features = (
@@ -48,26 +50,23 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
)
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Cover Class."""
"""Initialize an Advantage Air Zone Vent."""
super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]}'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}'
)
self._attr_name = self._zone["name"]
@property
def is_closed(self):
def is_closed(self) -> bool:
"""Return if vent is fully closed."""
return self._zone["state"] == ADVANTAGE_AIR_STATE_CLOSE
@property
def current_cover_position(self):
def current_cover_position(self) -> int:
"""Return vents current position as a percentage."""
if self._zone["state"] == ADVANTAGE_AIR_STATE_OPEN:
return self._zone["value"]
return 0
async def async_open_cover(self, **kwargs):
async def async_open_cover(self, **kwargs: Any) -> None:
"""Fully open zone vent."""
await self.async_change(
{
@@ -79,7 +78,7 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
}
)
async def async_close_cover(self, **kwargs):
async def async_close_cover(self, **kwargs: Any) -> None:
"""Fully close zone vent."""
await self.async_change(
{
@@ -89,7 +88,7 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
}
)
async def async_set_cover_position(self, **kwargs):
async def async_set_cover_position(self, **kwargs: Any) -> None:
"""Change vent position."""
position = round(kwargs[ATTR_POSITION] / 5) * 5
if position == 0:
@@ -9,24 +9,46 @@ from .const import DOMAIN
class AdvantageAirEntity(CoordinatorEntity):
"""Parent class for Advantage Air Entities."""
def __init__(self, instance, ac_key, zone_key=None):
"""Initialize common aspects of an Advantage Air sensor."""
_attr_has_entity_name = True
def __init__(self, instance):
"""Initialize common aspects of an Advantage Air entity."""
super().__init__(instance["coordinator"])
self._attr_unique_id = self.coordinator.data["system"]["rid"]
class AdvantageAirAcEntity(AdvantageAirEntity):
"""Parent class for Advantage Air AC Entities."""
def __init__(self, instance, ac_key):
"""Initialize common aspects of an Advantage Air ac entity."""
super().__init__(instance)
self.async_change = instance["async_change"]
self.ac_key = ac_key
self.zone_key = zone_key
self._attr_unique_id += f"-{ac_key}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, self.coordinator.data["system"]["rid"])},
via_device=(DOMAIN, self.coordinator.data["system"]["rid"]),
identifiers={(DOMAIN, self._attr_unique_id)},
manufacturer="Advantage Air",
model=self.coordinator.data["system"]["sysType"],
name=self.coordinator.data["system"]["name"],
sw_version=self.coordinator.data["system"]["myAppRev"],
name=self.coordinator.data["aircons"][self.ac_key]["info"]["name"],
)
@property
def _ac(self):
return self.coordinator.data["aircons"][self.ac_key]["info"]
class AdvantageAirZoneEntity(AdvantageAirAcEntity):
"""Parent class for Advantage Air Zone Entities."""
def __init__(self, instance, ac_key, zone_key):
"""Initialize common aspects of an Advantage Air zone entity."""
super().__init__(instance, ac_key)
self.zone_key = zone_key
self._attr_unique_id += f"-{zone_key}"
@property
def _zone(self):
return self.coordinator.data["aircons"][self.ac_key]["zones"][self.zone_key]
@@ -5,7 +5,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from .entity import AdvantageAirEntity
from .entity import AdvantageAirAcEntity
ADVANTAGE_AIR_INACTIVE = "Inactive"
@@ -15,7 +15,7 @@ async def async_setup_entry(
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir toggle platform."""
"""Set up AdvantageAir select platform."""
instance = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
@@ -25,21 +25,19 @@ async def async_setup_entry(
async_add_entities(entities)
class AdvantageAirMyZone(AdvantageAirEntity, SelectEntity):
class AdvantageAirMyZone(AdvantageAirAcEntity, SelectEntity):
"""Representation of Advantage Air MyZone control."""
_attr_icon = "mdi:home-thermometer"
_attr_options = [ADVANTAGE_AIR_INACTIVE]
_number_to_name = {0: ADVANTAGE_AIR_INACTIVE}
_name_to_number = {ADVANTAGE_AIR_INACTIVE: 0}
_attr_name = "MyZone"
def __init__(self, instance, ac_key):
"""Initialize an Advantage Air MyZone control."""
super().__init__(instance, ac_key)
self._attr_name = f'{self._ac["name"]} MyZone'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-myzone'
)
self._attr_unique_id += "-myzone"
for zone in instance["coordinator"].data["aircons"][ac_key]["zones"].values():
if zone["type"] > 0:
@@ -49,7 +47,7 @@ class AdvantageAirMyZone(AdvantageAirEntity, SelectEntity):
@property
def current_option(self):
"""Return the fresh air status."""
"""Return the current MyZone."""
return self._number_to_name[self._ac["myZone"]]
async def async_select_option(self, option):
@@ -16,7 +16,7 @@ from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import ADVANTAGE_AIR_STATE_OPEN, DOMAIN as ADVANTAGE_AIR_DOMAIN
from .entity import AdvantageAirEntity
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
ADVANTAGE_AIR_SET_COUNTDOWN_VALUE = "minutes"
ADVANTAGE_AIR_SET_COUNTDOWN_UNIT = "min"
@@ -56,7 +56,7 @@ async def async_setup_entry(
)
class AdvantageAirTimeTo(AdvantageAirEntity, SensorEntity):
class AdvantageAirTimeTo(AdvantageAirAcEntity, SensorEntity):
"""Representation of Advantage Air timer control."""
_attr_native_unit_of_measurement = ADVANTAGE_AIR_SET_COUNTDOWN_UNIT
@@ -67,10 +67,8 @@ class AdvantageAirTimeTo(AdvantageAirEntity, SensorEntity):
super().__init__(instance, ac_key)
self.action = action
self._time_key = f"countDownTo{action}"
self._attr_name = f'{self._ac["name"]} Time To {action}'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{self.ac_key}-timeto{action}'
)
self._attr_name = f"Time to {action}"
self._attr_unique_id += f"-timeto{action}"
@property
def native_value(self):
@@ -90,7 +88,7 @@ class AdvantageAirTimeTo(AdvantageAirEntity, SensorEntity):
await self.async_change({self.ac_key: {"info": {self._time_key: value}}})
class AdvantageAirZoneVent(AdvantageAirEntity, SensorEntity):
class AdvantageAirZoneVent(AdvantageAirZoneEntity, SensorEntity):
"""Representation of Advantage Air Zone Vent Sensor."""
_attr_native_unit_of_measurement = PERCENTAGE
@@ -100,10 +98,8 @@ class AdvantageAirZoneVent(AdvantageAirEntity, SensorEntity):
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Zone Vent Sensor."""
super().__init__(instance, ac_key, zone_key=zone_key)
self._attr_name = f'{self._zone["name"]} Vent'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}-vent'
)
self._attr_name = f'{self._zone["name"]} vent'
self._attr_unique_id += "-vent"
@property
def native_value(self):
@@ -120,7 +116,7 @@ class AdvantageAirZoneVent(AdvantageAirEntity, SensorEntity):
return "mdi:fan-off"
class AdvantageAirZoneSignal(AdvantageAirEntity, SensorEntity):
class AdvantageAirZoneSignal(AdvantageAirZoneEntity, SensorEntity):
"""Representation of Advantage Air Zone wireless signal sensor."""
_attr_native_unit_of_measurement = PERCENTAGE
@@ -130,10 +126,8 @@ class AdvantageAirZoneSignal(AdvantageAirEntity, SensorEntity):
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Zone wireless signal sensor."""
super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} Signal'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}-signal'
)
self._attr_name = f'{self._zone["name"]} signal'
self._attr_unique_id += "-signal"
@property
def native_value(self):
@@ -154,7 +148,7 @@ class AdvantageAirZoneSignal(AdvantageAirEntity, SensorEntity):
return "mdi:wifi-strength-outline"
class AdvantageAirZoneTemp(AdvantageAirEntity, SensorEntity):
class AdvantageAirZoneTemp(AdvantageAirZoneEntity, SensorEntity):
"""Representation of Advantage Air Zone temperature sensor."""
_attr_native_unit_of_measurement = TEMP_CELSIUS
@@ -166,10 +160,8 @@ class AdvantageAirZoneTemp(AdvantageAirEntity, SensorEntity):
def __init__(self, instance, ac_key, zone_key):
"""Initialize an Advantage Air Zone Temp Sensor."""
super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} Temperature'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-{zone_key}-temp'
)
self._attr_name = f'{self._zone["name"]} temperature'
self._attr_unique_id += "-temp"
@property
def native_value(self):
@@ -15,11 +15,3 @@ set_time_to:
min: 0
max: 1440
unit_of_measurement: minutes
set_myzone:
name: Set MyZone
description: Change which zone is set as the reference for temperature control (deprecated)
target:
entity:
integration: advantage_air
domain: climate
@@ -9,7 +9,7 @@ from .const import (
ADVANTAGE_AIR_STATE_ON,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from .entity import AdvantageAirEntity
from .entity import AdvantageAirAcEntity
async def async_setup_entry(
@@ -17,7 +17,7 @@ async def async_setup_entry(
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir toggle platform."""
"""Set up AdvantageAir switch platform."""
instance = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
@@ -28,18 +28,16 @@ async def async_setup_entry(
async_add_entities(entities)
class AdvantageAirFreshAir(AdvantageAirEntity, SwitchEntity):
class AdvantageAirFreshAir(AdvantageAirAcEntity, SwitchEntity):
"""Representation of Advantage Air fresh air control."""
_attr_icon = "mdi:air-filter"
_attr_name = "Fresh air"
def __init__(self, instance, ac_key):
"""Initialize an Advantage Air fresh air control."""
super().__init__(instance, ac_key)
self._attr_name = f'{self._ac["name"]} Fresh Air'
self._attr_unique_id = (
f'{self.coordinator.data["system"]["rid"]}-{ac_key}-freshair'
)
self._attr_unique_id += "-freshair"
@property
def is_on(self):
+1 -1
View File
@@ -40,7 +40,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
ENTRY_WEATHER_COORDINATOR: weather_coordinator,
}
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
entry.async_on_unload(entry.add_update_listener(async_update_options))
@@ -1,4 +1,6 @@
"""Config flow for AEMET OpenData."""
from __future__ import annotations
from aemet_opendata import AEMET
import voluptuous as vol
@@ -50,7 +52,9 @@ class AemetConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@callback
def async_get_options_flow(config_entry):
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> OptionsFlowHandler:
"""Get the options flow for this handler."""
return OptionsFlowHandler(config_entry)
+24 -24
View File
@@ -17,14 +17,6 @@ from homeassistant.components.weather import (
ATTR_CONDITION_RAINY,
ATTR_CONDITION_SNOWY,
ATTR_CONDITION_SUNNY,
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
)
from homeassistant.const import (
DEGREE,
@@ -45,8 +37,16 @@ ENTRY_NAME = "name"
ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
ATTR_API_CONDITION = "condition"
ATTR_API_FORECAST_CONDITION = "condition"
ATTR_API_FORECAST_DAILY = "forecast-daily"
ATTR_API_FORECAST_HOURLY = "forecast-hourly"
ATTR_API_FORECAST_PRECIPITATION = "precipitation"
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY = "precipitation_probability"
ATTR_API_FORECAST_TEMP = "temperature"
ATTR_API_FORECAST_TEMP_LOW = "templow"
ATTR_API_FORECAST_TIME = "datetime"
ATTR_API_FORECAST_WIND_BEARING = "wind_bearing"
ATTR_API_FORECAST_WIND_SPEED = "wind_speed"
ATTR_API_HUMIDITY = "humidity"
ATTR_API_PRESSURE = "pressure"
ATTR_API_RAIN = "rain"
@@ -158,14 +158,14 @@ CONDITIONS_MAP = {
}
FORECAST_MONITORED_CONDITIONS = [
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
]
MONITORED_CONDITIONS = [
ATTR_API_CONDITION,
@@ -202,43 +202,43 @@ FORECAST_MODE_ATTR_API = {
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_FORECAST_CONDITION,
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_FORECAST_PRECIPITATION,
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
native_unit_of_measurement=PRECIPITATION_MILLIMETERS_PER_HOUR,
),
SensorEntityDescription(
key=ATTR_FORECAST_PRECIPITATION_PROBABILITY,
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TEMP,
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TEMP_LOW,
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TIME,
key=ATTR_API_FORECAST_TIME,
name="Time",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_FORECAST_WIND_BEARING,
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_FORECAST_WIND_SPEED,
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
),
+8 -12
View File
@@ -10,7 +10,7 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
from .const import (
ATTR_FORECAST_TIME,
ATTR_API_FORECAST_TIME,
ATTRIBUTION,
DOMAIN,
ENTRY_NAME,
@@ -45,17 +45,13 @@ async def async_setup_entry(
entities.extend(
[
AemetForecastSensor(
name_prefix,
unique_id_prefix,
f"{domain_data[ENTRY_NAME]} {mode} Forecast",
f"{unique_id}-forecast-{mode}",
weather_coordinator,
mode,
description,
)
for mode in FORECAST_MODES
if (
(name_prefix := f"{domain_data[ENTRY_NAME]} {mode} Forecast")
and (unique_id_prefix := f"{unique_id}-forecast-{mode}")
)
for description in FORECAST_SENSOR_TYPES
if description.key in FORECAST_MONITORED_CONDITIONS
]
@@ -89,14 +85,14 @@ class AemetSensor(AbstractAemetSensor):
def __init__(
self,
name,
unique_id,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
):
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id}-{description.key}",
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
@@ -113,7 +109,7 @@ class AemetForecastSensor(AbstractAemetSensor):
def __init__(
self,
name,
unique_id,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
forecast_mode,
description: SensorEntityDescription,
@@ -121,7 +117,7 @@ class AemetForecastSensor(AbstractAemetSensor):
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id}-{description.key}",
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
@@ -139,6 +135,6 @@ class AemetForecastSensor(AbstractAemetSensor):
)
if forecasts:
forecast = forecasts[0].get(self.entity_description.key)
if self.entity_description.key == ATTR_FORECAST_TIME:
if self.entity_description.key == ATTR_API_FORECAST_TIME:
forecast = dt_util.parse_datetime(forecast)
return forecast
@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"error": {
"invalid_api_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447"
},
@@ -12,9 +12,9 @@
"api_key": "API\u30ad\u30fc",
"latitude": "\u7def\u5ea6",
"longitude": "\u7d4c\u5ea6",
"name": "\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u540d\u524d"
"name": "\u7d71\u5408\u306e\u540d\u524d"
},
"description": "AEMET OpenData\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://opendata.aemet.es/centrodedescargas/altaUsuario \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
"description": "AEMET OpenData\u7d71\u5408\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://opendata.aemet.es/centrodedescargas/altaUsuario \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
}
}
},
@@ -0,0 +1,7 @@
{
"config": {
"error": {
"invalid_api_key": "Chave de API inv\u00e1lida"
}
}
}
@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}
+60 -9
View File
@@ -1,13 +1,36 @@
"""Support for the AEMET OpenData service."""
from homeassistant.components.weather import WeatherEntity
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_FORECAST_NATIVE_TEMP,
ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_FORECAST_NATIVE_WIND_SPEED,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
WeatherEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PRESSURE_HPA, SPEED_KILOMETERS_PER_HOUR, TEMP_CELSIUS
from homeassistant.const import (
LENGTH_MILLIMETERS,
PRESSURE_HPA,
SPEED_KILOMETERS_PER_HOUR,
TEMP_CELSIUS,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_TEMPERATURE,
@@ -19,10 +42,32 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
FORECAST_MODE_ATTR_API,
FORECAST_MODE_DAILY,
FORECAST_MODE_HOURLY,
FORECAST_MODES,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
FORECAST_MAP = {
FORECAST_MODE_DAILY: {
ATTR_API_FORECAST_CONDITION: ATTR_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP_LOW: ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_API_FORECAST_TEMP: ATTR_FORECAST_NATIVE_TEMP,
ATTR_API_FORECAST_TIME: ATTR_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING: ATTR_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
},
FORECAST_MODE_HOURLY: {
ATTR_API_FORECAST_CONDITION: ATTR_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_PRECIPITATION: ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_API_FORECAST_TEMP: ATTR_FORECAST_NATIVE_TEMP,
ATTR_API_FORECAST_TIME: ATTR_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING: ATTR_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
},
}
async def async_setup_entry(
hass: HomeAssistant,
@@ -47,9 +92,10 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
"""Implementation of an AEMET OpenData sensor."""
_attr_attribution = ATTRIBUTION
_attr_temperature_unit = TEMP_CELSIUS
_attr_pressure_unit = PRESSURE_HPA
_attr_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
_attr_native_precipitation_unit = LENGTH_MILLIMETERS
_attr_native_pressure_unit = PRESSURE_HPA
_attr_native_temperature_unit = TEMP_CELSIUS
_attr_native_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
def __init__(
self,
@@ -75,7 +121,12 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
@property
def forecast(self):
"""Return the forecast array."""
return self.coordinator.data[FORECAST_MODE_ATTR_API[self._forecast_mode]]
forecasts = self.coordinator.data[FORECAST_MODE_ATTR_API[self._forecast_mode]]
forecast_map = FORECAST_MAP[self._forecast_mode]
return [
{ha_key: forecast[api_key] for api_key, ha_key in forecast_map.items()}
for forecast in forecasts
]
@property
def humidity(self):
@@ -83,12 +134,12 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
return self.coordinator.data[ATTR_API_HUMIDITY]
@property
def pressure(self):
def native_pressure(self):
"""Return the pressure."""
return self.coordinator.data[ATTR_API_PRESSURE]
@property
def temperature(self):
def native_temperature(self):
"""Return the temperature."""
return self.coordinator.data[ATTR_API_TEMPERATURE]
@@ -98,6 +149,6 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
return self.coordinator.data[ATTR_API_WIND_BEARING]
@property
def wind_speed(self):
def native_wind_speed(self):
"""Return the wind speed."""
return self.coordinator.data[ATTR_API_WIND_SPEED]
@@ -42,23 +42,21 @@ from aemet_opendata.helpers import (
)
import async_timeout
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
)
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.util import dt as dt_util
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_DAILY,
ATTR_API_FORECAST_HOURLY,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
@@ -402,15 +400,15 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
return None
return {
ATTR_FORECAST_CONDITION: condition,
ATTR_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
day
),
ATTR_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
ATTR_API_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_API_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_API_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
}
def _convert_forecast_hour(self, date, day, hour):
@@ -420,15 +418,15 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
forecast_dt = date.replace(hour=hour, minute=0, second=0)
return {
ATTR_FORECAST_CONDITION: condition,
ATTR_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
day, hour
),
ATTR_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
ATTR_API_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_API_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
}
def _calc_precipitation(self, day, hour):
@@ -48,7 +48,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
sw_version=agent_client.version,
)
hass.config_entries.async_setup_platforms(config_entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
return True
@@ -1,4 +1,6 @@
"""Support for Agent DVR Alarm Control Panels."""
from __future__ import annotations
from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntity,
AlarmControlPanelEntityFeature,
@@ -58,7 +60,7 @@ class AgentBaseStation(AlarmControlPanelEntity):
sw_version=client.version,
)
async def async_update(self):
async def async_update(self) -> None:
"""Update the state of the device."""
await self._client.update()
self._attr_available = self._client.is_available
@@ -76,24 +78,24 @@ class AgentBaseStation(AlarmControlPanelEntity):
else:
self._attr_state = STATE_ALARM_DISARMED
async def async_alarm_disarm(self, code=None):
async def async_alarm_disarm(self, code: str | None = None) -> None:
"""Send disarm command."""
await self._client.disarm()
self._attr_state = STATE_ALARM_DISARMED
async def async_alarm_arm_away(self, code=None):
async def async_alarm_arm_away(self, code: str | None = None) -> None:
"""Send arm away command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_AWAY_MODE_NAME)
self._attr_state = STATE_ALARM_ARMED_AWAY
async def async_alarm_arm_home(self, code=None):
async def async_alarm_arm_home(self, code: str | None = None) -> None:
"""Send arm home command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_HOME_MODE_NAME)
self._attr_state = STATE_ALARM_ARMED_HOME
async def async_alarm_arm_night(self, code=None):
async def async_alarm_arm_night(self, code: str | None = None) -> None:
"""Send arm night command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_NIGHT_MODE_NAME)
@@ -3,6 +3,9 @@
"abort": {
"already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"error": {
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435"
},
"step": {
"user": {
"data": {
+1 -1
View File
@@ -110,7 +110,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
# Remove air_quality entities from registry if they exist
ent_reg = er.async_get(hass)
-1
View File
@@ -25,7 +25,6 @@ SUFFIX_LIMIT: Final = "LIMIT"
ATTRIBUTION: Final = "Data provided by Airly"
CONF_USE_NEAREST: Final = "use_nearest"
DEFAULT_NAME: Final = "Airly"
DOMAIN: Final = "airly"
LABEL_ADVICE: Final = "advice"
MANUFACTURER: Final = "Airly sp. z o.o."
+2 -3
View File
@@ -45,7 +45,6 @@ from .const import (
ATTR_LIMIT,
ATTR_PERCENT,
ATTRIBUTION,
DEFAULT_NAME,
DOMAIN,
MANUFACTURER,
SUFFIX_LIMIT,
@@ -137,6 +136,7 @@ async def async_setup_entry(
class AirlySensor(CoordinatorEntity[AirlyDataUpdateCoordinator], SensorEntity):
"""Define an Airly sensor."""
_attr_has_entity_name = True
entity_description: AirlySensorEntityDescription
def __init__(
@@ -151,12 +151,11 @@ class AirlySensor(CoordinatorEntity[AirlyDataUpdateCoordinator], SensorEntity):
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, f"{coordinator.latitude}-{coordinator.longitude}")},
manufacturer=MANUFACTURER,
name=DEFAULT_NAME,
name=name,
configuration_url=URL.format(
latitude=coordinator.latitude, longitude=coordinator.longitude
),
)
self._attr_name = f"{name} {description.name}"
self._attr_unique_id = (
f"{coordinator.latitude}-{coordinator.longitude}-{description.key}".lower()
)
@@ -15,7 +15,7 @@
"longitude": "\u7d4c\u5ea6",
"name": "\u540d\u524d"
},
"description": "Airly\u306e\u7a7a\u6c17\u54c1\u8cea\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://developer.airly.eu/register \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
"description": "API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://developer.airly.eu/register \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
}
}
},
@@ -21,7 +21,7 @@
},
"system_health": {
"info": {
"can_reach_server": "Dost\u0119p do serwera Airly",
"can_reach_server": "Dost\u0119p do serwera",
"requests_per_day": "Dozwolone dzienne \u017c\u0105dania",
"requests_remaining": "Pozosta\u0142o dozwolonych \u017c\u0105da\u0144"
}
@@ -4,6 +4,7 @@
"already_configured": "Airly-integrationen f\u00f6r dessa koordinater \u00e4r redan konfigurerad."
},
"error": {
"invalid_api_key": "Ogiltig API-nyckel",
"wrong_location": "Inga Airly m\u00e4tstationer i detta omr\u00e5de."
},
"step": {
+1 -1
View File
@@ -65,7 +65,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -17,7 +17,7 @@
"longitude": "\u7d4c\u5ea6",
"radius": "\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u534a\u5f84(\u30de\u30a4\u30eb; \u30aa\u30d7\u30b7\u30e7\u30f3)"
},
"description": "AirNow\u306e\u7a7a\u6c17\u54c1\u8cea\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://docs.airnowapi.org/account/request/ \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
"description": "AirNow\u306e\u7a7a\u6c17\u54c1\u8cea\u7d71\u5408\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002 API\u30ad\u30fc\u3092\u751f\u6210\u3059\u308b\u306b\u306f\u3001https://docs.airnowapi.org/account/request/ \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044"
}
}
}
@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}
@@ -48,7 +48,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data[DOMAIN][entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -0,0 +1,7 @@
{
"config": {
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
}
}
}
@@ -31,7 +31,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"host": "Anfitri\u00e3o"
}
}
}
}
}
@@ -4,7 +4,7 @@ from __future__ import annotations
from collections.abc import Mapping
from datetime import timedelta
from math import ceil
from typing import Any, cast
from typing import Any
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.errors import (
@@ -12,6 +12,7 @@ from pyairvisual.errors import (
InvalidKeyError,
KeyExpiredError,
NodeProError,
UnauthorizedError,
)
from homeassistant.config_entries import ConfigEntry
@@ -210,9 +211,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
)
try:
data = await api_coro
return cast(dict[str, Any], data)
except (InvalidKeyError, KeyExpiredError) as ex:
return await api_coro
except (InvalidKeyError, KeyExpiredError, UnauthorizedError) as ex:
raise ConfigEntryAuthFailed from ex
except AirVisualError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
@@ -253,8 +253,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async with NodeSamba(
entry.data[CONF_IP_ADDRESS], entry.data[CONF_PASSWORD]
) as node:
data = await node.async_get_latest_measurements()
return cast(dict[str, Any], data)
return await node.async_get_latest_measurements()
except NodeProError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
@@ -274,7 +273,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
if CONF_API_KEY in entry.data:
async_sync_geo_coordinator_update_intervals(hass, entry.data[CONF_API_KEY])
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -2,13 +2,17 @@
from __future__ import annotations
import asyncio
from collections.abc import Mapping
from typing import Any
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.errors import (
AirVisualError,
InvalidKeyError,
KeyExpiredError,
NodeProError,
NotFoundError,
UnauthorizedError,
)
import voluptuous as vol
@@ -70,7 +74,7 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
def __init__(self) -> None:
"""Initialize the config flow."""
self._entry_data_for_reauth: dict[str, str] = {}
self._entry_data_for_reauth: Mapping[str, Any] = {}
self._geo_id: str | None = None
@property
@@ -117,7 +121,7 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
if user_input[CONF_API_KEY] not in valid_keys:
try:
await coro
except InvalidKeyError:
except (InvalidKeyError, KeyExpiredError, UnauthorizedError):
errors[CONF_API_KEY] = "invalid_api_key"
except NotFoundError:
errors[CONF_CITY] = "location_not_found"
@@ -219,10 +223,10 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
data={**user_input, CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_NODE_PRO},
)
async def async_step_reauth(self, data: dict[str, str]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle configuration by re-auth."""
self._entry_data_for_reauth = data
self._geo_id = async_get_geography_id(data)
self._entry_data_for_reauth = entry_data
self._geo_id = async_get_geography_id(entry_data)
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(
@@ -3,7 +3,7 @@
"name": "AirVisual",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airvisual",
"requirements": ["pyairvisual==5.0.9"],
"requirements": ["pyairvisual==2022.07.0"],
"codeowners": ["@bachya"],
"iot_class": "cloud_polling",
"loggers": ["pyairvisual", "pysmb"]
+6 -7
View File
@@ -62,20 +62,20 @@ SENSOR_KIND_VOC = "voc"
GEOGRAPHY_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_KIND_LEVEL,
name="Air Pollution Level",
name="Air pollution level",
device_class=DEVICE_CLASS_POLLUTANT_LEVEL,
icon="mdi:gauge",
),
SensorEntityDescription(
key=SENSOR_KIND_AQI,
name="Air Quality Index",
name="Air quality index",
device_class=SensorDeviceClass.AQI,
native_unit_of_measurement="AQI",
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=SENSOR_KIND_POLLUTANT,
name="Main Pollutant",
name="Main pollutant",
device_class=DEVICE_CLASS_POLLUTANT_LABEL,
icon="mdi:chemical-weapon",
),
@@ -85,7 +85,7 @@ GEOGRAPHY_SENSOR_LOCALES = {"cn": "Chinese", "us": "U.S."}
NODE_PRO_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_KIND_AQI,
name="Air Quality Index",
name="Air quality index",
device_class=SensorDeviceClass.AQI,
native_unit_of_measurement="AQI",
state_class=SensorStateClass.MEASUREMENT,
@@ -292,6 +292,8 @@ class AirVisualGeographySensor(AirVisualEntity, SensorEntity):
class AirVisualNodeProSensor(AirVisualEntity, SensorEntity):
"""Define an AirVisual sensor related to a Node/Pro unit."""
_attr_has_entity_name = True
def __init__(
self,
coordinator: DataUpdateCoordinator,
@@ -301,9 +303,6 @@ class AirVisualNodeProSensor(AirVisualEntity, SensorEntity):
"""Initialize."""
super().__init__(coordinator, entry, description)
self._attr_name = (
f"{coordinator.data['settings']['node_name']} Node/Pro: {description.name}"
)
self._attr_unique_id = f"{coordinator.data['serial_number']}_{description.key}"
@property
@@ -11,7 +11,8 @@
"step": {
"geography_by_coords": {
"data": {
"api_key": "API \u043a\u043b\u044e\u0447"
"api_key": "API \u043a\u043b\u044e\u0447",
"longitude": "\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u0434\u044a\u043b\u0436\u0438\u043d\u0430"
}
},
"geography_by_name": {
@@ -10,6 +10,11 @@
"invalid_api_key": "Chave de API inv\u00e1lida"
},
"step": {
"geography_by_coords": {
"data": {
"latitude": "Latitude"
}
},
"node_pro": {
"data": {
"ip_address": "Servidor",
@@ -18,7 +23,7 @@
},
"reauth_confirm": {
"data": {
"api_key": ""
"api_key": "Chave da API"
}
}
}
@@ -1,5 +1,8 @@
{
"state": {
"airvisual__pollutant_label": {
"p1": "PM10"
},
"airvisual__pollutant_level": {
"good": "\u05d8\u05d5\u05d1",
"unhealthy": "\u05dc\u05d0 \u05d1\u05e8\u05d9\u05d0",
@@ -0,0 +1,13 @@
{
"state": {
"airvisual__pollutant_label": {
"co": "Mon\u00f3xido de carbono",
"n2": "Di\u00f3xido de nitrog\u00e9nio",
"o3": "Ozono",
"p1": "PM10"
},
"airvisual__pollutant_level": {
"moderate": "Moderado"
}
}
}
@@ -0,0 +1,7 @@
{
"state": {
"airvisual__pollutant_label": {
"co": "Kolmonoxid"
}
}
}
@@ -5,6 +5,11 @@
"invalid_api_key": "Ogiltig API-nyckel"
},
"step": {
"geography_by_name": {
"data": {
"api_key": "API-nyckel"
}
},
"node_pro": {
"data": {
"ip_address": "Enhets IP-adress / v\u00e4rdnamn",
+1 -1
View File
@@ -79,7 +79,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
@@ -3,7 +3,7 @@
"name": "Airzone",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airzone",
"requirements": ["aioairzone==0.4.4"],
"requirements": ["aioairzone==0.4.6"],
"codeowners": ["@Noltari"],
"iot_class": "local_polling",
"loggers": ["aioairzone"]

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