Compare commits

..

1263 Commits

Author SHA1 Message Date
Paulus Schoutsen 398c7be850 Merge pull request #69935 from home-assistant/rc 2022-04-12 16:19:07 -07:00
Paulus Schoutsen 25fc64a9e0 Guard against non http schemes (#69938) 2022-04-12 15:27:38 -07:00
Paulus Schoutsen a543160070 Not all music are URLs (#69936) 2022-04-12 15:27:37 -07:00
rappenze 51bfe53444 Fix fibaro light state for rgb lights and HC3 (#69884) 2022-04-12 15:27:36 -07:00
Paulus Schoutsen cc6afdba3c Bumped version to 2022.4.3 2022-04-12 14:14:13 -07:00
puddly 8a8ee3c732 Downgrade ZHA dependency zigpy-deconz from 0.15.0 to 0.14.0 (#69927) 2022-04-12 14:14:09 -07:00
Erik Montnemery 27721d5b84 Fix adjusting statistics in ft³ (#69913)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-04-12 14:14:08 -07:00
Erik Montnemery fee80a9d4a Fix adjusting 5-minute statistics (#69921) 2022-04-12 14:13:53 -07:00
Franck Nijhof e49da79d1b Fix climate HVAC device condition (#69908) 2022-04-12 14:13:18 -07:00
epenet ec541ca7ed Bump renault-api to 0.1.11 (#69900) 2022-04-12 14:13:17 -07:00
epenet f5bb9e6047 Fix unique id in SamsungTV config flow (#69899)
* Fix unique id in SamsungTV config flow

* coverage

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-04-12 14:13:17 -07:00
Joakim Sørensen 242bd921df Handle add-on issues (#69897) 2022-04-12 14:13:16 -07:00
puddly ba16156a79 Bump zigpy to 0.44.2 and and zha-quirks to 0.0.72 (#69879) 2022-04-12 14:13:15 -07:00
starkillerOG 84d8a7857d Motion blinds fix set absolute position service (#69873) 2022-04-12 14:13:14 -07:00
Erik Montnemery 9607dfe57c Use quickplay when casting splash for mediaplayer.turn_on (#69866) 2022-04-12 14:13:14 -07:00
Allen Porter aeb8dc2c07 Fix google calendar timestamp out of range (#69863) 2022-04-12 14:13:13 -07:00
Mick Vleeshouwer 71fb2d09b7 Fix #69694 (#69850) 2022-04-12 14:13:12 -07:00
Guido Schmitz fd8fb59f7a Bump devolo-home-control-api to 0.18.1 (#69840) 2022-04-12 14:13:11 -07:00
David F. Mulcahey 49bf1d6bff Add diagnostics support for ZHA (#69756) 2022-04-12 14:13:10 -07:00
Raj Laud 8bd07bcff2 Handle Squeezebox media ids that are not URLs (#69696) 2022-04-12 14:13:10 -07:00
J. Nick Koston 85bc863830 Fix profiler object growth logging test (#69211) 2022-04-12 14:13:09 -07:00
Marvin Wichmann 094c185dee Update xknx to 0.20.2 (RC) (#69859) 2022-04-11 19:49:18 +02:00
Franck Nijhof a1fddc3c4d Merge pull request #69835 from home-assistant/rc 2022-04-11 11:02:51 +02:00
Dave T f6aead6773 Don't test config on yaml import for generic camera (#69714) 2022-04-10 23:15:04 -07:00
Paulus Schoutsen 2fad42ce06 Bumped version to 2022.4.2 2022-04-10 22:59:28 -07:00
J. Nick Koston 3e92659260 Downgrade av to 8.1.0 to fix memory leak (#69833) 2022-04-10 22:59:22 -07:00
jjlawren 02eec73644 Retry on more Plex connection failures during startup (#69822) 2022-04-10 22:59:21 -07:00
jjlawren 8e3e6efb21 Speed up Plex playback for multiple videos (#69821) 2022-04-10 22:59:20 -07:00
Raman Gupta 5d4c1d9fe4 Reduce API limit for tomorrow.io (#69818) 2022-04-10 22:59:20 -07:00
rikroe 2871ac4f8f Fix converting (value, unit) tuples if value is None (#69802)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-04-10 22:59:19 -07:00
Michael Davie 506f8c1d94 Bump slixmpp to 1.8.2 (#69794) 2022-04-10 22:59:18 -07:00
Allen Porter 5c4df657b2 Bump rtsp-to-webrtc to 0.5.1 (#69776) 2022-04-10 22:59:17 -07:00
Allen Porter 16a1a93332 Handle expired credentials in reauth in google calendar initialization (#69772)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-10 22:59:16 -07:00
Maximilian 7c06514bb4 Upgrade pynina to 0.1.8 (#69771) 2022-04-10 22:59:15 -07:00
Christopher Bailey 0ebd9e093d Fix unifiprotect for 2.0.0-beta2 of UniFi Protect (#69762) 2022-04-10 22:59:15 -07:00
Mike Fugate d9253fd310 Fix SleepIQ firmness number step and min values (#69757)
* fix sleepiq firmness number step and min values

* add asserts for min/max/step attributes
2022-04-10 22:59:14 -07:00
Malte Franken 0d7cbb8266 Bump aio_georss_gdacs to 0.7 (#69743) 2022-04-10 22:59:13 -07:00
J. Nick Koston 2ca8a0ef4a Increase tplink effects random seed allowed range to 1-600 (#69725)
* Increase tplink effects random seed allowed range to 1-600

Reported https://community.home-assistant.io/t/tp-link-integration-support-for-kl430-led-light-strip/190635/62?u=bdraco

* cover
2022-04-10 22:59:13 -07:00
Dave T 2c48f28f13 Support webp still image format in generic camera (#69718) 2022-04-10 22:59:12 -07:00
Allen Porter 2298a1fa70 Refresh google calendar tokens with invalid expiration times (#69679)
* Refresh google calendar tokens with invalid expiration times

* Update tests/components/google/conftest.py

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

* Remove unnecessary async methods in functions being touched already

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-10 22:59:11 -07:00
Shay Levy 87ba8a56ee Fix Shelly gen2 cover unavailable when not calibrated (#69671) 2022-04-10 22:59:10 -07:00
Francois Chagnon 39e4d3e63b Add None guard for zwave_js humidifier entity (#69667)
* Add None guard for humidifier entity is_on

* Add guards in more places

* Update homeassistant/components/zwave_js/humidifier.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-10 22:59:10 -07:00
epenet 269405aee0 Suppress Upnp parsing errors in SamsungTV (#69664) 2022-04-10 22:59:09 -07:00
KNXBroker b1eda25ca3 Fix soundtouch service calls (#69655) 2022-04-10 22:59:08 -07:00
epenet 39e9270b79 Fix upnp subscription in SamsungTV (#69652)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-04-10 22:59:07 -07:00
starkillerOG 5a408d4083 Fix Netgear switch state update (#69597) 2022-04-10 22:59:07 -07:00
azrdev 509d6ffcb2 Update python-mpd2 to 3.0.5 (#69304) 2022-04-10 22:59:06 -07:00
Paulus Schoutsen 919f4dd719 Merge pull request #69509 from home-assistant/rc 2022-04-07 23:10:23 -07:00
Allen Porter d9cbbd3b05 Fix bugs calendar oauth token date handling (#69641) 2022-04-07 21:53:56 -07:00
Matt Zimmerman 7e317bed3e [powerwall] Skip backup reserve sensor if data is unavailable (#69637) 2022-04-07 20:34:25 -07:00
David F. Mulcahey 8017cb274e Fix Samjin Multi acceleration in ZHA (#69636) 2022-04-07 20:28:15 -07:00
David F. Mulcahey 4d4eb5c850 Bump ZHA quirks to 0.0.71 (#69633) 2022-04-07 17:16:51 -07:00
puddly 1866e58ac5 Move new zha_event command parameters into a params key to ensure backwards compatibility (#69631) 2022-04-07 15:33:50 -07:00
north3221 b50a78d1d9 Fix tado default overlay for when set pre new overlay feature (#69584) 2022-04-07 15:23:25 -07:00
puddly 88a081be24 Fix ZHA group creation (#69629) 2022-04-07 15:05:11 -07:00
J. Nick Koston 3dd0ddb73e Mark backgrounds optional for tplink random effects (#69622) 2022-04-07 15:05:10 -07:00
Álvaro Fernández Rojas 9063428358 Update aioairzone to v0.3.3 (#69615) 2022-04-07 15:05:09 -07:00
Álvaro Fernández Rojas ee06b2a1b5 Update aioairzone to v0.3.1 (#68975) 2022-04-07 15:05:08 -07:00
Diogo Gomes 62d67a4287 Fix utility_meter reset service (#69612) 2022-04-07 15:02:49 -07:00
Jason Hunter 0b2f0a9f7c Log which device has the time discrepancy (#69595) 2022-04-07 15:02:49 -07:00
Dave T 7803845af1 Generic fix stream thumbnail (#69378) 2022-04-07 15:02:48 -07:00
J. Nick Koston 2dd3dc2d2d Run energy db calls in the db executor (#69544)
Fixes #69537
2022-04-07 15:26:15 +02:00
J. Nick Koston ceb8d86a7e Fix registered entities without a category not being exclude-able in the HomeKit UI (#69543) 2022-04-07 15:26:12 +02:00
Joakim Sørensen e726ef662c Fix adding OS entities for supervised installations (#69539) 2022-04-07 15:26:08 +02:00
Allen Porter 8c9534d2ba Gracefully handle empty summary in google calendar (#69520)
Gracefully handle empty summary in google calendar matching the old behavior
before some code cleanup.
2022-04-07 15:26:04 +02:00
Paulus Schoutsen 5cadea91bb Bumped version to 2022.4.1 2022-04-06 22:36:39 -07:00
J. Nick Koston f9d447e4cd Fix reloading the sun integration (#69495) 2022-04-06 22:35:55 -07:00
Shay Levy 23bb38c5cf Fix remote_rpi_gpio missing requirement (#69488) 2022-04-06 22:35:55 -07:00
Joakim Sørensen 4c16563675 Bump pyhaversion from 22.04.0 to 22.4.1 (#69486) 2022-04-06 22:35:54 -07:00
J. Nick Koston 9351fcf369 Fix reload race in unifiprotect (#69485)
- The integration already has a reload listener installed
  once it is setup. We should not reload from the config
  flow since they compete
2022-04-06 22:35:53 -07:00
Michael 2d74beaa67 Ignore IPv6 link local address on ssdp discovery in Fritz!Smarthome (#69455) 2022-04-06 22:35:52 -07:00
J. Nick Koston 87ab96f9c1 Fix elkm1 connection when panel drops VN request (#69454) 2022-04-06 22:35:52 -07:00
Paulus Schoutsen 0eed329bc8 Fix telegram broadcast (#69452) 2022-04-06 22:35:51 -07:00
Dave T ea5e894ac7 Continue on template error during yaml import for generic (#69440)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-04-06 22:35:50 -07:00
Raman Gupta 91d2fafe1d Add comments to zwave_js node metadata WS API (#67210)
* Add comments to zwave_js node metadata WS API

* Add test dat
2022-04-06 22:35:50 -07:00
Franck Nijhof 7dd19066e8 Merge pull request #69413 from home-assistant/rc 2022-04-06 15:14:55 +02:00
Franck Nijhof be3c1055dd Bumped version to 2022.4.0 2022-04-06 14:01:53 +02:00
René Klomp 5a24dbbbf2 Update pysma to 0.6.11 (#69397) 2022-04-06 14:00:49 +02:00
Erik Montnemery 8174b831cf Restore attributes of template binary sensor (#69350) 2022-04-06 14:00:46 +02:00
Raman Gupta 8c794ecf93 Fix regression in zwave_js (#69312)
* Handle unique ID update during discovery step

* Use callback to convert unique IDs to strings

* Adjust test to make sure logic works

* Fix other tests

* Move comment

* Move migration to async_setup

* Remove async_migrate_entry since we take care of it during setup

* Remove unused test
2022-04-06 14:00:42 +02:00
hesselonline 072cd29b90 Fix Wallbox charger status (#68708)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-06 14:00:31 +02:00
Paulus Schoutsen e3b20cf43f Bumped version to 2022.4.0b6 2022-04-05 16:40:33 -07:00
Zack Barett 2296d0fbee 20220405.0 (#69377) 2022-04-05 16:40:27 -07:00
J. Nick Koston 1e6f8fc48a Abort samsungtv discovery of legacy devices when unique id not available (#69376) 2022-04-05 16:40:26 -07:00
Franck Nijhof 4038575806 Disable Spotify Media Player entity by default (#69372) 2022-04-05 16:40:25 -07:00
Johan Nenzén 531aa87170 Bump pyplaato to 0.0.16 (#69361) 2022-04-05 16:40:24 -07:00
Marvin Wichmann 1896e39f60 Update XKNX to version 0.20.1 (#69353) 2022-04-05 16:40:23 -07:00
starkillerOG a42327ffce bump pynetgear to 0.9.4 (#69346)
* Bump home-assistant/wheels from 2022.01.0 to 2022.01.1

Bumps [home-assistant/wheels](https://github.com/home-assistant/wheels) from 2022.01.0 to 2022.01.1.
- [Release notes](https://github.com/home-assistant/wheels/releases)
- [Commits](https://github.com/home-assistant/wheels/compare/2022.01.0...2022.01.1)

---
updated-dependencies:
- dependency-name: home-assistant/wheels
  dependency-type: direct:production
...

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

* Bump home-assistant/wheels from 2022.01.1 to 2022.01.2

Bumps [home-assistant/wheels](https://github.com/home-assistant/wheels) from 2022.01.1 to 2022.01.2.
- [Release notes](https://github.com/home-assistant/wheels/releases)
- [Commits](https://github.com/home-assistant/wheels/compare/2022.01.1...2022.01.2)

---
updated-dependencies:
- dependency-name: home-assistant/wheels
  dependency-type: direct:production
...

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

* Bump home-assistant/builder from 2021.12.0 to 2022.01.0

Bumps [home-assistant/builder](https://github.com/home-assistant/builder) from 2021.12.0 to 2022.01.0.
- [Release notes](https://github.com/home-assistant/builder/releases)
- [Commits](https://github.com/home-assistant/builder/compare/2021.12.0...2022.01.0)

---
updated-dependencies:
- dependency-name: home-assistant/builder
  dependency-type: direct:production
...

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

* bump pynetgear to 0.9.4

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 16:40:22 -07:00
shbatm def04f1ae8 Bump PyISY to 3.0.6 to fix group statuses (#69345) 2022-04-05 16:40:21 -07:00
J. Nick Koston a39a6fce2a Fix roomba doing I/O in the event loop (#69339) 2022-04-05 16:40:21 -07:00
J. Nick Koston 7b36434101 Try exact match first for update state (#69335)
- Exact matches are much cheaper than creating an AwesomeVersion
  and calling the __gt__ method, and since most of the time the
  result is expected to be off, we want to optimize for this case
2022-04-05 16:40:20 -07:00
Philip Allgaier a3ac495e03 Prevent issues with config update of "Timer" integration (unknown "restore" key) (#69332) 2022-04-05 16:40:19 -07:00
Joakim Sørensen 186d8c9d50 Bump pyhaversion from 22.02.0 to 22.04.0 (#69329) 2022-04-05 16:40:19 -07:00
Martin Hjelmare e94fad469f Use recorder executor in demo (#69327) 2022-04-05 16:40:18 -07:00
J. Nick Koston 90d5bd12fb Ensure state is restored when turning on tplink lights without a color mode (#69308) 2022-04-05 16:40:17 -07:00
MoellerDi 685af1dd5c Fix "Camera not found" error in microsoft_face integration (#69295) 2022-04-05 16:40:17 -07:00
Erik Montnemery 44fefa42a8 Improve integration translation strings (#69246)
* Improve integration translation strings

* Update
2022-04-05 16:40:16 -07:00
Paulus Schoutsen 681242f102 Bumped version to 2022.4.0b5 2022-04-04 23:57:57 -07:00
Daniel Hjelseth Høyer df2a31a70b Update Tibber lib (#69300) 2022-04-04 23:57:46 -07:00
starkillerOG dc7d140c29 bump pynetgear to 0.9.3 (#69292) 2022-04-04 23:57:46 -07:00
Erik Montnemery 96ac47f36e Correct unit_of_measurement for trigger-based template sensor (#69291) 2022-04-04 23:57:45 -07:00
Joakim Sørensen b66770d349 Make hassio coordinator refresh data (#69272) 2022-04-04 23:57:44 -07:00
Erik Montnemery eab7876330 Improve utility_meter translation strings (#69252) 2022-04-04 23:57:43 -07:00
Erik Montnemery 45843297f9 Improve tod translation strings (#69251) 2022-04-04 23:57:43 -07:00
Erik Montnemery 4313be1ca2 Improve threshold translation strings (#69250) 2022-04-04 23:57:42 -07:00
Erik Montnemery 8191172f07 Improve switch_as_x translation strings (#69249) 2022-04-04 23:57:41 -07:00
Erik Montnemery 408f87c7e6 Improve min_max translation strings (#69248)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-04-04 23:57:41 -07:00
Erik Montnemery 37c0200f83 Improve derivative translation strings (#69245) 2022-04-04 23:57:40 -07:00
Raman Gupta 66cc2c7846 Fix tomorrowio sensor units and conversions (#69166)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-04-04 23:57:39 -07:00
Radu Cotescu 40b9f2f578 Input binary sensors are not generated for Shelly 1 Pro (#69046)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-04-04 23:57:39 -07:00
Toke Høiland-Jørgensen 2efa9f00d5 Fix network starting with no configured IPv4 addresses (#69030)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-04-04 23:57:38 -07:00
Franck Nijhof e6dcaaadd8 Bumped version to 2022.4.0b4 2022-04-04 11:14:39 +02:00
Erik Montnemery 73cd4a3366 Unsubscribe from listeners when removing threshold binary sensor (#69236) 2022-04-04 11:13:53 +02:00
Erik Montnemery 9ec9dc047b Unsubscribe from listeners when removing integration sensor (#69235) 2022-04-04 11:13:50 +02:00
Erik Montnemery a3ad44f7b6 Unsubscribe from listeners when removing derivative sensor (#69234) 2022-04-04 11:13:46 +02:00
Erik Montnemery da3f9fdf7d Drop unsupported SI-prefix peta from integration sensor (#69229) 2022-04-04 11:13:43 +02:00
Simone Chemelli eeeff761e9 Avoid fritz API calls during shutdown (#69225) 2022-04-04 11:13:40 +02:00
J. Nick Koston 3cd9c7d19d Only fire device_registry_updated for suggested_area if the suggestion results in an area change (#69215) 2022-04-04 11:13:36 +02:00
Franck Nijhof 62b44e6903 Exclude more media player attributes from recorder (#69209) 2022-04-04 11:13:33 +02:00
Daniel Hjelseth Høyer 9c6a69775a Tibber, Use a dedicated executor pool for database operations (#69208) 2022-04-04 11:13:30 +02:00
Franck Nijhof 8ce1b104eb Exclude weather forecast attribute from recorder (#69205) 2022-04-04 11:13:26 +02:00
Franck Nijhof 2916d35626 Exclude update entity picture attribute from recorder (#69201) 2022-04-04 11:13:23 +02:00
Franck Nijhof 814f92a75c Set brand icon as entity picture on update entities (#69200)
Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2022-04-04 11:13:19 +02:00
J. Nick Koston 1ae45fa7ad Exclude static vacuum attributes from being recorded in the database (#69199) 2022-04-04 11:13:16 +02:00
J. Nick Koston e18d61224d Exclude static siren attributes from being recorded in the database (#69196) 2022-04-04 11:13:11 +02:00
J. Nick Koston 7cfaf46287 Exclude static select attributes from being recorded in the database (#69195) 2022-04-04 11:13:08 +02:00
J. Nick Koston cebf53c340 Exclude static number attributes from being recorded in the database (#69194) 2022-04-04 11:13:03 +02:00
J. Nick Koston 8fa8716387 Exclude static humidifier attributes from being recorded in the database (#69193) 2022-04-04 11:12:59 +02:00
J. Nick Koston 5a96b0ffbc Exclude static fan attributes from being recorded in the database (#69192) 2022-04-04 11:12:56 +02:00
Erik Montnemery 2e13fb3c24 Unsubscribe listeners when entity meter sensor is removed (#69172) 2022-04-04 11:12:52 +02:00
Jesse Hills 90cb9ccde2 ESPHome: Remove disconnect callbacks after they are done (#69169) 2022-04-04 11:12:49 +02:00
J. Nick Koston 9a91a7edf5 Exclude supported features and attribution from being recorded in the database (#69165) 2022-04-04 11:12:46 +02:00
Raman Gupta c769b20256 Make zwave_js config entry unique ID a string (#69163)
* Make zwave_js config entry unique ID a string

* Add test

* Fix tests
2022-04-04 11:12:42 +02:00
J. Nick Koston 47c1e48166 Exclude static water_heater attributes from being recorded in the database (#69159) 2022-04-04 11:12:39 +02:00
J. Nick Koston 0e6550ab70 Exclude static climate attributes from being recorded in the database (#69158) 2022-04-04 11:12:36 +02:00
J. Nick Koston 5fa2dc540b Exclude static and token attributes from being recorded for media_player (#69156) 2022-04-04 11:12:32 +02:00
J. Nick Koston b503be9301 Exclude static light attributes from being recorded in the database (#69155) 2022-04-04 11:12:29 +02:00
Diogo Gomes d99e04e2bc Makes sure YAML defined tariffs are unique (#69151) 2022-04-04 11:12:25 +02:00
Marc Mueller 39a38d9866 Update hangups to 0.4.18 (#69149) 2022-04-04 11:12:22 +02:00
Alex Yao bc106cc430 Bump Yeelight to v0.7.10 (#69147) 2022-04-04 11:12:18 +02:00
Franck Nijhof 2ae390a342 Set brand icon on WLED update entity (#69145) 2022-04-04 11:12:15 +02:00
Glenn Waters 5cc58579bb Environment Canada: allow AQHI to pull from forecast when current not available (#69142)
* Allow AQHI to pull from forecast when current not available.

* Remove redundant check.

* Remove lambda.
2022-04-04 11:12:12 +02:00
Bouwe Westerdijk 61129734f5 Bump plugwise to v0.17.3 (#69139) 2022-04-04 11:12:09 +02:00
Raman Gupta a26e221ebc Fix kodi log spamming again (#69137)
* Fix kodi log spamming again

* use try except else
2022-04-04 11:12:05 +02:00
Michael 026c843545 ignore ip6 link local address on ssdp discovery (#69135) 2022-04-04 11:12:02 +02:00
Mick Vleeshouwer f2d41a0011 Bugfix for overkiz.alarm_control_panel platform exception (#69131)
* Revert changes

* Remove debug statement
2022-04-04 11:11:58 +02:00
Nenad Bogojevic bee853d415 Fix withings race condition for access token (#69107) 2022-04-04 11:11:55 +02:00
Erik Montnemery 3ba8ddb192 Return unsubscribe callback from start.async_at_start (#69083)
* Return unsubscribe callback from start.async_at_start

* Update calling code
2022-04-04 11:11:52 +02:00
Wictor 53107e4f2c Refactor telegram_bot polling/webhooks platforms and add tests (#66433)
Co-authored-by: Pär Berge <paer.berge@gmail.com>
2022-04-04 11:11:48 +02:00
Franck Nijhof b539700e45 Bumped version to 2022.4.0b3 2022-04-02 11:40:11 +02:00
Franck Nijhof dd2c2eb974 Update wled to 0.13.2 (#69116) 2022-04-02 11:39:44 +02:00
Raman Gupta c1c8299511 Fix kodi log spamming (#69113) 2022-04-02 11:39:40 +02:00
Franck Nijhof c72db40082 Bump num of conflicts in pip check (#69112) 2022-04-02 11:39:37 +02:00
Marcel van der Veldt 9327938dcc Allow lowercase none for effect value in Hue lights (#69111) 2022-04-02 11:39:33 +02:00
Marcel van der Veldt c7f807cf33 Adjust check for orphaned Hue device entries for grouped lights (#69110)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-04-02 11:39:30 +02:00
Raman Gupta 691eac7a7f Fix unit prefixes for derivative and integration (#69109) 2022-04-02 11:39:27 +02:00
Keilin Bickar e341e55e88 Bump asyncsleepiq to 1.2.3 (#69104) 2022-04-02 11:39:24 +02:00
Glenn Waters 51e8ddbd27 Environment Canada: Fix for when temperature is zero (#69101) 2022-04-02 11:39:20 +02:00
puddly c2c397527e Bump ZHA dependency zigpy-deconz from 0.14.0 to 0.15.0 (#69099) 2022-04-02 11:39:17 +02:00
Bram Kragten 328f479bc4 Update frontend to 20220401.0 (#69095) 2022-04-02 11:39:13 +02:00
Bouwe Westerdijk 5df7882ce4 Remove use of HVAC_MODE_OFF in plugwise climate, it's not implemented (#69094) 2022-04-02 11:39:10 +02:00
Franck Nijhof 7fe6174bd9 Rename current_version to installed_version in Update platform (#69093) 2022-04-02 11:39:06 +02:00
Dave T d4a31b037f Add image test cases to generic (#69040) 2022-04-02 11:39:03 +02:00
Mick Vleeshouwer 5db1c67812 Fix Protexial alarm in Overkiz integration (#68996) 2022-04-02 11:38:59 +02:00
Paulus Schoutsen f40513c95b Bumped version to 2022.4.0b2 2022-04-01 09:30:33 -07:00
Mick Vleeshouwer 2d7cbeb1fc Bump pyoverkiz to 1.3.14 in Overkiz integration (#69084) 2022-04-01 09:30:08 -07:00
Erik Montnemery 718bc734f2 Add bluepy as a dependency for zengge (#69067)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-04-01 09:30:07 -07:00
Erik Montnemery 66c131515a Update zengge codeowners (#69068) 2022-04-01 09:28:01 -07:00
Erik Montnemery 200a24d869 Fix utility_meter startup (#69064) 2022-04-01 09:25:55 -07:00
Matthias Alphart c030af0919 coerce number selector values to int (#69059) 2022-04-01 09:25:55 -07:00
Erik Montnemery ad2067381b Bump pychromecast to 11.0.0 (#69057) 2022-04-01 09:25:54 -07:00
Joakim Sørensen cc9e55594f Add auto_update property to supervisor and addon update entities (#69055) 2022-04-01 09:25:53 -07:00
Joakim Sørensen fadb63c43a Add auto_update property to UpdateEntity (#69054) 2022-04-01 09:25:53 -07:00
Raman Gupta 0cf817698d Fix zwave_js device action logic (#69049)
* Fix zwave_js device action logic

* Add test for this behavior
2022-04-01 09:25:52 -07:00
Shay Levy 432768f503 Remove webostv deprecated YAML import (#69043)
* webostv: remove deprecated YAML import

* Remove unused CUSTOMIZE_SCHEMA and WEBOSTV_CONFIG_FILE
2022-04-01 09:25:51 -07:00
J. Nick Koston 65ccb7446f Prevent HomeKit from offering hidden entities (#69042) 2022-04-01 09:25:50 -07:00
Mick Vleeshouwer 90bec9cfcd Enable select platform in Overkiz integration (#68995) 2022-04-01 09:25:50 -07:00
Erik Montnemery ab21ac370c Mend incorrectly imported MQTT config entries (#68987)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-04-01 09:25:49 -07:00
Matthias Alphart 43b9e4febf Update KNX flow strings to use "data_description" and remove invalid options (#68935)
* use `data_description`

* use selectors so `data_description` shows

* remove unused config option

`individual_address` has no effect for tunneling. The address is always assigned by the tunnelling server.

* remove unsupported option for tunneling V1 devices
2022-04-01 09:25:48 -07:00
Chris Talkington 3659bceedb Update rokuecp to 0.16.0 (#68822) 2022-04-01 09:25:47 -07:00
J. Nick Koston e4395dee6c Convert statistics to use history api for database access (#68411) 2022-04-01 09:25:47 -07:00
Paulus Schoutsen 0b8bba0db9 Bumped version to 2022.4.0b1 2022-03-31 15:10:09 -07:00
Dave T 2cb77c4702 Improve image checks for generic camera (#69037) 2022-03-31 15:10:01 -07:00
Franck Nijhof dcbca89d06 Remove deprecated YAML configuration from Yamaha Music Cast (#69033) 2022-03-31 15:10:00 -07:00
Franck Nijhof 9614e8496b Remove deprecated YAML configuration from Fronius (#69032) 2022-03-31 15:10:00 -07:00
Franck Nijhof deed4c5980 Remove deprecated YAML configuration from EZVIZ (#69031) 2022-03-31 15:09:59 -07:00
Franck Nijhof 9c9bacad31 Remove deprecated YAML configuration from Sensibo (#69028) 2022-03-31 15:09:58 -07:00
Franck Nijhof daf2f746ed Remove deprecated YAML configuration from Met.no (#69027) 2022-03-31 15:09:57 -07:00
Franck Nijhof d0bb58c698 Remove deprecated YAML configuration from Yale Smart Alarm (#69025) 2022-03-31 15:09:57 -07:00
Franck Nijhof 652ce897c7 Remove deprecated YAML configuration from Brunt (#69024) 2022-03-31 15:09:56 -07:00
Franck Nijhof 5120a03470 Remove deprecated template support in persistent notifications (#69021) 2022-03-31 15:09:55 -07:00
Joakim Sørensen b349322055 Cleanup Version after removing YAML (#69020) 2022-03-31 15:09:55 -07:00
Paulus Schoutsen 00b363d896 Enforce EntityCategory enum (#69015)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-31 15:09:54 -07:00
Paulus Schoutsen a1ebea271c Enforce RegistryEntryDisabler enum (#69017)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-31 15:09:26 -07:00
Paulus Schoutsen c73f423102 Device Automation: enforce passing in device-automation-enum (#69013) 2022-03-31 15:06:57 -07:00
Paulus Schoutsen a630e7dc49 Version: remove deprecated YAML import (#69010) 2022-03-31 15:06:56 -07:00
Paulus Schoutsen b7e3e7a8e6 Launch Library: remove deprecated YAML import (#69008) 2022-03-31 15:06:56 -07:00
Paulus Schoutsen 7eecf48645 DNS IP: Remove deprecated YAML import (#69007)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-31 15:06:55 -07:00
Paulus Schoutsen bb26ded115 iCloud: remove deprecated YAML import (#69006)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-31 15:06:54 -07:00
Paulus Schoutsen 8c65e930d5 Update tradfri deprecation message (#69005) 2022-03-31 15:06:53 -07:00
Paulus Schoutsen ff332049e1 Nanoleaf: remove deprecated YAML import (#69004) 2022-03-31 15:06:52 -07:00
Paulus Schoutsen fa12fd3776 Solax: remove deprecated YAML import (#69003) 2022-03-31 15:06:51 -07:00
Paulus Schoutsen 0adeebfe33 Remove deprecated Switchbot import (#69002) 2022-03-31 15:06:50 -07:00
Paulus Schoutsen 2328813e69 Don't log the stack trace (#69000) 2022-03-31 15:06:50 -07:00
starkillerOG 013f376ef3 bump pynetgear to 0.9.2 (#68986) 2022-03-31 15:06:49 -07:00
Erik Montnemery a8e6ad9f3d Deprecate temperature conversion in base entity class (#68978)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-31 15:06:48 -07:00
Erik Montnemery a8dcecf1ec Make utility_meter tariffs a list (#68967) 2022-03-31 15:06:47 -07:00
Erik Montnemery 76db6acfb2 Improve utility_meter services.yaml (#68960) 2022-03-31 15:06:47 -07:00
Paulus Schoutsen 844d0680f0 Change privacy mode to config (#68954) 2022-03-31 15:06:46 -07:00
Raman Gupta c684603037 Add support for new select selector properties (#68952)
* Add support for new select selector properties

* fix mode option

* Apply suggestions from code review

* Correct validation for empty options, update tests

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-31 15:06:45 -07:00
Allen Porter e6b88a5214 Fix google calendar blocking call, running outside of executor (#68948) 2022-03-31 15:06:45 -07:00
Robert Hillis a16d86585b Rename google hangouts to google chat (#68941) 2022-03-31 15:06:44 -07:00
J. Nick Koston df308f703f Exclude large and chatty attributes from being recorded for update entities (#68940)
Co-authored-by: Joakim Sørensen <hi@ludeeus.dev>
2022-03-31 15:06:43 -07:00
Philip Allgaier 40e7055934 Prevent issues with setting up "Timer" integration (unknown "restore" key) (#68936)
* Prevent issues with setting up "Timer" for existing entities

* Use default constant

* Update homeassistant/components/timer/__init__.py

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

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-31 15:06:42 -07:00
Dave T 45bd4038f4 Generic camera: Allow gif image type in still image checker (#68933) 2022-03-31 15:06:42 -07:00
Dave T 3aa0294b5d Generic camera: Allow svg detect to accept leading whitespace (#68932) 2022-03-31 15:06:41 -07:00
Erik Montnemery 143e9f4fc3 Improve utility_meter services.yaml (#68930) 2022-03-31 15:06:40 -07:00
Nathan Spencer 0de84d882a Bump pylitterbot to 2022.3.0 (#68929) 2022-03-31 15:06:39 -07:00
Bram Kragten ff786c3be8 Handle config entries of integrations that are removed (#68928) 2022-03-31 15:06:39 -07:00
Michael d617271ca0 Add "station is open" sensor to Tankerkoenig (#68925) 2022-03-31 15:06:38 -07:00
Erik Montnemery d38382fbe3 Rename helper_config_entry_flow to schema_config_entry_flow (#68924) 2022-03-31 15:06:37 -07:00
Paulus Schoutsen 475b9e212d Mark all input integrations as helpers (#68922) 2022-03-31 15:06:37 -07:00
puddly a8ad3292c8 Bump zigpy to 0.44.1 and zha-quirks to 0.0.69 (#68921)
* Make unit tests pass

* Flip response type check to not rely on it being a list
https://github.com/zigpy/zigpy/pull/716#issuecomment-1025236190

* Bump zigpy and quirks versions to ZCLR8 releases

* Fix renamed zigpy cluster attributes

* Handle the default response for ZLL `get_group_identifiers`

* Add more error context to `stage failed` errors

* Fix unit test returning lists as ZCL request responses

* Always load quirks when testing ZHA

* Bump zha-quirks to 0.0.69
2022-03-31 15:06:36 -07:00
rianadon 78d8bc66d1 Calculate temperature precision based on user units (#59560)
* Calculate temperature precision based on user units

* Fix a few more failing tests

* Fix failing test

Co-authored-by: Erik <erik@montnemery.com>
2022-03-31 15:06:35 -07:00
Franck Nijhof cd7e72b38d Bumped version to 2022.4.0b0 2022-03-30 21:34:03 +02:00
Franck Nijhof 9c2a944997 Merge branch 'master' into dev 2022-03-30 21:32:52 +02:00
muchtall a5eae3dbac Add support for joaoapps_join notification categories (#67445) 2022-03-30 12:28:41 -07:00
Zack Barett c2e9865f3f Frontend Version Bump to 20220330.0 (#68918) 2022-03-30 12:27:27 -07:00
Cyril Perrin fb1b0b535f Provide conv_id to intent (#68102) 2022-03-30 12:24:36 -07:00
Mick Vleeshouwer 1be9dc9720 Add supported brands to Overkiz (#67024)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-30 21:21:35 +02:00
Ljzd-PRO 9998ed4fc0 Change xiaomi _retrieve_list() timeout setting (#63964) 2022-03-30 12:19:13 -07:00
Jeff Basso 408e9b2943 Add Identity Attribute to enable areas (#62698) 2022-03-30 12:18:00 -07:00
Martin a9ebeb2876 Catch kodi protocol errors (#67555) 2022-03-30 12:14:53 -07:00
Sebastian Muszynski ea2c3e3310 Initialize xiaomi aqara binary sensor state (#68791) 2022-03-30 12:13:35 -07:00
Marvin Wichmann 9b05a1264a Add support for IP secure to KNX config flow (#68906)
* Add support for TCP Secure in KNX config flow

* Add support for TCP Secure in KNX config flow

* Fix typing

* Fix import

* Move assert up to cover all possible cases
2022-03-30 21:10:47 +02:00
Michael 3ccec8f051 Address late review of Tankerkoenig (#68919) 2022-03-30 21:07:00 +02:00
Jeff Rescignano 7767258696 Change sharkiqpy to sharkiq (#68864) 2022-03-30 11:41:34 -07:00
Mick Vleeshouwer 6a0a77f986 Don't close aiohttp session in Overkiz config flow (#68913) 2022-03-30 11:40:14 -07:00
Johann Vanackere aa6f551b33 Remove Daikin int conversion to allow decimal target temperature steps (#61616)
* Remove int conversion in order to allow decimal target temperature steps

* Convert to float and keep 1 digit
2022-03-30 20:03:22 +02:00
rappenze 4ca4180fd2 Fix on state for fibaro light entity (#68914) 2022-03-30 07:41:18 -10:00
Maximilian 2c245fcfec Address late review of nina (#68911) 2022-03-30 19:38:14 +02:00
Tom 3590467ce6 Update plugwise module to 0.17.2 (#68908) 2022-03-30 19:37:05 +02:00
Erik Montnemery 9471e4d77c Don't override temperature unit for sensors (#68910) 2022-03-30 10:15:00 -07:00
Joakim Sørensen 6d168d2672 Do not mark downgrades as updates (#68893) 2022-03-30 09:34:29 -07:00
J. Nick Koston fb41734342 Add support for custom effects to tplink light strips (#68502) 2022-03-30 09:34:09 -07:00
J. Nick Koston d75f577b88 Additional strict typing for recorder (#68860) 2022-03-30 09:20:44 -07:00
Marc Mueller fa33ac73f3 Update pylint to 2.13.3 (#68904) 2022-03-30 09:18:55 -07:00
Erik Montnemery 2c92d19058 Exclude own entity from group entity selector (#68782) 2022-03-30 18:07:47 +02:00
epenet 463cb8679f Bump python-awair to 0.2.3 (#68905) 2022-03-30 18:04:59 +02:00
Antoni Czaplicki 76f07ec240 Add Uonet+ Vulcan integration (#56357)
* Add Uonet+ Vulcan integration

* Add "configuration_url", fix some minor issues

* Refactor and fix tests

* Optimize code

* Apply suggestion from code review

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>

* Update error handling

* Fix some tests

* Update CODEOWNERS and fix pylint

* Cleanup vulcan tests

* Run prettier

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-30 17:55:24 +02:00
Tom 4d607b2eb5 Update plugwise module to 0.16.9 (#68255)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-30 17:12:20 +02:00
Sven Naumann 94fde3bf23 Prioritize channels for homematic event subscriptions (#56619)
* Prioritize SENSORNODE for event callbacks

* Ran black

* Use lazy % formatting for logging

Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-30 16:28:23 +02:00
Franck Nijhof ca1337d9c2 Update vehicle to 0.4.0 (#68896) 2022-03-30 16:15:34 +02:00
Marc Mueller 006fa9b700 Improve zha typing [api] (5) (#68684) 2022-03-30 15:54:31 +02:00
Marc Mueller cde989cd38 Fix zha InovelliCluster base class (#68683) 2022-03-30 15:49:12 +02:00
Jan Bouwhuis 4db2270f3d Refactor MQTT scene to inherit MqttEntity (#68883)
* MQTT scene inherrits MqttEntity

* Default payload_on matches documentation

* remove CONF_ENABLED_BY_DEFAULT from schema return True as default

* Add to the schema, remove not overrided properties

* remove default payload_on

* Update homeassistant/components/mqtt/scene.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-30 15:46:45 +02:00
Erik Montnemery 91f6e58e9a Allow customizing unit for temperature and pressure sensors (#64366)
* Allow customizing unit for temperature and pressure sensors

* pylint

* Adjust google_wifi tests

* Address review comments and add tests

* Improve rounding when scaling

* Tweak rounding

* Further tweak rounding

* Allow setting entity options with config/entity_registry/update

* Address review comments

* Tweak tests

* Load custom unit when sensor is added

* Override async_internal_added_to_hass

* Adjust tests after rebase

* Apply suggestions from code review

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

* Address review comments

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-30 15:43:04 +02:00
epenet 5b1e319947 Fix DEPENDENCY_CONFLICTS (#68900) 2022-03-30 15:14:54 +02:00
epenet cb5c7dc716 Prettify json (#68898) 2022-03-30 14:06:41 +02:00
Garrett ab0abdc988 Add 2FA support for Subaru integration setup (#68753)
* Add 2FA support for Subaru integration setup

* Update config flow to abort with 2FA request fail
2022-03-30 13:53:03 +02:00
Tom Brien bb7593351b Add option for exchange rate sensor precision to Coinbase (#68792)
* Add user option for precision to exchange rate sensors

* Add tests

* Add strings
2022-03-30 13:51:44 +02:00
Kevin Stillhammer 259b069dd9 Ensure API is called correctly in here_travel_time (#68840) 2022-03-30 13:49:21 +02:00
Eric Svärd 04bb156e99 Discard Solaredge updates for invalid overview data (#68048) 2022-03-30 13:36:55 +02:00
kaareseras 1f2bfcf12e Bump PyJWT from 2.1.0 to 2.3.0 (#68858) 2022-03-30 13:34:40 +02:00
Álvaro Fernández Rojas 0cb8ff9bc6 Fix HVAC modes for Airzone slave zones (#68851) 2022-03-30 13:32:15 +02:00
Eric Severance 3953b6abe2 Fix error handling for expired html5 registration (#67676) 2022-03-30 13:30:08 +02:00
Robert Hillis 9f0665bbb4 Add config flow to discord (#61069) 2022-03-30 13:18:48 +02:00
epenet 93706ca21a Bump prettier to v2.6.1 and enable on CI (#68877) 2022-03-30 13:10:48 +02:00
jan iversen 3cccb948a1 Auto detect call write register or write registers in set_temperature modbus (#68678) 2022-03-30 12:54:24 +02:00
epenet 9aac5d6af1 Prettify json (#68895) 2022-03-30 12:15:04 +02:00
epenet 053c4428a9 Prettify json (component test fixtures) (#68892) 2022-03-30 11:37:17 +02:00
epenet 831e2ace9c Prettify yaml (tests) (#68891) 2022-03-30 11:26:08 +02:00
J. Nick Koston af6a62ca79 Strict typing for homekit part 1 (#67657)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-30 11:21:07 +02:00
epenet 496d90bf00 Prettify json (tests) (#68888) 2022-03-30 11:12:58 +02:00
J. Nick Koston bbcefd6fec Exclude sun attributes from being recorded in the database (#68887) 2022-03-30 11:03:08 +02:00
epenet ecd43f391f Prettify json (manifest.json) (#68886) 2022-03-30 10:56:37 +02:00
Florian Gareis 8669057c11 Update yeelight services file with new selectors (#68814) 2022-03-30 10:43:03 +02:00
Erik Montnemery cf39a61aa1 Get cast type and manufacturer via http protocol (#68863) 2022-03-30 10:40:38 +02:00
epenet 0dcaa6422d Prettify yaml (2/2) (#68879) 2022-03-30 10:39:30 +02:00
epenet e362871499 Prettify json (strings.json) (#68885) 2022-03-30 10:35:30 +02:00
epenet 8fb645e1d7 Return cached device_info if refresh fails in SamsungTV (#68844) 2022-03-29 22:16:26 -10:00
Paulus Schoutsen 7a9a0c0c91 Update group description (#68882)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-30 10:16:04 +02:00
Paulus Schoutsen 206ea9d237 Expand group lights/covers etc (#68875)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-30 10:11:09 +02:00
Mick Vleeshouwer 7613784367 Extend Overkiz diagnostics and implement device diagnostics (#68859) 2022-03-29 22:07:34 -10:00
Mick Vleeshouwer 2be8b07af9 Address Overkiz switch feedback (#68813) 2022-03-30 09:58:50 +02:00
Erik Montnemery 47ecc73dfa Disable the SoChain integration (#68856) 2022-03-30 09:55:02 +02:00
Joakim Sørensen 618b16a32b Add full release notes to add-on update entities (#68876) 2022-03-30 09:52:29 +02:00
IceBotYT 5cd532b16a Improve code quality of PECO integration (#68865) 2022-03-30 09:50:25 +02:00
epenet bfd84ba89c Prettify yaml (services.yaml) (#68878) 2022-03-30 09:48:06 +02:00
Jeef 18517fda65 Move Intellifire error codes to individual sensors (#68249) 2022-03-30 09:41:25 +02:00
epenet a5c729b724 Fix NoEntitySpecifiedError in SamsungTV (#68880) 2022-03-29 20:59:54 -10:00
epenet f053fc9167 Add code comment in SamsungTV (#68841) 2022-03-29 20:11:22 -10:00
Raman Gupta df4ddc6491 Allow timer state to be restored on restart (#67658) 2022-03-29 23:04:46 -07:00
epenet 4d59cb290c Remove duplicate code in SamsungTV bridge (#68839) 2022-03-29 20:04:18 -10:00
north3221 e76170fbfd Add overlay options to Tado (#65886)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-29 22:59:03 -07:00
Marcel van der Veldt 09f6785956 Add virtual device/service for Hue groups (#68569) 2022-03-29 20:33:05 -07:00
Erik Montnemery 7e8d52e5a3 Fix race when handling rapid succession of MQTT discovery messages (#68785)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2022-03-29 20:26:11 -07:00
J. Nick Koston 3d378449e8 Move envoy last reported attribute to its own sensor (#68360) 2022-03-29 20:25:14 -07:00
Michael 2f7aeb64d2 Add config flow to Tankerkoenig (#68386) 2022-03-29 20:23:30 -07:00
J. Nick Koston f5a13fc51b Add ability to exclude attributes from being recorded by entity domain (#68824) 2022-03-29 20:13:08 -07:00
Sebastian Lövdahl ced68c1b80 Add Vallox cell state sensor tests (#67069) 2022-03-29 17:07:09 -10:00
Chris Talkington f4c443ac86 Use fixture for enabling entities in Sonarr tests (#68177) 2022-03-29 17:04:13 -10:00
Nikolai Rahimi 42cec38b66 Vesync core400s fan speed (#67672) 2022-03-29 17:02:57 -10:00
Allen Porter 66a183cfe3 Add nest device level diagnostics (#68024) 2022-03-29 16:56:03 -10:00
Robert Hillis 7e40594748 Bump notifications-android-tv to 0.1.5 (#68599) 2022-03-29 16:53:53 -10:00
Mick Vleeshouwer 365ea59b64 Improve Config Flow and handle TooManyAttemptsBannedException in Overkiz (#68868) 2022-03-29 16:19:57 -10:00
Joakim Sørensen 9a150c2234 Add release_notes method to update entities (#68842) 2022-03-29 17:38:56 -07:00
Jason Hunter 94df0844b3 Add lock groups (#68857) 2022-03-29 17:07:23 -07:00
Michael 61f8af8b58 Add update entity to Synology DSM (#68664) 2022-03-29 17:01:26 -07:00
Michael 96c607d50d Add update entities to PI-Hole (#68749) 2022-03-29 16:56:15 -07:00
Michael 3d64d1b76b Add tests for Fritz!Tools sensors (#67776) 2022-03-29 16:54:16 -07:00
Michael 94c5dbfd16 Rework config flow in AVM Fritz!Tools (#67767) 2022-03-29 16:53:53 -07:00
Raman Gupta 603601b32e Use location selector in tomorrowio config flow (#68431) 2022-03-29 16:53:31 -07:00
Zack Barett 91c0baf086 20220329.0 (#68867) 2022-03-29 16:03:04 -07:00
rappenze 93a66cc357 Add power sensor to fibaro integration (#68848) 2022-03-29 09:53:43 -10:00
Jason Hunter 7f5ee53d51 Fix pre-commit by upgrading black (#68855) 2022-03-29 15:29:30 -04:00
G Johansson 06435f633f Implement config flow for trafikverket_train (#65182) 2022-03-29 08:32:38 -10:00
starkillerOG 425b825ae9 Motion Blinds API lock (#68587) 2022-03-29 08:29:29 -10:00
Marvin Wichmann cec3a08b95 Cleanup KNX integration (#68820)
* Cleanup KNX integration

* Cleanup KNX integration

* Update homeassistant/components/knx/__init__.py

Co-authored-by: Matthias Alphart <farmio@alphart.net>

Co-authored-by: Matthias Alphart <farmio@alphart.net>
2022-03-29 16:46:02 +02:00
Michael Chisholm 62aa7fe10e dlna_dms fixes from code review (#67796) 2022-03-29 15:32:16 +02:00
Franck Nijhof be39a3cee0 Merge pull request #68825 from home-assistant/rc 2022-03-29 15:30:51 +02:00
Erik Montnemery bdb61e0222 Add config flow for utility_meter (#68457) 2022-03-29 14:46:17 +02:00
epenet 826423d8ed Cleanup package constraints (#68833)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 14:42:40 +02:00
Erik Montnemery d81ee9b2da Mark before/after times as required for times of the day config flow (#68789) 2022-03-29 13:21:58 +02:00
Marc Mueller c3d937fb0f Fix codeowners script for nested files (#68590) 2022-03-29 13:17:49 +02:00
Poltorak Serguei d9a6371679 Improved Add Sreen of the Z-WAve.Me intergration (#68568) 2022-03-29 13:00:35 +02:00
ollo69 80f34e5e2e Add diagnostics support for AndroidTV (#68748)
* Add diagnostics support for AndroidTV

* Restore entity_picture attribute
2022-03-29 12:51:04 +02:00
Kevin Stillhammer dc71ecf67e Wait for Home Assistant start in here_travel_time (#68757)
* Wait for Home Assistant to fully start.

* Update homeassistant/components/here_travel_time/sensor.py

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

* Define callback for _update_at_start

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-29 12:50:47 +02:00
epenet 5830481a53 Use new CONF_MODEL in mqtt (#68832)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 12:49:00 +02:00
epenet 35a5cca1ca Cleanup package constraints (#68833)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 11:44:19 +02:00
epenet 014aadb299 Use new CONF_MODEL core constant (2/3) (#68831)
* Use CONF_MODEL in xiaomi_miio

* Use CONF_MODEL in xiaomi

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 11:12:43 +02:00
epenet a29990a784 Use new CONF_MODEL core constant (1/3) (#68829)
* Use CONF_MODEL in axis

* Use CONF_MODEL in denonavr

* Use CONF_MODEL in flux_led

* Use CONF_MODEL in konnected

* Use CONF_MODEL in steamist

* Use CONF_MODEL in tellstick

* Use CONF_MODEL in tensorflow

* Use CONF_MODEL in twinkly

* Use CONF_MODEL in yeelight

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 11:11:58 +02:00
cvwillegen 8fc8778995 Improve log when connection to kodi media player cannot be created (#68458)
* Make clearer in log files that connection to media player cannot be created.

* Only give connection error once.

When connection is lost, only give an error message once. When connection is restored and lost again, give error message again.
2022-03-29 11:09:59 +02:00
jjlawren 112d232c2e Autoresume in-progress items from Plex media browser (#68494) 2022-03-29 11:08:26 +02:00
epenet d4ab48a049 Optimise Upnp event handling in SamsungTV (#68828)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-28 22:55:05 -10:00
MattWestb 2e9c89024b Add presets for 2 new tuya TRVs. (#68576)
Adding presets for "_TZE200_cpmgn2cf" and "_TZE200_9sfg7gm0" that is being added in ZHA thru https://github.com/zigpy/zha-device-handlers/pull/1443.
Need being merged for getting the device working then the quirk is being merged (but can being merged before).
2022-03-29 10:45:05 +02:00
ollo69 0d8736b82b Remove ipaddress check in AndroidTV config flow (#68630) 2022-03-29 10:44:33 +02:00
yoedf 88780b4c87 Add duration support for streaming in mpd (#66110)
* Add duration support for streaming in mpd

* Change to use 1 line instead of if

* Improve code to be more readable
2022-03-29 11:36:05 +03:00
Maximilian d655d54a8f Added more attributes (#67135) 2022-03-29 11:34:09 +03:00
epenet 99c0ef9ab8 Pin click to fix typer issue (#68808)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 10:21:29 +02:00
epenet 2bb42f48aa Add CONF_MODEL to core constants (#68806)
* Add CONF_MODEL to core constants

* Use CONF_MODEL in SamsungTV

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 10:01:10 +02:00
Sebastian Muszynski 50b2ee8c23 Fix light state on boot up (#68606)
Fixes: #68038
2022-03-29 09:57:30 +02:00
J. Nick Koston d7634d1cb1 Additional strict typing for additional recorder internals (#68689)
* Strict typing for additional recorder internals

* revert

* fix refactoring error
2022-03-29 09:45:25 +02:00
Ville Skyttä 05ddd773ff Fix _abort_if_unique_id_configured updates type hint (#68730) 2022-03-29 09:24:15 +02:00
Paulus Schoutsen 4041dd61c5 Bumped version to 2022.3.8 2022-03-29 00:11:29 -07:00
Keilin Bickar fe36ff5fa9 Update sense library to 0.10.4 (#68816) 2022-03-29 00:11:12 -07:00
J. Nick Koston 9acd1471a0 Fix ignoring elkm1 discovery (#68750) 2022-03-29 00:11:11 -07:00
Martin Hjelmare d1a6eb55b1 Increase zwave_js add-on start attempts before timeout (#68736) 2022-03-29 00:11:10 -07:00
J. Nick Koston 112732c673 Add option to connect to elkm1 non-secure when secure is discovered (#68735)
Co-authored-by: Glenn Waters <glenn@watrs.ca>
2022-03-29 00:11:09 -07:00
J. Nick Koston 45638c78ae Ensure solaredge can still be setup with an ignored entry (#68688) 2022-03-29 00:11:08 -07:00
J. Nick Koston d5e80ed2a5 Fix screenlogic to get the macaddress from discovery (#68687) 2022-03-29 00:11:07 -07:00
kevdliu 9b3c3232be Revert "Take Abode camera snapshot before fetching latest image" (#68626) 2022-03-29 00:11:06 -07:00
J. Nick Koston 14fbda8412 Add option to connect to elkm1 non-secure when secure is discovered (#68735)
Co-authored-by: Glenn Waters <glenn@watrs.ca>
2022-03-29 00:10:49 -07:00
patagona e85fb87438 Handle MPD songs with multiple artists (#68759) 2022-03-29 09:10:21 +02:00
Keilin Bickar 557fa198d8 Update sense library to 0.10.4 (#68816) 2022-03-29 00:08:40 -07:00
Marvin Wichmann 1d88ce0d04 Update xknx to version 0.20.0 (#68818) 2022-03-29 08:58:54 +02:00
IceBotYT fb14ae211e Add support for static typing for the PECO library (#68707) 2022-03-29 08:47:20 +02:00
J. Nick Koston 8714beb5e7 Update iot_class for samsungtv (#68812)
#68777 Made volume updates local push, we should upgrade the iot class
2022-03-29 07:23:52 +02:00
J. Nick Koston 6110e7d194 Remove unneeded __repr__ in samsungtv logging (#68817)
* Remove unneeded __repr__ in samsungtv logging

* keep only the ones we need
2022-03-29 07:22:58 +02:00
Franck Nijhof 085b44e45a Simplify is_on state for switch groups (#68805)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-03-29 07:09:42 +02:00
Paulus Schoutsen 69fcce3b2c Remove energy usage from the switch base class (#68821)
* Remove energy usage from the switch base class

* Remove unused attributes from integrations
2022-03-28 18:56:04 -10:00
Eric Severance c6ba987995 Use device properties for WeMo Insight sensors (#63525) 2022-03-28 17:47:18 -07:00
J. Nick Koston 349060be2f Disable Unifi Protect Oldest Recording sensor by default (#68804) 2022-03-28 14:24:54 -10:00
Franck Nijhof 963d161f72 Update core services files with new selectors (#68810)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-03-28 17:17:16 -07:00
G Johansson 9b70c10c8e Implement coordinator for trafikverket_weather (#65233) 2022-03-28 13:13:02 -10:00
Álvaro Fernández Rojas fefd6a1d1a Update aioairzone to v0.2.1 (#68798)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-28 13:05:47 -10:00
starkillerOG 98ca9754d7 Motion Blinds dhcp discovery (#68809)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-28 13:01:17 -10:00
epenet 8eb2e131e5 Use DmrDevice to communicate with SamsungTV (#68777)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-28 12:23:38 -10:00
Mick Vleeshouwer d0e5e51863 Add alarm control panel to Overkiz integration (#67164) 2022-03-28 15:19:16 -07:00
epenet f067aa6d71 Pin click to fix typer issue (#68808)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-29 00:07:29 +02:00
Marc Mueller 38a7c7438e Add zha typing [core.device] (1) (#68686) 2022-03-28 23:58:33 +02:00
Marc Mueller f0e2f964e8 Add zha typing [core.gateway] (3) (#68685) 2022-03-28 23:58:06 +02:00
Matthias Alphart f2aee38841 Run KNX protocol logic in a separate thread (#68807) 2022-03-28 23:56:29 +02:00
Allen Porter 9881538c27 Improve caldav tests to use APIs rather than entity methods (#68745)
* Improve caldav tests to use APIs rather than entity methods

Update caldav tests to use the best practice of exercising the public APIs rather than directly calling the entity methods directly. This is motivated by additional calendar API cleanup and possibly future breaking changes.

* Remove unnecessary start/end arguments which are ignored
2022-03-28 22:22:49 +02:00
Ville Skyttä 38ef183433 Change newly appeared DISABLED_USERs in tests to RegistryEntryDisablers (#68799) 2022-03-28 21:15:42 +02:00
Dave T c1a2be72fc Generic IP Camera configflow 2 (#52360)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-28 09:08:00 -10:00
epenet de130d3b28 Update REST api mocking in SamsungTV (#68172)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-28 09:04:19 -10:00
Paulus Schoutsen 5eee600fa8 Ban brand name translations as step titles (#68801) 2022-03-28 10:41:39 -07:00
Paulus Schoutsen e80933d6c7 Force helpers to have a mandatory description (#68796) 2022-03-28 10:32:15 -07:00
starkillerOG 68a6359999 Address late motion blinds review comments (#68793) 2022-03-28 18:22:00 +02:00
Allen Porter 609c6ef5d4 Add test coverage for google calendar event response format (#68767)
Add test coverage for the calendar event response format as I am about to do some
refactoring and simplification. Notably, each calendar implementation uses a slightly different
API response, and this is codifying that.
2022-03-28 18:05:02 +02:00
Will Marler 79080f5e2f Adjust "default_config" comment in default config (#68679)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-28 09:03:34 -07:00
Maciej Bieniek 24212ab598 Add diagnostics platform for AccuWeather integration (#68752) 2022-03-28 08:42:25 -07:00
Ville Skyttä 066128a53c Remove leftovers of Huawei LTE YAML config support (#68728) 2022-03-28 08:24:13 -07:00
rappenze 33371bdd20 Change fibaro disconnect log level to debug (#68783) 2022-03-28 08:23:44 -07:00
Mick Vleeshouwer c763d23cbb Fix reauth message in Overkiz integration (#68787) 2022-03-28 08:23:25 -07:00
Mick Vleeshouwer 443315bcdc Bump dependency (pyoverkiz to 1.3.12) in Overkiz integration (#68788) 2022-03-28 08:22:56 -07:00
rforro a6d0a4ec64 Update climate.py (#68786)
add TRV presets to all Zonnsmart-like models
2022-03-28 09:56:37 -04:00
epenet 3230ee88b6 Add OUI to SamsungTV (#68771)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-28 12:36:45 +02:00
Erik Montnemery 2ec1e06c75 Mark group as a helper integration (#68775) 2022-03-28 12:36:11 +02:00
Erik Montnemery cc156c767d Revert light.switch to 2022.3 (#68772) 2022-03-28 12:28:15 +02:00
Franck Nijhof 01980f0445 Add switch groups (#68528) 2022-03-28 12:27:26 +02:00
Erik Montnemery a597c11ea2 Mark threshold as a helper integration (#68780) 2022-03-28 12:26:52 +02:00
Shay Levy c2eaa76dde Bump aiowebostv to 0.2.0 (#68773) 2022-03-28 11:28:58 +02:00
Raman Gupta 9d14201b13 Don't create two zwave_js.lock entities for a single device (#68651) 2022-03-28 11:15:48 +02:00
J. Nick Koston aa7cb087a9 Fix ignoring elkm1 discovery (#68750) 2022-03-28 11:05:50 +02:00
Álvaro Fernández Rojas 67d3e84448 Locally patch AirzoneLocalApi in tests (#68770) 2022-03-28 10:51:59 +02:00
Erik Montnemery 48187cebad Mark integration as a helper integration (#68778) 2022-03-28 10:35:52 +02:00
Erik Montnemery 95d6848726 Mark switch_as_x as a helper integration (#68779) 2022-03-28 10:35:08 +02:00
Franck Nijhof 6f567afc0e Mock out all default onboarding integrations in test (#68776)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-28 10:33:43 +02:00
J. Nick Koston 6cec53bea1 Add support for finding the samsungtv MainTvAgent service location (#68763) 2022-03-27 22:01:07 -10:00
Michael 23c47c2206 Add state class to Tankerkoenig fuel price sensors (#68737) 2022-03-28 09:48:25 +02:00
Erik Montnemery 66d892237d Add config flow for min_max sensor (#67807)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-28 09:39:54 +02:00
Erik Montnemery 1746677b61 Clarify duration selector (#68731) 2022-03-28 09:28:32 +02:00
Jan Bouwhuis cfc8b5fee7 Fix notify discovery setup (#68451)
* Fix notify discovery setup

* add test

* unsubscribe at reset

* Add guard

* move dispatcher to reload module

* only unsubscribe if platform was setup

* initialize dispatcher once and tests

* test get_service too

* add tests

* fix test

* use get_service for test invalid platform

* Test built-in reload method

* set to None after clearing dispatcher - tests

* Pathing services file

* Update tests/components/notify/test_init.py

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

* dispatcher is not set twice if integration loaded

* empty discovery payload

* Removed not needed services.yaml mock

* Update tests/components/notify/test_init.py

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

* flake8

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-28 08:53:30 +02:00
ollo69 17ddbb4983 Restore AndroidTV entity name from migration (#68756) 2022-03-27 14:57:15 -10:00
epenet c024033dae Add Upnp volume control/status to SamsungTV (#68663)
Co-authored-by: epenet <epenet@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-27 12:27:24 -10:00
J. Nick Koston b5496441ae Use new samsungtv exception to detect when reauth is needed (#68762) 2022-03-27 12:12:32 -10:00
Álvaro Fernández Rojas 42a5e2d4fe Add Airzone binary sensor platform (#68140)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-27 10:39:46 -10:00
J. Nick Koston cc75cebfc5 Add support for setting up encrypted samsung tvs from config flow (#68717)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-27 10:30:45 -10:00
Álvaro Fernández Rojas b5401ccc4a Add Airzone climate platform (#67924)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-27 08:59:15 -10:00
Jeff Irion cffc588c6d Bump adb-shell to 0.4.2 (#68742) 2022-03-27 07:49:28 -10:00
Allen Porter f61c911174 Remove some offset complexity from calendar event (#68724)
Simplify the calendar offset calculations to no longer update the event dictionary
using extra fields. calculate_offset is renamed to extract_offset and the integration
is responsible for overwriting the summary text.

This is in prepration for:
- Improved calendar event typing, removing unnecessary offset_reached field
- Calendar triggers which will remove offsets anyway
2022-03-27 10:02:19 -07:00
Ville Skyttä 945028d43d Update Huawei LTE config entry data on successful reconfig (#68727) 2022-03-27 17:16:45 +02:00
Allen Porter f05a6826de Add additional type hints for calendar integration (#68660) 2022-03-27 17:08:28 +02:00
Marc Mueller 53110f8cb7 Update pylint to 2.13.2 (#68704) 2022-03-27 16:08:24 +02:00
Martin Hjelmare ea2b5a80db Increase zwave_js add-on start attempts before timeout (#68736) 2022-03-27 12:29:59 +02:00
Allen Porter 4f595962b7 Pause deprecation of legacy works with Nest API (#68715) 2022-03-27 11:50:13 +02:00
Franck Nijhof 9e6bebd27b Patch out Met in onboarding tests (#68732) 2022-03-27 10:54:29 +02:00
Erik Montnemery 0899b67578 Update selectors with frontend changes (#68623) 2022-03-26 21:41:39 -07:00
Franck Nijhof a2a612c640 Add enable_day to duration selector (#68705) 2022-03-26 21:31:22 -07:00
Nathan Tilley 4e9430cba5 Fix typo in NMAP Tracker Config Flow (#68712) 2022-03-26 16:05:02 -10:00
Jeff Irion b9b81da2ec Bump androidtv to 0.0.66 (Android 11 support) (#68720) 2022-03-26 13:01:48 -10:00
rappenze e844c2380a Add config flow to fibaro (#65203)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-26 09:50:50 -10:00
G Johansson 00b53502fb Break out sensors for filesize (#68702)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-26 09:43:15 -10:00
rhpijnacker 0c2b5b6c12 Support DSMR data read via RFXtrx with integrated P1 reader (#63529)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-26 16:46:33 +01:00
Franck Nijhof 1fd810bced Merge branch 'master' into dev 2022-03-26 14:21:01 +01:00
kevdliu ee5e9d09a0 Revert "Take Abode camera snapshot before fetching latest image" (#68626) 2022-03-26 14:17:40 +01:00
G Johansson b96c569657 Fix review comments for filesize (#68703) 2022-03-26 13:52:55 +01:00
J. Nick Koston 25bdb5304d Ensure solaredge can still be setup with an ignored entry (#68688) 2022-03-26 13:15:47 +01:00
Erik Montnemery 23a567e135 Update labels for derivative config flow time units (#68665) 2022-03-26 12:36:35 +01:00
J. Nick Koston 7198ec06d3 Fix screenlogic to get the macaddress from discovery (#68687) 2022-03-26 12:07:24 +01:00
J. Nick Koston b9f172899e Bump objgraph to 3.5.0 to fix stall in profiler tests (#68690) 2022-03-26 11:59:28 +01:00
Joakim Sørensen 32b2d1e5c9 Add backup platform to recorder (#68229) 2022-03-25 23:17:11 -07:00
Raman Gupta aa013fa8f6 Add CONF_LOCATION constant (#68474)
* Add CONF_LOCATION constant

* Update all custom CONF_LOCATION definitions to point to constant

* remove CONF_LOCATION from homeassistant/components/totalconnect/const
2022-03-26 00:10:54 -04:00
Marc Mueller 911b159281 Cleanup after pylint update (#68657) 2022-03-26 00:34:12 +01:00
Franck Nijhof d645e80ccd Clean up async_update_entity helper usage (#68641) 2022-03-25 15:22:58 -07:00
Marc Mueller 53245c6523 Update pylint to 2.13.0 (#68656) 2022-03-25 15:14:48 -07:00
J. Nick Koston 225f7a989b Add strict typing for recorder util (#68681) 2022-03-25 15:03:46 -07:00
Mike Fugate 4dc8aff3d5 Bump asyncsleepiq to 1.2.1 (#68680) 2022-03-25 10:47:28 -10:00
starkillerOG faf1f229e1 Motion allow changing ip (#68589)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-25 10:10:04 -10:00
G Johansson 67cf053260 Implement config flow for filesize (#67668)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-25 09:30:28 -10:00
Marc Mueller f5923be4e4 Improve zha typing [core.decorators] (#68650) 2022-03-25 18:13:28 +01:00
hesselonline 4b22f04505 Add typing to test files for Wallbox (#68635)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-03-25 18:09:49 +01:00
Marc Mueller 3ef912b7a0 Improve zha typing [api] (4) (#68649) 2022-03-25 18:09:15 +01:00
Marc Mueller 6ac9c105c1 Improve zha websocket api logic (#68648) 2022-03-25 17:45:47 +01:00
Marc Mueller 931d5b5697 Add zha typing [core.gateway] (2) (#68644) 2022-03-25 17:44:49 +01:00
Marc Mueller b3632f3efe Simplify zha IEEE validation schema (#68645) 2022-03-25 12:04:12 -04:00
Kevin Fronczak 70648d6e3b Bump Blinkpy to 0.19.0 (#68653) 2022-03-25 11:39:13 +01:00
Marc Mueller 1ce32ad3c0 Update mypy to 0.942 (#68652) 2022-03-25 08:50:10 +01:00
RDFurman 34ace2e1cd Honeywell away temps (#54704) 2022-03-24 15:17:36 -10:00
J. Nick Koston c5c34bc0d7 Typing and code quality for recorder history (#68647) 2022-03-24 17:58:38 -07:00
Paulus Schoutsen 20c0a5a838 Add support for field descriptions in config flows (#68604) 2022-03-24 17:25:50 -07:00
J. Nick Koston 63ca0e70be Migrate Unifi Protect last tripped time attributes to their own entities (#68347) 2022-03-24 17:23:53 -07:00
Matthias Alphart 9a396c1d16 remove unused constant (#68646) 2022-03-25 00:52:25 +02:00
Franck Nijhof cfa8f99b1c Update jinja2 to 3.1.0 (#68625) 2022-03-24 22:23:03 +01:00
G Johansson d23d19f9e6 Improve data handling for Sensibo (#68419) 2022-03-24 11:15:08 -10:00
hesselonline 5fffe9b22f Wallbox remove unnecessary try..except (#68636) 2022-03-24 22:09:59 +01:00
J. Nick Koston a566d3943c Fix history queries while the database migration is in progress (#68598) 2022-03-24 09:49:13 -10:00
J. Nick Koston e911936a0d Remove direct usage of concurrent.futures from recorder (#68593) 2022-03-24 09:48:49 -10:00
J. Nick Koston 3777fa52f0 Ensure recorder statistics process registry updates in the db executor (#68633) 2022-03-24 09:48:09 -10:00
Erik Montnemery 9f079a22d5 Add config flow for times of the day binary sensor (#68246)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-24 20:46:34 +01:00
Franck Nijhof f562f4264f Update grpcio to 1.45.0 (#68632) 2022-03-24 20:45:18 +01:00
epenet b13e14b80c Add command support to SamsungTV H/J models (#68301)
Co-authored-by: epenet <epenet@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-24 07:58:58 -10:00
Numa Perez 46072d2997 Fix Lyric temperature setting when off (#68573) 2022-03-24 10:11:06 -07:00
Erik Montnemery 76103752b8 Only show light group all option in advanced mode (#68610) 2022-03-24 16:51:31 +01:00
Franck Nijhof 8aff8d89d2 Clean up async_reproduce_state helper usage (#68617) 2022-03-24 14:40:54 +01:00
Erik Montnemery cbf5b5ead5 Use recorder threadpool in WS recorder/get_statistics_metadata (#68615) 2022-03-24 14:15:09 +01:00
Erik Montnemery 3068c9c9d3 Sort selectors alphabetically (#68612) 2022-03-24 13:20:16 +01:00
Franck Nijhof 15cffbe496 Clean up async_dispatcher_connect helper usage (#68613) 2022-03-24 13:19:11 +01:00
Klaas Schoute de40770926 Add diagnostics support to Forecast.Solar (#65063)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-24 13:18:19 +01:00
Franck Nijhof eca5fb5d54 Move remove all light option from group config flow (#68609) 2022-03-24 12:17:52 +01:00
Erik Montnemery 61cc8e32f3 Include has_mean + has_sum in statistics metadata WS response (#68546)
* Include has_mean + has_sum in statistics metadata WS response

* Don't include has_mean/has_sum in history/list_statistic_ids

* Adjust tests

* Do include has_mean/has_sum in history/list_statistic_ids
2022-03-24 10:12:01 +01:00
James Hodgkinson 4736470915 Bump pyaussiebb to 0.0.15 (#68600) 2022-03-24 05:42:21 +01:00
Erik Montnemery 23a630e0bc Update Times of the Day tests to use freezegun (#68327) 2022-03-23 21:06:43 -07:00
Paulus Schoutsen feea5af3d0 Merge pull request #68592 from home-assistant/rc 2022-03-23 21:04:33 -07:00
Kevin Stillhammer adbacdd5c2 Use DataUpdateCoordinator in here_travel_time (#61398)
* Add DataUpdateCoordinator

* Use TypedDict for extra_state_attributes

* Extend DataUpdateCoordinator

* Use platform enum

* Use attribution property

* Use relative imports

* Revert native_value logic

* Directly return result in build_hass_attribution

* Correctly declare traffic_mode as bool

* Use self._attr_*

* Fix mypy issues

* Update homeassistant/components/here_travel_time/__init__.py

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

* Update homeassistant/components/here_travel_time/__init__.py

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

* Update homeassistant/components/here_travel_time/sensor.py

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

* blacken

* from datetime import time

* remove none check

* Move dataclasses to models.py

* Set destination to now if None

* Add mypy error code

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2022-03-23 20:53:31 -07:00
Mike Fugate ad7a2c298b Add SleepIQ select entity for foundation preset positions (#68489) 2022-03-23 16:14:39 -10:00
Michael be5d816fbe Bump py-synologydsm-api to 1.0.7 (#68584) 2022-03-23 18:08:01 -07:00
Michael 661f2fd613 Bump py-synologydsm-api to 1.0.7 (#68584) 2022-03-23 18:07:45 -07:00
J. Nick Koston e5f424a280 Switch filter to use the database executor (#68594) 2022-03-23 13:20:43 -10:00
Paulus Schoutsen 911de94345 Bumped version to 2022.3.7 2022-03-23 15:47:05 -07:00
Marcel van der Veldt 53fa6c138a Bump aiohue to version 4.4.1 (#68579) 2022-03-23 15:46:53 -07:00
Marcel van der Veldt 85e6b3950c Bump aiohue to 4.4.0 (#68556) 2022-03-23 15:46:52 -07:00
J. Nick Koston 6fd4355314 Filter IPv6 addresses from AppleTV zeroconf discovery (#68530) 2022-03-23 15:46:14 -07:00
Marcel van der Veldt 050600375d Simplify Hue error handling a bit (#68529) 2022-03-23 15:46:13 -07:00
Paulus Schoutsen 1114877062 Hue handle HTTP errors (#68396) 2022-03-23 15:46:12 -07:00
jjlawren 454cb44ee8 Add cooldown timer before Sonos resubscriptions (#68521) 2022-03-23 15:45:21 -07:00
Keilin Bickar 9636435ff2 Add support for general API exception in Sense integration (#68517) 2022-03-23 15:45:20 -07:00
Erik Montnemery f85781dc51 Fix targeting all or none entities in service calls (#68513)
* Fix targeting all or none entities in service calls

* Add test
2022-03-23 15:45:10 -07:00
Marcel van der Veldt dbef90654f Add effects feature to Hue lights (#68567) 2022-03-23 15:13:01 -07:00
J. Nick Koston 8c10963bc0 Small cleanups for recorder (#68551) 2022-03-23 12:12:37 -10:00
Erik Montnemery c44d7205cf Rename HelperFlowStep to HelperFlowFormStep (#68583) 2022-03-23 14:43:11 -07:00
jjlawren 29a43cef0b Add cooldown timer before Sonos resubscriptions (#68521) 2022-03-23 14:20:20 -07:00
epenet 9ba0475644 Use callback to get app_list in SamsungTV (#68506)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-23 11:12:12 -10:00
Raman Gupta 8293430e25 Redact user codes from zwave_js diagnostics (#68515)
* Redact user codes from zwave_js diagnostics

* simplify test

* Remove unused logic

* revert change and make all inputs to ZwaveValueID optional

* revert change and make all inputs to ZwaveValueID optional

* Remove unused diagnostics data from fixture and test location redaction

* Add empty ZwaveValueID check

* Improve coverage

* Simplify post_init check

* Use dataclasses.astuple for checks instead
2022-03-23 21:13:27 +01:00
Marcel van der Veldt ccd8c7d5f8 Hue aggregated control for grouped lights (#68566) 2022-03-23 13:06:10 -07:00
J. Nick Koston d2dc9e6cbe Filter IPv6 addresses from AppleTV zeroconf discovery (#68530) 2022-03-23 20:38:34 +01:00
Marcel van der Veldt 871b7a4a96 Bump aiohue to version 4.4.1 (#68579) 2022-03-23 21:18:06 +02:00
starkillerOG 83983bc875 Motion request update till stop (#68580)
* update untill stop

* fixes

* fix spelling
2022-03-23 20:59:53 +02:00
hesselonline de3d402930 Add Lock platform to wallbox (#68414)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-03-23 19:50:28 +01:00
JonasClever b4bb35d4de Fronius - change the unit of capacity from Ah to Wh (#68543) 2022-03-23 20:45:54 +02:00
Robert Hillis bcfd9eeff2 Remove deprecated yaml config from Awair (#68572) 2022-03-23 20:37:15 +02:00
epenet df6cc94b25 Cleanup SamsungTV following dependency bump (#68562)
* send_command -> send_commands

* Remove TODO

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-23 20:35:58 +02:00
starkillerOG c3f0bd45a4 Bump motionblinds to 0.6.2 (#68570) 2022-03-23 20:34:22 +02:00
Erik Montnemery a50bac5cc2 Make initial group config flow step a menu (#68565) 2022-03-23 08:34:44 -07:00
Erik Montnemery d3809e4a09 Update group strings (#68571) 2022-03-23 15:36:50 +01:00
Franck Nijhof cdc78ee129 Update isort to 5.10.1 (#68564) 2022-03-23 14:47:43 +01:00
Marcel van der Veldt 4fd0ed2474 Bump aiohue to 4.4.0 (#68556) 2022-03-23 13:03:14 +01:00
ollo69 790cab2f95 Remove useless async_setup from AndroidTV (#68561) 2022-03-23 12:50:32 +01:00
Erik Montnemery dc0c3a4d2d Exclude hidden entities from google_assistant (#68554) 2022-03-23 12:46:53 +01:00
Erik Montnemery ff7d5c92d5 Exclude hidden entities from cloud (#68557) 2022-03-23 12:42:45 +01:00
Erik Montnemery dc8e87a6f7 Exclude hidden entities from alexa (#68555) 2022-03-23 12:40:28 +01:00
Martin Hjelmare 04843a975e Improve reload helper typing (#68558) 2022-03-23 12:10:42 +01:00
Franck Nijhof 44d3a7e459 Adjust backup type of Update entity (#68553) 2022-03-23 11:20:04 +01:00
Erik Montnemery 1c57e65cea Exclude hidden entities from homekit (#68552) 2022-03-23 10:32:51 +01:00
J. Nick Koston 49bc572d6d Fix tplink effect not being restored when turning back on (#68533)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-23 10:01:20 +01:00
Marc Mueller c9cc2eb7c8 Fix flaky datetime test (#68524) 2022-03-23 09:30:01 +01:00
Klaas Schoute 0c45241d43 Add inverter size to Forecast.Solar (#68263) 2022-03-23 08:50:30 +01:00
epenet 11cdc3706c Bump samsungtvws to 2.5.0 (#68542)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-22 21:29:00 -10:00
J. Nick Koston 08d6a3d9d4 Cache newly written state attribute ids (#68355) 2022-03-22 21:21:56 -10:00
Franck Nijhof df3a163a66 Update freezegun to 1.2.1 (#68512) 2022-03-23 08:10:21 +01:00
J. Nick Koston 7deeb92485 Switch sqlalchemy execute to use .all() instead of list() on the iterator (#68540) 2022-03-22 19:24:21 -10:00
Marcel van der Veldt dd1d7fdbab Simplify Hue error handling a bit (#68529) 2022-03-22 21:59:06 -07:00
Marcel van der Veldt 7381c2114f Remove color temperature workaround in Hue integration (#68531) 2022-03-22 21:57:04 -07:00
Robert Hillis e1ae940a34 Add config flow to deluge (#58789) 2022-03-22 21:01:24 -07:00
Raman Gupta 45a80f182d Dump entities in zwave_js device diagnostics (#68536) 2022-03-22 20:50:02 -07:00
Robert Hillis a11a5366be Remove deprecated yaml config from androidtv (#68339) 2022-03-22 20:45:35 -07:00
Zack Barett b2d7fe15bb Bump Frontend to 20220322.0 (#68535) 2022-03-22 17:48:21 -07:00
Erik Montnemery b5c5da96ac Add WS API to adjust incorrect energy statistics (#65147)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-22 15:18:30 -07:00
Keilin Bickar c5a3ba4065 Add support for general API exception in Sense integration (#68517) 2022-03-22 12:14:01 -10:00
J. Nick Koston b9526b05ee Disable extra emonitor sensors by default (#68519) 2022-03-22 11:05:30 -10:00
Inovelli 78a41022ad Updating to allow for Button Press event logs for Inovelli devices (#68277)
Co-authored-by: codyhackw <49957005+codyhackw@users.noreply.github.com>
2022-03-22 19:59:57 +01:00
Erik Montnemery 34063836ba Fix scaffold script (#68516) 2022-03-22 19:51:24 +01:00
J. Nick Koston c223397098 Remove unneeded attributes selection from history_states api calls (#68409) 2022-03-22 19:49:07 +01:00
J. Nick Koston c5f3f9e924 Convert plant to use history api for database access (#68410) 2022-03-22 19:34:46 +01:00
Erik Montnemery eb068bc850 Fix targeting all or none entities in service calls (#68513)
* Fix targeting all or none entities in service calls

* Add test
2022-03-22 19:45:27 +02:00
Ben Felton 43772b3fa9 Add World Message/MOTD support for MinecraftServer Integration (#66297) 2022-03-22 18:26:23 +01:00
Warwick Davison 0c6a6c360b Fix tuya light 2 channel dimmer module (#68109)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-22 18:24:57 +01:00
Jeff Rescignano 0720b0f891 Add all option to light group (#68447)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-22 16:09:18 +01:00
Marc Mueller 6a66b4dbff Add zha typing [api] (3) (#68353) 2022-03-22 10:15:39 -04:00
Marc Mueller df05e8b950 Add zha typing [core.channels] (#68377) 2022-03-22 10:14:35 -04:00
Marc Mueller bdc92271f2 Add zha typing [core.gateway] (1) (#68397)
* Add zha typing [core.gateway] (1)

* Add temporary type ignores

* Fix pylint
2022-03-22 10:13:09 -04:00
J. Nick Koston 94cd656670 Use new internal_state property in tplink diagnostics (#68497) 2022-03-22 14:58:16 +01:00
Joakim Sørensen 0802b64d95 Add boolean for certificate usage to analytics (#68254)
* Add boolean for certificate usage to analytics

* Mock hass.http
2022-03-22 14:49:43 +01:00
Franck Nijhof 1c2b8ee606 Add typing to Alert integration (#68365) 2022-03-22 14:48:36 +01:00
dependabot[bot] a8df10bb2c Bump actions/cache from 2.1.7 to 3 (#68496)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-22 14:47:09 +01:00
Raman Gupta 174f0a5695 Remove deprecated config option for eight_sleep (#68495) 2022-03-22 13:37:26 +01:00
Robert Hillis dfc689f49a Deprecate Dune HD YAML configuration (#68381)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-22 13:27:54 +01:00
Franck Nijhof 5ed5bccfe8 Clarify what the Tailscale integration does not (#68499) 2022-03-22 13:04:42 +01:00
Jan Bouwhuis 5afe8fd2db Revert "Add MQTT notify platform (#64728)" (#68505)
This reverts commit e574a3ef1d.
2022-03-22 12:51:24 +01:00
Joakim Sørensen d17f8e9ed6 Add update platform to the Supervisor integration (#68475) 2022-03-22 12:21:12 +01:00
Erik Montnemery 1b955970f8 Allow hiding and unhiding group members (#68192) 2022-03-22 12:14:34 +01:00
Erik Montnemery b5d2c6e43a Add config flow for threshold binary sensor (#68238)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-22 11:32:19 +01:00
epenet 87378016c1 Add basic support for SamsungTV encrypted models (#68500)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-22 00:11:41 -10:00
Martin Hjelmare 9180243a54 Deprecate mysensors config YAML (#68504) 2022-03-22 10:40:48 +01:00
J. Nick Koston 06ebb0b8b3 Add support for effects to tplink light strips (#65166) 2022-03-21 20:20:40 -10:00
Paulus Schoutsen 49edaf2f68 Merge pull request #68493 from home-assistant/rc 2022-03-21 21:57:00 -07:00
J. Nick Koston cb011570e8 Seperate emonitor extra_state_attributes into their own sensors (#68479) 2022-03-21 21:20:17 -07:00
Pawel bcb8c7ec3c Add API endpoint get_statistics_metadata (#68471)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-21 21:14:47 -07:00
Paulus Schoutsen 2be9798fb8 Bumped version to 2022.3.6 2022-03-21 20:42:13 -07:00
J. Nick Koston 3bf0a64e21 Fix tplink color temp conversion (#68484) 2022-03-21 20:42:09 -07:00
Paulus Schoutsen 23e9aa6ad2 Handle Hue discovery errors (#68392) 2022-03-21 20:42:08 -07:00
J. Nick Koston a8e1f57058 Filter IPv6 addreses from enphase_envoy discovery (#68362) 2022-03-21 20:42:07 -07:00
Marcel van der Veldt caee432901 Hue integration: update errors that should be supressed (#68337) 2022-03-21 20:42:07 -07:00
epenet df5c09e483 Bump renault-api to 0.1.10 (#68260)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-21 20:42:06 -07:00
Franck Nijhof 38eb007f63 Update opensensemap-api to 0.2.0 (#68193) 2022-03-21 20:41:31 -07:00
Marc Mueller 7dd9bfa92f Fix point by adding authlib constraint (#68176)
* Fix point by pinning authlib

* Use constraint
2022-03-21 20:41:31 -07:00
Marc Mueller 54b7f13a54 Add missing await [velbus] (#68153) 2022-03-21 20:41:30 -07:00
Michael 774f2b9b82 Respect disable_new_entities for new device_tracker entities (#68148) 2022-03-21 20:41:29 -07:00
Antonio Larrosa bc14385317 Fix finding matrix room that is already joined (#67967)
After some debugging, it seems room.canonical_alias contains the
room alias that matches the room_id_or_alias value but is not
contained in room.aliases (which is empty). As a result, the
matrix component thought the room wasn't alread joined, joins
again, and this replaces the previous room which had the listener.
This resulted in the component callback not being called for new
messages in the room.

This fixes #66372
2022-03-21 20:41:28 -07:00
Numa Perez 9352ed1286 Fix lyric climate (#67018)
* Fixed the issues related to auto mode

I was having the same issues as described in #63403, specifically, the error stating that Mode 7 is not valid, only Heat, Cool, Off when trying to do anything while the thermostat is set to Auto. This error originates with the way the Lyric API handles the modes. Basically, when one queries the changeableValues dict, you get a mode=Auto, as well as a heatCoolMode, which is set to either Heat, Cool, Off. Per the documentation, heatCoolMode contains the "heat cool mode when system switch is in Auto mode". It would make sense that when changing the thermostat settings, mode=Auto should be valid, but it's not. The way the API understands that the mode should be set to Auto when changing the thermostat settings is by setting the autoChangeoverActive variable to true, not the mode itself. This require changes in the async_set_hvac_mode, async_set_temperature, and async_set_preset_mode functions. Related to this issue, I got rid of the references to hasDualSetpointStatus, as it seems that it always remains false in the API, even when the mode is set to auto, so again, the key variable for this is autoChangeoverActive.

While I was working on this I also noticed another issue. The support flag SUPPORT_TARGET_TEMPERATURE_RANGE had not been included, which did not allow for the temperature range to be available, thus invalidating the target_temperature_low and target_temperature_high functions. I added this flag and sorted out which set point (heat vs cool) should be called for each of them so things work as expected in Lovelace. I have tested all of these functionalities and they all work great on my end, so I thought I'd share.

* Update climate.py

* Update climate.py

Fixed two additional issues: 1) When the system is turned off from Auto, the heatCoolMode variable becomes 'Off', so when you try to restart the system back to Auto, nothing happens. 2) I now prevent the async_set_temperature function from being called with a new set point when the system is Off.
All changes tested and functional.

* Update climate.py

* Update climate.py

Return SUPPORT_PRESET_MODE flag only for LCC models (i.e. they have the "thermostatSetpointStatus" variable defined). TCC models do not support this feature

* Update climate.py

After playing with the official Honeywell API, I realized it doesn't like to received commands with missing data, i.e., it always wants to get a mode, coolSetpoint, heatSetpoint, and autoChangeoverActive variables. This was causing some random issues with changing modes, especially from coming from off, so I modified the async_set_temperature, and async_set_hvac_mode fuctions to always send all pertinent variables.

* Update climate.py

* Update climate.py

* Update climate.py

* Update climate.py

* Clean code and test everything

Alright, sorry for the multiple commits, fixing this properly took a fair bit of testing. I went ahead and cleaned up the code and made the following big picture changes: 
1) The integration now supports the Auto mode appropriately, to include the temperature range. 
2) There's a bug that actually manifests when using the native app. When the system is 'Off' and you try to turn it on to 'Auto', it will turn on briefly but will go back to 'Off' after a few seconds. When checking the web api, this appears to be related to the fact that the heatCoolMode variable seems to continue to store 'Off', even if the mode accurately displays 'Auto', and the autoChangeoverActive=True. So to overcome that inherent limitation, when the system is 'Off' and the user turns it to 'Auto', I first turn it to Heat, wait 3 seconds, and then turn it to 'Auto', which seems to work well.

* Update climate.py

* Fixed errors

* Fixed comments that were resulting in error.

* Update climate.py

* Update homeassistant/components/lyric/climate.py

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

* Update homeassistant/components/lyric/climate.py

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

* Update climate.py

I removed a blank line in 268 and another one at the end of the document. I also fixed the outdents of await commands after the _LOGGER.error calls, not sure what else may be driving the flake8 and black errors. Any guidance is much appreciated @MartinHjelmare

* Update climate.py

* Update climate.py

corrected some indents that I think were the culprit of the flake8 errors

* Update climate.py

I used VS Code to fix locate the flake8 errors. I ran black on it, so I'm hoping that will fix the last lingering black error.

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-21 20:41:28 -07:00
Michael 70a771b6ed Respect disable_new_entities for new device_tracker entities (#68148) 2022-03-21 20:40:33 -07:00
IceBotYT a43505a0a3 Add PECO power outage counter integration (#65194)
* Create a new NWS Alerts integration

* Create a new NWS Alerts integration

* Create new PECO integration

* Remove empty keys

* Revert "Create a new NWS Alerts integration"

This reverts commit 38309c5a878d78f26df56a62e56cb602d9dc9a9e.

* Revert "Create a new NWS Alerts integration"

This reverts commit aeabdd37b86c370bdb8009e885806bdac6e464d8.

* Fix test with new mock data

* Add init and sensor to .coveragerc and more tests for config flow

* Small fixes and replacing patch with pytest.raises in testing invalid county

* Add type defs and fix test_config_flow to use MultipleValid instead

* Fix  issues with 'typing.Dict'

* Move API communication to seperate PyPI library

* Switch PyPI library from httpx to aiohttp to allow for passing in websessions

* Commit file changes requested by farmio as listed here: https://github.com/home-assistant/core/pull/65194/files/d267e4300a4d359d88ef33e43b66d0e961ac154d

* Add suggestions requested by farmio as listed here: https://github.com/home-assistant/core/pull/65194/files/586d8ffa42d7860d91e25fb82b2d6eace6645a82

* Move native_unit_of_measurement from prop to attr

* Update PLATFORMS constant type annotation

Co-authored-by: Matthias Alphart <farmio@alphart.net>

* Add peco to .strict-typing

I am from school so I can't run mypy atm

* Forgot to import Final

* Do as requested [here](https://github.com/home-assistant/core/runs/5070634928?check_suite_focus=true)

* Updated mypy.ini, checks should pass now

* Fix to conform to mypy restrictions https://github.com/home-assistant/core/runs/5072861837\?check_suite_focus\=true

* Fix type annotations

* Fix tests

* Use cast in async_update_data

* Add data type to CoordinatorEntity and DataUpdateCoordinator

* More cleanup from suggestions here: https://github.com/home-assistant/core/pull/65194\#pullrequestreview-908183493

* Fix tests for new code

* Cleaning up a speck of dust

* Remove unused variable from the peco sensor

* Add rounding to percentage, and extra clean-up

* Final suggestions from @farmio

* Update SCAN_INTERVAL to be a little bit faster

* Change the SCAN_INTERVAL to be somewhat near the update interval of the outage map, as noted by farmio

* New UpdateCoordinator typing
2022-03-21 23:56:53 +01:00
Erik Montnemery 247af2e74f Improve recorder setup in tests (#68333)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-21 15:49:18 -07:00
jjlawren 653305b998 Support multiple Plex servers in media browser (#68321) 2022-03-21 15:48:44 -07:00
J. Nick Koston 16655c4ccc Fix tplink color temp conversion (#68484) 2022-03-21 12:41:15 -10:00
Tom 574f4710aa Add select platform to Plugwise (#68303)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-21 21:13:03 +01:00
J. Nick Koston 1f135a20a0 Remove extra attributes from pvoutput sensors (#68481) 2022-03-21 20:54:57 +01:00
Mike Fugate d065475aac Bump asyncsleepiq to 1.2.0 (#68438)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-21 08:27:51 -10:00
Franck Nijhof 28d3117a88 Track number of persons in a Zone (#68473) 2022-03-21 10:41:55 -07:00
Marc Mueller 7c71beaa61 Trigger full ci run on label (#68469) 2022-03-21 16:13:19 +01:00
Franck Nijhof c56b77f2b3 Move WLED update title to class attribute (#68470) 2022-03-21 15:51:46 +01:00
Marc Mueller 1072aff017 Update coordinator typing (1) [a-c] (#68442) 2022-03-21 15:49:39 +01:00
Franck Nijhof 40d4495ed0 Add update platform to WLED (#68454)
* Add update platform to WLED

* Copy pasta fixes

* Apply suggestions from code review

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

* Update tests/components/wled/test_update.py

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

* Fix tests

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-21 15:38:29 +01:00
Marc Mueller 129c9e42f1 Update coordinator typing (7) [w-z] (#68467) 2022-03-21 15:29:11 +01:00
Marc Mueller 539a469a8b Update coordinator typing (5) [r-s] (#68465) 2022-03-21 15:24:05 +01:00
Marc Mueller b664bcd007 Update coordinator typing (4) [o-p] (#68464) 2022-03-21 14:45:24 +01:00
Franck Nijhof 2424564d2c Change update default entity category based on features (#68455) 2022-03-21 14:35:40 +01:00
Marc Mueller add741d789 Update coordinator typing (6) [t-v] (#68466) 2022-03-21 14:20:35 +01:00
Marc Mueller 0d29b7cbb3 Update coordinator typing (3) [g-n] (#68463) 2022-03-21 14:14:46 +01:00
Marc Mueller 354fc4c1ae Update coordinator typing (2) [e-f] (#68462) 2022-03-21 14:13:16 +01:00
Franck Nijhof 073fb40b79 Add update entity platform (#68248)
Co-authored-by: Glenn Waters <glenn@watrs.ca>
2022-03-21 11:02:48 +01:00
Marc Mueller 830cc278d3 Improve CoordinatorEntity typing (#68441) 2022-03-21 10:22:30 +01:00
Paulus Schoutsen 3320606a1b Hue handle HTTP errors (#68396) 2022-03-21 10:16:19 +01:00
Diogo Gomes ba814af701 Adopt SelectEntity in Utility Meter (#55690)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-21 08:21:26 +01:00
Paulus Schoutsen 3213091b8d Add integration type (#68349) 2022-03-20 20:38:13 -07:00
J. Nick Koston 4f9df1fd0f Fix logbook tests (#68443) 2022-03-20 20:34:02 -07:00
Paulus Schoutsen 929df2bc29 Improve error handling process_play_media_url (#68322) 2022-03-20 20:25:15 -07:00
Jeef ed94cc3673 Intellifire DHCP Auto Discovery (#67053)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-20 13:51:54 -10:00
Paulus Schoutsen 8bbbd1947d Raise if referenced entity does not support service (#68394) 2022-03-20 16:01:58 -07:00
Diogo Gomes 0cbc29caca Add unique_id through YAML to the integration component (#68435) 2022-03-20 22:48:11 +01:00
Robert Hillis 40484a3483 Tweak hassfest codeowners script (#68382) 2022-03-20 22:04:55 +01:00
J. Nick Koston 3c10ac308d Fix migration to schema v25 with Postgresql (#68426) 2022-03-20 21:49:11 +01:00
Franck Nijhof 1d35b91a14 Add calendar platform to Twente Milieu (#68190)
* Add calendar platform to Twente Milieu

* Apply suggestions from code review

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

* Sorting...

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-20 20:37:01 +01:00
Aaron Bach 314154d5c5 Bump aioridwell to 2022.03.0 (#68423) 2022-03-20 19:13:52 +01:00
Baptiste Candellier a136cf7086 Remove SmartHab integration (#67874) 2022-03-20 19:00:16 +01:00
G Johansson 89cfb4e86f Add yale_smart_alarm to strict typing (#68422)
* Add yale_smart_alarm to strict typing

* Type as Any
2022-03-20 19:50:37 +02:00
Aaron Bach 1013f77013 Bump simplisafe-python to 2022.03.0 (#68424) 2022-03-20 18:19:32 +01:00
Marc Mueller 3b798ee14a Fix pip_check (#68421) 2022-03-20 16:29:50 +01:00
Poltorak Serguei 972afc5cea Add Cover to Z-Wave.Me integration (#68233)
* Cover integration

* isort fix

* Update homeassistant/components/zwave_me/cover.py

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

* Update cover.py

* Update cover.py

* Apply suggestions from code review

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

* coveragerc for cover

* Fix position range

* Clean up

Co-authored-by: Dmitry Vlasov <kerbalspacema@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-20 14:50:16 +01:00
Jesse Hills 994ea04c85 Add device_id into ESPHome event data (#68408) 2022-03-20 13:14:07 +01:00
J. Nick Koston 6ffef8373b Add shutdown guard to Recorder pool in case there is no connection (#68407) 2022-03-20 01:28:44 -10:00
J. Nick Koston 3150915cb7 Convert unindexed domain queries to entity_id queries (#68404) 2022-03-20 01:28:17 -10:00
J. Nick Koston 816695cc96 Avoid selecting attributes in the history api when no_attributes is passed (#68352) 2022-03-19 23:47:22 -10:00
Garrett a0a96dab05 Add door locks to Subaru integration (#52852)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-19 23:41:53 -10:00
Marc Mueller e09d0b7106 Fix CI file changed filter (#68351) 2022-03-20 10:32:10 +01:00
Erik Montnemery cf4033b1bc Simplify time zone setting in tests (#68330)
* Simplify timezone setting in tests

* Fix typo

* Adjust caldav tests

* Adjust input_datetime tests

* Adjust time_date tests

* Adjust tod tests

* Adjust helper tests

* Adjust recorder tests

* Adjust risco tests

* Adjust aemet tests

* Adjust flux tests

* Adjust forecast_solar tests

* Revert unnecessary change in forecast_solar test

* Adjust climacell tests

* Adjust google tests

* Adjust sensor tests

* Adjust sonarr tests

* Adjust template tests

* Adjust zodiac tests

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-20 10:25:15 +01:00
James Hodgkinson dbeec1f7da Update pyaussiebb to 0.0.14 (#68293) 2022-03-20 07:35:34 +01:00
J. Nick Koston 0c0df07c52 Avoid hashing attributes when they are already in the cache (#68395) 2022-03-19 23:33:37 -07:00
Paulus Schoutsen a91888a7f8 Don't use hass.helpers (#68393) 2022-03-19 11:39:32 -10:00
Álvaro Fernández Rojas f1f48475f2 Add Airzone coordinator tests (#68384) 2022-03-19 11:34:52 -10:00
Paulus Schoutsen ead81edcec Handle Hue discovery errors (#68392) 2022-03-19 14:28:16 -07:00
J. Nick Koston 7ee647cc78 Fix FOREIGN KEY constraint failed when removing state_attributes (#68364) 2022-03-19 14:21:28 -07:00
J. Nick Koston fed447a3f4 Filter IPv6 addreses from enphase_envoy discovery (#68362) 2022-03-19 13:40:00 -07:00
Felipe Martins Diel 0df88b80e7 Bump broadlink to 0.18.1 (#68391) 2022-03-19 10:34:30 -10:00
Marcel van der Veldt 8187541d41 Hue integration: update errors that should be supressed (#68337) 2022-03-19 13:27:04 -07:00
Allen Porter 5027e1bcff Mark stream available on idle timeout (#68380)
Mark stream as available on idle timeout so that the frontend can
still interact with it. In particular, the Frontend won't interact
with camera objects that are not available e.g. from picture glance
card.

Issue #67922
2022-03-19 10:24:32 -07:00
Raman Gupta 8220817d47 Switch zwave_js redact keys from tuple to set (#68375) 2022-03-19 16:26:44 +01:00
Franck Nijhof cca0ecc5da Update sentry-sdk to 1.5.8 (#68367) 2022-03-19 16:18:35 +02:00
Marc Mueller 126320529e Add zha typing [core.discovery] (1) (#68359)
* Add zha typing [core.discovery] (1)

* Fix circular import
2022-03-19 07:37:04 -04:00
Franck Nijhof ce30b32add Update pytest to 7.1.1 (#68366) 2022-03-19 12:14:05 +01:00
Scott Bradshaw b160931603 Bump python-smarttub dependency to 0.0.30 (#68356) 2022-03-19 10:45:18 +01:00
Raman Gupta 4cd4fbefbf Add new tomorrow.io integration to replace Climacell (#68156)
* Add new tomorrow.io integration to replace Climacell - Part 1/3 (#57121)

* Add new tomorrow.io integration to replace Climacell - Part 1/3

* remove unused code

* remove extra test

* remove more unused code

* Remove even more unused code

* Feedback

* clean up options flow

* clean up options flow

* tweaks and fix tests

* remove device_class from tomorrowio entity description class

* use timestep

* fix tests

* always use default name but add zone name if location is in a zone

* revert change that will go into future PR

* review comments

* move code out of try block

* bump max requests to 500 as per docs

* fix tests

* Add new tomorrow.io integration to replace Climacell - Part 2/3 (#57124)

* Add new tomorrow.io integration to replace Climacell - Part 2/3

* translations

* set config flow to false in manifest

* Cleanup more code and re-add options flow test

* fixes

* patch I/O calls

* Update tests/components/climacell/test_config_flow.py

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

* remove unused import

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

* Fix codeowners

* fix mypy and pylint

* Switch to DeviceInfo

* Fix fixture location and improve sensor entities in tomorrowio integration (#63527)

* Add new tomorrow.io integration to replace Climacell - Part 3/3 (#59698)

* Switch to DeviceInfo

* Add new tomorrow.io integration to replace Climacell - Part 1/3 (#57121)

* Add new tomorrow.io integration to replace Climacell - Part 1/3

* remove unused code

* remove extra test

* remove more unused code

* Remove even more unused code

* Feedback

* clean up options flow

* clean up options flow

* tweaks and fix tests

* remove device_class from tomorrowio entity description class

* use timestep

* fix tests

* always use default name but add zone name if location is in a zone

* revert change that will go into future PR

* review comments

* move code out of try block

* bump max requests to 500 as per docs

* fix tests

* Migrate ClimaCell entries to Tomorrow.io

* tweaks

* pylint

* Apply fix from #60454 to tomorrowio integration

* lint and mypy

* use speed conversion instead of distance conversion

* Use SensorDeviceClass enum

* Use built in conversions and remove unused loggers

* fix requirements

* Update homeassistant/components/tomorrowio/__init__.py

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

* Use constants

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

* Black

* Update logic and add coverage

* remove extra line

* Do patching correctly

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-19 08:42:22 +01:00
Raman Gupta 4578de68e7 Redact data from zwave_js diagnostics (#68348)
* Redact home ID and location from zwave_js diagnostics

* Switch to set
2022-03-19 02:46:01 -04:00
Michael Kowalchuk e0b577f8bd Add zwave_js fan preset modes and enable them for Inovelli LZW36 (#60947)
* Rework fan data templates to support preset modes, and define data for the Inovelli LZW36

* Add tests. Add dispatching to async_set_preset_mode in async_turn_on.

* Add a test case for invalid preset modes

* Remove unintended merge artifact

* Fix indentation

* Fix merge error

* rm blank line

* Add tests for invalid fan config data, and fix an issue where this prevented the node from being added.

* Fix tests and improve error handling
2022-03-19 03:56:05 +01:00
Marc Mueller f9dcf5afa2 Add zha typing [core.group] (#68350) 2022-03-18 22:08:19 -04:00
Franck Nijhof 171c58fed2 Rename Lovelace to Dashboards (#68346) 2022-03-18 23:29:57 +01:00
J. Nick Koston 4cc8998ea7 Make powerwall attribute sensors their own sensors (#68345) 2022-03-18 21:23:26 +01:00
Robert Hillis 619c1f014b Remove deprecated yaml config from trafikverket_weatherstation (#68336) 2022-03-18 19:33:01 +01:00
Marc Mueller ffcc02e93d Add zha typing [api] (2) (#68335) 2022-03-18 19:06:44 +01:00
jjlawren dbb79e2937 Add support for Sonos subwoofer gain controls (#68334) 2022-03-18 10:12:10 -07:00
Franck Nijhof 7174e7897c Update mypy to 0.941 (#68305) 2022-03-18 16:22:32 +01:00
J. Nick Koston 9864090e0b Cache parsing attr in LazyState (#68232) 2022-03-18 07:44:37 -07:00
Allen Porter 41a032e3e3 Add diagnostics to stream's Stream objects (#68020)
* Add diagnostics to stream's Stream objects

Add diagnostics key/value pair to the Stream object. Diagnostics support
in camera integration will be added in a follow up and will access the
diagnostics on the Stream object, similar to the examples in the unit
test.

* Rename to audio/video codec

* Fix test codec names

* Update tests/components/stream/test_worker.py

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

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
2022-03-18 07:40:09 -07:00
Franck Nijhof 2686be921c Remove deprecated (old) Z-Wave integration (#67221)
* Remove deprecated (old) Z-Wave integration

* Mark migration tests as skip, for later cleanup
2022-03-18 13:09:10 +01:00
Simone Chemelli 35261a9089 Add switch platform to UptimeRobot (#65394)
* Add switch platfor mto UptimeRobot

* Add tests

* Apply review comment

* review comments part 2

* review comments part 3

* Fix tests after swapping logic on/off

* Fix reauth test

* Check for read-only key

* Fix reauth for switch platform

* mypy

* cleanup

* cleanup part 2

* Fixes + review comments

* Tests

* Apply more review comments

* Required changes

* fix test

* Remove if

* 100% tests coverage

* Check readonly key in config_flow

* Fix strings & translation

* Add guard for 'monitor' keys

* allign tests

* Wrong API key message reworded
2022-03-18 12:18:19 +01:00
Erik Montnemery 5bb271c9fb Add config flow for derivative sensor (#68268) 2022-03-18 12:14:38 +01:00
J. Nick Koston b284eddc63 Fix statistics doing I/O in the event loop (#68315) 2022-03-18 00:49:11 -10:00
J. Nick Koston 9215702388 Separate attrs into another table (reduces database size) (#68224) 2022-03-18 00:23:13 -10:00
Erik Montnemery d7145095ef Tweak selectors (#68267)
* Optionally don't convert output of duration and time selectors

* Allow number selector selection to be None

* Never convert output of duration and time selectors

* Revert "Allow number selector selection to be None"

This reverts commit b6f52c1e83dc287a30c8ef4c2e417dc20b26a1d6.
2022-03-18 10:26:05 +01:00
Erik Montnemery 2fcced333d Add config flow for sun (#68295)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-18 10:12:15 +01:00
J. Nick Koston bc862e97ed Use a dedicated executor pool for database operations (#68105)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-17 23:09:01 -10:00
Erik Montnemery 0655ebbd84 Add config flow for integration sensor (#68288) 2022-03-18 09:52:17 +01:00
epenet f7fd781a27 Fix TypeError in SamsungTV (#68235)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-18 09:26:19 +01:00
Paulus Schoutsen ad1e43e083 Add support for variables on trigger (#68275) 2022-03-18 09:25:22 +01:00
Marc Mueller ad84a02b8e Add zha typing [api] (1) (#68220) 2022-03-18 09:23:52 +01:00
jjlawren 7b38f81040 Bump plexapi to 4.10.1 (#68313) 2022-03-17 22:36:58 -07:00
J. Nick Koston 95f20500ca Commit any pending changes before running non-EventTasks in the recorder (#68287) 2022-03-17 21:33:22 -07:00
Dave T 490c921763 Don't access hass.data directly in generic camera test. (#68316) 2022-03-17 14:29:21 -10:00
Zack Barett 712c9d4a4f Bump frontend to 20220317.0 (#68314) 2022-03-17 16:12:31 -07:00
Steven Looman f006cffac6 Bump async-upnp-client to 0.27.0 (#68310) 2022-03-17 12:32:46 -10:00
jjlawren b34da1294c Improve Plex media search failure feedback (#67493) 2022-03-17 13:57:22 -07:00
jjlawren f75d621888 Normalize enqueuing Plex media on Sonos (#68132) 2022-03-17 13:52:59 -07:00
Malte Franken a8dae97917 Migrate geo_json_events to async library (#68236)
* use async integration library

* migrating to async library

* migrating tests to async library

* renamed method and fixed comment

* removed callback annotation

* use async dispatcher
2022-03-17 20:40:43 +01:00
epenet 0adc7042dc Make new_token_callback more generic in SamsungTV (#67990)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-17 09:24:00 -10:00
Avi Miller 9ea73e0d90 Skip unsupported LIFX Switches during discovery (#67726)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-17 19:13:08 +01:00
Marc Mueller 8f69d31322 Make TypeVars private (3) (#68207) 2022-03-17 19:11:14 +01:00
Marc Mueller eae0c75620 Make TypeVars private (2) (#68206) 2022-03-17 19:09:55 +01:00
Marc Mueller be7ef6115c Make TypeVars private (1) (#68205) 2022-03-17 18:52:38 +01:00
gigatexel a9c383a1e5 Correct naming for electrical energy meter (#68290) 2022-03-17 18:50:18 +01:00
Erik Montnemery ead5b3e2c0 Improve strings for helper flow scaffold (#68257) 2022-03-17 13:14:38 +01:00
Marc Mueller 81d001bcdc Remove duplicate (partial) pytest job (#68221) 2022-03-17 12:57:36 +01:00
Joakim Plate 6069d26800 Rename root media folder to integration name (#68213) 2022-03-17 11:13:46 +01:00
Joakim Plate 4e21757b75 Rename root node to integration name (#68214) 2022-03-17 11:13:03 +01:00
Myles Eftos 38d8332e92 Add amberelectric price descriptors (#67981)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-17 10:15:47 +01:00
wchan-ranelagh fc693001a1 Change default timeout for operations in SNMP component (#68230) 2022-03-17 10:10:46 +01:00
Paulus Schoutsen aabfa08834 Add if subscription is active to cloud status (#68266) 2022-03-17 09:51:07 +01:00
epenet d021222d6d Bump renault-api to 0.1.10 (#68260)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-17 09:51:03 +02:00
epenet d6f5f0c794 Bump samsungtvws to 2.4.0 (#68225)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-16 20:44:14 -10:00
Zack Barett 3ecc914f29 20220316.0 (#68276) 2022-03-16 16:40:24 -07:00
Raman Gupta 15d9233c77 Bump PyNaCl to 1.5.0 (#68226) 2022-03-16 23:30:04 +01:00
Paulus Schoutsen f6af93ae35 Add support for menu step (#68203) 2022-03-16 14:14:50 -07:00
d6e aa57907c18 Improve logging for Discord integration (#68160) 2022-03-16 21:16:38 +01:00
jjlawren d8c966fd0a Fix Spotify podcasts & Plex allow_multiple on Sonos (#68131)
* Bump soco to 0.27.0

* Bump soco to 0.27.1
2022-03-16 17:35:31 +01:00
Hans Oischinger 2c8bf006eb Fix precision of vicare target & current temperature (#66456) 2022-03-16 13:14:11 +01:00
Erik Montnemery f0dba8ec70 Add scaffold for helper integration config flow (#67803) 2022-03-16 12:57:56 +01:00
Franck Nijhof aa82f96c16 Use Platform StrEnum in Hassfest manifest plugin (#68234) 2022-03-16 11:21:51 +01:00
Álvaro Fernández Rojas 62c4fed549 Update aioairzone to v0.1.0 (#68194) 2022-03-16 10:44:06 +01:00
Paulus Schoutsen 984e30075b Validate TTS base url (#68212)
* Validate TTS base url

* Update tests/components/tts/test_init.py

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

Co-authored-by: Joakim Plate <elupus@ecce.se>
2022-03-16 10:18:55 +01:00
Francois Chagnon 21aa07e3e5 Add Z-Wave thermostat fan entity (#65865)
* Add Z-Wave thermostat fan entity

* Fix failing test, increase number of entities to 27

* Add tests to improve coverage

* Take back unrelated changes to climate.py

* Clean up guard clauses, use info.primary_value, and make entity disabled by default

* Fix tests

* Add more tests for code coverage

* Remove unused const

* Remove speed parameter from overridden method since it was removed from entity

* Address PR comments
2022-03-15 22:17:51 -04:00
J. Nick Koston 4b963c2ac0 Add diagnostics support to nexia (#68215) 2022-03-15 15:55:08 -10:00
Jeef 484f723875 IntelliFire Diagnostic Error Sensor (#67403)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-15 12:52:19 -10:00
Joakim Sørensen 6f61ed8799 Add backup platform support (#68182) 2022-03-15 14:46:02 -07:00
Antonio Larrosa 2aaeb1fa99 Fix finding matrix room that is already joined (#67967)
After some debugging, it seems room.canonical_alias contains the
room alias that matches the room_id_or_alias value but is not
contained in room.aliases (which is empty). As a result, the
matrix component thought the room wasn't alread joined, joins
again, and this replaces the previous room which had the listener.
This resulted in the component callback not being called for new
messages in the room.

This fixes #66372
2022-03-15 22:33:59 +01:00
J. Nick Koston 65c670c2c7 Add diagnostics to august (#68157) 2022-03-15 19:05:56 +01:00
Franck Nijhof ed24638201 Update SMA config entry when unique ID already configured (#68179) 2022-03-15 19:51:33 +02:00
Robert Svensson 4bb52297a6 Replace hass helper calls in deCONZ device trigger tests (#68197) 2022-03-15 18:51:12 +01:00
Erik Montnemery 46f27fdefd Don't prevent automations from triggering themselves (#68178) 2022-03-15 18:48:54 +01:00
Erik Montnemery b99934f62f Small tweaks of group tests (#68196) 2022-03-15 18:39:18 +01:00
Erik Montnemery f026245cb4 Small tweaks of switch_as_x tests (#68195) 2022-03-15 18:34:46 +01:00
Robert Hillis 0c4efae31f Clean up twitch (#67595) 2022-03-15 18:33:16 +01:00
leranp 668e0c19a2 Bump gTTS to 2.2.4 (#68180)
* Update gTTS to 2.2.4

* ADD Hebrew language

* Update requirements_all.txt

* Update requirements_test_all.txt

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-03-15 19:23:39 +02:00
Franck Nijhof c5a8e9d59c Update opensensemap-api to 0.2.0 (#68193) 2022-03-15 19:14:07 +02:00
Erik Montnemery d360ac91ca Disable recorder nightly jobs in tests (#68188) 2022-03-15 09:23:52 -07:00
Erik Montnemery 34eb4aa2d0 Exclude hidden entities from targets (#68149) 2022-03-15 08:42:22 -07:00
Erik Montnemery 8ea31cea3a Fix deadlock when stopping queued script (#68175) 2022-03-15 08:29:04 -07:00
Marc Mueller cdd23abea7 Add missing await [velbus] (#68153) 2022-03-15 15:57:36 +01:00
Marc Mueller aabf46b1b3 Fix point by adding authlib constraint (#68176)
* Fix point by pinning authlib

* Use constraint
2022-03-15 15:56:08 +01:00
Marc Mueller db4b69663f Fix met TypeVar usage (#68152)
* Fix met TypeVar usage

* Change format_condition
2022-03-15 15:53:40 +01:00
Erik Montnemery 1a27025793 Prevent spawning script runs when shutting down (#68170) 2022-03-15 12:46:58 +01:00
Franck Nijhof f7cb10e2f5 Update twentemilieu to 0.6.0 (#68171) 2022-03-15 12:05:15 +01:00
Franck Nijhof fabcdf7498 Update flake8-comprehensions to 3.8.0 (#68164) 2022-03-15 11:06:13 +01:00
Numa Perez fa1394ff47 Fix lyric climate (#67018)
* Fixed the issues related to auto mode

I was having the same issues as described in #63403, specifically, the error stating that Mode 7 is not valid, only Heat, Cool, Off when trying to do anything while the thermostat is set to Auto. This error originates with the way the Lyric API handles the modes. Basically, when one queries the changeableValues dict, you get a mode=Auto, as well as a heatCoolMode, which is set to either Heat, Cool, Off. Per the documentation, heatCoolMode contains the "heat cool mode when system switch is in Auto mode". It would make sense that when changing the thermostat settings, mode=Auto should be valid, but it's not. The way the API understands that the mode should be set to Auto when changing the thermostat settings is by setting the autoChangeoverActive variable to true, not the mode itself. This require changes in the async_set_hvac_mode, async_set_temperature, and async_set_preset_mode functions. Related to this issue, I got rid of the references to hasDualSetpointStatus, as it seems that it always remains false in the API, even when the mode is set to auto, so again, the key variable for this is autoChangeoverActive.

While I was working on this I also noticed another issue. The support flag SUPPORT_TARGET_TEMPERATURE_RANGE had not been included, which did not allow for the temperature range to be available, thus invalidating the target_temperature_low and target_temperature_high functions. I added this flag and sorted out which set point (heat vs cool) should be called for each of them so things work as expected in Lovelace. I have tested all of these functionalities and they all work great on my end, so I thought I'd share.

* Update climate.py

* Update climate.py

Fixed two additional issues: 1) When the system is turned off from Auto, the heatCoolMode variable becomes 'Off', so when you try to restart the system back to Auto, nothing happens. 2) I now prevent the async_set_temperature function from being called with a new set point when the system is Off.
All changes tested and functional.

* Update climate.py

* Update climate.py

Return SUPPORT_PRESET_MODE flag only for LCC models (i.e. they have the "thermostatSetpointStatus" variable defined). TCC models do not support this feature

* Update climate.py

After playing with the official Honeywell API, I realized it doesn't like to received commands with missing data, i.e., it always wants to get a mode, coolSetpoint, heatSetpoint, and autoChangeoverActive variables. This was causing some random issues with changing modes, especially from coming from off, so I modified the async_set_temperature, and async_set_hvac_mode fuctions to always send all pertinent variables.

* Update climate.py

* Update climate.py

* Update climate.py

* Update climate.py

* Clean code and test everything

Alright, sorry for the multiple commits, fixing this properly took a fair bit of testing. I went ahead and cleaned up the code and made the following big picture changes: 
1) The integration now supports the Auto mode appropriately, to include the temperature range. 
2) There's a bug that actually manifests when using the native app. When the system is 'Off' and you try to turn it on to 'Auto', it will turn on briefly but will go back to 'Off' after a few seconds. When checking the web api, this appears to be related to the fact that the heatCoolMode variable seems to continue to store 'Off', even if the mode accurately displays 'Auto', and the autoChangeoverActive=True. So to overcome that inherent limitation, when the system is 'Off' and the user turns it to 'Auto', I first turn it to Heat, wait 3 seconds, and then turn it to 'Auto', which seems to work well.

* Update climate.py

* Fixed errors

* Fixed comments that were resulting in error.

* Update climate.py

* Update homeassistant/components/lyric/climate.py

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

* Update homeassistant/components/lyric/climate.py

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

* Update climate.py

I removed a blank line in 268 and another one at the end of the document. I also fixed the outdents of await commands after the _LOGGER.error calls, not sure what else may be driving the flake8 and black errors. Any guidance is much appreciated @MartinHjelmare

* Update climate.py

* Update climate.py

corrected some indents that I think were the culprit of the flake8 errors

* Update climate.py

I used VS Code to fix locate the flake8 errors. I ran black on it, so I'm hoping that will fix the last lingering black error.

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-15 10:59:18 +01:00
Robert Svensson 283f4555a4 Fix deconz typing (#68143) 2022-03-15 10:51:26 +01:00
Marc Mueller 376ac1bd83 Don't import TypeVars from core modules (#68154) 2022-03-15 09:30:55 +01:00
Marc Mueller 7ab9e5cf0f Improve sonos error decorator typing (#67199) 2022-03-15 09:24:52 +01:00
Tom 66f506557f Prevent adding plugwise products used as secondary controllers (#68098)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-03-15 08:53:53 +01:00
Per Öberg 7615f138d9 Clean up code for onewire config flow (#67970)
* Change debug level of integration reload after config update to debug

* Remove extra .keys() call for dict itreation

* Remove unecessary type check

* Remove unused LOGGER reference
2022-03-15 08:26:54 +01:00
Marc Mueller ef71ab04ad Remove unused TypeVars (#68155) 2022-03-15 08:24:13 +01:00
epenet 125ab5eb2b Handle ConnectionClosed in SamsungTV try_connect (#68125)
* Handle ConnectionClosed in SamsungTV try_connect

* Add tests

* Add quotes around the error message

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-15 08:20:24 +01:00
Paulus Schoutsen b1153720c0 Merge pull request #68159 from home-assistant/rc 2022-03-15 00:11:48 -07:00
Allen Porter 7876ffe9e3 Update google calendar integration with a config flow (#68010)
* Convert google calendar to config flow and async

* Call correct exchange method

* Fix async method and reduce unnecessary diffs

* Wording improvements

* Reduce unnecessary diffs

* Run load/update config from executor

* Update homeassistant/components/google/calendar.py

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

* Remove unnecessary updating of unexpected multiple config entries.

* Remove unnecessary unique_id checks

* Improve readability with comments about device code expiration

* Update homeassistant/components/google/calendar.py

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

* Update homeassistant/components/google/calendar.py

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

* Update homeassistant/components/google/api.py

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

* Add comment for when code is none on timeout

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-15 07:51:02 +01:00
Franck Nijhof 27d275e6f7 Fix Efergy tests (#68086) 2022-03-14 23:22:59 -07:00
Paulus Schoutsen 1191c095f8 Bumped version to 2022.3.5 2022-03-14 22:46:08 -07:00
Jan Bouwhuis b86d115764 Fix MQTT false positive deprecation warnings (#68117) 2022-03-14 22:45:53 -07:00
Frank 479a230da7 Update home_connect to 0.7.0 (#68089) 2022-03-14 22:45:52 -07:00
J. Nick Koston 7aecd69e3b Bump pyisy to 3.0.5 (#68069)
* Bump pyisy to 3.0.4

- Fixes #66003

- Changelog: https://github.com/automicus/PyISY/compare/v3.0.1...v3.0.4

* again
2022-03-14 22:45:52 -07:00
Sean Vig 69587dd50a Bump amcrest version to 1.9.7 (#68055) 2022-03-14 22:45:51 -07:00
Christopher Thornton 6d8bd6af4d Default somfy_mylink shade's _attr_is_closed to None (#68053)
The base `Cover` entity requires an explicit value for
`_attr_is_closed`.

Since the `SomfyShade` is an assumed state, we don't know
by default whether the shade is open or not, so we need to
explicitly return `None` for `_attr_is_closed`
2022-03-14 22:45:50 -07:00
Shay Levy 31b19e09b5 Fix Shelly EM/3EM invalid energy value after reboot (#68052) 2022-03-14 22:45:49 -07:00
Sean Vig a42ba9e10a Fix turning amcrest camera on and off (#68050) 2022-03-14 22:45:49 -07:00
J. Nick Koston a285478cf8 Filter IPv6 addresses from doorbird discovery (#68031) 2022-03-14 22:45:48 -07:00
Benjamin 4988c4683c Bump volkszahler to 0.3.2 (#67958)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-15 00:33:08 +01:00
Erik Montnemery f134219c74 Minor tweak of config entity_registry test (#68141) 2022-03-14 23:07:52 +01:00
J. Nick Koston 9d6e1ab0e5 Ensure flux_led is reloaded when the title changes (#68146) 2022-03-14 22:55:52 +01:00
J. Nick Koston 59c4c75915 Ensure WiZ is reloaded on title change (#68147) 2022-03-14 22:52:27 +01:00
Paulus Schoutsen a9fd744247 Add media source support to unifiprotect (#67570) 2022-03-14 10:16:22 -10:00
Erik Montnemery 7fc0ffd5c5 Restore state of trigger based template binary sensor (#67538) 2022-03-14 12:28:55 -07:00
Franck Nijhof 86abb85efa Update pytest-xdist to 2.5.0 (#68135) 2022-03-14 20:17:36 +01:00
Paulus Schoutsen a109889f13 Add media source support to openhome (#67566) 2022-03-14 12:14:21 -07:00
Erik Montnemery 314175135f Hide switch_as_x tracked entity (#67949)
* Hide switch_as_x tracked entity

* Hide wrapped switch during config flow

* Allow setting/getting entity disabled by via WS

* Adjust tests

* Improve test coverage

* Improve tests
2022-03-14 19:39:07 +01:00
J. Nick Koston 8a8d7741d5 Fix Magic Home devices with multiple network interfaces (#68029) 2022-03-14 19:38:54 +01:00
Gido 0e602dd390 Bump Rova to 0.3.0 (#67688) 2022-03-14 19:37:34 +01:00
Robert Svensson bff91b170f Complete typing of some platforms of deCONZ integration (#67494) 2022-03-14 19:34:05 +01:00
Shay Levy 2a538f6ae1 Downgrade SSDP failed to setup listener warning to debug (#68129) 2022-03-14 19:14:45 +01:00
Franck Nijhof ed6466f706 Add Lock platform to Switch as X (#68123)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-14 10:45:45 -07:00
Zack Barett c95d55e6d6 20220301.2 (#68130) 2022-03-14 10:07:58 -07:00
Robert Svensson 4506d45345 Add typing of deconz_event (#67497) 2022-03-14 17:40:58 +01:00
Mike Fugate 1bb0f52814 Set isolated_build = True for tox (#67238) 2022-03-14 17:38:40 +01:00
Robert Svensson 362191a0e6 Add typing of deCONZ device_trigger (#67496) 2022-03-14 17:37:48 +01:00
Sean Vig 38306417ad Bump amcrest version to 1.9.7 (#68055) 2022-03-14 17:36:16 +01:00
Franck Nijhof 57c33a5cf0 Remove deprecated OpenZWave integration (#68054) 2022-03-14 17:33:04 +01:00
epenet c0860931b3 Fix WebSocketTimeoutException in SamsungTV (#68114)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-14 09:32:14 -07:00
Franck Nijhof 344537d0a8 Add Fan platform to Switch as X (#68122) 2022-03-14 15:07:21 +01:00
Franck Nijhof ed6c86a281 Add siren platform to Switch as X (#68118)
* Add siren platform to Switch as X

* Clarify inline test documentation

* Clarify inline test documentation
2022-03-14 13:55:06 +01:00
Jan Bouwhuis c8fb86a8ed Fix MQTT false positive deprecation warnings (#68117) 2022-03-14 12:39:44 +01:00
Franck Nijhof c70c699af0 Add cover platform to Switch as X (#68107) 2022-03-14 11:59:55 +01:00
Franck Nijhof 6aacaa744e Only create WLED current sensors when available (#68116) 2022-03-14 11:49:16 +01:00
Franck Nijhof a29afc3731 Clean up Whois tests use entity_registry_enabled_by_default fixture (#68113) 2022-03-14 11:41:56 +01:00
Franck Nijhof fb703ddc5d Update pyupgrade to v2.31.1 (#68110) 2022-03-14 11:36:34 +01:00
Franck Nijhof 6b36ada4ec Update pytest to 7.1.0 (#68108) 2022-03-14 11:35:19 +01:00
Franck Nijhof dfdf5f2583 Add fixture for enabling disabled entities in WLED tests (#68087) 2022-03-14 09:50:55 +01:00
Jeef cea21a00b3 Add intellifire UDP discovery at configuration start (#67002)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-13 20:58:55 -10:00
G Johansson 8e76948297 Add binary_sensor platform for Sensibo (#68088) 2022-03-13 20:58:34 -10:00
J. Nick Koston b18096fc54 Remove unused columns from states/events tables (#68078) 2022-03-13 23:44:55 -07:00
G Johansson a6c189b450 Add Pure devices to Sensibo (#67695) 2022-03-13 14:30:37 -10:00
GitHub Action 65821f9492 [ci skip] Translation update 2022-03-14 00:21:06 +00:00
Franck Nijhof 276d795bf7 Remove unused types for emoji (#68091) 2022-03-14 00:10:40 +02:00
Dmitry Kosenkov 0b1663b150 Update slixmpp to 1.8.0.1 (#68080)
fix for python 3.10
2022-03-13 19:40:09 +01:00
Tom b138a759b6 Update plugwise module to 0.16.8 (#68082) 2022-03-13 19:37:59 +01:00
Franck Nijhof cc046e64f5 Update freezegun to 1.2.0 (#68090) 2022-03-13 19:36:36 +01:00
Franck Nijhof 25f2e4bd99 Small improvements for Switch as X (#68079)
* Small improvements forr Switch as X

* Test improvements

* Remove intregration tests from config flow test
2022-03-13 19:34:02 +01:00
Mike Fugate 4ea921e57a Clean up SleepIQ migration (#68092) 2022-03-13 17:27:45 +01:00
J. Nick Koston bfb8765752 Bump pyisy to 3.0.5 (#68069)
* Bump pyisy to 3.0.4

- Fixes #66003

- Changelog: https://github.com/automicus/PyISY/compare/v3.0.1...v3.0.4

* again
2022-03-13 16:33:55 +02:00
Franck Nijhof c35aaef980 Fix Efergy tests (#68086) 2022-03-13 16:32:56 +02:00
Frank 334fa33fab Update home_connect to 0.7.0 (#68089) 2022-03-13 16:31:57 +02:00
Franck Nijhof 693e9caa32 Update wled to 0.13.1 (#68084) 2022-03-13 14:03:52 +02:00
Franck Nijhof f5e43d99e4 Update google-cloud-texttospeech to 2.11.0 (#68076) 2022-03-12 22:54:41 -10:00
Franck Nijhof 89cf914d3f Update sentry-sdk to 1.5.7 (#68077) 2022-03-12 22:54:23 -10:00
Franck Nijhof 36acb09cae Update sqlalchemy to 1.4.32 (#68075) 2022-03-12 22:52:47 -10:00
Franck Nijhof cd3f931ded Add base entity to Switch as X (#68057) 2022-03-13 00:04:00 -08:00
Christopher Thornton 4ea0f7d321 Default somfy_mylink shade's _attr_is_closed to None (#68053)
The base `Cover` entity requires an explicit value for
`_attr_is_closed`.

Since the `SomfyShade` is an assumed state, we don't know
by default whether the shade is open or not, so we need to
explicitly return `None` for `_attr_is_closed`
2022-03-13 08:46:35 +01:00
Allen Porter d4d47faabb Update google-cloud-pubsub to 2.11.0 (#68074) 2022-03-13 08:04:08 +01:00
Brandon Rothweiler 0bd65db31c Add switch platform to the Mazda integration (#68025) 2022-03-12 16:32:35 -10:00
GitHub Action c64b4d997b [ci skip] Translation update 2022-03-13 00:18:58 +00:00
Steve Easley a2ce395fc6 Add remote platform to Kaleidescape integration (#67959) 2022-03-12 14:10:45 -10:00
Paulus Schoutsen a911139c08 Bump frontend to 20220312.0 (#68061) 2022-03-12 15:05:31 -08:00
Mike Fugate e59bf4f3af Migrate SleepIQ unique IDs that are using sleeper name instead of sleeper ID (#68062) 2022-03-12 12:54:26 -10:00
Paulus Schoutsen a902f0ee53 Fix switch light adding itself to devices (#68060) 2022-03-12 13:53:40 -08:00
J. Nick Koston ea6da674df Remove unneeded permissions check from subscribe entities (#68044) 2022-03-12 13:30:27 -08:00
G Johansson 03a155af83 Add sensors to Sensibo for motion sensor (#67748) 2022-03-12 10:45:24 -10:00
Shay Levy eccf8c76fd Fix Shelly EM/3EM invalid energy value after reboot (#68052) 2022-03-12 22:21:45 +02:00
Mike Fugate 6831be67f4 Add number entities to control SleepIQ actuator positions (#67770) 2022-03-12 09:58:03 -10:00
J. Nick Koston 8e3454e46a Remove legacy compatiblity for camera platforms that do not support width/height (#68039)
- async_camera_image or camera_image must accept the width and
  height arguments
2022-03-12 20:47:14 +02:00
Sean Vig 6124081ddc Fix turning amcrest camera on and off (#68050) 2022-03-12 20:42:28 +02:00
Jesse Hills de31e576b7 Bump python-juicenet to 1.1.0 (#67992) 2022-03-12 19:52:41 +02:00
Shay Levy 083d51a727 Cleanup - move Shelly logger to const (#68046) 2022-03-12 14:43:57 +02:00
jan iversen 1a79118600 Fix modbus reload service (#68040)
* Fix modbus reload service.

* Please coverage.

* Resolve difference between local pytest and github.
2022-03-12 14:12:38 +02:00
J. Nick Koston a851921fe6 Filter IPv6 addresses from doorbird discovery (#68031) 2022-03-12 02:09:02 -10:00
J. Nick Koston 68310a426b Small code quality improvements for subscribe_entities (#68026) 2022-03-12 02:07:01 -10:00
Franck Nijhof 0070e27c04 Remove deprecated PCAL9535A I/O Expander integration (#67274) 2022-03-12 04:05:22 -08:00
Franck Nijhof 2bb5573ddc Remove deprecated PiFace Digital I/O (PFIO) integration (#67282) 2022-03-12 04:04:46 -08:00
Davor Val Vega d41eeaa88b Add Home Connect pre-rinse capability for a dishwasher (#63536) 2022-03-12 12:38:43 +01:00
Franck Nijhof 0467dc55fe Add config flow to Uptime (#67408) 2022-03-12 12:36:08 +01:00
epenet 23b8229143 Adjust ms.remote.control error logging in SamsungTV (#67988)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-12 01:20:04 -10:00
J. Nick Koston 0d8f649bd6 Websocket api to subscribe to entities (payloads reduced by ~80%+ vs state_changed events) (#67891) 2022-03-11 20:54:49 -08:00
Robert Svensson 6526b4eae5 Add typing to deconz_device (#67501) 2022-03-11 20:35:25 -08:00
Hmmbob c8351387d7 Print client error in rest_command (#67900) 2022-03-11 20:34:06 -08:00
Joakim Sørensen c5800d6103 Split out sync functions in backup manager (#67428) 2022-03-11 20:32:05 -08:00
J. Nick Koston d3deae6288 Fix typing on Context.user_id (#68019) 2022-03-11 20:31:03 -08:00
Robert Hillis 09944d936d Clean up Efergy (#67755)
* Clean up Efergy

* tweak
2022-03-11 20:29:18 -08:00
Joakim Plate 09a85d2a5d Add basic rfxtrx diagnostics (#67671)
* Add basic rfxtrx diagnostics

* Skip diagnostics for coverage
2022-03-11 20:27:08 -08:00
starkillerOG 03ec77fb62 Motion blinds support direct wifi blinds (#67372)
* bump motionblinds to 0.6.0

* fix unknown type

* fix name for wifi direct blinds

* push motionblinds to 0.6.1

* fix RSSI sensor

* Do not add singnal sensor twice for direct WiFi blinds

* fix device registry

* fix typo

* missing import

* fix styling

* fix spelling
2022-03-11 20:13:46 -08:00
Brandon Rothweiler 5d2a65bb21 Add binary sensors to Mazda integration (#64604) 2022-03-11 16:32:47 -10:00
G Johansson c4b3e2b9cd Add select entity to Sensibo (#67741) 2022-03-11 16:23:24 -10:00
Paulus Schoutsen 898af3e04c Merge pull request #68001 from home-assistant/rc 2022-03-11 17:11:03 -08:00
GitHub Action dc31f420ed [ci skip] Translation update 2022-03-12 00:17:47 +00:00
jjlawren 80ff497cfc Rework available Sonos sources (#67931) 2022-03-11 15:57:57 -08:00
Marc Mueller 41df798375 Bump mypy to 0.940 (#68007) 2022-03-11 15:57:38 -08:00
Diogo Gomes 3de341099f Bump pymediaroom (#68016) 2022-03-11 15:45:40 -08:00
Diogo Gomes 380f04277e Bump pymediaroom (#68016) 2022-03-11 15:45:29 -08:00
jan iversen d2e5c85429 Remove pragma from discover check. (#68002) 2022-03-11 19:58:18 +02:00
Paulus Schoutsen 7fb76c68bb Bumped version to 2022.3.4 2022-03-11 09:25:55 -08:00
Guido Schmitz 7de5e070fb Bump pysabnzbd to 1.1.1 (#67971) 2022-03-11 09:24:50 -08:00
Tom Harris 1bfb01e0d1 Rollback pyinsteon (#67956) 2022-03-11 09:24:50 -08:00
Erik Montnemery ca664ab5a5 Correct local import of paho-mqtt (#67944)
* Correct local import of paho-mqtt

* Remove MqttClientSetup.mqtt class attribute

* Remove reference to MqttClientSetup.mqtt
2022-03-11 09:24:49 -08:00
Franck Nijhof 5a39e63d25 Update radios to 0.1.1 (#67902) 2022-03-11 09:24:48 -08:00
Joakim Plate c608cafebd Make sure blueprint cache is flushed on script reload (#67899) 2022-03-11 09:24:47 -08:00
Shay Levy 07e70c81b0 Fix shelly duo scene restore (#67871) 2022-03-11 09:24:46 -08:00
J. Nick Koston cad397d6a7 Add missing callback decorator to sun (#67840) 2022-03-11 09:24:45 -08:00
Raman Gupta c22af2c82a Bump zwave-js-server-python to 0.35.2 (#67839) 2022-03-11 09:24:45 -08:00
Richard de Boer f5b6d93706 Support playing local "file" media on Kodi (#67832)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-11 09:24:44 -08:00
cheng2wei 28b3edf6b2 Fix discord embed class initialization (#67831) 2022-03-11 09:24:43 -08:00
Guido Schmitz 4de59b065a Bump pysabnzbd to 1.1.1 (#67971) 2022-03-11 09:24:08 -08:00
jan iversen 306498378c Coverage 100% of Modbus climate (#67396)
* Coverage 100% of climate.py

* Allow 100% test.
2022-03-11 19:14:40 +02:00
Artem Draft bc2aaedcec Add DeviceClass TV to LG Netcast (#67999) 2022-03-11 17:59:45 +01:00
Paulus Schoutsen 49b642a6ba Log device IP sending local msg (#67987) 2022-03-11 07:50:44 -08:00
Erik Montnemery 8948bada58 Add switch_as_x entity to wrapped switch's device (#67961) 2022-03-11 09:46:32 +01:00
GitHub Action 66d757115c [ci skip] Translation update 2022-03-11 00:21:48 +00:00
Erik Montnemery e43c8b513e Listen to entity registry events for wrapped switch in switch_as_x (#67962)
* Listen to entity registry events for wrapped switch in switch_as_x

* Simplify test
2022-03-10 21:26:35 +01:00
Thomas Schamm 62e3563752 Bumped to boschshcpy==0.2.30 (#67965) 2022-03-10 20:43:43 +02:00
Erik Montnemery 65fbcfa0ba Prevent recursive script calls from deadlocking (#67861)
* Prevent recursive script calls from deadlocking

* Address review comments, improve tests

* Tweak comment
2022-03-10 19:28:00 +01:00
Erik Montnemery 3d212b868e Address review comments on switch_as_x tests (#67951)
* Address review comments on switch_as_x tests

* Correct test

* Move test instead of duplicating it
2022-03-10 17:23:16 +01:00
Tom Harris 14b5847da8 Rollback pyinsteon (#67956) 2022-03-10 17:50:36 +02:00
Erik Montnemery ee38dbd698 Add helper to set name of helper config entries (#67950) 2022-03-10 16:18:26 +01:00
Erik Montnemery 4e7d4db7ae Align selectors with frontend updates (#67906)
* Align selectors with frontend updates

* Drop metadata from MediaSelector selection

* Adjust blueprint tests

* Address review comments

* Add tests for new selectors

* Don't stringify input

* Require min+max for number selector in slider mode

* vol.Schema does not like static methods

* Tweak
2022-03-10 16:17:59 +01:00
Steve Easley ab4aa835d1 Add sensor platform to Kaleidescape (#67884) 2022-03-10 09:15:53 -06:00
Steve Easley 245f55edf4 Removed unused const (#67932) 2022-03-10 08:30:11 -06:00
epenet 86b775e46a Use generic SamsungTVBridge for SamsungTV type hints (#67942)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-10 07:48:30 -06:00
Erik Montnemery cb7e492e81 Add switch_as_x integration (#67878)
* Add switch_as_x integration

* Address review comments

* Add translation strings

* Rename entity_type option to target_domain

* Move LightSwitch class definition to switch_as_x/light.py

* Update manifest

* Move tests
2022-03-10 12:23:01 +01:00
Erik Montnemery 5ae48bcf74 Add config flow for binary_sensor group (#67802)
* Add config flow for binary_sensor group

* Address review comments

* Remove device class selection from flow

* Update translation strings
2022-03-10 10:39:51 +01:00
Erik Montnemery e5523ef6b6 Correct local import of paho-mqtt (#67944)
* Correct local import of paho-mqtt

* Remove MqttClientSetup.mqtt class attribute

* Remove reference to MqttClientSetup.mqtt
2022-03-10 10:32:49 +01:00
Kevin Stillhammer f803c880ae Correct type for convert_time_to_isodate (#67846) 2022-03-10 07:21:22 +01:00
GitHub Action d0afc31063 [ci skip] Translation update 2022-03-10 00:17:10 +00:00
J. Nick Koston aaeaed4117 Compatibility for "device_state_attributes" which was deprecated in 2021.4 has been removed (#67837)
* Small performance tweaks to _async_write_ha_state

- Only call self.available once per cycle

- Only call self.device_state_attributes once per update cycle

- Do not check for device_state_attributes if extra_state_attributes is not None

* drop backcompat

* remove prop
2022-03-09 21:39:43 +01:00
Álvaro Fernández Rojas 542c3cbf90 Address late Airzone PR comments and fix Fahrenheit temperatures (#67904)
* airzone: address late PR comments

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

* airzone: fix fahrenheit temperatures

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

* airzone: add changes suggested by @MartinHjelmare

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-03-09 20:51:39 +01:00
Marc Mueller cc11562fa2 Bump volvooncall to 0.10.0 (#67918) 2022-03-09 21:31:27 +02:00
Franck Nijhof 9f12ee7b2d Update radios to 0.1.1 (#67902) 2022-03-09 11:22:10 -08:00
Joakim Plate 251691f5b7 Make sure blueprint cache is flushed on script reload (#67899) 2022-03-09 11:21:31 -08:00
Shay Levy eee0c5372c Use import instead of hass in Shelly tests (#67909) 2022-03-09 19:29:20 +01:00
Erik Montnemery e02c21a4de Remove unused constant from group (#67910) 2022-03-09 16:45:09 +01:00
Franck Nijhof a8ad9fc5f4 Mock Radio Browser entry setup in onboarding tests (#67905) 2022-03-09 06:41:14 -08:00
escoand 3dc100e816 Removing myself from Samsung TV codeowners (#67903) 2022-03-09 14:42:00 +01:00
Erik Montnemery e7fba46a06 Refactor helper_config_entry_flow (#67895) 2022-03-09 13:18:19 +01:00
Raman Gupta 2791cd68c2 Timer code cleanup (#67604) 2022-03-09 10:42:07 +01:00
J. Nick Koston 723dcbafca Complete fan speed transition from #59781 (#67743) 2022-03-09 10:38:12 +01:00
Poltorak Serguei c6952a0ee3 Add Siren to Z-Wave.Me integration (#67200)
* Siren integration

* Clean up

Co-authored-by: Dmitry Vlasov <kerbalspacema@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-09 09:09:29 +01:00
cheng2wei 36385396b0 Fix discord embed class initialization (#67831) 2022-03-08 20:01:00 -08:00
Brandon Rothweiler 2fc100926f Add button entities to Mazda integration (#67597) 2022-03-09 04:16:07 +01:00
GitHub Action 6af9c897e4 [ci skip] Translation update 2022-03-09 00:19:01 +00:00
Álvaro Fernández Rojas 8549e31b27 Add Airzone HVAC Zoning Systems (#67666) 2022-03-08 22:28:39 +01:00
epenet 9ab56bd5c8 Allow discovery to update invalid unique_id in SamsungTV (#67859)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 22:27:53 +01:00
Allen Porter 8adcd10f55 Make google calendar loading API centric, not loading from yaml (#67722)
* Make google calendar loading API centric, not loading from yaml

Update the behavior for google calendar to focus on loading calendars based on the
API and using the yaml configuration to override behavior. The old behavior was
to first load from yaml, then also load from the API, which is atypical.

This is pulled out from a larger change to rewrite calendar using async and config
flows.

Tests needed to be updated to reflect the new API centric behavior, and changing
the API call ordering required changing tests that exercise failures.

* Update to use async_fire_time_changed to invoke updates
2022-03-08 21:56:49 +01:00
Shay Levy 98256746d3 Fix shelly duo scene restore (#67871) 2022-03-08 09:56:57 -08:00
Richard de Boer 7323ad2799 Support playing local "file" media on Kodi (#67832)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-08 07:56:15 -08:00
uvjustin accc4fda28 Bump PyAV to v9.0.0 (#67848) 2022-03-08 07:53:17 -08:00
Jan Bouwhuis e574a3ef1d Add MQTT notify platform (#64728)
* Mqtt Notify service draft

* fix updates

* Remove TARGET config parameter

* do not use protected attributes

* complete tests

* device support for auto discovery

* Add targets attribute and support for data param

* Add tests and resolve naming issues

* CONF_COMMAND_TEMPLATE from .const

* Use mqtt as default service name

* make sure service  has a unique name

* pylint error

* fix type error

* Conditional device removal and test

* Improve tests

* update description has_notify_services()

* Use TypedDict for service config

* casting- fix discovery - hass.data

* cleanup

* move MqttNotificationConfig after the schemas

* fix has_notify_services

* do not test log for reg update

* Improve casting types

* Simplify obtaining the device_id

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

* await not needed

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

* Improve casting types and naming

* cleanup_device_registry signature change and black

* remove not needed condition

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-03-08 16:27:18 +01:00
Thomas Schamm 13ac6e62e2 Remove bosch_shc switch surplus toggle method (#67851) 2022-03-08 12:53:41 +01:00
epenet d12118a425 Fix reauth trigger in SamsungTV (#67850)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 11:02:00 +01:00
Shay Levy 2d4d18ab90 Add Shelly gen2 cover support (#67705)
* Add Shelly gen2 cover support

* Make status property
2022-03-08 11:58:08 +02:00
Thomas Schamm 0b7b1baf30 Add switch platform to bosch_shc integration (#62315)
* Add support for switch platform.

* Add untested files to .coveragerc.

* Differ between Light Switch and Smart Plug.
Bumped to boschshcpy==0.2.27

* Removed duplicated code.
Fixed suggestions from code review.

* Fixed pylint errors

* Fix pylint issue.

* Add property statement

* Fixed wrong attribute access

* Apply suggestions from code review

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

* Move switch function to base class.
Changes from code review.

* Apply suggestions from code review

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

* Merged camera switch into SHCSwitch class

* Type hint

* Removed deprecated sensor entities in switch device.
Added routing switch entity.

* Apply suggestions from code review

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

* Icon and EntityCategory as class attributes

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-03-08 10:35:29 +01:00
J. Nick Koston bfe94f1cc5 Fix profiler dumping object when repr fails (#67674)
* Fix profiler dumping object when repr fails

* cover
2022-03-08 10:33:08 +01:00
J. Nick Koston ee38203e1d Add missing callback decorator to sun (#67840) 2022-03-08 10:16:41 +01:00
epenet 36049ac514 Batch send commands in SamsungTV (#67847)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 10:10:17 +01:00
Raman Gupta e199be6391 Bump zwave-js-server-python to 0.35.2 (#67839) 2022-03-08 09:44:39 +01:00
epenet 6da38d67ff Simplify SSDP discovery in SamsungTV (#67843)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 08:54:03 +01:00
Lester Lo 56abd5f2cf Add homekit pm type sensor (#46060)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-08 08:37:20 +01:00
epenet e1b57d83c7 Adjust config entry matching in SamsungTV (#67842)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 08:30:11 +01:00
epenet 6f38eda114 Adjust power_off for TheFrame in SamsungTV (#67841)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 08:20:58 +01:00
epenet 5b23b9a617 Adjust get_mac routine in SamsungTV (#67804)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 07:54:12 +01:00
epenet 2d4ccddd99 Fix SSDP unique id in SamsungTV config flow (#67811)
Co-authored-by: epenet <epenet@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-08 07:53:59 +01:00
epenet 8260767e8f Enable basic type checking in upnp (#66253)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 07:51:23 +01:00
epenet 1793c29fac Move key sequences to bridge in SamsungTV (#67762)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-08 07:46:34 +01:00
Aaron Godfrey d302b0d14e Fix todoist parsing due dates for calendar events (#65403) 2022-03-07 22:00:39 -08:00
G Johansson 00c84d8927 Modify diagnostics for yale_smart_alarm (#67761) 2022-03-07 21:52:58 -08:00
Paulus Schoutsen 737c502e94 Merge pull request #67838 from home-assistant/rc 2022-03-07 21:51:30 -08:00
Paulus Schoutsen 46984afbb8 Add media source support to Yamaha MusicCast (#67572) 2022-03-07 21:50:25 -08:00
Paulus Schoutsen a1abcbc7eb Bumped version to 2022.3.3 2022-03-07 20:45:49 -08:00
J. Nick Koston b09ab2dafb Prevent scene from restoring unavailable states (#67836) 2022-03-07 20:45:44 -08:00
Teemu R 4e6fc3615b Bump python-miio version to 0.5.11 (#67824) 2022-03-07 20:45:43 -08:00
Bram Kragten 580c998552 Update frontend to 20220301.1 (#67812) 2022-03-07 20:45:25 -08:00
Franck Nijhof 97ba17d1ec Catch Elgato connection errors (#67799) 2022-03-07 20:44:09 -08:00
J. Nick Koston 8d7cdceb75 Handle fan_modes being set to None in homekit (#67790) 2022-03-07 20:44:08 -08:00
Simone Chemelli dfa1c3abb3 Fix profile name update for Shelly Valve (#67778) 2022-03-07 20:44:08 -08:00
Simone Chemelli c807c57a9b Fix internet access switch for old discovery (#67777) 2022-03-07 20:44:07 -08:00
J. Nick Koston f4ec7e0902 Prevent polling from recreating an entity after removal (#67750) 2022-03-07 20:44:06 -08:00
G Johansson 814c96834e Fix temperature stepping in Sensibo (#67737)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-07 20:44:05 -08:00
muppet3000 87492e6b3e Fix timezone for growatt lastdataupdate (#67684)
* Added timezone for growatt lastdataupdate (#67646)

* Growatt lastdataupdate set to local timezone
2022-03-07 20:44:05 -08:00
Jan Bouwhuis 4aaafb0a99 Fix false positive MQTT climate deprecation warnings for defaults (#67661)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-07 20:44:04 -08:00
J. Nick Koston c9ac0b49f6 Prevent scene from restoring unavailable states (#67836) 2022-03-07 20:43:19 -08:00
J. Nick Koston a75bbc79a2 Prevent polling from recreating an entity after removal (#67750) 2022-03-07 20:42:16 -08:00
J. Nick Koston aed2c1cce8 Remove unused import code from powerview (#67834) 2022-03-08 03:13:00 +01:00
GitHub Action c374435282 [ci skip] Translation update 2022-03-08 00:18:11 +00:00
Joakim Sørensen 6b3b21bcfd Revert "Add update integration (#66552)" (#67641) 2022-03-07 15:52:15 -08:00
Teemu R 46d49336a1 Bump python-miio version to 0.5.11 (#67824) 2022-03-07 15:43:05 -08:00
Steve Easley ea82f2e293 Add Kaleidescape integration (#67711) 2022-03-08 00:16:43 +01:00
epenet c70bed86ff Adjust websocket bridge logging in SamsungTV (#67809)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-07 23:31:57 +01:00
epenet d1ef92c17a Bump samsungtvws to 2.3.0 (#67821)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-07 23:30:54 +01:00
G Johansson b8e4780aa1 Modify diagnostics for Sensibo (#67764) 2022-03-07 23:27:37 +01:00
Franck Nijhof 63957787c4 Update PyTurboJPEG to 1.6.6 (#67800) 2022-03-07 23:26:30 +01:00
Franck Nijhof 9d42a425fc Add config flow to Season (#67413) 2022-03-07 18:58:29 +01:00
G Johansson 7041bc797a Fix temperature stepping in Sensibo (#67737)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-07 09:55:12 -08:00
Franck Nijhof 48e6738367 Catch Elgato connection errors (#67799) 2022-03-07 09:14:14 -08:00
J. Nick Koston f268191985 Handle fan_modes being set to None in homekit (#67790) 2022-03-07 09:10:38 -08:00
Simone Chemelli d65b2b37dc Fix profile name update for Shelly Valve (#67778) 2022-03-07 09:05:10 -08:00
Bram Kragten 99300570f1 Update frontend to 20220301.1 (#67812) 2022-03-07 08:56:52 -08:00
Simone Chemelli 405c2f9cf3 Fix internet access switch for old discovery (#67777) 2022-03-07 17:23:08 +01:00
Jan Bouwhuis 98adeb6070 Fix false positive MQTT climate deprecation warnings for defaults (#67661)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-07 15:38:33 +01:00
Jan Stienstra 2f25d52f69 Fix Jellyfin erroring on media items without a source (#67697)
* Fix erroring on media items with a source

* code style improvement
2022-03-07 14:13:51 +01:00
Erik Montnemery a9cc2d2322 Add config flow for cover, fan, light and media_player groups (#67660)
* Add options flow support to HelperConfigFlowHandler

* Add config flow for cover, fan, light and media_player groups

* Update according to review comments

* Update translation strings

* Update translation strings

* Copy schema before adding suggested values
2022-03-07 13:05:04 +01:00
Robert Hillis 6a92081e83 Add strict typing to adguard (#67775) 2022-03-07 11:43:21 +01:00
epenet 68f932f6c3 Bump samsungtvws to 2.2.0 (#67771) 2022-03-07 12:15:49 +02:00
Joakim Sørensen 9a6f5bbc04 Update whoami URL (#67793) 2022-03-07 11:11:25 +01:00
epenet d656acfa2c Bump async-upnp-client to 0.26.0 (#67760) 2022-03-07 11:08:50 +01:00
muppet3000 6b4e9374b7 Fix timezone for growatt lastdataupdate (#67684)
* Added timezone for growatt lastdataupdate (#67646)

* Growatt lastdataupdate set to local timezone
2022-03-07 10:14:05 +01:00
Allen Porter 74c339eb7b Simplify google calendar new calendar tracking (#67772)
* Simplify google calendar new calendar tracking

* Remove application of CONFIG_SCHEMA
2022-03-07 09:44:32 +01:00
GitHub Action 2957f4ce85 [ci skip] Translation update 2022-03-07 00:18:40 +00:00
Paulus Schoutsen 58321c50e1 Fix scaffold (#67769) 2022-03-07 01:13:39 +01:00
Clifford Roche cdaa7bb60c Bump greeclimate to 1.1.0 (#67763) 2022-03-06 22:57:18 +02:00
G Johansson 208e8b16db Add problem sensor to yale_smart_alarm (#67699) 2022-03-06 13:16:09 -07:00
Paulus Schoutsen 2aecdd3d6d Merge pull request #67730 from home-assistant/rc 2022-03-06 12:11:16 -08:00
Jc2k 76336df91a Fix regression with homekit_controller + Aqara motion/vibration sensors (#67740) 2022-03-06 08:45:56 -08:00
Jc2k b6c962726a Fix regression with homekit_controller + Aqara motion/vibration sensors (#67740) 2022-03-06 08:45:41 -08:00
Allen Porter 69c58a9ce6 Bump google-nest-sdm to 1.8.0 (#67723) 2022-03-06 15:35:16 +02:00
Allen Porter 496287973d Bump google-cloud-pubsub to 2.10.0 (#67724) 2022-03-06 15:34:47 +02:00
Joakim Plate e8c05298ba Remove rfxtrx signal repetition (#67675) 2022-03-06 10:29:20 +01:00
Paulus Schoutsen 88e0380aa2 Bumped version to 2022.3.2 2022-03-06 00:07:45 -08:00
Avi Miller 10a2c97cab Update aiolifx dependency to resolve log flood (#67721) 2022-03-06 00:07:41 -08:00
J. Nick Koston 92c3c08a10 Add missing disconnect in elkm1 config flow validation (#67716) 2022-03-06 00:07:40 -08:00
J. Nick Koston 4f8b69d985 Ensure elkm1 can be manually configured when discovered instance is not used (#67712) 2022-03-06 00:07:39 -08:00
Martin Hjelmare f5aaf44e50 Bump pydroid-ipcam to 1.3.1 (#67655)
* Bump pydroid-ipcam to 1.3.1

* Remove loop and set ssl to False
2022-03-06 00:07:39 -08:00
Erik Montnemery f3c85b3459 Fix reload of media player groups (#67653) 2022-03-06 00:07:38 -08:00
Franck Nijhof d7348718e0 Fix Fan template loosing percentage/preset (#67648)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-06 00:07:37 -08:00
Simone Chemelli 2a6d5ea7bd Improve logging for Fritz switches creation (#67640) 2022-03-06 00:07:37 -08:00
Simone Chemelli 5ae83e3c40 Allign logic for Fritz sensors and binary_sensors (#67623) 2022-03-06 00:07:36 -08:00
G Johansson 5657a9e6bd Fix sql false warning (#67614) 2022-03-06 00:07:35 -08:00
J. Nick Koston b290e62170 Handle elkm1 login case with username and insecure login (#67602) 2022-03-06 00:07:35 -08:00
epenet 679ddbd1be Downgrade Renault warning (#67601)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-06 00:07:34 -08:00
Teemu R b54652a849 Remove use of deprecated xiaomi_miio classes (#67590) 2022-03-06 00:07:33 -08:00
Joakim Plate 24013ad94c rfxtrx: bump to 0.28 (#67530) 2022-03-06 00:07:32 -08:00
Chris Talkington 9849b86a84 Suppress roku power off timeout errors (#67414) 2022-03-06 00:07:32 -08:00
Simone Chemelli 8bbf55c85d Add unique_id to Fritz diagnostics (#67384)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-06 00:07:31 -08:00
Avi Miller 6c41786be4 Update aiolifx dependency to resolve log flood (#67721) 2022-03-06 00:03:52 -08:00
J. Nick Koston 23b218bc44 Add missing disconnect in elkm1 config flow validation (#67716) 2022-03-06 00:02:45 -08:00
J. Nick Koston 26c5dca45d Ensure elkm1 can be manually configured when discovered instance is not used (#67712) 2022-03-06 00:02:22 -08:00
G Johansson 1358aed016 Code cleanup yale_smart_alarm (#67701) 2022-03-05 21:27:06 -08:00
GitHub Action f5d25eaf8f [ci skip] Translation update 2022-03-06 00:18:25 +00:00
G Johansson 3d26f6b85d Quicker update on hvac mode change in Sensibo (#67692) 2022-03-05 12:01:53 -10:00
G Johansson 2474d84e35 Implement measurement sensor for Sensibo (#66949) 2022-03-05 11:59:15 -10:00
Mike Fugate cc9fd2bcba Add firmness number entity to SleepIQ (#65841) 2022-03-05 11:45:56 -10:00
G Johansson a8baebee8d Return None for fields not reported in Sensibo (#67693) 2022-03-05 11:42:03 -10:00
G Johansson af7670a5a5 Add base entity for Sensibo (#67696) 2022-03-05 11:37:44 -10:00
Ville Skyttä ca32c38859 Upgrade bandit to 1.7.4 (#67669)
No new issues flagged.

https://github.com/PyCQA/bandit/releases/tag/1.7.1
https://github.com/PyCQA/bandit/releases/tag/1.7.2
https://github.com/PyCQA/bandit/releases/tag/1.7.3
https://github.com/PyCQA/bandit/releases/tag/1.7.4
2022-03-05 20:13:30 +01:00
Jeef 8484060915 Add Hyperion device configuration URL (#67495)
* Adding device configuration url

* bump version
2022-03-05 09:10:39 +01:00
Raman Gupta 9632cbeffa Improve zwave_js custom triggers and services (#67461)
* Improve zwave_js custom triggers and services

* Switch from pop to get

* Support string boolean values

* refactor and add coverage

* comments and additional assertions
2022-03-05 09:00:31 +01:00
Martin Hjelmare cdb463ea55 Refactor android_ip_webcam (#67664)
* Add native camera platform

* Remove double mjpeg platform

* Fix docstring

* Remove not needed update
2022-03-05 08:37:58 +01:00
epenet c5f7e7d1b0 Refactor run app in SamsungTV (#67616)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-04 14:37:27 -10:00
GitHub Action acd906dfab [ci skip] Translation update 2022-03-05 00:19:17 +00:00
Simone Chemelli 777ae584d4 Add unique_id to Fritz diagnostics (#67384)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-04 14:43:33 -08:00
Simone Chemelli 53543f15a5 Allign logic for Fritz sensors and binary_sensors (#67623) 2022-03-04 14:38:28 -08:00
J. Nick Koston e4221336dc Handle elkm1 login case with username and insecure login (#67602) 2022-03-04 14:30:40 -08:00
Erik Montnemery 1ebe82fc4b Fix reload of media player groups (#67653) 2022-03-04 14:17:43 -08:00
Keilin Bickar f09e288fee Bump sleepiq library version (#67659) 2022-03-04 12:07:01 -10:00
epenet 9db3e321e4 Add message for unsupported models in samsungtv (#67549)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-04 12:06:15 -10:00
Aaron Bach b8420a7e3b Add missing Ambient PWS sensors (#67322) 2022-03-04 13:21:11 -07:00
Franck Nijhof cb1299b434 Fix Fan template loosing percentage/preset (#67648)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-04 20:17:11 +01:00
Martin Hjelmare c337e69f0a Bump pydroid-ipcam to 1.3.1 (#67655)
* Bump pydroid-ipcam to 1.3.1

* Remove loop and set ssl to False
2022-03-04 20:09:49 +01:00
Erik Montnemery 0c12914548 Add config flow for switch.light (#67447)
* Add config flow for switch.light

* Refactor according to code review

* Setup light switch from config entry

* Improve async_resolve_entity

* Prepare for multiple steps

* Remove name and options flow from switch light

* Check type before adding description to schema keys

* Remove options flow enabler

* Copy name from the switch

* Move helper flows to new file

* Improve test coverage

* Fix name

* Remove dead code from abstract method

* Remove manifest 'helper' option

* Validate registry entry id before forwarding to light platform

* Improve test

* Add translations

* Improve config entry setup

* Log when config entry fails setup

* Update homeassistant/components/switch/__init__.py

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

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-04 20:02:17 +01:00
G Johansson 3f9a6bbaa7 Fix sql false warning (#67614) 2022-03-04 08:20:10 -10:00
Franck Nijhof 5965b015dd Adjust data entry flow to have an option data_schema (#67637) 2022-03-04 16:42:02 +01:00
Paulus Schoutsen 3eadc67d59 Add media source support to HeOS (#67562) 2022-03-04 07:41:22 -08:00
Erik Montnemery 209a5854f8 End JSON files updated by scaffold script with a newline (#67639) 2022-03-04 15:50:23 +01:00
Simone Chemelli 749a76c4e1 Improve logging for Fritz switches creation (#67640) 2022-03-04 15:49:22 +01:00
Paulus Schoutsen abf4f50515 Add media browser support to forked_daapd (#67564) 2022-03-04 15:47:06 +01:00
Paulus Schoutsen 84c460ce78 Add media source support to mpd (#67565) 2022-03-04 15:44:57 +01:00
Paulus Schoutsen cf1a21eb6e Allow squeezebox to play media sources (#67561) 2022-03-04 15:41:51 +01:00
Paulus Schoutsen 12a7b64e64 Add media source support to bluesound (#67563) 2022-03-04 14:51:42 +01:00
Martin Hjelmare f91a809350 Add mysensors notify tests (#67634) 2022-03-04 14:47:27 +01:00
Paulus Schoutsen 624c3be3ae Add media source support to panasonic_viera (#67568) 2022-03-04 13:21:52 +01:00
dependabot[bot] f3ca52c2a1 Bump actions/upload-artifact from 2.3.1 to 3.0.0 (#67598)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-04 12:39:44 +01:00
Jan Bouwhuis 5ab4b5d15a MQTT Improve warning override deprecated settings (#67609) 2022-03-04 12:39:29 +01:00
epenet 5f421252a6 Downgrade Renault warning (#67601)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-04 11:03:38 +02:00
Erik Montnemery cd25769667 Rename async_resolve_entity_ids to async_validate_entity_ids (#67603) 2022-03-04 09:51:53 +01:00
Paulus Schoutsen fbc39d1206 Log stack trace if exception without message (#67587) 2022-03-04 09:48:07 +01:00
Allen Porter 57ffc65af2 Improve google calendar test quality and share setup (#67441)
* Improve google calendar test quality and share setup

Improve google calendar test quality by exercising different combinations of
cases and new coverage. The existing test cases do achieve very high coverage,
however some of the subtle interactions between the components are not as well
exercised, which is needed when we start changing how the internal code is
structured moving to async or to config entries.

Ipmrovement include:
- Exercising additional cases around different types of configuration parameters
  that control how calendars are tracked or not tracked. The tracking can be
  configured in google_calendars.yaml, or by defaults set in configuration.yaml
  for new calendars.
- Share even more test setup, used when exercising the above different scenarios
- Add new test cases for event creation.
- Improve test readability by making more clear the differences between tests
  exercising yaml and API test calendars. The data types are now more clearly
  separated in the two cases, as well as the entity names created in the two
  cases.

* Undo some diffs for readability

* Improve pydoc readability

* Improve pydoc readability

* Incorporate improvements from Martin

* Make test parameters a State instance

* Update test naming to be more correct

* Fix flake8 errors
2022-03-03 23:12:24 -08:00
Allen Porter 4e52f26ed1 Fix flaky google calendar test (#67600) 2022-03-03 22:48:55 -08:00
Chris Talkington 79e9eb1b94 Suppress roku power off timeout errors (#67414) 2022-03-03 21:08:29 -08:00
Teemu R d0bc5410cc Remove use of deprecated xiaomi_miio classes (#67590) 2022-03-03 20:55:01 -08:00
Paulus Schoutsen 0541c708da Merge pull request #67588 from home-assistant/rc 2022-03-03 18:49:44 -08:00
GitHub Action 2242b023d3 [ci skip] Translation update 2022-03-04 00:21:35 +00:00
Paulus Schoutsen ba40d62081 Bumped version to 2022.3.1 2022-03-03 15:53:54 -08:00
J. Nick Koston 73765a1f29 Add guards for HomeKit version/names that break apple watches (#67585) 2022-03-03 15:53:46 -08:00
muppet3000 b5b945ab4d Fix data type for growatt lastdataupdate (#67511) (#67582)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-03 15:53:46 -08:00
Emory Penney d361643500 Bump pyobihai (#67571) 2022-03-03 15:53:45 -08:00
Paulus Schoutsen eff7a12557 Highlight in logs it is a custom component when setup fails (#67559)
Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2022-03-03 15:53:44 -08:00
Jan Bouwhuis 63f8e9ee08 Fix MQTT config flow with advanced parameters (#67556)
* Fix MQTT config flow with advanced parameters

* Add test
2022-03-03 15:53:44 -08:00
Simone Chemelli ee0bdaa2de Check if UPnP is enabled on Fritz device (#67512)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-03 15:48:24 -08:00
jjlawren 48d9e9a83c Bump soco to 0.26.4 (#67498) 2022-03-03 15:47:50 -08:00
Simone Chemelli b75993d809 Check if UPnP is enabled on Fritz device (#67512)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-03 15:41:50 -08:00
Erik Montnemery 2007379701 Restore state of template binary sensor with on or off delay (#67546) 2022-03-03 15:27:39 -08:00
Emory Penney 69f08ec524 Bump pyobihai (#67571) 2022-03-03 15:22:36 -08:00
Allen Porter a8842d3636 Bump httplib2 to 0.20.4 (#67552) 2022-03-03 15:22:11 -08:00
Franck Nijhof 02391663c1 Add config flow to Moon (#67444) 2022-03-03 15:12:33 -08:00
muppet3000 81a509e69e Fix data type for growatt lastdataupdate (#67511) (#67582)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-03 15:05:13 -08:00
J. Nick Koston 6d2302b703 Add guards for HomeKit version/names that break apple watches (#67585) 2022-03-03 15:03:46 -08:00
Paulus Schoutsen e7ca6b6e38 Highlight in logs it is a custom component when setup fails (#67559)
Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2022-03-03 15:03:03 -08:00
Marc Mueller a55d20f164 Use cached_property instead of stacked property + cache (#67515) 2022-03-03 23:59:48 +01:00
Jan Bouwhuis 9356bf1a8e Fix MQTT config flow with advanced parameters (#67556)
* Fix MQTT config flow with advanced parameters

* Add test
2022-03-03 21:40:15 +01:00
Keilin Bickar 24e0c0b092 Add pressure sensor for SleepIQ (#67574) 2022-03-03 10:27:22 -10:00
Keilin Bickar 423c14e2a1 Add light entity to SleepIQ (#67363) 2022-03-03 09:42:33 -10:00
Per Öberg cfed1ff799 Add config flow for selecting precision of DS18B20 devices (#64315)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-03 11:41:59 -08:00
epenet 8e3b0f6554 Cleanup mac fixtures in samsungtv tests (#67529)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-03 08:07:08 -10:00
epenet 74483d2669 Fix Samsung TV state when the device is turned off (#67541)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-03 08:06:33 -10:00
Joakim Sørensen 1a78e18eeb Add update integration (#66552)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-03 08:27:09 -08:00
Allen Porter 2678d8120a Update nest media source to make device play most recent event (#67557) 2022-03-03 08:16:03 -08:00
Joakim Plate 13eeaa4c73 rfxtrx: bump to 0.28 (#67530) 2022-03-03 11:29:58 +01:00
Richard T. Schaefer 15580281a3 Allow area, device, and entity selectors to optionally support multiple selections like target selector (#63138)
* Allow area, device, and entity selectors to optionally support multiple selections like target selector

* Update according to code review comments

* Adjust tests

* Update according to review comments

* Tweak error message for multiple entities

Co-authored-by: Erik <erik@montnemery.com>
2022-03-03 10:35:06 +01:00
dependabot[bot] 58c00da8a0 Bump home-assistant/builder from 2022.01.0 to 2022.03.1 (#67525)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-03 08:48:02 +01:00
jan iversen 85c863a766 Allow reload of modbus (#67390)
* Allow reload of modbus.

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-03-03 08:46:58 +01:00
J. Nick Koston ad87d06d1f Enable strict typing for usb (#67466)
* Enable strict typing for usb

* Enable strict typing for usb

* Enable strict typing for usb

* adjust

* coverage

* Update tests/components/usb/test_init.py
2022-03-03 07:59:31 +01:00
GitHub Action 11175b39f5 [ci skip] Translation update 2022-03-03 00:20:45 +00:00
Franck Nijhof 4b298863c7 Fix nightly manifest (#67489) 2022-03-03 00:38:26 +01:00
jjlawren e7e4c7e3da Bump soco to 0.26.4 (#67498) 2022-03-03 00:41:03 +02:00
G Johansson a3a66451d7 Implement reauth for Sensibo (#67446) 2022-03-02 12:22:14 -10:00
G Johansson 8ee3be33e9 Bump pysensibo to v1.0.8 (#67506) 2022-03-02 12:20:10 -10:00
epenet 26f2388fa1 Adjust error handling scope in samsungtv (#66692)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-02 20:52:11 +01:00
epenet b8861578ff Implement async websocket in samsungtv (#67127)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-02 09:30:33 -10:00
Franck Nijhof 8de94f3b5c Merge pull request #67487 from home-assistant/rc 2022-03-02 19:56:49 +01:00
epenet b245ba6d57 Bump samsungtvws to v2.1.0 (#67483)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-02 10:09:06 -08:00
Joakim Sørensen d7c480f2d8 Set fail-fast to false for meta container (#67484) 2022-03-02 19:00:52 +01:00
Joakim Sørensen 0349d7d09d Split meta image creation (#67480) 2022-03-02 19:00:49 +01:00
dependabot[bot] be19a2e2ab Bump docker/login-action from 1.14.0 to 1.14.1 (#67462)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-02 19:00:46 +01:00
dependabot[bot] b9f44eec0a Bump docker/login-action from 1.13.0 to 1.14.0 (#67416)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-02 19:00:42 +01:00
jan iversen a4915eb704 Handle exception in modbus slave sensor (#67472) 2022-03-02 09:49:57 -08:00
Joakim Plate 9db56a8119 Don't trigger device removal for non rfxtrx devices (#67315) 2022-03-02 18:44:43 +01:00
Franck Nijhof ddf7efd937 Bumped version to 2022.3.0 2022-03-02 18:18:58 +01:00
Paulus Schoutsen da4f4f641d Add guard radio browser media source (#67486) 2022-03-02 18:18:28 +01:00
cnico 288270ac08 Address late review of flipr (#67477) 2022-03-02 18:18:25 +01:00
Shay Levy 092b973067 Bump aioshelly to 1.0.11 (#67476) 2022-03-02 18:18:22 +01:00
Michael Chisholm 9aba0ba990 Sort DMS results using only criteria supported by the device (#67475) 2022-03-02 18:18:18 +01:00
Jc2k 4668720f02 Remove Ecobee homekit vendor extensions that just don't work (#67474) 2022-03-02 18:18:14 +01:00
Jc2k 274e4d5558 Bump to aiohomekit 0.7.15 (#67470) 2022-03-02 18:18:11 +01:00
Erik Montnemery 94fd7ec028 Improve binary sensor group when member is unknown or unavailable (#67468) 2022-03-02 18:18:05 +01:00
Joakim Plate c81ccaebd3 Rfxtrx correct overzealous type checking (#67437) 2022-03-02 18:18:02 +01:00
Erik Montnemery 4c0ba7cd77 Improve mobile_app key handling (#67429) 2022-03-02 18:17:58 +01:00
Paulus Schoutsen dc24e6505e Add guard radio browser media source (#67486) 2022-03-02 17:22:34 +01:00
Jan Bouwhuis a97fe7aae0 Mqtt fix issue with displaying non UTF-8 payload (#67471)
* Mqtt fix issue with displaying non UTF-8 payload

* None or binary

* Casting and additional test

* casting
2022-03-02 17:01:47 +01:00
Joakim Sørensen 9f51fd7c6f Set fail-fast to false for meta container (#67484) 2022-03-02 16:55:33 +01:00
Michael Chisholm 797a9c3de5 Sort DMS results using only criteria supported by the device (#67475) 2022-03-02 07:54:47 -08:00
Erik Montnemery c5dd5e18c0 Improve binary sensor group when member is unknown or unavailable (#67468) 2022-03-02 07:53:13 -08:00
Erik Montnemery 5b8cf379a3 Improve mobile_app key handling (#67429) 2022-03-02 07:49:48 -08:00
Jc2k 0974abf9e2 Remove Ecobee homekit vendor extensions that just don't work (#67474) 2022-03-02 15:00:48 +01:00
Igor Pakhomov a5806fb868 Add buttons for dmaker.airfresh.a1/t2017 to xiaomi_miio (#67065)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-02 14:08:19 +01:00
Jc2k 2ff1101a15 Bump to aiohomekit 0.7.15 (#67470) 2022-03-02 13:58:39 +01:00
Joakim Sørensen 063872a0c0 Split meta image creation (#67480) 2022-03-02 13:55:05 +01:00
Shay Levy aac4036c0c Bump aioshelly to 1.0.11 (#67476) 2022-03-02 14:30:54 +02:00
cnico beb4756eb8 Address late review of flipr (#67477) 2022-03-02 13:00:33 +01:00
Joakim Plate 3c3a27584a Rfxtrx correct overzealous type checking (#67437) 2022-03-02 10:36:23 +01:00
Ryan Fleming 4ac1746e28 Update Pyoctoprint to 1.8 (#67459) 2022-03-02 10:08:03 +01:00
Marc Mueller d7d41e2a4d Bump actions/checkout from 2.4.0 to 3.0.0 (#67456) 2022-03-02 09:32:02 +01:00
dependabot[bot] e9a7d4ddb2 Bump docker/login-action from 1.14.0 to 1.14.1 (#67462)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-02 08:48:40 +01:00
Martin Hjelmare e9496869da Rework mysensors test fixtures (#67331)
* Reworks mysensors test fixtures

* Fix missing autospecced methods
2022-03-02 07:23:36 +01:00
Mike Degatano 4ea6ca7f91 Prefer internal docker URL for VLC telnet when possible (#67090) 2022-03-01 21:56:20 -08:00
Paulus Schoutsen 1ebb4cf395 Bumped version to 2022.3.0b6 2022-03-01 17:21:51 -08:00
Simone Chemelli 17bc8c64f8 Add missing temperature sensor for Shelly Motion2 (#67458) 2022-03-01 16:57:52 -08:00
Paulus Schoutsen fa01715bbb Bump frontend to 20220301.0 (#67457) 2022-03-01 16:57:27 -08:00
Franck Nijhof 99322e2658 Fix CO2Signal having unknown data (#67453) 2022-03-01 16:56:45 -08:00
Teemu R 9a306e2a89 Bump python-songpal to 0.14.1 (#67435)
Changelog https://github.com/rytilahti/python-songpal/releases/tag/0.14.1
2022-03-01 16:56:44 -08:00
JeroenTuinstra 47812c6b91 Correct selector for remote integration line 50 (#67432) 2022-03-01 16:56:43 -08:00
jan iversen 40d72b3188 CONF_SLAVE do not have default 0 in a validator (#67418) 2022-03-01 16:56:42 -08:00
J. Nick Koston b31e570ec7 Avoid creating wiring select for Magic Home if its not supported (#67417) 2022-03-01 16:56:41 -08:00
Paulus Schoutsen 768a031128 Restore children media class (#67409) 2022-03-01 16:56:41 -08:00
Paulus Schoutsen f1620cbb2e Add support for detecting hostname based addresses as internal (#67407) 2022-03-01 16:56:40 -08:00
cnico aeac31c926 Add flipr API error detection and catch it correctly. (#67405) 2022-03-01 16:56:39 -08:00
Jeff 26203e9924 Support disconnected Powerwall configuration (#67325)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-03-01 16:56:39 -08:00
J. Nick Koston d766b17323 Partially revert powerwall abs change from #67245 (#67300) 2022-03-01 16:56:37 -08:00
Paulus Schoutsen 65eefcacfc Add support for detecting hostname based addresses as internal (#67407) 2022-03-01 16:56:05 -08:00
Simone Chemelli de2ddfe7b7 Add missing temperature sensor for Shelly Motion2 (#67458) 2022-03-01 16:22:15 -08:00
cnico 7889aace5f Add flipr API error detection and catch it correctly. (#67405) 2022-03-01 16:21:47 -08:00
Franck Nijhof 133add6100 Fix CO2Signal having unknown data (#67453) 2022-03-01 16:06:36 -08:00
Paulus Schoutsen dc10a4f0bb Bump frontend to 20220301.0 (#67457) 2022-03-01 16:05:23 -08:00
J. Nick Koston 78a49eb9e8 Partially revert powerwall abs change from #67245 (#67300) 2022-03-01 14:00:48 -10:00
Paulus Schoutsen d68ada74cc Restore children media class (#67409) 2022-03-01 15:14:14 -08:00
JeroenTuinstra 57705bc13d Correct selector for remote integration line 50 (#67432) 2022-03-01 15:12:54 -08:00
Marc Mueller 555d0445d8 Pip setup-python to 3.0.0 (#67448) 2022-03-01 22:14:26 +01:00
Joakim Sørensen e58ce7ab6e Fix returned value from backup/info WS command (#67439) 2022-03-01 21:37:51 +01:00
J. Nick Koston 94130a6060 Avoid creating wiring select for Magic Home if its not supported (#67417) 2022-03-01 09:18:09 -10:00
uvjustin a81fa31314 Bump httpx and httpcore (#67438) 2022-03-01 09:17:25 -10:00
epenet b613008eda Cleanup samsungtv bridge (#67424)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-01 09:05:51 -10:00
epenet 418808d873 Cleanup search for mac in samsungtv (#67374)
* Add logging on config_entry update

* Add search for mac

* Use info

Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-03-01 19:21:40 +02:00
Teemu R 6dacf75aaf Bump python-songpal to 0.14.1 (#67435)
Changelog https://github.com/rytilahti/python-songpal/releases/tag/0.14.1
2022-03-01 19:19:34 +02:00
jan iversen 2e7de9570a CONF_SLAVE do not have default 0 in a validator (#67418) 2022-03-01 16:40:00 +01:00
Joakim Sørensen 32adeb8356 Remove class attributes for backup manager (#67431)
* Remove class attributes for backup manager

* remove patches
2022-03-01 15:16:18 +01:00
Igor Pakhomov 7bbde822d2 Add "Auxiliary Heat Status" binary_sensor for dmaker.airfresh.a1/t2017 to xiaomi_miio (#67040) 2022-03-01 14:57:14 +01:00
Igor Pakhomov 0515a8bd2d Add additional switch for dmaker.airfresh.a1/t2017 to xiaomi_miio (#67033)
* Add additional switch for dmaker.airfresh.a1/t2017 to xiaomi_miio
- Auxiliary heat switch
- Display switch

* Auxiliary heat => Auxiliary Heat

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2022-03-01 14:15:23 +01:00
dependabot[bot] 741b010f8f Bump docker/login-action from 1.13.0 to 1.14.0 (#67416)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 13:56:48 +01:00
Erik Montnemery f40932853f Bump hatasmota to 0.4.0 (#67421) 2022-03-01 13:18:49 +02:00
Joakim Sørensen d018cbab3d Enable strict typing for backup integration (#67427) 2022-03-01 13:16:10 +02:00
Franck Nijhof 82948cc6c1 Update google-cloud-texttospeech to 2.10.0 (#66746) 2022-03-01 10:19:13 +01:00
Franck Nijhof e4c62a2037 Update coverage to 6.3.2 (#67395) 2022-03-01 08:58:19 +01:00
Franck Nijhof 76e890f523 Update ephem to 4.1.2 (#67404) 2022-03-01 08:57:02 +01:00
dependabot[bot] 6a07641600 Bump actions/setup-python from 2.3.2 to 3 (#67415)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2.3.2 to 3.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2.3.2...v3)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-01 07:52:38 +01:00
G Johansson f2dabf4978 Set precision to tenths in Sensibo (#67297) 2022-02-28 20:02:27 -10:00
J. Nick Koston fc4cb743bd Add Signal Strength sensor to WiZ (#67411) 2022-02-28 18:50:26 -10:00
J. Nick Koston ac031cb817 Add diagnostics support to bond (#67412) 2022-02-28 18:50:15 -10:00
J. Nick Koston 076fe97110 Strict typing for dhcp (#67361) 2022-02-28 18:49:44 -10:00
J. Nick Koston 21ce441a97 Bump zeroconf to 0.38.4 (#67406) 2022-02-28 16:39:13 -08:00
jjlawren aea1209d0d Reduce magic in Sonos error handling fixture (#67401) 2022-02-28 16:38:08 -08:00
GitHub Action e963ad96d4 [ci skip] Translation update 2022-03-01 00:23:47 +00:00
Joakim Sørensen 0ed51dae13 Add Backup integration (#66395)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-02-28 15:48:12 -08:00
Franck Nijhof 487f4dcd90 Remove deprecated Raspihats integration (#67380) 2022-02-28 23:10:58 +01:00
Franck Nijhof e3709590cb Update sentry-sdk to 1.5.6 (#67394) 2022-02-28 23:10:40 +01:00
Franck Nijhof 353a963890 Update shodan to 1.27.0 (#67393) 2022-02-28 23:10:14 +01:00
epenet 1556868d56 Use async rest api in SamsungTV (#67369)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-02-28 09:53:42 -10:00
Jeff 508ed257d4 Support disconnected Powerwall configuration (#67325)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-02-28 09:37:11 -10:00
Matt Zimmerman d077c3b8d1 Add sensor to expose Powerwall backup reserve percentage (#66393) 2022-02-28 09:31:34 -10:00
Kevin Worrel 974296697e Add diagnostics for screenlogic (#67368) 2022-02-28 09:13:56 -10:00
Erik Montnemery 148762ce3f Improve cast test for removing device (#67385) 2022-02-28 11:08:27 -08:00
jan iversen e891df0ff3 Allow multi read of Modbus sensor (#67378) 2022-02-28 11:07:55 -08:00
jan iversen 690223fb69 Add tests for Modbus slave binary sensors, up coverage to 100% (#67373) 2022-02-28 11:06:32 -08:00
Franck Nijhof 2ca97f6309 Code quality improvements for Worldclock (#67392) 2022-02-28 11:03:43 -08:00
Allen Porter c456b4c646 Fix google calendar comment typo (#67389) 2022-02-28 18:52:52 +01:00
k3mpaxl 430cdc6d4c Update modbus climate (#62483)
Single register values weren't parsed accordingly for climate devices.
Co-authored-by: jan Iversen <jancasacondor@gmail.com>
2022-02-28 18:52:36 +01:00
Erik Montnemery f9616c2ae3 Remove custom WS command for removing Tasmota devices (#67382) 2022-02-28 18:13:38 +01:00
Erik Montnemery 5e4b16c69a Remove custom WS command for removing MQTT devices (#67381)
* Remove custom WS command for removing MQTT devices

* Re-add removed test
2022-02-28 15:50:49 +01:00
Erik Montnemery c7d59bb272 Fix race when unsubscribing from MQTT topics (#67376)
* Fix race when unsubscribing from MQTT topics

* Improve test
2022-02-28 14:19:50 +01:00
Franck Nijhof 0db6a0b248 Remove deprecated Bosch BME680 Environmental Sensor integration (#67273) 2022-02-28 13:29:13 +01:00
Erik Montnemery 277c6f8803 Bump pychromecast to 10.3.0 (#67370) 2022-02-28 13:27:24 +01:00
jan iversen 0d8ff3d724 Add codeowner to internal integrations that are without (#67286) 2022-02-28 09:06:16 +01:00
jjlawren 5922a98936 Bump plexapi to 4.10.0 (#67364) 2022-02-28 07:50:42 +01:00
Allen Porter a375a4e16e Fix recurring events in google calendar (#67355) 2022-02-27 19:56:24 -08:00
Keilin Bickar bafa99fe3e Add reauth to SleepIQ (#67321)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-02-27 15:47:31 -10:00
epenet 1cca317294 Bump samsungtvws to 2.0.0 (#67351) 2022-02-27 15:29:31 -10:00
GitHub Action 1b97f48c1f [ci skip] Translation update 2022-02-28 00:19:57 +00:00
Allen Porter afaaabd2fe Cleanup google calendar by removing some device abstractions (#67356)
* Remove unnecessary abstraction in google calendar

* Simplify diffs for calendar event filtering
2022-02-27 15:01:54 -08:00
G Johansson bb4b7c96d0 Migrate entry unique id for Sensibo (#67119) 2022-02-27 11:38:39 -10:00
Paulus Schoutsen 9c440d8aa6 Guard for non-string inputs in Alexa (#67348) 2022-02-27 12:59:05 -08:00
Paulus Schoutsen f9b02d5cab Guard for index error in picnic (#67345) 2022-02-27 12:04:22 -08:00
Mick Vleeshouwer e0172cb8da Bump pyoverkiz to 1.3.9 in Overkiz integration (#67339) 2022-02-27 11:19:20 -08:00
Franck Nijhof e77de3aeea Remove deprecated Bosch BMP280 Environmental Sensor integration (#67280) 2022-02-27 11:16:13 -08:00
Allen Porter 466f1686e4 Cleanup google calendar shared test fixtures (#67343) 2022-02-27 19:58:00 +01:00
Steven Looman dbbb5655e5 Bump async-upnp-client to 0.25.0 (#66414)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-02-27 08:29:29 -10:00
Franck Nijhof 1c0365a72b Remove deprecated MCP23017 I/O Expander integration (#67281) 2022-02-27 15:40:25 +01:00
Franck Nijhof e4903f9a13 Remove deprecated HTU21D(F) Sensor integration (#67279) 2022-02-27 15:35:39 +01:00
James Hewitt 494ae9aef6 Clean up RFXtrx tests (#67278)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-02-27 01:49:46 +01:00
Allen Porter deda9e38e4 Simplify google calendar API interactions (#67319)
* Simplify google calendar APIs and tests

* Simplify authentication logic at startup

* Improve readability of diffs

* Reduce diffs

* Simplify api datetime logic

* Remove duplicate test fixtures added in prior commit

* Remove duplicate event filter calls

* Fix event list argument names

* More improvements found from additional testing

* Remove unnecessary variables in create event call
2022-02-26 16:19:45 -08:00
GitHub Action 479aa13211 [ci skip] Translation update 2022-02-27 00:19:29 +00:00
Allen Porter 1383034df2 Simplify google calendar event filters (#67312)
Simplify google calendar event filtering logic currently copied between two methods.
2022-02-26 15:27:08 -08:00
Marc Mueller f6be0c2b88 Remove redundant type cast (#67317) 2022-02-27 00:23:56 +01:00
Allen Porter 0e74184e4f Simplify google calendar authentication setup (#67314)
Simplify google calendar authentication to combine some of the cases together, and reduce unecessarily checks. Make the
tests share common authentication setup and reduce use of mocks by introducing a fake for holding on to credentials.
This makes future refactoring simpler, so we don't have to care as much about the interactions with the credentials
storage.
2022-02-26 15:17:02 -08:00
Joakim Plate a151d3f9a0 Don't trigger device removal for non rfxtrx devices (#67315) 2022-02-27 00:14:12 +01:00
Joakim Plate 01fa6e7513 Eliminate extra include (#67316) 2022-02-27 00:13:48 +01:00
Paulus Schoutsen 02d4739b28 Bump frontend to 20220226.0 (#67313) 2022-02-26 14:12:33 -08:00
Martin Hjelmare d299915c1a Fix netgear typing (#67287) 2022-02-26 14:00:33 -08:00
Paulus Schoutsen 7f4faafe38 Add type code that is being ignored (#67311) 2022-02-26 13:56:47 -08:00
Franck Nijhof 9920b3eef5 Remove deprecated Enviro pHAT integration (#67277) 2022-02-26 13:35:13 -08:00
Franck Nijhof 0abecc8513 Remove deprecated DHT Sensor integration (#67276) 2022-02-26 13:34:34 -08:00
Franck Nijhof 0b20b107e1 Remove deprecated Sense HAT integration (#67272) 2022-02-26 13:33:12 -08:00
stegm 3b2b2b9c69 Add diagnostics to Kostal Plenticore (#66435) 2022-02-26 13:32:38 -08:00
jan iversen 6ec9c402b1 Remove generic data types INT, UINT, FLOAT in modbus (#67268) 2022-02-26 13:27:48 -08:00
Franck Nijhof fbfdabe4fc Remove deprecated Raspberry Pi RF integration (#67283) 2022-02-26 13:26:41 -08:00
Allen Porter 648aa0cae6 Reduce google calendar test flake (#67310) 2022-02-26 13:23:11 -08:00
Allen Porter 1ee4f47f8b Cleanup google calendar use of hass.data (#67305)
Update google calendar's use of hass.data to follow the best practices of storing
data under hass.data[DOMAIN]. This is in preparation for storing additional
data later, pulled out of a larger cleanup.
2022-02-26 12:30:04 -08:00
Allen Porter 1cc4ae2bdd Bump googel-api-python-client to 2.3.8 (last updated 2017) (#67298) 2022-02-26 19:47:42 +01:00
Martin Hjelmare d9abd5efea Fix dhcp None hostname (#67289)
* Fix dhcp None hostname

* Test handle None hostname
2022-02-26 19:37:24 +01:00
Allen Porter f901c61d54 Add myself as code owner for google calendar integration (#67299) 2022-02-26 17:55:46 +01:00
Mike Fugate 858c09060d Validate SleepIQ connection/credentials for the import step (#67292) 2022-02-26 17:55:11 +01:00
Joakim Sørensen e65670fef4 Repository event subscription (#67284) 2022-02-26 15:56:36 +01:00
Joakim Sørensen 73fdd47d54 Change GitHub coordinator name (#67285) 2022-02-26 11:50:05 +01:00
Joakim Sørensen 452b072bd2 Bump aiogithubapi from 22.2.3 to 22.2.4 (#67269) 2022-02-26 10:38:19 +01:00
Paulus Schoutsen 7e4b63690d Fix camera content type while browsing (#67256) 2022-02-26 10:02:13 +01:00
Paulus Schoutsen 442e2eecd5 Kodi: Mark MJPEG cameras using PNGs as incompatible (#67257) 2022-02-26 09:58:45 +01:00
Alan Tse 34d38c7ada Fix Doorbird warning if registering favorites fail (#67262) 2022-02-26 09:56:07 +01:00
pailloM a3d30f6ecc Re-enable apcupsd (#67264) 2022-02-26 09:46:16 +01:00
GitHub Action 0f418341f3 [ci skip] Translation update 2022-02-26 00:17:09 +00:00
Paulus Schoutsen e6cd155c01 Bump hass-nabucasa to 0.54.0 (#67252) 2022-02-25 14:01:20 -08:00
Paulus Schoutsen 22aed088f3 Kodi/Roku: Add brand logos to brand folders at root level (#67251) 2022-02-25 21:19:56 +01:00
Paulus Schoutsen 0a6c8f8e6c Improve not shown handling (#67247) 2022-02-25 11:52:14 -08:00
James Hewitt 069e70ff03 Add mode setting to RFXtrx device configuration (#67173)
This allows users to configure the modes on their RFXtrx device without
downloading additional software that only runs on Windows. It also
enables the use of modes that cannot be permanently enabled on the
device, such as for undecoded and raw messages.
2022-02-25 20:43:29 +01:00
jan iversen 8233278ccc Correct tests to use data_type in Modbus (#67246) 2022-02-25 11:37:52 -08:00
J. Nick Koston e81ca64aa4 Prevent the wrong WiZ device from being used when the IP is a different device (#67250) 2022-02-25 11:37:19 -08:00
Paulus Schoutsen 99bc2a7c9e Give Sonos media browse folders Sonos logos to distinguish from media… (#67248) 2022-02-25 11:35:39 -08:00
J. Nick Koston 3f16c6d6ef Fix powerwall data incompatibility with energy integration (#67245) 2022-02-25 20:20:56 +01:00
Paulus Schoutsen 6fd9e71b8f Adjust serializing resolved media (#67240) 2022-02-25 10:00:03 -08:00
Mark Dietzer 07a792019e Fix Twitch component to use new API (#67153)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-02-25 09:15:49 -08:00
jjlawren a4ba71408b Adjust Sonos visibility checks (#67196) 2022-02-25 08:27:06 -08:00
martijnvanduijneveldt 199d359814 Fix nanoleaf white flashing when using scenes (#67168) 2022-02-25 08:25:13 -08:00
epenet 715d7f70f0 Adjust SamsungTV abstraction layer (#67216)
Co-authored-by: epenet <epenet@users.noreply.github.com>
2022-02-25 17:15:45 +01:00
Franck Nijhof c62a3c4f0d Add support for 8-gang switches to Tuya (#67218) 2022-02-25 08:11:22 -08:00
Franck Nijhof 5edb4cbdc6 Remove deprecated pi4ioe5v9xxxx IO Expander integration (#67188) 2022-02-25 08:10:12 -08:00
Franck Nijhof e7e8ee5ff3 Remove deprecated pigpio Daemon PWM LED integration (#67187) 2022-02-25 08:09:23 -08:00
jan iversen c6f5633e24 Fix modbus test_delay (#66993) 2022-02-25 08:06:25 -08:00
Martin Hjelmare c856f673fb Fix zwave_js migration luminance sensor (#67234) 2022-02-25 08:05:56 -08:00
jan iversen adc4c1e33f Secure ATTR_ and CONF_ use identical texts in Modbus (#66901) 2022-02-25 08:05:19 -08:00
Franck Nijhof 5c4b149f50 Remove deprecated Piglow integration (#67227) 2022-02-25 08:03:32 -08:00
Franck Nijhof cd18641385 Remove deprecated Media Player Classic Home Cinema (MPC-HC) integration (#67189) 2022-02-25 08:01:27 -08:00
jan iversen 3173f1672b Remove deprecated reverse_order and data_count from Modbus (#67236) 2022-02-25 08:01:03 -08:00
Franck Nijhof 29350ee2e2 Remove deprecated Sensirion SHT31 integration (#67176) 2022-02-25 16:04:17 +02:00
Martin Hjelmare a0214d695a Clean up mysensors hass.data gateway access (#67233) 2022-02-25 14:54:25 +01:00
Franck Nijhof 0bd25a192d Move Phone Modem reject call deprecation warning (#67223) 2022-02-25 10:57:29 +01:00
Andre Lengwenus 684f01f466 Add tests for LCN cover platform (#64832) 2022-02-25 10:22:48 +01:00
Avi Miller 21715c5f8a Bump the Twinkly dependency to fix the excessive debug output (#67207) 2022-02-25 09:59:16 +01:00
kevdliu ad6c3d37be Take Abode camera snapshot before fetching latest image (#67150)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-02-25 09:44:17 +01:00
Paulus Schoutsen 406fbca4bc Add media source support to Kodi (#67203) 2022-02-24 23:40:28 -08:00
Joakim Plate 8a74295d6f Add support for rfxtrx sirens and chimes (#66416)
* Add support for sirens and chimes

* Fixup testing

* Fixup comments

* Hook up existing off delay

* Add docs for off delay.

* Rename mixin
2022-02-25 07:53:22 +01:00
Raman Gupta ad4409bcb0 Don't add extra entities for zwave_js controller (#67209)
* Don't add extra entities for zwave_js controller

* Revert reformat of controller_state

* fix indentation issues

* fix indentation issues
2022-02-25 07:39:30 +01:00
Zack Barett 7842d12b75 20220224.0 (#67204) 2022-02-24 19:28:36 -08:00
Paulus Schoutsen ff7510f96c Bump aiohue to 4.3.0 (#67202) 2022-02-24 16:30:53 -08:00
GitHub Action 5e366d93fc [ci skip] Translation update 2022-02-25 00:17:52 +00:00
Paulus Schoutsen 2a8dc38d2d Move media_source to after_deps (#67195) 2022-02-24 14:54:46 -08:00
Martin Hjelmare d64777359d Set zwave_js siren to unknown state if value is None (#67172) 2022-02-24 23:21:36 +01:00
Franck Nijhof ae073d132c Remove deprecated Bosch BME280 Environmental Sensor integration (#67185) 2022-02-24 23:54:01 +02:00
Franck Nijhof 5eec425e2c Remove deprecated MH-Z19 CO2 Sensor integration (#67186) 2022-02-24 23:50:17 +02:00
Franck Nijhof ba6493d66f Remove deprecated Orange Pi GPIO integration (#67177) 2022-02-24 23:46:59 +02:00
J. Nick Koston 00c6e30988 Fix ElkM1 systems that do not use password authentication (#67194) 2022-02-24 11:07:17 -08:00
J. Nick Koston 4dc6aab17e Move camera to after deps for HomeKit (#67190) 2022-02-24 20:03:59 +01:00
Franck Nijhof dd927adba9 Remove deprecated Blinkt! integration (#67165) 2022-02-24 19:26:32 +02:00
Marc Mueller 2af5b2c845 Fix return type for entity update methods (#67184) 2022-02-24 19:25:38 +02:00
Franck Nijhof d495bded5c Remove deprecated BH1750 integration (#67161) 2022-02-24 19:23:32 +02:00
Franck Nijhof 12dbcca078 Remove deprecated BeagleBone Black GPIO integration (#67160) 2022-02-24 19:22:48 +02:00
Franck Nijhof 21f3e5ef13 Fix MQTT config entry deprecation warnings (#67174) 2022-02-24 18:14:38 +01:00
Paulus Schoutsen fb4de7211b Make Google sync_seralize a callback (#67155) 2022-02-24 08:36:36 -08:00
Shay Levy 7068c46f8f Use SSDP dataclass in webostv tests (#67181) 2022-02-24 16:59:20 +01:00
rforro cbdfff25ca Presets for single ZONNSMART TRV (#67157)
* Presets for single ZONNSMART TRV

* added zonnsmart climate tests

* black8 fix
2022-02-24 08:48:15 -05:00
Franck Nijhof 636e4ed90b Remove deprecated Time of Flight integration (#67167) 2022-02-24 14:47:20 +01:00
jan iversen 9131fb39fe Allow "slave" parameter in modbus service calls (#66874)
* Allow "slave" parameter in modbus service calls.
2022-02-24 13:35:45 +01:00
rikroe a12870081e Remove deprecated yaml config from bmw_connected_drive (#66965)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-02-24 13:04:21 +01:00
Franck Nijhof 14059c5aa9 Remove deprecated YAML configuration from CPU Speed (#67166) 2022-02-24 11:25:42 +01:00
Franck Nijhof 85b87ffb8b Remove deprecated APNS integration (#67158) 2022-02-24 10:31:00 +01:00
Franck Nijhof 1d03313bf5 Remove deprecated YAML configuration from Whois (#67163)
* Remove deprecated YAML configuration from Whois

* Clean up platform schema
2022-02-24 10:03:42 +01:00
Franck Nijhof 6bd21f05dc Remove deprecated YAML configuration from PVOutput (#67162)
* Remove deprecated YAML configuration from PVOutput

* Clean up platform schema
2022-02-24 10:02:42 +01:00
J. Nick Koston c9e46d360b Use compact encoding for JSON websocket messages (#67148)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-02-23 22:15:20 -08:00
Gage Benne 5366c0e3e3 Bump pydexcom to 0.2.3 (#67152) 2022-02-23 22:05:45 -08:00
Keilin Bickar f8763aad75 SleepIQ Dependency update (#67154) 2022-02-23 21:27:31 -08:00
Robert Hillis e431e98fff Bump aiopyarr to 22.2.2 (#67149) 2022-02-23 21:18:14 -08:00
Paulus Schoutsen a42547c0e5 Allow get_states to recover (#67146) 2022-02-23 21:15:48 -08:00
soluga 79bdd71da7 Don't try to resolve state if native_value is Null (#67134) 2022-02-23 16:29:26 -08:00
Paulus Schoutsen a5383e40eb Media source to verify domain to avoid KeyError (#67137) 2022-02-23 16:22:39 -08:00
Paulus Schoutsen fff74c66ae Fix SQL sensor (#67144) 2022-02-23 16:21:24 -08:00
GitHub Action 6364e81be5 [ci skip] Translation update 2022-02-24 00:17:55 +00:00
jjlawren e3e962691c Fix Sonos radio metadata processing with missing data (#67141) 2022-02-23 15:42:18 -08:00
Franck Nijhof 43b847220e Bump version to 2022.4.0dev0 (#67132) 2022-02-23 22:12:37 +01:00
3748 changed files with 213451 additions and 164472 deletions
+96 -93
View File
@@ -3,102 +3,104 @@
core: &core
- homeassistant/*.py
- homeassistant/auth/**
- homeassistant/helpers/*
- homeassistant/helpers/**
- homeassistant/package_constraints.txt
- homeassistant/util/*
- homeassistant/util/**
- pyproject.toml
- requirements.txt
- setup.cfg
# Our base platforms, that are used by other integrations
base_platforms: &base_platforms
- homeassistant/components/air_quality/*
- homeassistant/components/alarm_control_panel/*
- homeassistant/components/binary_sensor/*
- homeassistant/components/button/*
- homeassistant/components/calendar/*
- homeassistant/components/camera/*
- homeassistant/components/climate/*
- homeassistant/components/cover/*
- homeassistant/components/device_tracker/*
- homeassistant/components/diagnostics/*
- homeassistant/components/fan/*
- homeassistant/components/geo_location/*
- homeassistant/components/humidifier/*
- homeassistant/components/image_processing/*
- homeassistant/components/light/*
- homeassistant/components/lock/*
- homeassistant/components/media_player/*
- homeassistant/components/notify/*
- homeassistant/components/number/*
- homeassistant/components/remote/*
- homeassistant/components/scene/*
- homeassistant/components/select/*
- homeassistant/components/sensor/*
- homeassistant/components/siren/*
- homeassistant/components/stt/*
- homeassistant/components/switch/*
- homeassistant/components/tts/*
- homeassistant/components/vacuum/*
- homeassistant/components/water_heater/*
- homeassistant/components/weather/*
- homeassistant/components/air_quality/**
- homeassistant/components/alarm_control_panel/**
- homeassistant/components/binary_sensor/**
- homeassistant/components/button/**
- homeassistant/components/calendar/**
- homeassistant/components/camera/**
- homeassistant/components/climate/**
- homeassistant/components/cover/**
- homeassistant/components/device_tracker/**
- homeassistant/components/diagnostics/**
- homeassistant/components/fan/**
- homeassistant/components/geo_location/**
- homeassistant/components/humidifier/**
- homeassistant/components/image_processing/**
- homeassistant/components/light/**
- homeassistant/components/lock/**
- homeassistant/components/media_player/**
- homeassistant/components/notify/**
- homeassistant/components/number/**
- homeassistant/components/remote/**
- homeassistant/components/scene/**
- homeassistant/components/select/**
- homeassistant/components/sensor/**
- homeassistant/components/siren/**
- homeassistant/components/stt/**
- homeassistant/components/switch/**
- homeassistant/components/tts/**
- homeassistant/components/update/**
- homeassistant/components/vacuum/**
- homeassistant/components/water_heater/**
- homeassistant/components/weather/**
# Extra components that trigger the full suite
components: &components
- homeassistant/components/alert/*
- homeassistant/components/alexa/*
- homeassistant/components/auth/*
- homeassistant/components/automation/*
- homeassistant/components/cloud/*
- homeassistant/components/config/*
- homeassistant/components/configurator/*
- homeassistant/components/conversation/*
- homeassistant/components/demo/*
- homeassistant/components/device_automation/*
- homeassistant/components/dhcp/*
- homeassistant/components/discovery/*
- homeassistant/components/energy/*
- homeassistant/components/ffmpeg/*
- homeassistant/components/frontend/*
- homeassistant/components/google_assistant/*
- homeassistant/components/group/*
- homeassistant/components/hassio/*
- homeassistant/components/alert/**
- homeassistant/components/alexa/**
- homeassistant/components/auth/**
- homeassistant/components/automation/**
- homeassistant/components/backup/**
- homeassistant/components/cloud/**
- homeassistant/components/config/**
- homeassistant/components/configurator/**
- homeassistant/components/conversation/**
- homeassistant/components/demo/**
- homeassistant/components/device_automation/**
- homeassistant/components/dhcp/**
- homeassistant/components/discovery/**
- homeassistant/components/energy/**
- homeassistant/components/ffmpeg/**
- homeassistant/components/frontend/**
- homeassistant/components/google_assistant/**
- homeassistant/components/group/**
- homeassistant/components/hassio/**
- homeassistant/components/homeassistant/**
- homeassistant/components/http/**
- homeassistant/components/image/*
- homeassistant/components/input_boolean/*
- homeassistant/components/input_button/*
- homeassistant/components/input_datetime/*
- homeassistant/components/input_number/*
- homeassistant/components/input_select/*
- homeassistant/components/input_text/*
- homeassistant/components/logbook/*
- homeassistant/components/logger/*
- homeassistant/components/lovelace/*
- homeassistant/components/media_source/*
- homeassistant/components/mjpeg/*
- homeassistant/components/mqtt/*
- homeassistant/components/network/*
- homeassistant/components/onboarding/*
- homeassistant/components/otp/*
- homeassistant/components/persistent_notification/*
- homeassistant/components/person/*
- homeassistant/components/recorder/*
- homeassistant/components/safe_mode/*
- homeassistant/components/script/*
- homeassistant/components/shopping_list/*
- homeassistant/components/ssdp/*
- homeassistant/components/stream/*
- homeassistant/components/sun/*
- homeassistant/components/system_health/*
- homeassistant/components/tag/*
- homeassistant/components/template/*
- homeassistant/components/timer/*
- homeassistant/components/usb/*
- homeassistant/components/webhook/*
- homeassistant/components/websocket_api/*
- homeassistant/components/zeroconf/*
- homeassistant/components/zone/*
- homeassistant/components/image/**
- homeassistant/components/input_boolean/**
- homeassistant/components/input_button/**
- homeassistant/components/input_datetime/**
- homeassistant/components/input_number/**
- homeassistant/components/input_select/**
- homeassistant/components/input_text/**
- homeassistant/components/logbook/**
- homeassistant/components/logger/**
- homeassistant/components/lovelace/**
- homeassistant/components/media_source/**
- homeassistant/components/mjpeg/**
- homeassistant/components/mqtt/**
- homeassistant/components/network/**
- homeassistant/components/onboarding/**
- homeassistant/components/otp/**
- homeassistant/components/persistent_notification/**
- homeassistant/components/person/**
- homeassistant/components/recorder/**
- homeassistant/components/safe_mode/**
- homeassistant/components/script/**
- homeassistant/components/shopping_list/**
- homeassistant/components/ssdp/**
- homeassistant/components/stream/**
- homeassistant/components/sun/**
- homeassistant/components/system_health/**
- homeassistant/components/tag/**
- homeassistant/components/template/**
- homeassistant/components/timer/**
- homeassistant/components/usb/**
- homeassistant/components/webhook/**
- homeassistant/components/websocket_api/**
- homeassistant/components/zeroconf/**
- homeassistant/components/zone/**
# Testing related files that affect the whole test/linting suite
tests: &tests
@@ -107,26 +109,27 @@ tests: &tests
- requirements_test_pre_commit.txt
- requirements_test.txt
- tests/auth/**
- tests/backports/*
- tests/backports/**
- tests/common.py
- tests/conftest.py
- tests/hassfest/*
- tests/helpers/*
- tests/hassfest/**
- tests/helpers/**
- tests/ignore_uncaught_exceptions.py
- tests/mock/*
- tests/pylint/*
- tests/scripts/*
- tests/test_util/*
- tests/mock/**
- tests/pylint/**
- tests/scripts/**
- tests/test_util/**
- tests/testing_config/**
- tests/util/**
other: &other
- .github/workflows/*
- .github/workflows/**
- homeassistant/scripts/**
requirements: &requirements
- .github/workflows/*
- .github/workflows/**
- homeassistant/package_constraints.txt
- script/pip_check
- requirements*.txt
- setup.cfg
+36 -42
View File
@@ -59,6 +59,7 @@ omit =
homeassistant/components/ampio/*
homeassistant/components/android_ip_webcam/*
homeassistant/components/androidtv/__init__.py
homeassistant/components/androidtv/diagnostics.py
homeassistant/components/anel_pwrctrl/switch.py
homeassistant/components/anthemav/media_player.py
homeassistant/components/apcupsd/*
@@ -101,10 +102,8 @@ omit =
homeassistant/components/baidu/tts.py
homeassistant/components/balboa/__init__.py
homeassistant/components/beewi_smartclim/sensor.py
homeassistant/components/bbb_gpio/*
homeassistant/components/bbox/device_tracker.py
homeassistant/components/bbox/sensor.py
homeassistant/components/bh1750/sensor.py
homeassistant/components/bitcoin/sensor.py
homeassistant/components/bizkaibus/sensor.py
homeassistant/components/blink/__init__.py
@@ -114,16 +113,10 @@ omit =
homeassistant/components/blink/const.py
homeassistant/components/blink/sensor.py
homeassistant/components/blinksticklight/light.py
homeassistant/components/blinkt/light.py
homeassistant/components/blockchain/sensor.py
homeassistant/components/bloomsky/*
homeassistant/components/bluesound/*
homeassistant/components/bluetooth_tracker/*
homeassistant/components/bme280/__init__.py
homeassistant/components/bme280/const.py
homeassistant/components/bme280/sensor.py
homeassistant/components/bme680/sensor.py
homeassistant/components/bmp280/sensor.py
homeassistant/components/bmw_connected_drive/__init__.py
homeassistant/components/bmw_connected_drive/binary_sensor.py
homeassistant/components/bmw_connected_drive/button.py
@@ -137,6 +130,7 @@ omit =
homeassistant/components/bosch_shc/cover.py
homeassistant/components/bosch_shc/entity.py
homeassistant/components/bosch_shc/sensor.py
homeassistant/components/bosch_shc/switch.py
homeassistant/components/braviatv/__init__.py
homeassistant/components/braviatv/const.py
homeassistant/components/braviatv/media_player.py
@@ -204,6 +198,8 @@ omit =
homeassistant/components/decora/light.py
homeassistant/components/decora_wifi/light.py
homeassistant/components/delijn/*
homeassistant/components/deluge/__init__.py
homeassistant/components/deluge/coordinator.py
homeassistant/components/deluge/sensor.py
homeassistant/components/deluge/switch.py
homeassistant/components/denon/media_player.py
@@ -218,10 +214,10 @@ omit =
homeassistant/components/devolo_home_control/sensor.py
homeassistant/components/devolo_home_control/subscriber.py
homeassistant/components/devolo_home_control/switch.py
homeassistant/components/dht/sensor.py
homeassistant/components/digital_ocean/*
homeassistant/components/digitalloggers/switch.py
homeassistant/components/discogs/sensor.py
homeassistant/components/discord/__init__.py
homeassistant/components/discord/notify.py
homeassistant/components/dlib_face_detect/image_processing.py
homeassistant/components/dlib_face_identify/image_processing.py
@@ -303,7 +299,6 @@ omit =
homeassistant/components/environment_canada/camera.py
homeassistant/components/environment_canada/sensor.py
homeassistant/components/environment_canada/weather.py
homeassistant/components/envirophat/sensor.py
homeassistant/components/envisalink/*
homeassistant/components/ephember/climate.py
homeassistant/components/epson/__init__.py
@@ -342,7 +337,15 @@ omit =
homeassistant/components/faa_delays/binary_sensor.py
homeassistant/components/fastdotcom/*
homeassistant/components/ffmpeg/camera.py
homeassistant/components/fibaro/*
homeassistant/components/fibaro/__init__.py
homeassistant/components/fibaro/binary_sensor.py
homeassistant/components/fibaro/climate.py
homeassistant/components/fibaro/cover.py
homeassistant/components/fibaro/light.py
homeassistant/components/fibaro/lock.py
homeassistant/components/fibaro/scene.py
homeassistant/components/fibaro/sensor.py
homeassistant/components/fibaro/switch.py
homeassistant/components/filesize/sensor.py
homeassistant/components/fints/sensor.py
homeassistant/components/fireservicerota/__init__.py
@@ -398,7 +401,6 @@ omit =
homeassistant/components/fritz/common.py
homeassistant/components/fritz/const.py
homeassistant/components/fritz/device_tracker.py
homeassistant/components/fritz/sensor.py
homeassistant/components/fritz/services.py
homeassistant/components/fritz/switch.py
homeassistant/components/fritzbox_callmonitor/__init__.py
@@ -490,7 +492,6 @@ omit =
homeassistant/components/honeywell/climate.py
homeassistant/components/horizon/media_player.py
homeassistant/components/hp_ilo/sensor.py
homeassistant/components/htu21d/sensor.py
homeassistant/components/huawei_lte/__init__.py
homeassistant/components/huawei_lte/binary_sensor.py
homeassistant/components/huawei_lte/device_tracker.py
@@ -622,7 +623,6 @@ omit =
homeassistant/components/launch_library/sensor.py
homeassistant/components/lcn/binary_sensor.py
homeassistant/components/lcn/climate.py
homeassistant/components/lcn/cover.py
homeassistant/components/lcn/helpers.py
homeassistant/components/lcn/scene.py
homeassistant/components/lcn/sensor.py
@@ -678,7 +678,6 @@ omit =
homeassistant/components/map/*
homeassistant/components/mastodon/notify.py
homeassistant/components/matrix/*
homeassistant/components/mcp23017/*
homeassistant/components/media_extractor/*
homeassistant/components/mediaroom/media_player.py
homeassistant/components/melcloud/__init__.py
@@ -718,8 +717,6 @@ omit =
homeassistant/components/mjpeg/camera.py
homeassistant/components/mjpeg/util.py
homeassistant/components/mochad/*
homeassistant/components/modbus/climate.py
homeassistant/components/modbus/binary_sensor.py
homeassistant/components/modem_callerid/button.py
homeassistant/components/modem_callerid/sensor.py
homeassistant/components/moehlenhoff_alpha2/__init__.py
@@ -729,7 +726,6 @@ omit =
homeassistant/components/motion_blinds/const.py
homeassistant/components/motion_blinds/cover.py
homeassistant/components/motion_blinds/sensor.py
homeassistant/components/mpchc/media_player.py
homeassistant/components/mpd/media_player.py
homeassistant/components/mqtt_room/sensor.py
homeassistant/components/msteams/notify.py
@@ -751,7 +747,6 @@ omit =
homeassistant/components/mysensors/handler.py
homeassistant/components/mysensors/helpers.py
homeassistant/components/mysensors/light.py
homeassistant/components/mysensors/notify.py
homeassistant/components/mysensors/switch.py
homeassistant/components/mystrom/binary_sensor.py
homeassistant/components/mystrom/light.py
@@ -862,12 +857,12 @@ omit =
homeassistant/components/openweathermap/weather_update_coordinator.py
homeassistant/components/opnsense/*
homeassistant/components/opple/light.py
homeassistant/components/orangepi_gpio/*
homeassistant/components/oru/*
homeassistant/components/orvibo/switch.py
homeassistant/components/osramlightify/light.py
homeassistant/components/otp/sensor.py
homeassistant/components/overkiz/__init__.py
homeassistant/components/overkiz/alarm_control_panel.py
homeassistant/components/overkiz/binary_sensor.py
homeassistant/components/overkiz/button.py
homeassistant/components/overkiz/climate.py
@@ -889,13 +884,9 @@ omit =
homeassistant/components/ovo_energy/__init__.py
homeassistant/components/ovo_energy/const.py
homeassistant/components/ovo_energy/sensor.py
homeassistant/components/ozw/__init__.py
homeassistant/components/ozw/entity.py
homeassistant/components/ozw/services.py
homeassistant/components/panasonic_bluray/media_player.py
homeassistant/components/panasonic_viera/media_player.py
homeassistant/components/pandora/media_player.py
homeassistant/components/pcal9535a/*
homeassistant/components/pencom/switch.py
homeassistant/components/philips_js/__init__.py
homeassistant/components/philips_js/diagnostics.py
@@ -904,10 +895,7 @@ omit =
homeassistant/components/philips_js/remote.py
homeassistant/components/philips_js/switch.py
homeassistant/components/pi_hole/sensor.py
homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
homeassistant/components/pi4ioe5v9xxxx/switch.py
homeassistant/components/picotts/tts.py
homeassistant/components/piglow/light.py
homeassistant/components/pilight/*
homeassistant/components/ping/__init__.py
homeassistant/components/ping/const.py
@@ -920,8 +908,10 @@ omit =
homeassistant/components/plaato/const.py
homeassistant/components/plaato/entity.py
homeassistant/components/plaato/sensor.py
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
@@ -967,7 +957,6 @@ omit =
homeassistant/components/rainmachine/model.py
homeassistant/components/rainmachine/sensor.py
homeassistant/components/rainmachine/switch.py
homeassistant/components/raspihats/*
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/__init__.py
homeassistant/components/recollect_waste/sensor.py
@@ -981,6 +970,7 @@ omit =
homeassistant/components/remote_rpi_gpio/*
homeassistant/components/rest/notify.py
homeassistant/components/rest/switch.py
homeassistant/components/rfxtrx/diagnostics.py
homeassistant/components/ridwell/__init__.py
homeassistant/components/ridwell/sensor.py
homeassistant/components/ridwell/switch.py
@@ -1003,9 +993,6 @@ omit =
homeassistant/components/rova/sensor.py
homeassistant/components/rpi_camera/*
homeassistant/components/rpi_gpio/*
homeassistant/components/rpi_gpio_pwm/light.py
homeassistant/components/rpi_pfio/*
homeassistant/components/rpi_rf/switch.py
homeassistant/components/rtorrent/sensor.py
homeassistant/components/russound_rio/media_player.py
homeassistant/components/russound_rnet/media_player.py
@@ -1016,6 +1003,7 @@ omit =
homeassistant/components/screenlogic/__init__.py
homeassistant/components/screenlogic/binary_sensor.py
homeassistant/components/screenlogic/climate.py
homeassistant/components/screenlogic/diagnostics.py
homeassistant/components/screenlogic/light.py
homeassistant/components/screenlogic/number.py
homeassistant/components/screenlogic/sensor.py
@@ -1026,8 +1014,6 @@ omit =
homeassistant/components/sense/__init__.py
homeassistant/components/sense/binary_sensor.py
homeassistant/components/sense/sensor.py
homeassistant/components/sensehat/light.py
homeassistant/components/sensehat/sensor.py
homeassistant/components/senseme/__init__.py
homeassistant/components/senseme/binary_sensor.py
homeassistant/components/senseme/discovery.py
@@ -1036,10 +1022,14 @@ omit =
homeassistant/components/senseme/light.py
homeassistant/components/senseme/switch.py
homeassistant/components/sensibo/__init__.py
homeassistant/components/sensibo/binary_sensor.py
homeassistant/components/sensibo/climate.py
homeassistant/components/sensibo/coordinator.py
homeassistant/components/sensibo/diagnostics.py
homeassistant/components/sensibo/entity.py
homeassistant/components/sensibo/number.py
homeassistant/components/sensibo/select.py
homeassistant/components/sensibo/sensor.py
homeassistant/components/serial/sensor.py
homeassistant/components/serial_pm/sensor.py
homeassistant/components/sesame/lock.py
@@ -1055,7 +1045,6 @@ omit =
homeassistant/components/shelly/number.py
homeassistant/components/shelly/sensor.py
homeassistant/components/shelly/utils.py
homeassistant/components/sht31/sensor.py
homeassistant/components/sigfox/sensor.py
homeassistant/components/simplepush/notify.py
homeassistant/components/simplisafe/__init__.py
@@ -1086,9 +1075,6 @@ omit =
homeassistant/components/smappee/sensor.py
homeassistant/components/smappee/switch.py
homeassistant/components/smarty/*
homeassistant/components/smarthab/__init__.py
homeassistant/components/smarthab/cover.py
homeassistant/components/smarthab/light.py
homeassistant/components/sms/__init__.py
homeassistant/components/sms/const.py
homeassistant/components/sms/gateway.py
@@ -1194,6 +1180,7 @@ omit =
homeassistant/components/synology_dsm/sensor.py
homeassistant/components/synology_dsm/service.py
homeassistant/components/synology_dsm/switch.py
homeassistant/components/synology_dsm/update.py
homeassistant/components/synology_srm/device_tracker.py
homeassistant/components/syslog/notify.py
homeassistant/components/system_bridge/__init__.py
@@ -1209,7 +1196,10 @@ omit =
homeassistant/components/tado/sensor.py
homeassistant/components/tado/water_heater.py
homeassistant/components/tank_utility/sensor.py
homeassistant/components/tankerkoenig/*
homeassistant/components/tankerkoenig/__init__.py
homeassistant/components/tankerkoenig/binary_sensor.py
homeassistant/components/tankerkoenig/const.py
homeassistant/components/tankerkoenig/sensor.py
homeassistant/components/tapsaff/binary_sensor.py
homeassistant/components/tautulli/const.py
homeassistant/components/tautulli/coordinator.py
@@ -1244,7 +1234,6 @@ omit =
homeassistant/components/tmb/sensor.py
homeassistant/components/todoist/calendar.py
homeassistant/components/todoist/const.py
homeassistant/components/tof/sensor.py
homeassistant/components/tolo/__init__.py
homeassistant/components/tolo/binary_sensor.py
homeassistant/components/tolo/button.py
@@ -1287,8 +1276,10 @@ omit =
homeassistant/components/tradfri/light.py
homeassistant/components/tradfri/sensor.py
homeassistant/components/tradfri/switch.py
homeassistant/components/trafikverket_train/__init__.py
homeassistant/components/trafikverket_train/sensor.py
homeassistant/components/trafikverket_weatherstation/__init__.py
homeassistant/components/trafikverket_weatherstation/coordinator.py
homeassistant/components/trafikverket_weatherstation/sensor.py
homeassistant/components/transmission/sensor.py
homeassistant/components/transmission/switch.py
@@ -1335,10 +1326,8 @@ omit =
homeassistant/components/upc_connect/*
homeassistant/components/uscis/sensor.py
homeassistant/components/vallox/__init__.py
homeassistant/components/vallox/const.py
homeassistant/components/vallox/fan.py
homeassistant/components/vallox/sensor.py
homeassistant/components/vallox/binary_sensor.py
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/velbus/__init__.py
homeassistant/components/velbus/binary_sensor.py
@@ -1391,6 +1380,9 @@ omit =
homeassistant/components/volumio/browse_media.py
homeassistant/components/volumio/media_player.py
homeassistant/components/volvooncall/*
homeassistant/components/vulcan/__init__.py
homeassistant/components/vulcan/calendar.py
homeassistant/components/vulcan/fetch_data.py
homeassistant/components/w800rf32/*
homeassistant/components/waqi/sensor.py
homeassistant/components/waterfurnace/*
@@ -1433,6 +1425,7 @@ omit =
homeassistant/components/xiaomi_miio/air_quality.py
homeassistant/components/xiaomi_miio/alarm_control_panel.py
homeassistant/components/xiaomi_miio/binary_sensor.py
homeassistant/components/xiaomi_miio/button.py
homeassistant/components/xiaomi_miio/device.py
homeassistant/components/xiaomi_miio/device_tracker.py
homeassistant/components/xiaomi_miio/fan.py
@@ -1489,18 +1482,19 @@ omit =
homeassistant/components/ziggo_mediabox_xl/media_player.py
homeassistant/components/zoneminder/*
homeassistant/components/supla/*
homeassistant/components/zwave/util.py
homeassistant/components/zwave_js/discovery.py
homeassistant/components/zwave_js/sensor.py
homeassistant/components/zwave_me/__init__.py
homeassistant/components/zwave_me/binary_sensor.py
homeassistant/components/zwave_me/button.py
homeassistant/components/zwave_me/cover.py
homeassistant/components/zwave_me/climate.py
homeassistant/components/zwave_me/helpers.py
homeassistant/components/zwave_me/light.py
homeassistant/components/zwave_me/lock.py
homeassistant/components/zwave_me/number.py
homeassistant/components/zwave_me/sensor.py
homeassistant/components/zwave_me/siren.py
homeassistant/components/zwave_me/switch.py
[report]
+72 -67
View File
@@ -24,12 +24,12 @@ jobs:
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
with:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -67,10 +67,10 @@ jobs:
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -100,11 +100,11 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -122,20 +122,20 @@ jobs:
echo "${{ github.sha }};${{ github.ref }};${{ github.event_name }};${{ github.actor }}" > rootfs/OFFICIAL_IMAGE
- name: Login to DockerHub
uses: docker/login-action@v1.13.0
uses: docker/login-action@v1.14.1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.13.0
uses: docker/login-action@v1.14.1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.01.0
uses: home-assistant/builder@2022.03.1
with:
args: |
$BUILD_ARGS \
@@ -173,7 +173,7 @@ jobs:
- tinker
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set build additional args
run: |
@@ -187,20 +187,20 @@ jobs:
fi
- name: Login to DockerHub
uses: docker/login-action@v1.13.0
uses: docker/login-action@v1.14.1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.13.0
uses: docker/login-action@v1.14.1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.01.0
uses: home-assistant/builder@2022.03.1
with:
args: |
$BUILD_ARGS \
@@ -216,7 +216,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
@@ -243,22 +243,30 @@ jobs:
channel: beta
publish_container:
name: Publish meta container
name: Publish meta container for ${{ matrix.registry }}
if: github.repository_owner == 'home-assistant'
needs: ["init", "build_base"]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
registry:
- "ghcr.io/home-assistant"
- "homeassistant"
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Login to DockerHub
uses: docker/login-action@v1.13.0
if: matrix.registry == 'homeassistant'
uses: docker/login-action@v1.14.1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.13.0
if: matrix.registry == 'ghcr.io/home-assistant'
uses: docker/login-action@v1.14.1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -273,38 +281,37 @@ jobs:
export DOCKER_CLI_EXPERIMENTAL=enabled
function create_manifest() {
local docker_reg=${1}
local tag_l=${2}
local tag_r=${3}
local tag_l=${1}
local tag_r=${2}
docker manifest create "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/amd64-homeassistant:${tag_r}" \
"${docker_reg}/i386-homeassistant:${tag_r}" \
"${docker_reg}/armhf-homeassistant:${tag_r}" \
"${docker_reg}/armv7-homeassistant:${tag_r}" \
"${docker_reg}/aarch64-homeassistant:${tag_r}"
docker manifest create "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/amd64-homeassistant:${tag_r}" \
"${{ matrix.registry }}/i386-homeassistant:${tag_r}" \
"${{ matrix.registry }}/armhf-homeassistant:${tag_r}" \
"${{ matrix.registry }}/armv7-homeassistant:${tag_r}" \
"${{ matrix.registry }}/aarch64-homeassistant:${tag_r}"
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/amd64-homeassistant:${tag_r}" \
docker manifest annotate "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/amd64-homeassistant:${tag_r}" \
--os linux --arch amd64
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/i386-homeassistant:${tag_r}" \
docker manifest annotate "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/i386-homeassistant:${tag_r}" \
--os linux --arch 386
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/armhf-homeassistant:${tag_r}" \
docker manifest annotate "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/armhf-homeassistant:${tag_r}" \
--os linux --arch arm --variant=v6
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/armv7-homeassistant:${tag_r}" \
docker manifest annotate "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/armv7-homeassistant:${tag_r}" \
--os linux --arch arm --variant=v7
docker manifest annotate "${docker_reg}/home-assistant:${tag_l}" \
"${docker_reg}/aarch64-homeassistant:${tag_r}" \
docker manifest annotate "${{ matrix.registry }}/home-assistant:${tag_l}" \
"${{ matrix.registry }}/aarch64-homeassistant:${tag_r}" \
--os linux --arch arm64 --variant=v8
docker manifest push --purge "${docker_reg}/home-assistant:${tag_l}"
docker manifest push --purge "${{ matrix.registry }}/home-assistant:${tag_l}"
}
function validate_image() {
@@ -315,36 +322,34 @@ jobs:
fi
}
for docker_reg in "homeassistant" "ghcr.io/home-assistant"; do
docker pull "${docker_reg}/amd64-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/i386-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/armhf-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/armv7-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${docker_reg}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${{ matrix.registry }}/amd64-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${{ matrix.registry }}/i386-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${{ matrix.registry }}/armhf-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${{ matrix.registry }}/armv7-homeassistant:${{ needs.init.outputs.version }}"
docker pull "${{ matrix.registry }}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/amd64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/i386-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/armhf-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/armv7-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${docker_reg}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${{ matrix.registry }}/amd64-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${{ matrix.registry }}/i386-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${{ matrix.registry }}/armhf-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${{ matrix.registry }}/armv7-homeassistant:${{ needs.init.outputs.version }}"
validate_image "${{ matrix.registry }}/aarch64-homeassistant:${{ needs.init.outputs.version }}"
# Create version tag
create_manifest "${docker_reg}" "${{ needs.init.outputs.version }}" "${{ needs.init.outputs.version }}"
# Create version tag
create_manifest "${{ needs.init.outputs.version }}" "${{ needs.init.outputs.version }}"
# Create general tags
if [[ "${{ needs.init.outputs.version }}" =~ d ]]; then
create_manifest "${docker_reg}" "dev" "${{ needs.init.outputs.version }}"
elif [[ "${{ needs.init.outputs.version }}" =~ b ]]; then
create_manifest "${docker_reg}" "beta" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "rc" "${{ needs.init.outputs.version }}"
else
create_manifest "${docker_reg}" "stable" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "latest" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "beta" "${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "rc" "${{ needs.init.outputs.version }}"
# Create general tags
if [[ "${{ needs.init.outputs.version }}" =~ d ]]; then
create_manifest "dev" "${{ needs.init.outputs.version }}"
elif [[ "${{ needs.init.outputs.version }}" =~ b ]]; then
create_manifest "beta" "${{ needs.init.outputs.version }}"
create_manifest "rc" "${{ needs.init.outputs.version }}"
else
create_manifest "stable" "${{ needs.init.outputs.version }}"
create_manifest "latest" "${{ needs.init.outputs.version }}"
create_manifest "beta" "${{ needs.init.outputs.version }}"
create_manifest "rc" "${{ needs.init.outputs.version }}"
# Create series version tag (e.g. 2021.6)
v="${{ needs.init.outputs.version }}"
create_manifest "${docker_reg}" "${v%.*}" "${{ needs.init.outputs.version }}"
fi
done
# Create series version tag (e.g. 2021.6)
v="${{ needs.init.outputs.version }}"
create_manifest "${v%.*}" "${{ needs.init.outputs.version }}"
fi
+52 -62
View File
@@ -11,18 +11,18 @@ on:
workflow_dispatch:
inputs:
full:
description: 'Full run (regardless of changes)'
description: "Full run (regardless of changes)"
default: false
type: boolean
lint-only:
description: 'Skip pytest'
description: "Skip pytest"
default: false
type: boolean
env:
CACHE_VERSION: 9
PIP_CACHE_VERSION: 3
HA_SHORT_VERSION: 2022.3
HA_SHORT_VERSION: 2022.4
DEFAULT_PYTHON: 3.9
PRE_COMMIT_CACHE: ~/.cache/pre-commit
PIP_CACHE: /tmp/pip-cache
@@ -51,7 +51,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Filter for core changes
uses: dorny/paths-filter@v2.10.2
id: core
@@ -62,7 +62,7 @@ jobs:
integrations=$(ls -Ad ./homeassistant/components/[!_]* | xargs -n 1 basename)
touch .integration_paths.yaml
for integration in $integrations; do
echo "${integration}: [homeassistant/components/${integration}/*, tests/components/${integration}/*]" \
echo "${integration}: [homeassistant/components/${integration}/**, tests/components/${integration}/**]" \
>> .integration_paths.yaml;
done
echo "Result:"
@@ -119,7 +119,8 @@ jobs:
|| [[ "${{ github.ref }}" == "refs/heads/master" ]] \
|| [[ "${{ github.ref }}" == "refs/heads/rc" ]] \
|| [[ "${{ steps.core.outputs.any }}" == "true" ]] \
|| [[ "${{ github.event.inputs.full }}" == "true" ]];
|| [[ "${{ 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
@@ -151,10 +152,10 @@ jobs:
pre-commit-key: ${{ steps.generate-pre-commit-key.outputs.key }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Generate partial Python venv restore key
@@ -171,7 +172,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: >-
@@ -188,7 +189,7 @@ jobs:
# ${{ 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@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -211,7 +212,7 @@ jobs:
hashFiles('.pre-commit-config.yaml') }}"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -232,15 +233,15 @@ jobs:
- prepare-base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -252,7 +253,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -282,15 +283,15 @@ jobs:
- prepare-base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -302,7 +303,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -333,15 +334,15 @@ jobs:
needs: prepare-base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -353,7 +354,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -375,15 +376,15 @@ jobs:
- prepare-base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -395,7 +396,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -434,6 +435,11 @@ jobs:
. venv/bin/activate
pre-commit run --hook-stage manual check-json --all-files
- name: Run prettier
run: |
. venv/bin/activate
pre-commit run --hook-stage manual prettier --all-files
- name: Register check executables problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/check-executables-have-shebangs.json"
@@ -485,10 +491,10 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -509,15 +515,15 @@ jobs:
needs: prepare-base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -544,7 +550,7 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
@@ -559,7 +565,7 @@ jobs:
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@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: >-
@@ -576,7 +582,7 @@ jobs:
# ${{ 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@v2.1.7
uses: actions/cache@v3.0.0
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -612,10 +618,10 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -654,10 +660,10 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -686,7 +692,7 @@ jobs:
pip-check:
runs-on: ubuntu-latest
if: needs.changes.outputs.requirements == 'true'
if: needs.changes.outputs.requirements == 'true' || github.event.inputs.full == 'true'
needs:
- changes
- prepare-tests
@@ -698,10 +704,10 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -741,10 +747,10 @@ jobs:
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2.1.7
uses: actions/cache@v3.0.0
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -812,24 +818,8 @@ jobs:
--durations-min=1 \
-p no:sugar \
tests/components/${{ matrix.group }}
- name: Run pytest (partially); no coverage
if: needs.changes.outputs.test_full_suite == 'false'
timeout-minutes: 10
run: |
. venv/bin/activate
python --version
python3 -X dev -m pytest \
-qq \
--timeout=9 \
--durations=10 \
-n auto \
-o console_output_style=count \
--durations=0 \
--durations-min=1 \
-p no:sugar \
tests/components/${{ matrix.group }}
- name: Upload coverage artifact
uses: actions/upload-artifact@v2.3.1
uses: actions/upload-artifact@v3.0.0
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
@@ -845,7 +835,7 @@ jobs:
- pytest
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Download all coverage artifacts
uses: actions/download-artifact@v2
- name: Upload coverage to Codecov (full coverage)
+4 -4
View File
@@ -21,10 +21,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -40,10 +40,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.3.2
uses: actions/setup-python@v3.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
+7 -14
View File
@@ -22,7 +22,7 @@ jobs:
architectures: ${{ steps.info.outputs.architectures }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Get information
id: info
@@ -50,13 +50,13 @@ jobs:
) > .env_file
- name: Upload env_file
uses: actions/upload-artifact@v2.3.1
uses: actions/upload-artifact@v3.0.0
with:
name: env_file
path: ./.env_file
- name: Upload requirements_diff
uses: actions/upload-artifact@v2.3.1
uses: actions/upload-artifact@v3.0.0
with:
name: requirements_diff
path: ./requirements_diff.txt
@@ -74,7 +74,7 @@ jobs:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Download env_file
uses: actions/download-artifact@v2
@@ -99,7 +99,7 @@ jobs:
pip: "Cython;numpy"
skip-binary: aiohttp
constraints: "homeassistant/package_constraints.txt"
requirements-diff: 'requirements_diff.txt'
requirements-diff: "requirements_diff.txt"
requirements: "requirements.txt"
integrations:
@@ -115,7 +115,7 @@ jobs:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v2.4.0
uses: actions/checkout@v3.0.0
- name: Download env_file
uses: actions/download-artifact@v2
@@ -135,14 +135,9 @@ jobs:
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
sed -i "s|# RPi.GPIO|RPi.GPIO|g" ${requirement_file}
sed -i "s|# raspihats|raspihats|g" ${requirement_file}
sed -i "s|# rpi-rf|rpi-rf|g" ${requirement_file}
sed -i "s|# blinkt|blinkt|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|# smbus-cffi|smbus-cffi|g" ${requirement_file}
sed -i "s|# i2csense|i2csense|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}
@@ -152,9 +147,7 @@ jobs:
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|# bme680|bme680|g" ${requirement_file}
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
sed -i "s|# homeassistant-pyozw|homeassistant-pyozw|g" ${requirement_file}
done
- name: Build wheels
@@ -170,5 +163,5 @@ jobs:
pip: "Cython;numpy;scikit-build"
skip-binary: aiohttp,grpcio
constraints: "homeassistant/package_constraints.txt"
requirements-diff: 'requirements_diff.txt'
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txt"
+6 -7
View File
@@ -1,11 +1,11 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.31.0
rev: v2.31.1
hooks:
- id: pyupgrade
args: [--py39-plus]
- repo: https://github.com/psf/black
rev: 22.1.0
rev: 22.3.0
hooks:
- id: black
args:
@@ -31,12 +31,12 @@ repos:
- pyflakes==2.4.0
- flake8-docstrings==1.6.0
- pydocstyle==6.1.1
- flake8-comprehensions==3.7.0
- flake8-comprehensions==3.8.0
- flake8-noqa==1.2.1
- mccabe==0.6.1
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/bandit
rev: 1.7.0
rev: 1.7.4
hooks:
- id: bandit
args:
@@ -45,7 +45,7 @@ repos:
- --configfile=tests/bandit.yaml
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/isort
rev: 5.10.0
rev: 5.10.1
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
@@ -65,10 +65,9 @@ repos:
hooks:
- id: yamllint
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.2.1
rev: v2.6.1
hooks:
- id: prettier
stages: [manual]
- repo: https://github.com/cdce8p/python-typing-update
rev: v0.3.5
hooks:
-1
View File
@@ -2,4 +2,3 @@
azure-*.yml
docs/source/_templates/*
homeassistant/components/*/translations/*.json
tests/fixtures/*
+30 -1
View File
@@ -28,10 +28,12 @@ homeassistant.util.unit_system
# --- Add components below this line ---
homeassistant.components
homeassistant.components.alert.*
homeassistant.components.abode.*
homeassistant.components.acer_projector.*
homeassistant.components.accuweather.*
homeassistant.components.actiontec.*
homeassistant.components.adguard.*
homeassistant.components.aftership.*
homeassistant.components.air_quality.*
homeassistant.components.airly.*
@@ -45,6 +47,7 @@ homeassistant.components.amcrest.*
homeassistant.components.ampio.*
homeassistant.components.aseko_pool_live.*
homeassistant.components.automation.*
homeassistant.components.backup.*
homeassistant.components.binary_sensor.*
homeassistant.components.bluetooth_tracker.*
homeassistant.components.bmw_connected_drive.*
@@ -68,6 +71,7 @@ homeassistant.components.device_automation.*
homeassistant.components.device_tracker.*
homeassistant.components.devolo_home_control.*
homeassistant.components.devolo_home_network.*
homeassistant.components.dhcp.*
homeassistant.components.dlna_dmr.*
homeassistant.components.dnsip.*
homeassistant.components.dsmr.*
@@ -78,6 +82,7 @@ homeassistant.components.esphome.*
homeassistant.components.energy.*
homeassistant.components.evil_genius_labs.*
homeassistant.components.fastdotcom.*
homeassistant.components.filesize.*
homeassistant.components.fitbit.*
homeassistant.components.flunearyou.*
homeassistant.components.flux_led.*
@@ -94,6 +99,14 @@ homeassistant.components.group.*
homeassistant.components.guardian.*
homeassistant.components.history.*
homeassistant.components.homeassistant.triggers.event
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_triggers
homeassistant.components.homekit.util
homeassistant.components.homekit_controller
homeassistant.components.homekit_controller.alarm_control_panel
homeassistant.components.homekit_controller.button
@@ -114,6 +127,7 @@ homeassistant.components.isy994.*
homeassistant.components.iqvia.*
homeassistant.components.jellyfin.*
homeassistant.components.jewish_calendar.*
homeassistant.components.kaleidescape.*
homeassistant.components.knx.*
homeassistant.components.kraken.*
homeassistant.components.lametric.*
@@ -125,10 +139,11 @@ homeassistant.components.lookin.*
homeassistant.components.luftdaten.*
homeassistant.components.mailbox.*
homeassistant.components.media_player.*
homeassistant.components.media_source.*
homeassistant.components.mjpeg.*
homeassistant.components.modbus.*
homeassistant.components.modem_callerid.*
homeassistant.components.media_source.*
homeassistant.components.moon.*
homeassistant.components.mysensors.*
homeassistant.components.nam.*
homeassistant.components.nanoleaf.*
@@ -146,6 +161,7 @@ homeassistant.components.oncue.*
homeassistant.components.onewire.*
homeassistant.components.open_meteo.*
homeassistant.components.openuv.*
homeassistant.components.peco.*
homeassistant.components.overkiz.*
homeassistant.components.persistent_notification.*
homeassistant.components.pi_hole.*
@@ -156,9 +172,18 @@ homeassistant.components.pure_energie.*
homeassistant.components.rainmachine.*
homeassistant.components.rdw.*
homeassistant.components.recollect_waste.*
homeassistant.components.recorder
homeassistant.components.recorder.const
homeassistant.components.recorder.backup
homeassistant.components.recorder.executor
homeassistant.components.recorder.history
homeassistant.components.recorder.models
homeassistant.components.recorder.pool
homeassistant.components.recorder.purge
homeassistant.components.recorder.repack
homeassistant.components.recorder.statistics
homeassistant.components.recorder.util
homeassistant.components.recorder.websocket_api
homeassistant.components.remote.*
homeassistant.components.renault.*
homeassistant.components.ridwell.*
@@ -202,8 +227,10 @@ homeassistant.components.tts.*
homeassistant.components.twentemilieu.*
homeassistant.components.unifiprotect.*
homeassistant.components.upcloud.*
homeassistant.components.update.*
homeassistant.components.uptime.*
homeassistant.components.uptimerobot.*
homeassistant.components.usb.*
homeassistant.components.vacuum.*
homeassistant.components.vallox.*
homeassistant.components.velbus.*
@@ -217,6 +244,8 @@ homeassistant.components.websocket_api.*
homeassistant.components.wemo.*
homeassistant.components.whois.*
homeassistant.components.wiz.*
homeassistant.components.worldclock.*
homeassistant.components.yale_smart_alarm.*
homeassistant.components.zodiac.*
homeassistant.components.zeroconf.*
homeassistant.components.zone.*
+1195 -1118
View File
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -15,8 +15,7 @@ RUN \
-r homeassistant/requirements.txt --use-deprecated=legacy-resolver
COPY requirements_all.txt homeassistant/
RUN \
sed -i "s|# homeassistant-pyozw|homeassistant-pyozw|g" homeassistant/requirements_all.txt \
&& pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
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
+5 -3
View File
@@ -4,13 +4,15 @@ from __future__ import annotations
from enum import Enum
from typing import Any, TypeVar
T = TypeVar("T", bound="StrEnum")
_StrEnumT = TypeVar("_StrEnumT", bound="StrEnum")
class StrEnum(str, Enum):
"""Partial backport of Python 3.11's StrEnum for our basic use cases."""
def __new__(cls: type[T], value: str, *args: Any, **kwargs: Any) -> T:
def __new__(
cls: type[_StrEnumT], value: str, *args: Any, **kwargs: Any
) -> _StrEnumT:
"""Create a new StrEnum instance."""
if not isinstance(value, str):
raise TypeError(f"{value!r} is not a string")
@@ -21,7 +23,7 @@ class StrEnum(str, Enum):
return str(self.value)
@staticmethod
def _generate_next_value_( # pylint: disable=arguments-differ # https://github.com/PyCQA/pylint/issues/5371
def _generate_next_value_(
name: str, start: int, count: int, last_values: list[Any]
) -> Any:
"""
-2
View File
@@ -88,8 +88,6 @@ class AbodeCamera(AbodeDevice, Camera):
self, width: int | None = None, height: int | None = None
) -> bytes | None:
"""Get a camera image."""
if not self.capture():
return None
self.refresh_image()
if self._response:
+1 -2
View File
@@ -26,11 +26,10 @@
"invalid_auth": "[%key:common::config_flow::error::invalid_auth%]",
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"invalid_mfa_code": "Invalid MFA code"
},
"abort": {
"single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]",
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]"
}
}
}
}
@@ -6,7 +6,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_auth": "Authentification invalide",
"invalid_auth": "Authentification non valide",
"invalid_mfa_code": "Code MFA non valide"
},
"step": {
@@ -19,14 +19,14 @@
"reauth_confirm": {
"data": {
"password": "Mot de passe",
"username": "Email"
"username": "Courriel"
},
"title": "Remplissez vos informations de connexion Abode"
},
"user": {
"data": {
"password": "Mot de passe",
"username": "Email"
"username": "Courriel"
},
"title": "Remplissez vos informations de connexion Abode"
}
@@ -0,0 +1,28 @@
"""Diagnostics support for AccuWeather."""
from __future__ import annotations
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.core import HomeAssistant
from . import AccuWeatherDataUpdateCoordinator
from .const import DOMAIN
TO_REDACT = {CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
) -> dict:
"""Return diagnostics for a config entry."""
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][
config_entry.entry_id
]
diagnostics_data = {
"config_entry_data": async_redact_data(dict(config_entry.data), TO_REDACT),
"coordinator_data": coordinator.data,
}
return diagnostics_data
@@ -58,11 +58,12 @@ async def async_setup_entry(
async_add_entities(sensors)
class AccuWeatherSensor(CoordinatorEntity, SensorEntity):
class AccuWeatherSensor(
CoordinatorEntity[AccuWeatherDataUpdateCoordinator], SensorEntity
):
"""Define an AccuWeather entity."""
_attr_attribution = ATTRIBUTION
coordinator: AccuWeatherDataUpdateCoordinator
entity_description: AccuWeatherSensorDescription
def __init__(
@@ -2,8 +2,6 @@
"config": {
"step": {
"user": {
"title": "AccuWeather",
"description": "If you need help with the configuration have a look here: https://www.home-assistant.io/integrations/accuweather/\n\nSome sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options.",
"data": {
"name": "[%key:common::config_flow::data::name%]",
"api_key": "[%key:common::config_flow::data::api_key%]",
@@ -12,6 +10,9 @@
}
}
},
"create_entry": {
"default": "Some sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options."
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]",
@@ -24,7 +25,6 @@
"options": {
"step": {
"user": {
"title": "AccuWeather Options",
"description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes.",
"data": {
"forecast": "Weather forecast"
@@ -16,7 +16,7 @@
"longitude": "Longitud",
"name": "Nombre"
},
"description": "Si necesitas ayuda con la configuraci\u00f3n, echa un vistazo aqu\u00ed: https://www.home-assistant.io/integrations/accuweather/ \n\nEl pron\u00f3stico del tiempo no est\u00e1 habilitado por defecto. Puedes habilitarlo en las opciones de la integraci\u00f3n.",
"description": "Si necesitas ayuda con la configuraci\u00f3n, echa un vistazo aqu\u00ed: https://www.home-assistant.io/integrations/accuweather/ \n\nAlgunos sensores no est\u00e1n habilitados por defecto. Los puedes habilitar en el registro de entidades despu\u00e9s de configurar la integraci\u00f3n.\nEl pron\u00f3stico del tiempo no est\u00e1 habilitado por defecto. Puedes habilitarlo en las opciones de la integraci\u00f3n.",
"title": "AccuWeather"
}
}
@@ -5,7 +5,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_api_key": "Cl\u00e9 API invalide",
"invalid_api_key": "Cl\u00e9 d'API non valide",
"requests_exceeded": "Le nombre autoris\u00e9 de requ\u00eates adress\u00e9es \u00e0 l'API AccuWeather a \u00e9t\u00e9 d\u00e9pass\u00e9. Vous devez attendre ou modifier la cl\u00e9 API."
},
"step": {
@@ -56,11 +56,11 @@ async def async_setup_entry(
async_add_entities([AccuWeatherEntity(name, coordinator)])
class AccuWeatherEntity(CoordinatorEntity, WeatherEntity):
class AccuWeatherEntity(
CoordinatorEntity[AccuWeatherDataUpdateCoordinator], WeatherEntity
):
"""Define an AccuWeather entity."""
coordinator: AccuWeatherDataUpdateCoordinator
def __init__(
self, name: str, coordinator: AccuWeatherDataUpdateCoordinator
) -> None:
+2 -6
View File
@@ -3,12 +3,8 @@
"name": "Adax",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/adax",
"requirements": [
"adax==0.2.0", "Adax-local==0.1.3"
],
"codeowners": [
"@danielhiversen"
],
"requirements": ["adax==0.2.0", "Adax-local==0.1.3"],
"codeowners": ["@danielhiversen"],
"iot_class": "local_polling",
"loggers": ["adax", "adax_local"]
}
@@ -4,23 +4,23 @@
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9",
"heater_not_available": "Chauffage non disponible. Essayez de r\u00e9initialiser le chauffage en appuyant sur + et OK pendant quelques secondes.",
"heater_not_found": "Chauffage introuvable. Essayez de rapprocher le radiateur de l'ordinateur Home Assistant.",
"invalid_auth": "Authentification invalide"
"invalid_auth": "Authentification non valide"
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_auth": "Authentification invalide"
"invalid_auth": "Authentification non valide"
},
"step": {
"cloud": {
"data": {
"account_id": "Identifiant de compte",
"password": "Mot der passe"
"password": "Mot de passe"
}
},
"local": {
"data": {
"wifi_pswd": "Mot de passe WiFi",
"wifi_ssid": "identifiant Wifi"
"wifi_pswd": "Mot de passe Wi-Fi",
"wifi_ssid": "R\u00e9seau Wi-Fi"
},
"description": "R\u00e9initialisez le radiateur en appuyant sur + et OK jusqu'\u00e0 ce que l'\u00e9cran affiche \u00ab\u00a0Reset\u00a0\u00bb. Appuyez ensuite sur le bouton OK du radiateur et maintenez-le enfonc\u00e9 jusqu'\u00e0 ce que le voyant bleu commence \u00e0 clignoter avant d'appuyer sur Soumettre. La configuration du chauffage peut prendre quelques minutes."
},
@@ -27,11 +27,11 @@
"user": {
"data": {
"account_id": "\u5e33\u865f ID",
"connection_type": "\u9078\u64c7\u9023\u7dda\u985e\u578b",
"connection_type": "\u9078\u64c7\u9023\u7dda\u985e\u5225",
"host": "\u4e3b\u6a5f\u7aef",
"password": "\u5bc6\u78bc"
},
"description": "\u9078\u64c7\u9023\u7dda\u985e\u578b\u3002\u672c\u5730\u7aef\u5c07\u9700\u8981\u5177\u5099\u85cd\u82bd\u52a0\u71b1\u5668"
"description": "\u9078\u64c7\u9023\u7dda\u985e\u5225\u3002\u672c\u5730\u7aef\u5c07\u9700\u8981\u5177\u5099\u85cd\u82bd\u52a0\u71b1\u5668"
}
}
}
@@ -27,7 +27,7 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
VERSION = 1
_hassio_discovery = None
_hassio_discovery: dict[str, Any] | None = None
async def _show_setup_form(
self, errors: dict[str, str] | None = None
@@ -56,7 +56,6 @@ class AdGuardHomeFlowHandler(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="hassio_confirm",
description_placeholders={"addon": self._hassio_discovery["addon"]},
data_schema=vol.Schema({}),
errors=errors or {},
)
+3 -2
View File
@@ -3,6 +3,7 @@ from __future__ import annotations
from datetime import timedelta
import logging
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
@@ -76,7 +77,7 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
"""Return the state of the switch."""
return self._state
async def async_turn_off(self, **kwargs) -> None:
async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn off the switch."""
try:
await self._adguard_turn_off()
@@ -88,7 +89,7 @@ class AdGuardHomeSwitch(AdGuardHomeDeviceEntity, SwitchEntity):
"""Turn off the switch."""
raise NotImplementedError()
async def async_turn_on(self, **kwargs) -> None:
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn on the switch."""
try:
await self._adguard_turn_on()
+6 -6
View File
@@ -18,12 +18,12 @@ write_data_by_name:
selector:
select:
options:
- 'bool'
- 'byte'
- 'dint'
- 'int'
- 'udint'
- 'uint'
- "bool"
- "byte"
- "dint"
- "int"
- "udint"
- "uint"
value:
name: Value
description: The value to write to the variable.
@@ -3,15 +3,9 @@
"name": "Advantage Air",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/advantage_air",
"codeowners": [
"@Bre77"
],
"requirements": [
"advantage_air==0.3.1"
],
"codeowners": ["@Bre77"],
"requirements": ["advantage_air==0.3.1"],
"quality_scale": "platinum",
"iot_class": "local_polling",
"loggers": [
"advantage_air"
]
}
"loggers": ["advantage_air"]
}
+1 -1
View File
@@ -64,7 +64,7 @@ async def async_setup_entry(
async_add_entities(entities)
class AbstractAemetSensor(CoordinatorEntity, SensorEntity):
class AbstractAemetSensor(CoordinatorEntity[WeatherUpdateCoordinator], SensorEntity):
"""Abstract class for an AEMET OpenData sensor."""
_attr_extra_state_attributes = {ATTR_ATTRIBUTION: ATTRIBUTION}
+26 -27
View File
@@ -1,31 +1,30 @@
{
"config": {
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_location%]"
},
"error": {
"invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]"
},
"step": {
"user": {
"data": {
"api_key": "[%key:common::config_flow::data::api_key%]",
"latitude": "[%key:common::config_flow::data::latitude%]",
"longitude": "[%key:common::config_flow::data::longitude%]",
"name": "Name of the integration"
},
"description": "Set up AEMET OpenData integration. To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario",
"title": "AEMET OpenData"
}
}
"config": {
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_location%]"
},
"options": {
"step": {
"init": {
"data": {
"station_updates": "Gather data from AEMET weather stations"
}
}
}
"error": {
"invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]"
},
"step": {
"user": {
"data": {
"api_key": "[%key:common::config_flow::data::api_key%]",
"latitude": "[%key:common::config_flow::data::latitude%]",
"longitude": "[%key:common::config_flow::data::longitude%]",
"name": "Name of the integration"
},
"description": "To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario"
}
}
},
"options": {
"step": {
"init": {
"data": {
"station_updates": "Gather data from AEMET weather stations"
}
}
}
}
}
@@ -4,7 +4,7 @@
"already_configured": "L'emplacement est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"invalid_api_key": "Cl\u00e9 API invalide"
"invalid_api_key": "Cl\u00e9 d'API non valide"
},
"step": {
"user": {
+1 -1
View File
@@ -43,7 +43,7 @@ async def async_setup_entry(
async_add_entities(entities, False)
class AemetWeather(CoordinatorEntity, WeatherEntity):
class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
"""Implementation of an AEMET OpenData sensor."""
_attr_attribution = ATTRIBUTION
@@ -2,9 +2,7 @@
"domain": "aftership",
"name": "AfterShip",
"documentation": "https://www.home-assistant.io/integrations/aftership",
"requirements": [
"pyaftership==21.11.0"
],
"requirements": ["pyaftership==21.11.0"],
"codeowners": [],
"iot_class": "cloud_polling"
}
+5 -4
View File
@@ -15,7 +15,10 @@ from homeassistant.const import CONF_API_KEY, CONF_NAME
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_send
from homeassistant.helpers.dispatcher import (
async_dispatcher_connect,
async_dispatcher_send,
)
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util import Throttle
@@ -128,9 +131,7 @@ class AfterShipSensor(SensorEntity):
async def async_added_to_hass(self) -> None:
"""Register callbacks."""
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
UPDATE_TOPIC, self._force_update
)
async_dispatcher_connect(self.hass, UPDATE_TOPIC, self._force_update)
)
async def _force_update(self) -> None:
@@ -2,6 +2,6 @@
"domain": "air_quality",
"name": "Air Quality",
"documentation": "https://www.home-assistant.io/integrations/air_quality",
"codeowners": [],
"codeowners": ["@home-assistant/core"],
"quality_scale": "internal"
}
+1 -2
View File
@@ -134,10 +134,9 @@ async def async_setup_entry(
async_add_entities(sensors, False)
class AirlySensor(CoordinatorEntity, SensorEntity):
class AirlySensor(CoordinatorEntity[AirlyDataUpdateCoordinator], SensorEntity):
"""Define an Airly sensor."""
coordinator: AirlyDataUpdateCoordinator
entity_description: AirlySensorEntityDescription
def __init__(
+1 -2
View File
@@ -2,8 +2,7 @@
"config": {
"step": {
"user": {
"title": "Airly",
"description": "Set up Airly air quality integration. To generate API key go to https://developer.airly.eu/register",
"description": "To generate API key go to https://developer.airly.eu/register",
"data": {
"name": "[%key:common::config_flow::data::name%]",
"api_key": "[%key:common::config_flow::data::api_key%]",
@@ -4,7 +4,7 @@
"already_configured": "L'emplacement est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"invalid_api_key": "Cl\u00e9 API invalide",
"invalid_api_key": "Cl\u00e9 d'API non valide",
"wrong_location": "Aucune station de mesure Airly dans cette zone."
},
"step": {
+1 -3
View File
@@ -70,11 +70,9 @@ async def async_setup_entry(
async_add_entities(entities, False)
class AirNowSensor(CoordinatorEntity, SensorEntity):
class AirNowSensor(CoordinatorEntity[AirNowDataUpdateCoordinator], SensorEntity):
"""Define an AirNow sensor."""
coordinator: AirNowDataUpdateCoordinator
def __init__(
self,
coordinator: AirNowDataUpdateCoordinator,
+1 -2
View File
@@ -2,8 +2,7 @@
"config": {
"step": {
"user": {
"title": "AirNow",
"description": "Set up AirNow air quality integration. To generate API key go to https://docs.airnowapi.org/account/request/",
"description": "To generate API key go to https://docs.airnowapi.org/account/request/",
"data": {
"api_key": "[%key:common::config_flow::data::api_key%]",
"latitude": "[%key:common::config_flow::data::latitude%]",
@@ -5,7 +5,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_auth": "Authentification invalide",
"invalid_auth": "Authentification non valide",
"invalid_location": "Aucun r\u00e9sultat trouv\u00e9 pour cet emplacement",
"unknown": "Erreur inattendue"
},
@@ -4,9 +4,7 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airthings",
"requirements": ["airthings_cloud==0.1.0"],
"codeowners": [
"@danielhiversen"
],
"codeowners": ["@danielhiversen"],
"iot_class": "cloud_polling",
"loggers": ["airthings"]
}
}
@@ -18,4 +18,4 @@
"already_configured": "[%key:common::config_flow::abort::already_configured_account%]"
}
}
}
}
@@ -5,7 +5,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_auth": "Authentification invalide",
"invalid_auth": "Authentification non valide",
"unknown": "Erreur inattendue"
},
"step": {
@@ -3,12 +3,8 @@
"name": "AirTouch 4",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airtouch4",
"requirements": [
"airtouch4pyapi==1.0.5"
],
"codeowners": [
"@LonePurpleWolf"
],
"requirements": ["airtouch4pyapi==1.0.5"],
"codeowners": ["@LonePurpleWolf"],
"iot_class": "local_polling",
"loggers": ["airtouch4pyapi"]
}
}
@@ -7,7 +7,7 @@
"error": {
"cannot_connect": "\u00c9chec de connexion",
"general_error": "Erreur inattendue",
"invalid_api_key": "Cl\u00e9 API invalide",
"invalid_api_key": "Cl\u00e9 d'API non valide",
"location_not_found": "Emplacement introuvable"
},
"step": {
@@ -25,7 +25,7 @@
"api_key": "Cl\u00e9 d'API",
"city": "Ville",
"country": "Pays",
"state": "Etat"
"state": "\u00c9tat"
},
"description": "Utilisez l'API cloud AirVisual pour surveiller une ville / un \u00e9tat / un pays.",
"title": "Configurer un lieu g\u00e9ographique"
@@ -11,7 +11,7 @@
"airvisual__pollutant_level": {
"good": "Bon",
"hazardous": "Hasardeux",
"moderate": "Mod\u00e9rer",
"moderate": "Mod\u00e9r\u00e9",
"unhealthy": "Malsain",
"unhealthy_sensitive": "Malsain pour les groupes sensibles",
"very_unhealthy": "Tr\u00e8s malsain"
@@ -2,7 +2,8 @@
"state": {
"airvisual__pollutant_level": {
"good": "\u05d8\u05d5\u05d1",
"unhealthy": "\u05dc\u05d0 \u05d1\u05e8\u05d9\u05d0"
"unhealthy": "\u05dc\u05d0 \u05d1\u05e8\u05d9\u05d0",
"unhealthy_sensitive": "\u05dc\u05d0 \u05d1\u05e8\u05d9\u05d0 \u05dc\u05e7\u05d1\u05d5\u05e6\u05d5\u05ea \u05e8\u05d2\u05d9\u05e9\u05d5\u05ea"
}
}
}
@@ -45,7 +45,7 @@
"title": "\u91cd\u65b0\u8a8d\u8b49 AirVisual"
},
"user": {
"description": "\u9078\u64c7\u6240\u8981\u76e3\u63a7\u7684 AirVisual \u8cc7\u6599\u985e\u578b\u3002",
"description": "\u9078\u64c7\u6240\u8981\u76e3\u63a7\u7684 AirVisual \u8cc7\u6599\u985e\u5225\u3002",
"title": "\u8a2d\u5b9a AirVisual"
}
}
@@ -0,0 +1,89 @@
"""The Airzone integration."""
from __future__ import annotations
from typing import Any
from aioairzone.common import ConnectionOptions
from aioairzone.const import (
AZD_ID,
AZD_NAME,
AZD_SYSTEM,
AZD_THERMOSTAT_FW,
AZD_THERMOSTAT_MODEL,
AZD_ZONES,
)
from aioairzone.localapi import AirzoneLocalApi
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_PORT, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import aiohttp_client
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN, MANUFACTURER
from .coordinator import AirzoneUpdateCoordinator
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.CLIMATE, Platform.SENSOR]
class AirzoneEntity(CoordinatorEntity[AirzoneUpdateCoordinator]):
"""Define an Airzone entity."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
entry: ConfigEntry,
system_zone_id: str,
zone_data: dict[str, Any],
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.system_id = zone_data[AZD_SYSTEM]
self.system_zone_id = system_zone_id
self.zone_id = zone_data[AZD_ID]
self._attr_device_info: DeviceInfo = {
"identifiers": {(DOMAIN, f"{entry.entry_id}_{system_zone_id}")},
"manufacturer": MANUFACTURER,
"model": self.get_zone_value(AZD_THERMOSTAT_MODEL),
"name": f"Airzone [{system_zone_id}] {zone_data[AZD_NAME]}",
"sw_version": self.get_zone_value(AZD_THERMOSTAT_FW),
}
def get_zone_value(self, key):
"""Return zone value by key."""
value = None
if self.system_zone_id in self.coordinator.data[AZD_ZONES]:
zone = self.coordinator.data[AZD_ZONES][self.system_zone_id]
if key in zone:
value = zone[key]
return value
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airzone from a config entry."""
options = ConnectionOptions(
entry.data[CONF_HOST],
entry.data[CONF_PORT],
)
airzone = AirzoneLocalApi(aiohttp_client.async_get_clientsession(hass), options)
coordinator = AirzoneUpdateCoordinator(hass, airzone)
await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
@@ -0,0 +1,114 @@
"""Support for the Airzone sensors."""
from __future__ import annotations
from collections.abc import Mapping
from dataclasses import dataclass
from typing import Any, Final
from aioairzone.const import (
AZD_AIR_DEMAND,
AZD_ERRORS,
AZD_FLOOR_DEMAND,
AZD_NAME,
AZD_PROBLEMS,
AZD_ZONES,
)
from homeassistant.components.binary_sensor import (
DEVICE_CLASS_PROBLEM,
DEVICE_CLASS_RUNNING,
BinarySensorEntity,
BinarySensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirzoneEntity
from .const import DOMAIN
from .coordinator import AirzoneUpdateCoordinator
@dataclass
class AirzoneBinarySensorEntityDescription(BinarySensorEntityDescription):
"""A class that describes airzone binary sensor entities."""
attributes: dict[str, str] | None = None
BINARY_SENSOR_TYPES: Final[tuple[AirzoneBinarySensorEntityDescription, ...]] = (
AirzoneBinarySensorEntityDescription(
device_class=DEVICE_CLASS_RUNNING,
key=AZD_AIR_DEMAND,
name="Air Demand",
),
AirzoneBinarySensorEntityDescription(
device_class=DEVICE_CLASS_RUNNING,
key=AZD_FLOOR_DEMAND,
name="Floor Demand",
),
AirzoneBinarySensorEntityDescription(
attributes={
"errors": AZD_ERRORS,
},
device_class=DEVICE_CLASS_PROBLEM,
entity_category=EntityCategory.DIAGNOSTIC,
key=AZD_PROBLEMS,
name="Problem",
),
)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Add Airzone binary sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]
binary_sensors = []
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items():
for description in BINARY_SENSOR_TYPES:
if description.key in zone_data:
binary_sensors.append(
AirzoneBinarySensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
)
async_add_entities(binary_sensors)
class AirzoneBinarySensor(AirzoneEntity, BinarySensorEntity):
"""Define an Airzone sensor."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
description: AirzoneBinarySensorEntityDescription,
entry: ConfigEntry,
system_zone_id: str,
zone_data: dict[str, Any],
) -> None:
"""Initialize."""
super().__init__(coordinator, entry, system_zone_id, zone_data)
self._attr_name = f"{zone_data[AZD_NAME]} {description.name}"
self._attr_unique_id = f"{entry.entry_id}_{system_zone_id}_{description.key}"
self.attributes = description.attributes
self.entity_description = description
@property
def extra_state_attributes(self) -> Mapping[str, Any] | None:
"""Return state attributes."""
if not self.attributes:
return None
return {key: self.get_zone_value(val) for key, val in self.attributes.items()}
@property
def is_on(self) -> bool | None:
"""Return true if the binary sensor is on."""
return self.get_zone_value(self.entity_description.key)
+191
View File
@@ -0,0 +1,191 @@
"""Support for the Airzone climate."""
from __future__ import annotations
import logging
from typing import Final
from aioairzone.common import OperationMode
from aioairzone.const import (
API_MODE,
API_ON,
API_SET_POINT,
API_SYSTEM_ID,
API_ZONE_ID,
AZD_DEMAND,
AZD_HUMIDITY,
AZD_MASTER,
AZD_MODE,
AZD_MODES,
AZD_NAME,
AZD_ON,
AZD_TEMP,
AZD_TEMP_MAX,
AZD_TEMP_MIN,
AZD_TEMP_SET,
AZD_TEMP_UNIT,
AZD_ZONES,
)
from aioairzone.exceptions import AirzoneError
from aiohttp.client_exceptions import ClientConnectorError
from homeassistant.components.climate import ClimateEntity
from homeassistant.components.climate.const import (
CURRENT_HVAC_COOL,
CURRENT_HVAC_DRY,
CURRENT_HVAC_FAN,
CURRENT_HVAC_HEAT,
CURRENT_HVAC_IDLE,
CURRENT_HVAC_OFF,
HVAC_MODE_COOL,
HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF,
SUPPORT_TARGET_TEMPERATURE,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirzoneEntity
from .const import API_TEMPERATURE_STEP, DOMAIN, TEMP_UNIT_LIB_TO_HASS
from .coordinator import AirzoneUpdateCoordinator
_LOGGER = logging.getLogger(__name__)
HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationMode, str]] = {
OperationMode.STOP: CURRENT_HVAC_OFF,
OperationMode.COOLING: CURRENT_HVAC_COOL,
OperationMode.HEATING: CURRENT_HVAC_HEAT,
OperationMode.FAN: CURRENT_HVAC_FAN,
OperationMode.DRY: CURRENT_HVAC_DRY,
}
HVAC_MODE_LIB_TO_HASS: Final[dict[OperationMode, str]] = {
OperationMode.STOP: HVAC_MODE_OFF,
OperationMode.COOLING: HVAC_MODE_COOL,
OperationMode.HEATING: HVAC_MODE_HEAT,
OperationMode.FAN: HVAC_MODE_FAN_ONLY,
OperationMode.DRY: HVAC_MODE_DRY,
OperationMode.AUTO: HVAC_MODE_HEAT_COOL,
}
HVAC_MODE_HASS_TO_LIB: Final[dict[str, OperationMode]] = {
HVAC_MODE_OFF: OperationMode.STOP,
HVAC_MODE_COOL: OperationMode.COOLING,
HVAC_MODE_HEAT: OperationMode.HEATING,
HVAC_MODE_FAN_ONLY: OperationMode.FAN,
HVAC_MODE_DRY: OperationMode.DRY,
HVAC_MODE_HEAT_COOL: OperationMode.AUTO,
}
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Add Airzone sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities(
AirzoneClimate(
coordinator,
entry,
system_zone_id,
zone_data,
)
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items()
)
class AirzoneClimate(AirzoneEntity, ClimateEntity):
"""Define an Airzone sensor."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
entry: ConfigEntry,
system_zone_id: str,
zone_data: dict,
) -> None:
"""Initialize Airzone climate entity."""
super().__init__(coordinator, entry, system_zone_id, zone_data)
self._attr_name = f"{zone_data[AZD_NAME]}"
self._attr_unique_id = f"{entry.entry_id}_{system_zone_id}"
self._attr_supported_features = SUPPORT_TARGET_TEMPERATURE
self._attr_target_temperature_step = API_TEMPERATURE_STEP
self._attr_max_temp = self.get_zone_value(AZD_TEMP_MAX)
self._attr_min_temp = self.get_zone_value(AZD_TEMP_MIN)
self._attr_temperature_unit = TEMP_UNIT_LIB_TO_HASS[
self.get_zone_value(AZD_TEMP_UNIT)
]
self._attr_hvac_modes = [
HVAC_MODE_LIB_TO_HASS[mode] for mode in self.get_zone_value(AZD_MODES)
]
self._async_update_attrs()
async def _async_update_hvac_params(self, params) -> None:
"""Send HVAC parameters to API."""
try:
await self.coordinator.airzone.put_hvac(params)
except (AirzoneError, ClientConnectorError) as error:
raise HomeAssistantError(
f"Failed to set zone {self.name}: {error}"
) from error
else:
self.coordinator.async_set_updated_data(self.coordinator.airzone.data())
async def async_set_hvac_mode(self, hvac_mode: str) -> None:
"""Set hvac mode."""
params = {
API_SYSTEM_ID: self.system_id,
API_ZONE_ID: self.zone_id,
}
if hvac_mode == HVAC_MODE_OFF:
params[API_ON] = 0
else:
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
if mode != self.get_zone_value(AZD_MODE):
if self.get_zone_value(AZD_MASTER):
params[API_MODE] = mode
else:
raise HomeAssistantError(
f"Mode can't be changed on slave zone {self.name}"
)
params[API_ON] = 1
_LOGGER.debug("Set hvac_mode=%s params=%s", hvac_mode, params)
await self._async_update_hvac_params(params)
async def async_set_temperature(self, **kwargs) -> None:
"""Set new target temperature."""
temp = kwargs.get(ATTR_TEMPERATURE)
params = {
API_SYSTEM_ID: self.system_id,
API_ZONE_ID: self.zone_id,
API_SET_POINT: temp,
}
_LOGGER.debug("Set temp=%s params=%s", temp, params)
await self._async_update_hvac_params(params)
@callback
def _handle_coordinator_update(self) -> None:
"""Update attributes when the coordinator updates."""
self._async_update_attrs()
super()._handle_coordinator_update()
@callback
def _async_update_attrs(self) -> None:
"""Update climate attributes."""
self._attr_current_temperature = self.get_zone_value(AZD_TEMP)
self._attr_current_humidity = self.get_zone_value(AZD_HUMIDITY)
if self.get_zone_value(AZD_ON):
mode = self.get_zone_value(AZD_MODE)
self._attr_hvac_mode = HVAC_MODE_LIB_TO_HASS[mode]
if self.get_zone_value(AZD_DEMAND):
self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[mode]
else:
self._attr_hvac_action = CURRENT_HVAC_IDLE
else:
self._attr_hvac_action = CURRENT_HVAC_OFF
self._attr_hvac_mode = HVAC_MODE_OFF
self._attr_target_temperature = self.get_zone_value(AZD_TEMP_SET)
@@ -0,0 +1,62 @@
"""Config flow for Airzone."""
from __future__ import annotations
from typing import Any
from aioairzone.common import ConnectionOptions
from aioairzone.exceptions import InvalidHost
from aioairzone.localapi import AirzoneLocalApi
from aiohttp.client_exceptions import ClientConnectorError
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_HOST, CONF_PORT
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers import aiohttp_client
from .const import DEFAULT_LOCAL_API_PORT, DOMAIN
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle config flow for an Airzone device."""
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the initial step."""
errors = {}
if user_input is not None:
self._async_abort_entries_match(
{
CONF_HOST: user_input[CONF_HOST],
CONF_PORT: user_input[CONF_PORT],
}
)
airzone = AirzoneLocalApi(
aiohttp_client.async_get_clientsession(self.hass),
ConnectionOptions(
user_input[CONF_HOST],
user_input[CONF_PORT],
),
)
try:
await airzone.validate_airzone()
except (ClientConnectorError, InvalidHost):
errors["base"] = "cannot_connect"
else:
title = f"Airzone {user_input[CONF_HOST]}:{user_input[CONF_PORT]}"
return self.async_create_entry(title=title, data=user_input)
return self.async_show_form(
step_id="user",
data_schema=vol.Schema(
{
vol.Required(CONF_HOST): str,
vol.Required(CONF_PORT, default=DEFAULT_LOCAL_API_PORT): int,
}
),
errors=errors,
)
+19
View File
@@ -0,0 +1,19 @@
"""Constants for the Airzone integration."""
from typing import Final
from aioairzone.common import TemperatureUnit
from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
DOMAIN: Final = "airzone"
MANUFACTURER: Final = "Airzone"
AIOAIRZONE_DEVICE_TIMEOUT_SEC: Final = 10
API_TEMPERATURE_STEP: Final = 0.5
DEFAULT_LOCAL_API_PORT: Final = 3000
TEMP_UNIT_LIB_TO_HASS: Final[dict[TemperatureUnit, str]] = {
TemperatureUnit.CELSIUS: TEMP_CELSIUS,
TemperatureUnit.FAHRENHEIT: TEMP_FAHRENHEIT,
}
@@ -0,0 +1,42 @@
"""The Airzone integration."""
from __future__ import annotations
from datetime import timedelta
import logging
from aioairzone.localapi import AirzoneLocalApi
from aiohttp.client_exceptions import ClientConnectorError
import async_timeout
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import AIOAIRZONE_DEVICE_TIMEOUT_SEC, DOMAIN
SCAN_INTERVAL = timedelta(seconds=60)
_LOGGER = logging.getLogger(__name__)
class AirzoneUpdateCoordinator(DataUpdateCoordinator):
"""Class to manage fetching data from the Airzone device."""
def __init__(self, hass: HomeAssistant, airzone: AirzoneLocalApi) -> None:
"""Initialize."""
self.airzone = airzone
super().__init__(
hass,
_LOGGER,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
async def _async_update_data(self):
"""Update data via library."""
async with async_timeout.timeout(AIOAIRZONE_DEVICE_TIMEOUT_SEC):
try:
await self.airzone.update_airzone()
except ClientConnectorError as error:
raise UpdateFailed(error) from error
return self.airzone.data()
@@ -0,0 +1,10 @@
{
"domain": "airzone",
"name": "Airzone",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airzone",
"requirements": ["aioairzone==0.3.3"],
"codeowners": ["@Noltari"],
"iot_class": "local_polling",
"loggers": ["aioairzone"]
}
@@ -0,0 +1,93 @@
"""Support for the Airzone sensors."""
from __future__ import annotations
from typing import Any, Final
from aioairzone.const import AZD_HUMIDITY, AZD_NAME, AZD_TEMP, AZD_TEMP_UNIT, AZD_ZONES
from homeassistant.components.sensor import (
STATE_CLASS_MEASUREMENT,
SensorEntity,
SensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
TEMP_CELSIUS,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirzoneEntity
from .const import DOMAIN, TEMP_UNIT_LIB_TO_HASS
from .coordinator import AirzoneUpdateCoordinator
SENSOR_TYPES: Final[tuple[SensorEntityDescription, ...]] = (
SensorEntityDescription(
device_class=DEVICE_CLASS_TEMPERATURE,
key=AZD_TEMP,
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
state_class=STATE_CLASS_MEASUREMENT,
),
SensorEntityDescription(
device_class=DEVICE_CLASS_HUMIDITY,
key=AZD_HUMIDITY,
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
state_class=STATE_CLASS_MEASUREMENT,
),
)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Add Airzone sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]
sensors = []
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items():
for description in SENSOR_TYPES:
if description.key in zone_data:
sensors.append(
AirzoneSensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
)
async_add_entities(sensors)
class AirzoneSensor(AirzoneEntity, SensorEntity):
"""Define an Airzone sensor."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
description: SensorEntityDescription,
entry: ConfigEntry,
system_zone_id: str,
zone_data: dict[str, Any],
) -> None:
"""Initialize."""
super().__init__(coordinator, entry, system_zone_id, zone_data)
self._attr_name = f"{zone_data[AZD_NAME]} {description.name}"
self._attr_unique_id = f"{entry.entry_id}_{system_zone_id}_{description.key}"
self.entity_description = description
if description.key == AZD_TEMP:
self._attr_native_unit_of_measurement = TEMP_UNIT_LIB_TO_HASS.get(
self.get_zone_value(AZD_TEMP_UNIT)
)
@property
def native_value(self):
"""Return the state."""
return self.get_zone_value(self.entity_description.key)
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
},
"step": {
"user": {
"data": {
"host": "[%key:common::config_flow::data::host%]",
"port": "[%key:common::config_flow::data::port%]"
},
"description": "Set up Airzone integration."
}
}
}
}
@@ -0,0 +1,18 @@
{
"config": {
"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": {
"host": "\u0425\u043e\u0441\u0442",
"port": "\u041f\u043e\u0440\u0442"
}
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "El dispositiu ja est\u00e0 configurat"
},
"error": {
"cannot_connect": "Ha fallat la connexi\u00f3"
},
"step": {
"user": {
"data": {
"host": "Amfitri\u00f3",
"port": "Port"
},
"description": "Configura la integraci\u00f3 Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Ger\u00e4t ist bereits konfiguriert"
},
"error": {
"cannot_connect": "Verbindung fehlgeschlagen"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Port"
},
"description": "Richte die Airzone-Integration ein."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "\u0397 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ad\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03b8\u03b5\u03af"
},
"error": {
"cannot_connect": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2"
},
"step": {
"user": {
"data": {
"host": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2",
"port": "\u0398\u03cd\u03c1\u03b1"
},
"description": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Device is already configured"
},
"error": {
"cannot_connect": "Failed to connect"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Port"
},
"description": "Set up Airzone integration."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Seade on juba h\u00e4\u00e4lestatud"
},
"error": {
"cannot_connect": "\u00dchendamine nurjus"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Port"
},
"description": "Seadista Airzone'i sidumine"
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"cannot_connect": "\u00c9chec de connexion"
},
"step": {
"user": {
"data": {
"host": "H\u00f4te",
"port": "Port"
},
"description": "Configurer l'int\u00e9gration Airzone."
}
}
}
}
@@ -0,0 +1,18 @@
{
"config": {
"abort": {
"already_configured": "\u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05ea\u05e7\u05df \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4"
},
"error": {
"cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4"
},
"step": {
"user": {
"data": {
"host": "\u05de\u05d0\u05e8\u05d7",
"port": "\u05e4\u05ea\u05d7\u05d4"
}
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van"
},
"error": {
"cannot_connect": "Sikertelen csatlakoz\u00e1s"
},
"step": {
"user": {
"data": {
"host": "C\u00edm",
"port": "Port"
},
"description": "Airzone integr\u00e1ci\u00f3 be\u00e1ll\u00edt\u00e1sa."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Perangkat sudah dikonfigurasi"
},
"error": {
"cannot_connect": "Gagal terhubung"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Port"
},
"description": "Siapkan integrasi Airzone"
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato"
},
"error": {
"cannot_connect": "Impossibile connettersi"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Porta"
},
"description": "Imposta l'integrazione Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "\u30c7\u30d0\u30a4\u30b9\u306f\u3059\u3067\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"
},
"error": {
"cannot_connect": "\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f"
},
"step": {
"user": {
"data": {
"host": "\u30db\u30b9\u30c8",
"port": "\u30dd\u30fc\u30c8"
},
"description": "Airzone\u30a4\u30f3\u30c6\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7"
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Apparaat is al geconfigureerd"
},
"error": {
"cannot_connect": "Kon niet verbinden"
},
"step": {
"user": {
"data": {
"host": "Host",
"port": "Poort"
},
"description": "Airzone integratie instellen."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Enheten er allerede konfigurert"
},
"error": {
"cannot_connect": "Tilkobling mislyktes"
},
"step": {
"user": {
"data": {
"host": "Vert",
"port": "Port"
},
"description": "Sett opp Airzone-integrasjon."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane"
},
"error": {
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia"
},
"step": {
"user": {
"data": {
"host": "Nazwa hosta lub adres IP",
"port": "Port"
},
"description": "Skonfiguruj integracj\u0119 Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "Dispositivo j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "Falha ao conectar"
},
"step": {
"user": {
"data": {
"host": "Nome do host",
"port": "Porta"
},
"description": "Configure a integra\u00e7\u00e3o Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant."
},
"error": {
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f."
},
"step": {
"user": {
"data": {
"host": "\u0425\u043e\u0441\u0442",
"port": "\u041f\u043e\u0440\u0442"
},
"description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Home Assistant \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 Airzone."
}
}
}
}
@@ -0,0 +1,19 @@
{
"config": {
"abort": {
"already_configured": "\u88dd\u7f6e\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
},
"error": {
"cannot_connect": "\u9023\u7dda\u5931\u6557"
},
"step": {
"user": {
"data": {
"host": "\u4e3b\u6a5f\u7aef",
"port": "\u901a\u8a0a\u57e0"
},
"description": "\u8a2d\u5b9a Airzone \u6574\u5408\u3002"
}
}
}
}
@@ -2,6 +2,6 @@
"domain": "alarm_control_panel",
"name": "Alarm Control Panel",
"documentation": "https://www.home-assistant.io/integrations/alarm_control_panel",
"codeowners": [],
"codeowners": ["@home-assistant/core"],
"quality_scale": "internal"
}
@@ -30,15 +30,15 @@
"armed": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2",
"armed_away": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03bc\u03b1\u03ba\u03c1\u03b9\u03ac",
"armed_custom_bypass": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03b1\u03c1\u03ac\u03ba\u03b1\u03bc\u03c8\u03b7 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae",
"armed_home": "\u03a3\u03c0\u03af\u03c4\u03b9 \u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
"armed_night": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03b2\u03c1\u03ac\u03b4\u03c5",
"armed_home": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c3\u03c0\u03af\u03c4\u03b9",
"armed_night": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03b2\u03c1\u03ac\u03b4\u03c5",
"armed_vacation": "\u039f\u03c0\u03bb\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ce\u03bd",
"arming": "\u038c\u03c0\u03bb\u03b9\u03c3\u03b7",
"disarmed": "\u0391\u03c6\u03bf\u03c0\u03bb\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2",
"disarming": "\u0391\u03c6\u03cc\u03c0\u03bb\u03b9\u03c3\u03b7",
"pending": "\u0395\u03ba\u03ba\u03c1\u03b5\u03bc\u03ae\u03c2",
"triggered": "\u03a0\u03b1\u03c1\u03b1\u03b2\u03af\u03b1\u03c3\u03b7"
"triggered": "\u03a0\u03c5\u03c1\u03bf\u03b4\u03bf\u03c4\u03ae\u03b8\u03b7\u03ba\u03b5"
}
},
"title": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c9\u03bd"
"title": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b1\u03b3\u03b5\u03c1\u03bc\u03bf\u03cd"
}
@@ -22,6 +22,7 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_platform
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
@@ -95,8 +96,8 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
async def async_added_to_hass(self):
"""Register callbacks."""
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_PANEL_MESSAGE, self._message_callback
async_dispatcher_connect(
self.hass, SIGNAL_PANEL_MESSAGE, self._message_callback
)
)
@@ -4,6 +4,7 @@ import logging
from homeassistant.components.binary_sensor import BinarySensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
@@ -90,26 +91,24 @@ class AlarmDecoderBinarySensor(BinarySensorEntity):
async def async_added_to_hass(self):
"""Register callbacks."""
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_ZONE_FAULT, self._fault_callback
async_dispatcher_connect(self.hass, SIGNAL_ZONE_FAULT, self._fault_callback)
)
self.async_on_remove(
async_dispatcher_connect(
self.hass, SIGNAL_ZONE_RESTORE, self._restore_callback
)
)
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_ZONE_RESTORE, self._restore_callback
async_dispatcher_connect(
self.hass, SIGNAL_RFX_MESSAGE, self._rfx_message_callback
)
)
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_RFX_MESSAGE, self._rfx_message_callback
)
)
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_REL_MESSAGE, self._rel_message_callback
async_dispatcher_connect(
self.hass, SIGNAL_REL_MESSAGE, self._rel_message_callback
)
)
@@ -2,6 +2,7 @@
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import SIGNAL_PANEL_MESSAGE
@@ -26,8 +27,8 @@ class AlarmDecoderSensor(SensorEntity):
async def async_added_to_hass(self):
"""Register callbacks."""
self.async_on_remove(
self.hass.helpers.dispatcher.async_dispatcher_connect(
SIGNAL_PANEL_MESSAGE, self._message_callback
async_dispatcher_connect(
self.hass, SIGNAL_PANEL_MESSAGE, self._message_callback
)
)
@@ -57,7 +57,7 @@
"zone_relayaddr": "\u4e2d\u7e7c\u4f4d\u5740",
"zone_relaychan": "\u4e2d\u7e7c\u983b\u9053",
"zone_rfid": "RF \u5e8f\u5217",
"zone_type": "\u5340\u57df\u985e\u578b"
"zone_type": "\u5340\u57df\u985e\u5225"
},
"description": "\u8f38\u5165\u5340\u57df {zone_number} \u8a73\u7d30\u8cc7\u6599\u3002\u6b32\u522a\u9664\u5340\u57df {zone_number}\uff0c\u4fdd\u6301\u5340\u57df\u540d\u7a31\u7a7a\u767d\u3002",
"title": "\u8a2d\u5b9a AlarmDecoder"
+60 -42
View File
@@ -1,6 +1,10 @@
"""Support for repeating alerts when conditions are met."""
from __future__ import annotations
from collections.abc import Callable
from datetime import timedelta
import logging
from typing import Any, final
import voluptuous as vol
@@ -23,10 +27,15 @@ from homeassistant.const import (
STATE_OFF,
STATE_ON,
)
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.helpers import event, service
from homeassistant.core import Event, HomeAssistant, ServiceCall
from homeassistant.helpers import service
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import ToggleEntity
from homeassistant.helpers.event import (
async_track_point_in_time,
async_track_state_change_event,
)
from homeassistant.helpers.template import Template
from homeassistant.helpers.typing import ConfigType
from homeassistant.util.dt import now
@@ -62,7 +71,7 @@ ALERT_SCHEMA = vol.Schema(
vol.Optional(CONF_DONE_MESSAGE): cv.template,
vol.Optional(CONF_TITLE): cv.template,
vol.Optional(CONF_DATA): dict,
vol.Required(CONF_NOTIFIERS): cv.ensure_list,
vol.Required(CONF_NOTIFIERS): vol.All(cv.ensure_list, [cv.string]),
}
)
@@ -73,14 +82,14 @@ CONFIG_SCHEMA = vol.Schema(
ALERT_SERVICE_SCHEMA = vol.Schema({vol.Required(ATTR_ENTITY_ID): cv.entity_ids})
def is_on(hass, entity_id):
def is_on(hass: HomeAssistant, entity_id: str) -> bool:
"""Return if the alert is firing and not acknowledged."""
return hass.states.is_state(entity_id, STATE_ON)
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Alert component."""
entities = []
entities: list[Alert] = []
for object_id, cfg in config[DOMAIN].items():
if not cfg:
@@ -144,10 +153,16 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
schema=ALERT_SERVICE_SCHEMA,
)
hass.services.async_register(
DOMAIN, SERVICE_TURN_ON, async_handle_alert_service, schema=ALERT_SERVICE_SCHEMA
DOMAIN,
SERVICE_TURN_ON,
async_handle_alert_service,
schema=ALERT_SERVICE_SCHEMA,
)
hass.services.async_register(
DOMAIN, SERVICE_TOGGLE, async_handle_alert_service, schema=ALERT_SERVICE_SCHEMA
DOMAIN,
SERVICE_TOGGLE,
async_handle_alert_service,
schema=ALERT_SERVICE_SCHEMA,
)
for alert in entities:
@@ -163,20 +178,20 @@ class Alert(ToggleEntity):
def __init__(
self,
hass,
entity_id,
name,
watched_entity_id,
state,
repeat,
skip_first,
message_template,
done_message_template,
notifiers,
can_ack,
title_template,
data,
):
hass: HomeAssistant,
entity_id: str,
name: str,
watched_entity_id: str,
state: str,
repeat: list[float],
skip_first: bool,
message_template: Template | None,
done_message_template: Template | None,
notifiers: list[str],
can_ack: bool,
title_template: Template | None,
data: dict[Any, Any],
) -> None:
"""Initialize the alert."""
self.hass = hass
self._attr_name = name
@@ -204,16 +219,18 @@ class Alert(ToggleEntity):
self._firing = False
self._ack = False
self._cancel = None
self._cancel: Callable[[], None] | None = None
self._send_done_message = False
self.entity_id = f"{DOMAIN}.{entity_id}"
event.async_track_state_change_event(
async_track_state_change_event(
hass, [watched_entity_id], self.watched_entity_change
)
@final # type: ignore[misc]
@property
def state(self): # pylint: disable=overridden-final-method
# pylint: disable=overridden-final-method
def state(self) -> str: # type: ignore[override]
"""Return the alert status."""
if self._firing:
if self._ack:
@@ -221,17 +238,17 @@ class Alert(ToggleEntity):
return STATE_ON
return STATE_IDLE
async def watched_entity_change(self, ev):
async def watched_entity_change(self, event: Event) -> None:
"""Determine if the alert should start or stop."""
if (to_state := ev.data.get("new_state")) is None:
if (to_state := event.data.get("new_state")) is None:
return
_LOGGER.debug("Watched entity (%s) has changed", ev.data.get("entity_id"))
_LOGGER.debug("Watched entity (%s) has changed", event.data.get("entity_id"))
if to_state.state == self._alert_state and not self._firing:
await self.begin_alerting()
if to_state.state != self._alert_state and self._firing:
await self.end_alerting()
async def begin_alerting(self):
async def begin_alerting(self) -> None:
"""Begin the alert procedures."""
_LOGGER.debug("Beginning Alert: %s", self._attr_name)
self._ack = False
@@ -245,26 +262,27 @@ class Alert(ToggleEntity):
self.async_write_ha_state()
async def end_alerting(self):
async def end_alerting(self) -> None:
"""End the alert procedures."""
_LOGGER.debug("Ending Alert: %s", self._attr_name)
self._cancel()
if self._cancel is not None:
self._cancel()
self._cancel = None
self._ack = False
self._firing = False
if self._send_done_message:
await self._notify_done_message()
self.async_write_ha_state()
async def _schedule_notify(self):
async def _schedule_notify(self) -> None:
"""Schedule a notification."""
delay = self._delay[self._next_delay]
next_msg = now() + delay
self._cancel = event.async_track_point_in_time(
self.hass, self._notify, next_msg
)
self._cancel = async_track_point_in_time(self.hass, self._notify, next_msg)
self._next_delay = min(self._next_delay + 1, len(self._delay) - 1)
async def _notify(self, *args):
async def _notify(self, *args: Any) -> None:
"""Send the alert notification."""
if not self._firing:
return
@@ -281,7 +299,7 @@ class Alert(ToggleEntity):
await self._send_notification_message(message)
await self._schedule_notify()
async def _notify_done_message(self, *args):
async def _notify_done_message(self) -> None:
"""Send notification of complete alert."""
_LOGGER.info("Alerting: %s", self._done_message_template)
self._send_done_message = False
@@ -293,15 +311,15 @@ class Alert(ToggleEntity):
await self._send_notification_message(message)
async def _send_notification_message(self, message):
async def _send_notification_message(self, message: Any) -> None:
msg_payload = {ATTR_MESSAGE: message}
if self._title_template is not None:
title = self._title_template.async_render(parse_result=False)
msg_payload.update({ATTR_TITLE: title})
msg_payload[ATTR_TITLE] = title
if self._data:
msg_payload.update({ATTR_DATA: self._data})
msg_payload[ATTR_DATA] = self._data
_LOGGER.debug(msg_payload)
@@ -310,19 +328,19 @@ class Alert(ToggleEntity):
DOMAIN_NOTIFY, target, msg_payload, context=self._context
)
async def async_turn_on(self, **kwargs):
async def async_turn_on(self, **kwargs: Any) -> None:
"""Async Unacknowledge alert."""
_LOGGER.debug("Reset Alert: %s", self._attr_name)
self._ack = False
self.async_write_ha_state()
async def async_turn_off(self, **kwargs):
async def async_turn_off(self, **kwargs: Any) -> None:
"""Async Acknowledge alert."""
_LOGGER.debug("Acknowledged Alert: %s", self._attr_name)
self._ack = True
self.async_write_ha_state()
async def async_toggle(self, **kwargs):
async def async_toggle(self, **kwargs: Any) -> None:
"""Async toggle alert."""
if self._ack:
return await self.async_turn_on()
+1 -1
View File
@@ -3,7 +3,7 @@
"name": "Alert",
"documentation": "https://www.home-assistant.io/integrations/alert",
"after_dependencies": ["notify"],
"codeowners": [],
"codeowners": ["@home-assistant/core"],
"quality_scale": "internal",
"iot_class": "local_push"
}
+18 -28
View File
@@ -75,6 +75,8 @@ class AlexaCapability:
https://developer.amazon.com/docs/device-apis/message-guide.html
"""
# pylint: disable=no-self-use
supported_locales = {"en-US"}
def __init__(self, entity: State, instance: str | None = None) -> None:
@@ -86,28 +88,23 @@ class AlexaCapability:
"""Return the Alexa API name of this interface."""
raise NotImplementedError
@staticmethod
def properties_supported() -> list[dict]:
def properties_supported(self) -> list[dict]:
"""Return what properties this entity supports."""
return []
@staticmethod
def properties_proactively_reported() -> bool:
def properties_proactively_reported(self) -> bool:
"""Return True if properties asynchronously reported."""
return False
@staticmethod
def properties_retrievable() -> bool:
def properties_retrievable(self) -> bool:
"""Return True if properties can be retrieved."""
return False
@staticmethod
def properties_non_controllable() -> bool | None:
def properties_non_controllable(self) -> bool | None:
"""Return True if non controllable."""
return None
@staticmethod
def get_property(name):
def get_property(self, name):
"""Read and return a property.
Return value should be a dict, or raise UnsupportedProperty.
@@ -117,13 +114,11 @@ class AlexaCapability:
"""
raise UnsupportedProperty(name)
@staticmethod
def supports_deactivation():
def supports_deactivation(self):
"""Applicable only to scenes."""
return None
@staticmethod
def capability_proactively_reported():
def capability_proactively_reported(self):
"""Return True if the capability is proactively reported.
Set properties_proactively_reported() for proactively reported properties.
@@ -131,16 +126,14 @@ class AlexaCapability:
"""
return None
@staticmethod
def capability_resources():
def capability_resources(self):
"""Return the capability object.
Applicable to ToggleController, RangeController, and ModeController interfaces.
"""
return []
@staticmethod
def configuration():
def configuration(self):
"""Return the configuration object.
Applicable to the ThermostatController, SecurityControlPanel, ModeController, RangeController,
@@ -148,8 +141,7 @@ class AlexaCapability:
"""
return []
@staticmethod
def configurations():
def configurations(self):
"""Return the configurations object.
The plural configurations object is different that the singular configuration object.
@@ -157,31 +149,29 @@ class AlexaCapability:
"""
return []
@staticmethod
def inputs():
def inputs(self):
"""Applicable only to media players."""
return []
@staticmethod
def semantics():
def semantics(self):
"""Return the semantics object.
Applicable to ToggleController, RangeController, and ModeController interfaces.
"""
return []
@staticmethod
def supported_operations():
def supported_operations(self):
"""Return the supportedOperations object."""
return []
@staticmethod
def camera_stream_configurations():
def camera_stream_configurations(self):
"""Applicable only to CameraStreamController."""
return None
def serialize_discovery(self):
"""Serialize according to the Discovery API."""
# pylint: disable=assignment-from-none
# Methods may be overridden and return a value.
result = {"type": "AlexaInterface", "interface": self.name(), "version": "3"}
if (instance := self.instance) is not None:
+4 -4
View File
@@ -200,6 +200,8 @@ class AlexaCapabilityResource:
https://developer.amazon.com/docs/device-apis/resources-and-assets.html#capability-resources
"""
# pylint: disable=no-self-use
def __init__(self, labels):
"""Initialize an Alexa resource."""
self._resource_labels = []
@@ -210,13 +212,11 @@ class AlexaCapabilityResource:
"""Return capabilityResources object serialized for an API response."""
return self.serialize_labels(self._resource_labels)
@staticmethod
def serialize_configuration():
def serialize_configuration(self):
"""Return ModeResources, PresetResources friendlyNames serialized for an API response."""
return []
@staticmethod
def serialize_labels(resources):
def serialize_labels(self, resources):
"""Return resource label objects for friendlyNames serialized for an API response."""
labels = []
for label in resources:
@@ -68,7 +68,10 @@ class AlexaConfig(AbstractConfig):
entity_registry = er.async_get(self.hass)
if registry_entry := entity_registry.async_get(entity_id):
auxiliary_entity = registry_entry.entity_category is not None
auxiliary_entity = (
registry_entry.entity_category is not None
or registry_entry.hidden_by is not None
)
else:
auxiliary_entity = False
return not auxiliary_entity
@@ -8,7 +8,6 @@ from typing import Any
from aiohttp import ClientError
import async_timeout
from pyalmond import AlmondLocalAuth, WebAlmondAPI
import voluptuous as vol
from yarl import URL
from homeassistant import core, data_entry_flow
@@ -122,5 +121,4 @@ class AlmondFlowHandler(
return self.async_show_form(
step_id="hassio_confirm",
description_placeholders={"addon": data["addon"]},
data_schema=vol.Schema({}),
)
@@ -3,7 +3,7 @@
"abort": {
"cannot_connect": "\u00c9chec de connexion",
"missing_configuration": "Le composant n'est pas configur\u00e9. Veuillez suivre la documentation.",
"no_url_available": "Aucune URL disponible. Pour plus d'informations sur cette erreur, [consultez la section d'aide] ( {docs_url} )",
"no_url_available": "Aucune URL disponible. Pour plus d'informations sur cette erreur, [consultez la section d'aide]({docs_url})",
"single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible."
},
"step": {
@@ -5,7 +5,7 @@
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_api_key": "Cl\u00e9 API invalide"
"invalid_api_key": "Cl\u00e9 d'API non valide"
},
"step": {
"reauth_confirm": {
@@ -24,7 +24,9 @@ PRICE_SPIKE_ICONS = {
}
class AmberPriceGridSensor(CoordinatorEntity, BinarySensorEntity):
class AmberPriceGridSensor(
CoordinatorEntity[AmberUpdateCoordinator], BinarySensorEntity
):
"""Sensor to show single grid binary values."""
_attr_attribution = ATTRIBUTION
@@ -10,6 +10,7 @@ from amberelectric.model.actual_interval import ActualInterval
from amberelectric.model.channel import ChannelType
from amberelectric.model.current_interval import CurrentInterval
from amberelectric.model.forecast_interval import ForecastInterval
from amberelectric.model.interval import Descriptor
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
@@ -44,6 +45,27 @@ def is_feed_in(interval: ActualInterval | CurrentInterval | ForecastInterval) ->
return interval.channel_type == ChannelType.FEED_IN
def normalize_descriptor(descriptor: Descriptor) -> str | None:
"""Return the snake case versions of descriptor names. Returns None if the name is not recognized."""
if descriptor is None:
return None
if descriptor.value == "spike":
return "spike"
if descriptor.value == "high":
return "high"
if descriptor.value == "neutral":
return "neutral"
if descriptor.value == "low":
return "low"
if descriptor.value == "veryLow":
return "very_low"
if descriptor.value == "extremelyLow":
return "extremely_low"
if descriptor.value == "negative":
return "negative"
return None
class AmberUpdateCoordinator(DataUpdateCoordinator):
"""AmberUpdateCoordinator - In charge of downloading the data for a site, which all the sensors read."""
@@ -65,6 +87,7 @@ class AmberUpdateCoordinator(DataUpdateCoordinator):
result: dict[str, dict[str, Any]] = {
"current": {},
"descriptors": {},
"forecasts": {},
"grid": {},
}
@@ -81,6 +104,7 @@ class AmberUpdateCoordinator(DataUpdateCoordinator):
raise UpdateFailed("No general channel configured")
result["current"]["general"] = general[0]
result["descriptors"]["general"] = normalize_descriptor(general[0].descriptor)
result["forecasts"]["general"] = [
interval for interval in forecasts if is_general(interval)
]
@@ -92,6 +116,9 @@ class AmberUpdateCoordinator(DataUpdateCoordinator):
]
if controlled_load:
result["current"]["controlled_load"] = controlled_load[0]
result["descriptors"]["controlled_load"] = normalize_descriptor(
controlled_load[0].descriptor
)
result["forecasts"]["controlled_load"] = [
interval for interval in forecasts if is_controlled_load(interval)
]
@@ -99,6 +126,9 @@ class AmberUpdateCoordinator(DataUpdateCoordinator):
feed_in = [interval for interval in current if is_feed_in(interval)]
if feed_in:
result["current"]["feed_in"] = feed_in[0]
result["descriptors"]["feed_in"] = normalize_descriptor(
feed_in[0].descriptor
)
result["forecasts"]["feed_in"] = [
interval for interval in forecasts if is_feed_in(interval)
]
@@ -1,14 +1,10 @@
{
"domain": "amberelectric",
"name": "Amber Electric",
"documentation": "https://www.home-assistant.io/integrations/amberelectric",
"config_flow": true,
"codeowners": [
"@madpilot"
],
"requirements": [
"amberelectric==1.0.3"
],
"iot_class": "cloud_polling",
"loggers": ["amberelectric"]
}
"domain": "amberelectric",
"name": "Amber Electric",
"documentation": "https://www.home-assistant.io/integrations/amberelectric",
"config_flow": true,
"codeowners": ["@madpilot"],
"requirements": ["amberelectric==1.0.4"],
"iot_class": "cloud_polling",
"loggers": ["amberelectric"]
}
@@ -26,7 +26,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import ATTRIBUTION, DOMAIN
from .coordinator import AmberUpdateCoordinator
from .coordinator import AmberUpdateCoordinator, normalize_descriptor
ICONS = {
"general": "mdi:transmission-tower",
@@ -51,7 +51,7 @@ def friendly_channel_type(channel_type: str) -> str:
return "General"
class AmberSensor(CoordinatorEntity, SensorEntity):
class AmberSensor(CoordinatorEntity[AmberUpdateCoordinator], SensorEntity):
"""Amber Base Sensor."""
_attr_attribution = ATTRIBUTION
@@ -160,6 +160,7 @@ class AmberForecastSensor(AmberSensor):
datum["end_time"] = interval.end_time.isoformat()
datum["renewables"] = round(interval.renewables)
datum["spike_status"] = interval.spike_status.value
datum["descriptor"] = normalize_descriptor(interval.descriptor)
if interval.range is not None:
datum["range_min"] = format_cents_to_dollars(interval.range.min)
@@ -170,7 +171,16 @@ class AmberForecastSensor(AmberSensor):
return data
class AmberGridSensor(CoordinatorEntity, SensorEntity):
class AmberPriceDescriptorSensor(AmberSensor):
"""Amber Price Descriptor Sensor."""
@property
def native_value(self) -> str | None:
"""Return the current price descriptor."""
return self.coordinator.data[self.entity_description.key][self.channel_type]
class AmberGridSensor(CoordinatorEntity[AmberUpdateCoordinator], SensorEntity):
"""Sensor to show single grid specific values."""
_attr_attribution = ATTRIBUTION
@@ -214,6 +224,16 @@ async def async_setup_entry(
)
entities.append(AmberPriceSensor(coordinator, description, channel_type))
for channel_type in current:
description = SensorEntityDescription(
key="descriptors",
name=f"{entry.title} - {friendly_channel_type(channel_type)} Price Descriptor",
icon=ICONS[channel_type],
)
entities.append(
AmberPriceDescriptorSensor(coordinator, description, channel_type)
)
for channel_type in forecasts:
description = SensorEntityDescription(
key="forecasts",
@@ -6,7 +6,6 @@
"api_token": "API Token",
"site_id": "Site ID"
},
"title": "Amber Electric",
"description": "Go to {api_url} to generate an API key"
},
"site": {
@@ -14,9 +13,8 @@
"site_nmi": "Site NMI",
"site_name": "Site Name"
},
"title": "Amber Electric",
"description": "Select the NMI of the site you would like to add"
}
}
}
}
}
@@ -28,10 +28,21 @@ TYPE_BATT6 = "batt6"
TYPE_BATT7 = "batt7"
TYPE_BATT8 = "batt8"
TYPE_BATT9 = "batt9"
TYPE_BATT_CO2 = "batt_co2"
TYPE_BATTOUT = "battout"
TYPE_PM25_BATT = "batt_25"
TYPE_BATT_CO2 = "batt_co2"
TYPE_BATT_LIGHTNING = "batt_lightning"
TYPE_BATT_SM1 = "battsm1"
TYPE_BATT_SM10 = "battsm10"
TYPE_BATT_SM2 = "battsm2"
TYPE_BATT_SM3 = "battsm3"
TYPE_BATT_SM4 = "battsm4"
TYPE_BATT_SM5 = "battsm5"
TYPE_BATT_SM6 = "battsm6"
TYPE_BATT_SM7 = "battsm7"
TYPE_BATT_SM8 = "battsm8"
TYPE_BATT_SM9 = "battsm9"
TYPE_PM25IN_BATT = "batt_25in"
TYPE_PM25_BATT = "batt_25"
TYPE_RELAY1 = "relay1"
TYPE_RELAY10 = "relay10"
TYPE_RELAY2 = "relay2"
@@ -131,7 +142,77 @@ BINARY_SENSOR_DESCRIPTIONS = (
),
AmbientBinarySensorDescription(
key=TYPE_BATT10,
name="Battery 10",
name="Soil Monitor Battery 10",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM1,
name="Soil Monitor Battery 1",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM2,
name="Soil Monitor Battery 2",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM3,
name="Soil Monitor Battery 3",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM4,
name="Soil Monitor Battery 4",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM5,
name="Soil Monitor Battery 5",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM6,
name="Soil Monitor Battery 6",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM7,
name="Soil Monitor Battery 7",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM8,
name="Soil Monitor Battery 8",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM9,
name="Soil Monitor Battery 9",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_SM10,
name="Soil Monitor Battery 10",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
@@ -143,6 +224,13 @@ BINARY_SENSOR_DESCRIPTIONS = (
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_BATT_LIGHTNING,
name="Lightning Detector Battery",
device_class=BinarySensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
on_state=0,
),
AmbientBinarySensorDescription(
key=TYPE_PM25IN_BATT,
name="PM25 Indoor Battery",
@@ -5,7 +5,7 @@ from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY
from homeassistant.const import CONF_API_KEY, CONF_LOCATION
from homeassistant.core import HomeAssistant
from . import AmbientStation
@@ -14,7 +14,6 @@ from .const import CONF_APP_KEY, DOMAIN
CONF_API_KEY_CAMEL = "apiKey"
CONF_APP_KEY_CAMEL = "appKey"
CONF_DEVICE_ID_CAMEL = "deviceId"
CONF_LOCATION = "location"
CONF_MAC_ADDRESS = "mac_address"
CONF_MAC_ADDRESS_CAMEL = "macAddress"
CONF_TZ = "tz"
@@ -32,6 +32,10 @@ from . import AmbientStation, AmbientWeatherEntity
from .const import ATTR_LAST_DATA, DOMAIN, TYPE_SOLARRADIATION, TYPE_SOLARRADIATION_LX
TYPE_24HOURRAININ = "24hourrainin"
TYPE_AQI_PM25 = "aqi_pm25"
TYPE_AQI_PM25_24H = "aqi_pm25_24h"
TYPE_AQI_PM25_IN = "aqi_pm25_in"
TYPE_AQI_PM25_IN_24H = "aqi_pm25_in_24h"
TYPE_BAROMABSIN = "baromabsin"
TYPE_BAROMRELIN = "baromrelin"
TYPE_CO2 = "co2"
@@ -53,6 +57,8 @@ TYPE_HUMIDITY8 = "humidity8"
TYPE_HUMIDITY9 = "humidity9"
TYPE_HUMIDITYIN = "humidityin"
TYPE_LASTRAIN = "lastRain"
TYPE_LIGHTNING_PER_DAY = "lightning_day"
TYPE_LIGHTNING_PER_HOUR = "lightning_hour"
TYPE_MAXDAILYGUST = "maxdailygust"
TYPE_MONTHLYRAININ = "monthlyrainin"
TYPE_PM25 = "pm25"
@@ -112,6 +118,30 @@ SENSOR_DESCRIPTIONS = (
native_unit_of_measurement=PRECIPITATION_INCHES,
state_class=SensorStateClass.TOTAL_INCREASING,
),
SensorEntityDescription(
key=TYPE_AQI_PM25,
name="AQI PM2.5",
device_class=SensorDeviceClass.AQI,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=TYPE_AQI_PM25_24H,
name="AQI PM2.5 24h Avg",
device_class=SensorDeviceClass.AQI,
state_class=SensorStateClass.TOTAL_INCREASING,
),
SensorEntityDescription(
key=TYPE_AQI_PM25_IN,
name="AQI PM2.5 Indoor",
device_class=SensorDeviceClass.AQI,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=TYPE_AQI_PM25_IN_24H,
name="AQI PM2.5 Indoor 24h Avg",
device_class=SensorDeviceClass.AQI,
state_class=SensorStateClass.TOTAL_INCREASING,
),
SensorEntityDescription(
key=TYPE_BAROMABSIN,
name="Abs Pressure",
@@ -246,6 +276,20 @@ SENSOR_DESCRIPTIONS = (
icon="mdi:water",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=TYPE_LIGHTNING_PER_DAY,
name="Lightning Strikes Per Day",
icon="mdi:lightning-bolt",
native_unit_of_measurement="strikes",
state_class=SensorStateClass.TOTAL_INCREASING,
),
SensorEntityDescription(
key=TYPE_LIGHTNING_PER_HOUR,
name="Lightning Strikes Per Hour",
icon="mdi:lightning-bolt",
native_unit_of_measurement="strikes",
state_class=SensorStateClass.TOTAL_INCREASING,
),
SensorEntityDescription(
key=TYPE_MAXDAILYGUST,
name="Max Gust",
@@ -4,7 +4,7 @@
"already_configured": "Le service est d\u00e9j\u00e0 configur\u00e9"
},
"error": {
"invalid_key": "Cl\u00e9 API invalide",
"invalid_key": "Cl\u00e9 d'API non valide",
"no_devices": "Aucun appareil trouv\u00e9 dans le compte"
},
"step": {
+1 -2
View File
@@ -52,6 +52,7 @@ from .const import (
DATA_AMCREST,
DEVICES,
DOMAIN,
RESOLUTION_LIST,
SERVICE_EVENT,
SERVICE_UPDATE,
)
@@ -76,8 +77,6 @@ RECHECK_INTERVAL = timedelta(minutes=1)
NOTIFICATION_ID = "amcrest_notification"
NOTIFICATION_TITLE = "Amcrest Camera Setup"
RESOLUTION_LIST = {"high": 0, "low": 1}
SCAN_INTERVAL = timedelta(seconds=10)
AUTHENTICATION_LIST = {"basic": "basic"}

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