Compare commits

..

1431 Commits

Author SHA1 Message Date
Paulus Schoutsen 74b5db9ca5 Bumped version to 0.116.0b3 2020-10-05 12:05:54 +00:00
Paulus Schoutsen 6f4225b51d Add extended validation for script repeat/choose (#41265) 2020-10-05 12:04:33 +00:00
Paulus Schoutsen b524cc9c56 Allow any value when triggering on state attribute (#41261) 2020-10-05 12:04:32 +00:00
Raman Gupta a6d50ba89b Bump apprise version to avoid sync in async issues (#41253) 2020-10-05 12:04:31 +00:00
J. Nick Koston 228de5807c Remove manual rate_limit control directive from templates (#41225)
Increase default rate limit for all states and entire
domain states to one minute

Ensure specifically referenced entities are excluded from
the rate limit
2020-10-05 12:04:30 +00:00
Franck Nijhof d4b40154e5 Remove deprecation invalidation version from cast integration (#41197) 2020-10-05 12:04:30 +00:00
Justin Paupore 6e3aa004c4 Fix TTS handling of non-ID3 metadata tags (#41191)
Change #40666 used mutagen's ID3 TextFrame to wrap metadata information.
While this is the correct behavior for container formats that use ID3
metadata tags, such as MP3 and linear PCM, Ogg container formats use
a different metadata format. For these containers, the metadata needs to
be a bare str, not wrapped in a TextFrame.
2020-10-05 12:04:29 +00:00
J. Nick Koston 149cc5cbeb Simplify template tracking and make it easier to follow (#41030) 2020-10-05 12:04:28 +00:00
Simone Chemelli 37acf9b165 Handle Shelly channel names (if available) for emeters devices (#40820) 2020-10-05 12:04:27 +00:00
Paulus Schoutsen 5c4ba23ca9 Bumped version to 0.116.0b2 2020-10-03 19:43:26 +00:00
Rohan Kapoor abc42efe08 Treat optional input as optional in ZoneMinder config flow (#41156) 2020-10-03 19:43:12 +00:00
Alexei Chetroi 17ebc85b62 Bump up ZHA dependency (#41109) 2020-10-03 19:43:11 +00:00
Franck Nijhof 681cd92627 Fix referenced entity extraction when service call entity contains a template (#41107) 2020-10-03 19:43:10 +00:00
Baptiste Candellier 7fc4b196bd Fix SmartHab import flow (#41093) 2020-10-03 19:43:10 +00:00
Samantha f114419359 Add full command details to exception Debug log (#41070) 2020-10-03 19:43:09 +00:00
Paulus Schoutsen 751f041009 Bump aioshelly to 0.3.4 (#41065) 2020-10-03 19:43:08 +00:00
J. Nick Koston 44b1b87e13 Ensure lights added after group is created have the correct state (#41034) 2020-10-03 19:43:07 +00:00
Marius 1ef3d856a6 Change Swap free mandatory arg (#41025)
to False
2020-10-03 19:43:06 +00:00
Alexei Chetroi 2707bbeb23 Better parsing of the ZHA device profile id (#41024) 2020-10-03 19:43:06 +00:00
J. Nick Koston f89ba74410 Prevent template loop detection from triggering when all templates are self referencing (#41013) 2020-10-03 19:43:05 +00:00
Paulus Schoutsen 5f088c7ff0 Bumped version to 0.116.0b1 2020-10-01 19:58:32 +00:00
jjlawren 0be678c21c Plex websocket callback async cleanup (#40992) 2020-10-01 19:58:21 +00:00
J. Nick Koston 953a1ddc8c Prevent sqlalchemy from refetching the old_state_id as it will never change (#40982)
Disable expire_on_commit for the event writer. Since we never expect the
old_state_id to change in the database, it was never worth the expense of
refetching the id after the commit.
2020-10-01 19:58:21 +00:00
Bram Kragten fd91d21b28 Update frontend to 20201001.0 (#40974) 2020-10-01 19:58:20 +00:00
Bram Kragten 6e29eb3165 Revert using own cast app for media (#40937) 2020-10-01 19:58:19 +00:00
Alexei Chetroi 10bb399449 Bump up zha dependencies (#40914) 2020-10-01 19:58:19 +00:00
Aaron Bach 9312fd141e Bump simplisafe-python to 9.4.1 (#40819)
* Bump simplisafe-python to 9.4.0

* One more bump
2020-10-01 19:58:18 +00:00
cgtobi 8bfddbc4b2 Fix Netatmo climate error when no boiler status is set (#40815) 2020-10-01 19:58:17 +00:00
jjlawren c0d4e1eaf4 Accept new Plex websocket callback payloads (#40773) 2020-10-01 19:58:16 +00:00
J. Nick Koston 0902caa7e4 Implement template rate_limit directive (#40667) 2020-10-01 19:58:16 +00:00
J. Nick Koston b9931aabe7 Seperate state change tracking from async_track_template_result into async_track_state_change_filtered (#40803) 2020-10-01 19:57:57 +00:00
Franck Nijhof 1c534ea027 Bumped version to 0.116.0b0 2020-09-30 21:24:57 +02:00
Franck Nijhof 5cb5a508a8 Merge branch 'master' into dev 2020-09-30 21:16:36 +02:00
Chris c693d8af14 Discover additional ozw thermostats lacking mode support (#40799)
* Discover more thermostats without mode support

* Add tests
2020-09-30 21:12:44 +02:00
Robert Svensson 9d56d3bb31 Add deCONZ service to clean up orphaned device and entity entries (#40629)
* Add service that can clean up by deCONZ orphaned entries from device and entity registry

* Fix existing tests

* Add new test

* Add some inline comment to the service
2020-09-30 20:11:41 +02:00
Daniel Hjelseth Høyer 9bdc716e60 Include config flow modules in coverage (#40798)
* update coveragerc

* typo
2020-09-30 19:55:26 +02:00
Bram Kragten 8a16fb53c8 Update frontend to 20200930.0 (#40794) 2020-09-30 18:39:45 +02:00
J. Nick Koston 2076fc59c4 Remove message and domain from logbook state_changed events (#40070)
These are now handled by the frontend as we move closer
to making the logbook localized.
2020-09-30 11:29:51 -05:00
Quentame 1d816d25f7 Add Surveillance Station home mode switch for Synology DSM (#40490)
* Use camera name as device name

* Add Surveillance Station home mode switch for Synology DSM

- camera uses Surveillance Station as device parent
- camera uses camera name instead of NAS name + camera name

* Without device_class otherwise no icon

* Update .coveragerc
2020-09-30 18:27:06 +02:00
uvjustin e85d1deddd Return target duration of 1 when no segments (#40518) 2020-09-30 11:46:35 -04:00
uvjustin 5658abfaca Log timestamp overflow in stream (#39844) 2020-09-30 11:45:59 -04:00
J. Nick Koston 42ad36e9f8 Switch group to use None for the state unknown case (#40792) 2020-09-30 17:25:50 +02:00
Robert Svensson 082f866620 Improve deCONZ state updates (#40601) 2020-09-30 17:24:30 +02:00
Bram Kragten ac71641c18 Use the Home Assistant Cast app to play media on Chromecast (#40782) 2020-09-30 17:20:18 +02:00
J. Nick Koston a11fd08d20 Create MQTTMatcher once per subscription instead of each message (#40345)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-30 17:18:43 +02:00
Daniel Hjelseth Høyer 4c157f65ea Tibber, combine two fetches into one fetch (#40787) 2020-09-30 17:17:21 +02:00
Chris Reichel 01a0ffa636 Fix DWD namings (#40791) 2020-09-30 17:12:06 +02:00
Martin Hjelmare f454b4154b Fix and clean tox.ini (#40789) 2020-09-30 17:07:59 +02:00
MatthewFlamm ab3909c24f Disable hourly sensor by default in NWS (#40566) 2020-09-30 16:53:33 +02:00
J. Nick Koston 9ccebdb8d5 Refactor group to extend domains that can be grouped (#40607)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-30 09:13:53 -05:00
Franck Nijhof e7d8742771 Upgrade sentry-sdk to 0.18.0 (#40784) 2020-09-30 14:12:02 +02:00
Maikel Punie 30effb5c8a Use common strings for velbus config flow (#40660) 2020-09-30 13:53:03 +02:00
Franck Nijhof 27350f41c9 Improve command_line switch tests (#40749) 2020-09-30 13:29:43 +02:00
Mike O'Driscoll fc0344399b Remove TekSavvy Component, no longer available (#40762)
The TekSavvy API has been removed.
Per [this forum post](https://community.teksavvy.com/discussion/comment/120) on TekSavvy's
support page.
2020-09-30 13:14:41 +02:00
J. Nick Koston d9ba32dc3f Setup recorder model relationships to avoid calling flush (#40467) 2020-09-30 13:11:43 +02:00
J. Nick Koston aada6a1d88 Fix logbook with empty filter and remove unused code (#40565) 2020-09-30 13:10:11 +02:00
Thibaut 729ed1cab6 Add unique_id to the light switch (#40603)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-30 13:05:18 +02:00
J. Nick Koston 205cf57a77 Code cleanups for async_track_template_result (#40737) 2020-09-30 13:00:21 +02:00
Guido Schmitz d6df1527f1 Update devolo-home-control-api to 0.15.0 (#40764) 2020-09-30 12:58:19 +02:00
Paulus Schoutsen 3d2d56213c Merge pull request #40778 from home-assistant/rc 2020-09-30 11:39:39 +02:00
Franck Nijhof 4cce724473 Use direct service calls in flux tests instead of switch common (#40704) 2020-09-30 11:07:51 +02:00
Paulus Schoutsen dbda9a520e Bumped version to 0.115.6 2020-09-30 08:36:30 +00:00
Bram Kragten c802a63700 Use custom app to play camera stream using Google Assistant (#40750) 2020-09-30 08:36:26 +00:00
Bram Kragten c6f3352cf8 Use custom app to play camera stream using Google Assistant (#40750) 2020-09-30 10:33:56 +02:00
Marvin Wichmann f5429dc175 Update xknx to 0.15.0 (#40649)
* Update xknx to 0.15.0

closes #40526

* Review: Remove log_directory for now

* Review: typo fix
2020-09-30 10:04:56 +02:00
epenet e38ae1b188 Normalise headers in onewire integration (#40774) 2020-09-30 08:53:12 +02:00
HomeAssistant Azure 8d0f1e7db2 [ci skip] Translation update 2020-09-30 00:04:43 +00:00
David F. Mulcahey ac3a6aaa8c Bump ZHA quirks lib to 0.0.45 (#40769) 2020-09-29 19:59:12 -04:00
Samantha a8b68dc4f9 Add Neighbors & Endpoint Names to zha/devices reply (#40748)
* Add Neighbors & Endpoint Names to zha/devices reply.

* Remove unused const

* Add tests & correct const name.

* Change tests to use corresponding enum device_type
2020-09-29 15:25:05 -04:00
Franck Nijhof a2d2b7842d Upgrade paho-mqtt to 1.5.1 (#40703) 2020-09-29 18:12:45 +02:00
Richard van Duijn ee9540e137 Add template cover opening and closing states (#40677) 2020-09-29 16:04:33 +02:00
Franck Nijhof ef1c8c55f8 Merge pull request #40742 from home-assistant/rc 2020-09-29 13:33:10 +02:00
Franck Nijhof ebacc15e72 Bumped version to 0.115.5 2020-09-29 12:38:30 +02:00
Franck Nijhof e54ec3ba05 Fix ID3 tagging in TTS (#40740) 2020-09-29 12:38:04 +02:00
MatsNl fe6786aa6a Update pyatag to 0.3.4.4 (#40720) 2020-09-29 11:32:42 +02:00
Robert Svensson 7e58bfe01d Add deconz option to disable automatic addition of new devices (#40545)
* Allow disabling automatic additions of new devices from deconz

* Fix black

* Fix review comment

* Remove assertion

* Verify entity registry is empty
2020-09-29 11:07:19 +02:00
Franck Nijhof f3edec1191 Fix ID3 tagging in TTS (#40740) 2020-09-29 10:19:26 +02:00
Chris Talkington 432133a12a Add ability to reauth sonarr (#40306)
* add ability to reauth sonarr

* Update config_flow.py

* work on reauth

* Update test_init.py

* Update config_flow.py

* Update strings.json

* Update test_config_flow.py

* Update strings.json

* Update test_config_flow.py

* Update __init__.py

* Update __init__.py

* Update config_flow.py

* Update strings.json

* Update config_flow.py

* Update __init__.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update strings.json

* Update test_config_flow.py

* Update config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update strings.json

* Update config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py
2020-09-28 20:15:59 -05:00
Chris Talkington bc89b63fc6 Add switch to control downloads for nzbget (#40673)
* add switch to control downloads for nzbget

* work on switch

* Update test_config_flow.py

* Update test_sensor.py
2020-09-28 20:14:49 -05:00
Alexei Chetroi 47286fbe2a Refactor permit services to allow joining using install codes (#40652)
* Update zha.permit schema to support install code

* Move install code to core helpers

* QR code converter for enbrighten

* Fix schemas

* Update test for permit service

* Refactor zha.permit to accept install codes

* Test zha.permit from QR code

* Fix regex for Embrighten QR code

* Add regex for Aqara QR codes

* Add Consciot regex for QR code

* Reuse test params for WS tests

* ZHA WS permit command with install code

* Tests for zha.permit WS service

* Refactor zha.permit and zha.remove service to use ATTR_IEEE for the address

* Make pylint happy

* Deprecate only ieee_address param for now
2020-09-28 20:55:08 -04:00
Alexei Chetroi b9823791f7 Bump up ZHA dependency (#40734) 2020-09-28 20:37:56 -04:00
HomeAssistant Azure 704ffe391a [ci skip] Translation update 2020-09-29 00:03:20 +00:00
Bashir 9b198e8d67 Update islamic_prayer_times with common strings (#40712) 2020-09-28 18:37:41 -05:00
Erik Montnemery e7f832a82f Add MQTT tag scanner (#40709) 2020-09-28 22:04:27 +02:00
Franck Nijhof 3bcd2b6f71 Fix name of the Vallox integration in the manifest (#40727) 2020-09-28 22:01:01 +02:00
Fabrice Pipart b7f596a71e Fix support for Aqara WXKG06LM (#40694) 2020-09-28 20:36:28 +02:00
Ville Skyttä 5bbddb5b26 Use NamedTuple for Huawei LTE sensor metadata (#40655) 2020-09-28 20:33:32 +03:00
Andre Lengwenus e5e6dda04f Bump pypck to v0.7.2 (#40716) 2020-09-28 18:51:38 +02:00
Guido Schmitz 70ed838571 Improve devolo Home Control code quality (#40708) 2020-09-28 10:37:46 -05:00
J. Nick Koston e564af0b5b Improve performance of accessing template state (#40323)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-28 10:35:12 -05:00
jjlawren 3596eb39f2 Add support to reauthorize expired Plex tokens (#40469) 2020-09-28 16:14:54 +02:00
Martin Hjelmare eda68f127c Add rpi_power during onboarding on RPi (#40076) 2020-09-28 16:07:17 +02:00
Jeff Irion 68d75a879b Fix Android TV 'async_get_media_image' (#40672) 2020-09-28 16:04:08 +02:00
RichieFrame ceded35a82 Remove degree from Kelvin unit (#40574)
Kelvin temperature unit does not use the degree symbol
2020-09-28 16:03:21 +02:00
J. Nick Koston a19e10c57a Add entity glob matching support to history (#40387) 2020-09-28 15:58:55 +02:00
Paulus Schoutsen b4237be609 Merge pull request #40706 from home-assistant/rc 2020-09-28 14:58:19 +02:00
J. Nick Koston e08ee282ab Abort execution of template renders that overwhelm the system (#40647) 2020-09-28 14:43:22 +02:00
Paulus Schoutsen 2ee5b0a9c1 Bumped version to 0.115.4 2020-09-28 12:29:16 +00:00
Paweł Stankowski 48f5ffa0bd Bump Airly package to 1.0.0 (#40695) 2020-09-28 12:29:06 +00:00
Franck Nijhof b01d04c4ca Pin gRPC to 1.31.0 to workaround amrv7 issues (#40678) 2020-09-28 12:29:05 +00:00
Chris 94f3a085ed set ID3 tags as TextFrame types (#40666) 2020-09-28 12:29:04 +00:00
Jason Hunter 59daab9434 Fix camera play stream (#40641)
Co-authored-by: Justin Wong <46082645+uvjustin@users.noreply.github.com>
2020-09-28 12:28:44 +00:00
Bouwe Westerdijk af88a78aae Bump Plugwise-Smile to v1.5.1 (#40572) 2020-09-28 12:27:54 +00:00
Colin Frei 837c3d3c9d Fix fitbit current URL not available while configuring (#40547)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-28 12:27:53 +00:00
uvjustin d952a2b756 Create master playlist for cast (#40483)
Co-authored-by: Jason Hunter <hunterjm@gmail.com>
2020-09-28 12:27:53 +00:00
Maciej Bieniek c07c6ca413 Bump aioshelly library to version 0.3.3 (#40415) 2020-09-28 12:27:40 +00:00
Jason Hunter 8bc62f3678 Fix camera play stream (#40641)
Co-authored-by: Justin Wong <46082645+uvjustin@users.noreply.github.com>
2020-09-28 14:24:30 +02:00
Matt Black 1c252634b7 Bump snapcast dependency to 2.1.1 (#40561) 2020-09-28 13:42:01 +02:00
Maciej Bieniek 29d87646dd Improve config flow descriptions in Shelly integration (#40396) 2020-09-28 13:35:40 +02:00
Paweł Stankowski 8466682b65 Bump Airly package to 1.0.0 (#40695) 2020-09-28 11:12:35 +02:00
Joakim Sørensen 953f6bad46 Allow non-authenticated calls to supervisor logs during onboarding (#40617) 2020-09-28 10:10:10 +02:00
Alex 373a1cabe6 Re-enable hdmi_cec component (#40671) 2020-09-28 08:31:35 +02:00
Alexei Chetroi 988bc8b35f Bump up zha dependency (#40689)
* Bump up zha dependency

* Update ZHA dependency for zigpy
2020-09-27 22:23:53 -04:00
jan iversen 0ca19133d9 Add tests for modbus binary sensor (#40367)
* Add test coverage of binary sensor.

Update conftest to be generic.

* Pass total config structure to run_base_test.

Simple devices like sensor/switch do only have one entry in the
dict array, whereas e.g. switch have multiple entries.

* Use STATE_ON / _OFF for binary_sensor test.

* Update coveragerc

Only exclude files that uses a third party library.

* Remove modbus/* from coveragerc

* Remove modbus from .coveragerc

* Update .coveragerc

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-27 20:00:44 -05:00
epenet ea6ec42bbd Add onewire humidity sensors connected via DS2438 (#39780) 2020-09-27 19:16:29 -05:00
HomeAssistant Azure e9e17122e7 [ci skip] Translation update 2020-09-28 00:03:28 +00:00
epenet f886ea9e3d Move onewire constants to separate file (#40550)
* Move constants to separate file

* Ignore coverage of const.py
2020-09-27 19:02:20 -05:00
epenet f71816d328 Fix issue with HobbyBoard moisture meter (#40680) 2020-09-28 01:25:04 +02:00
puddly 0a16ae6482 Upgrade zigpy-znp from 0.1.1 to 0.2.0 (#40674) 2020-09-27 18:13:46 -04:00
Colin Frei 13b6fe2bba Fix fitbit current URL not available while configuring (#40547)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-27 23:19:46 +02:00
Maciej Bieniek 088558b8df Increase the timeout during config entry setup in Shelly integration (#40684) 2020-09-27 23:03:47 +02:00
uvjustin 9a32e28574 Create master playlist for cast (#40483)
Co-authored-by: Jason Hunter <hunterjm@gmail.com>
2020-09-27 22:38:14 +02:00
Franck Nijhof e320c3b735 Pin gRPC to 1.31.0 to workaround amrv7 issues (#40678) 2020-09-27 21:51:37 +02:00
Adam Król ef751c0961 Update wolf_smartset to 0.1.6 (#40668)
* Bump wolf_smartset version. Support not fully fetched data

* Fix black and pylint errors

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Remove dot from exception message.

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-27 14:02:29 -05:00
Chris 52b745b8a9 set ID3 tags as TextFrame types (#40666) 2020-09-27 20:40:57 +02:00
stephan192 abcfbf790b Bump dwdwfsapi to v1.0.3 (#40644) 2020-09-27 19:46:41 +02:00
tkdrob 67a7b28c84 Add Integration for Goal Zero Yeti Power Stations (#39231)
* Add Integration for Goal Zero Yeti Power Stations

* Goal Zero Yeti integration with config flow

* Remove unused entities

* Remove entry from requirements_test_all

* Pylint fix

* Apply suggestions from code review

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

* Add tests for goalzero integration

* Fix UNIT_PERCENTAGE to PERCENTAGE

* isort PERCENTAGE

* Add tests

* Add en translation

* Fix tests

* bump goalzero to 0.1.1

* fix await

* bump goalzero to 0.1.2

* Update tests/components/goalzero/__init__.py

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

* apply recommended changes

* isort

* bump goalzero to 0.1.4

* apply recommended changes

* apply recommended changes

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-27 12:44:21 -05:00
Ville Skyttä 4ca7b8569b Remove pre-0.102 Huawei LTE setup noop warnings (#40654) 2020-09-27 18:02:44 +02:00
Melvin c63cd63c1b Use common strings for oauth config flows (#40608) 2020-09-27 10:49:30 -05:00
Marcio Granzotto Rodrigues 3fba4274f5 Add authentication support to Nightscout (#40602)
* Add API Key to the Nightscout integration config

* Add tests for nightscout config changes

* Apply suggestions from code review

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/nightscout/__init__.py

* Run translations script to fix en.json

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-27 10:22:28 -05:00
Maikel Punie 6028953eca Bump python-velbus to 2.0.46 (#40663) 2020-09-27 17:12:36 +02:00
Franck Nijhof 0e6d54ea60 Rewrite core event tests to pytest tests (#40664) 2020-09-27 15:39:45 +02:00
Bashir 5274b03dc2 Resolve Frontend Services.yaml Minor Oversight (#40659)
The Default Values Suggest That The User enters 'light' as a parameter for the theme name. 'Light' is, however, not a valid option on a fresh install of HA unless a user manually downloads a theme with the name 'light'.
2020-09-27 12:51:41 +02:00
Maikel Punie b65583084b Fix solaredge service data KeyError (#40653) 2020-09-27 11:40:56 +02:00
Robert Svensson 66a8edb11e deCONZ fix comments from #40265 (#40640)
* Use set not list

* Events are not entities

* Don't await unload_events

* Remove checks of entities content in tests

* List to set comprehension

* Why is it so hard to remember that sets arent parenthesis...
2020-09-27 11:02:45 +02:00
Simone Chemelli 8895752837 Handle Shelly channel names (if available) (#40119)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2020-09-27 10:16:45 +02:00
Julius Mittenzwei a19b43a304 Add support for homekit windows (#40635)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-27 00:07:59 -05:00
HomeAssistant Azure 2b00d28af9 [ci skip] Translation update 2020-09-27 00:06:49 +00:00
J. Nick Koston 57b7559832 Ensure all jinja2 errors are trapped and displayed in the developer tools (#40624)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-26 17:03:32 -05:00
J. Nick Koston 3261a904da Reduce the number of template re-renders when we are only counting states (#40272) 2020-09-26 16:29:49 -05:00
Maciej Bieniek b8f837365c Bump aioshelly library to version 0.3.3 (#40415) 2020-09-26 22:39:02 +02:00
Franck Nijhof 8837ed35cd Use direct service calls in tests instead of automation common (#40623)
* Use direct service calls in tests instead of automation common

* Remove automation common test helpers
2020-09-26 19:28:26 +02:00
J. Nick Koston 35533407fe Improve performance of counting and iterating states in templates (#40250)
Co-authored-by: Anders Melchiorsen <amelchio@nogoto.net>
2020-09-26 11:36:47 -05:00
Vladimír Záhradník 1d41f024cf Add Modbus cover (#33642)
* Add Modbus cover

* Fix improper commands written for Modbus cover via coil

* Make changes per review comments

* Fix default hub not defined

Since support for multiple hubs was added, the default hub option
was not implemented correctly. Now I added necessary logic to make
it work. First hub in a list will be used as a default hub.

* Move Cover config under Modbus section

* Revert setting up a default hub alias

* Make hub mandatory for Cover

* Add default scan interval

* Read scan_interval from discovery info

* Fix linter error

* Use default scan interval from Cover platform

* Handle polling for Modbus cover directly inside entity

* Move covers under hub config

* Fix for review comment

* Call update() from Cover actuator methods

* Fix time validation
2020-09-26 11:11:51 -05:00
Felipe Martins Diel 2f4aa35ca6 Bump python-broadlink to 0.15.0 (#39228)
* Rename DeviceOfflineError to NetworkTimeoutError

* Bump python-broadlink to 0.15
2020-09-26 10:46:02 -05:00
SNoof85 6977425d04 Use common strings for Freebox config flow (#40590) 2020-09-26 10:27:18 -05:00
Rob Bierbooms 445743930b Use common strings for monoprice config flow (#40592) 2020-09-26 10:20:19 -05:00
Rob Bierbooms f6435affe9 Use common strings for somfy config flow (#40594) 2020-09-26 13:30:49 +02:00
Franck Nijhof c011f3fa95 Use direct service calls in light platform tests (#40604) 2020-09-26 13:19:59 +02:00
Franck Nijhof c64eec3238 Add bare hostname as valid known hostname in get_url helper (#40510) 2020-09-26 09:36:03 +02:00
J. Nick Koston 35cfc80dd7 Log the remote ip address for incoming websocket connections when debug is on (#40581) 2020-09-26 09:32:50 +02:00
Joakim Sørensen a42736e437 Allow non-authenticated calls to snapshots during onboarding (#40582) 2020-09-26 09:26:02 +02:00
Joakim Sørensen 4a63b83caa Add installation type to discovery endpoint (#40585) 2020-09-26 09:17:04 +02:00
Erik Montnemery 4cb118ca29 Bump pychromecast to 7.4.1 (#40587)
* Bump pychromecast to 7.4.0

* Bump pychromecast to 7.4.1
2020-09-26 09:15:09 +02:00
Daniel Kucera 6ddc6a44a2 Throttle ebusd sensors instead of the whole component (#40610) 2020-09-26 09:11:32 +02:00
Franck Nijhof 9cd8f66e14 Upgrade spotipy to 2.16.0 (#40606) 2020-09-26 08:21:12 +02:00
J. Nick Koston b3b9c52df2 Add device info to gogogate2 (#40538) 2020-09-25 22:28:59 -05:00
HomeAssistant Azure c3afe39ea0 [ci skip] Translation update 2020-09-26 00:05:34 +00:00
Alexei Chetroi f09f7feb94 Update schema for zha.set_zigbee_cluster_attribute service (#40600) 2020-09-25 18:36:55 -04:00
Robert Svensson 203c556ba3 Improve tracking of existing entities in deconz (#40265)
* Store all entities in dict

* Use stored unique id to select if to create entity or not

* Remove unnecessary init

* Change so same physical sensor doesnt try to create multiple battery sensors
Change so groups get created properly

* Add controls in tests that entities are logged correctly
2020-09-25 22:49:28 +02:00
Franck Nijhof e30acfbfee Rewrite light component tests to async pytest tests (#40589) 2020-09-25 19:14:25 +02:00
Oliver Acevedo 0c12af347e Add Omnilogic integration (#40474)
* Scaffold

* Added the en translation

* Modified the name

* Basic functionality for config flow.

* Pulled in enough to validate config flow works.

* Update manifest.json

* initial data polling (water and air temp sensors)

* Adding sensors, debugging update function

* polling updates working

* support for new data format from library

* Updated entity_id, friendly name, conversion for ppm, attributes for hayward display units, MSPSystemID and component systemID

* Fixed errors for PR

* clean up

* Add login exc, check if configured, test login.

* Remove debug print.

* Black formatting, ran isort, update requirements.

* Updated w isort. fix flake8 failures.

* Fix flake8 errors

* Fixed self.attrs to remove invalid self._ values - small change

* Missed on small change - fixing attributes

* Updated naming, updated unit of measure, updated icon, bumped omnilog…

* Updated to fix flake8 issues in __init__.py and config_flow.py

* Updated test_config_flow.py to pass, updated config_flow.py to correct errors in test

* Remove comments in preparation for PR

* update .covezragerc

* Formatting fix

* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.

* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.

* Added CSAD sensors for pools that have them.

* Added CSAD sensors for pools that have them.

* Fixed CSAD to not create if blank or don't exist, removed broad except usage to pass linting.

* Updated entity naming convention. Fixed linting issues.

* Added device association to the back yard / omnilogic system

* Removed .0 from ppm values when returning imperial values for salt sensor

* Updated to return state = None for water temp when pump is off, handled Chlorinator operatingMode = 2, and added PlatformNotReady check

* Corrected exception from Omnilogic library

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Removed nested_lookup dependency, bumped omnilogic.py to 0.3.8.

* Fixed lint error

* Added logging for sensor creation.

* Fixed linting errors with logging.

* Fixed explicit chaining of raised error. Fixed issue with alarm sensor.

* Fixed manifest.json based on feedback.

* Fixed self.attrs, should_poll, CoordinatorEntity, SCAN_INTERVAL from comments in PR.

* Addressed unique_id, moved data update coordinator, addressed minor other issues from testing

* Created main OmniLogic entity for common items, reworked DataUpdateCoordinator to it's own class.

* Addressed config_schema not used in __init__.py

* Fixed linting issues.

* Addressed several comments, still todo - separate sensor classes.

* Split the Omnilogic Sensors into separate logical classes for simpler logic.

* Fixed snake case lint error for AddAlarms (to add_alarms)

* Addressed config_flow issues from comments.

* Changed addressed ConfigNotReady issue from comments.

* Updated strings.json and generated corrected en.json with translations.

* Updated en.json to standard generated file.

* Added config_flow tests and updated issue with config_flow on cannot_connect

* Added test case for incomplete information entered.

* Compressed logic in the sensor classes to reduce duplication.

* Updated strings.json for polling_interval, added generic exception handling on config flow.

* Removed omnilogic from the .coveragerc omit file.

* Updated test_config_flow to follow recommended pattern.

* Excluded sensor.py from test coverage tests.

* Corected minor issues in test_config_flow from comments

* Fixed linting issues on last commits

* Fixed linting issues.

* Corrected issue when temp state is not available from Omnilogic

* Added omnililogic_common.py from .coveragerc to bypass test coverage check.

* Return false on Login Exception, handle OmniLogicException in config_flow and in tests.

* Handle all exceptions and in config_flow and tests, clarified test naming.

* Broke out test cases per comments.

* Regenerated en.json file.

* Addressed changes from comments in PR.

* Added session and bumped API to 0.4.0, addressed other comments from PR.

* Addressed entitydata (missed earlier).

* Fixed pylint issue

* Added test case for options flow in test_config_flow.py

* Removed super() and used self when calling methods in current class.

* Addressed comments in PR.

* Addressed comments in PR.

* Updated translations file.

* Rewrote data coordinator to output dict for easy searching.

* Updated chlorinator unit when chlorinator is on/off only

* Scaffold

* Added the en translation

* Modified the name

* Basic functionality for config flow.

* Pulled in enough to validate config flow works.

* Update manifest.json

* initial data polling (water and air temp sensors)

* Adding sensors, debugging update function

* polling updates working

* support for new data format from library

* Updated entity_id, friendly name, conversion for ppm, attributes for hayward display units, MSPSystemID and component systemID

* Fixed errors for PR

* clean up

* Add login exc, check if configured, test login.

* Remove debug print.

* Black formatting, ran isort, update requirements.

* Updated w isort. fix flake8 failures.

* Fix flake8 errors

* Fixed self.attrs to remove invalid self._ values - small change

* Missed on small change - fixing attributes

* Updated naming, updated unit of measure, updated icon, bumped omnilog…

* Updated to fix flake8 issues in __init__.py and config_flow.py

* Updated test_config_flow.py to pass, updated config_flow.py to correct errors in test

* Remove comments in preparation for PR

* update .covezragerc

* Formatting fix

* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.

* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.

* Added CSAD sensors for pools that have them.

* Added CSAD sensors for pools that have them.

* Fixed CSAD to not create if blank or don't exist, removed broad except usage to pass linting.

* Updated entity naming convention. Fixed linting issues.

* Added device association to the back yard / omnilogic system

* Removed .0 from ppm values when returning imperial values for salt sensor

* Updated to return state = None for water temp when pump is off, handled Chlorinator operatingMode = 2, and added PlatformNotReady check

* Corrected exception from Omnilogic library

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.

* Removed nested_lookup dependency, bumped omnilogic.py to 0.3.8.

* Fixed lint error

* Added logging for sensor creation.

* Fixed linting errors with logging.

* Fixed explicit chaining of raised error. Fixed issue with alarm sensor.

* Fixed manifest.json based on feedback.

* Fixed self.attrs, should_poll, CoordinatorEntity, SCAN_INTERVAL from comments in PR.

* Addressed unique_id, moved data update coordinator, addressed minor other issues from testing

* Created main OmniLogic entity for common items, reworked DataUpdateCoordinator to it's own class.

* Addressed config_schema not used in __init__.py

* Fixed linting issues.

* Addressed several comments, still todo - separate sensor classes.

* Split the Omnilogic Sensors into separate logical classes for simpler logic.

* Fixed snake case lint error for AddAlarms (to add_alarms)

* Addressed config_flow issues from comments.

* Changed addressed ConfigNotReady issue from comments.

* Updated strings.json and generated corrected en.json with translations.

* Updated en.json to standard generated file.

* Added config_flow tests and updated issue with config_flow on cannot_connect

* Added test case for incomplete information entered.

* Compressed logic in the sensor classes to reduce duplication.

* Updated strings.json for polling_interval, added generic exception handling on config flow.

* Removed omnilogic from the .coveragerc omit file.

* Updated test_config_flow to follow recommended pattern.

* Excluded sensor.py from test coverage tests.

* Corected minor issues in test_config_flow from comments

* Fixed linting issues on last commits

* Fixed linting issues.

* Corrected issue when temp state is not available from Omnilogic

* Added omnililogic_common.py from .coveragerc to bypass test coverage check.

* Return false on Login Exception, handle OmniLogicException in config_flow and in tests.

* Handle all exceptions and in config_flow and tests, clarified test naming.

* Broke out test cases per comments.

* Regenerated en.json file.

* Addressed changes from comments in PR.

* Added session and bumped API to 0.4.0, addressed other comments from PR.

* Addressed entitydata (missed earlier).

* Fixed pylint issue

* Added test case for options flow in test_config_flow.py

* Removed super() and used self when calling methods in current class.

* Addressed comments in PR.

* Addressed comments in PR.

* Updated translations file.

* Rewrote data coordinator to output dict for easy searching.

* Updated chlorinator unit when chlorinator is on/off only

* Fixed ORP method not being @property, fixed unique_id potential issue. Does not address comments from PR.

* Rewrote coordinator for updated dict structure, rewrote sensors to parse new data structure.

* Added alarms as attributes on all entities which support alarm reporting.

* Updated SENSOR_TYPES to sensor_types to adhere to snake case in pylint.

* Addressed PR comments.

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/sensor.py

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

* Removed binary sensor conditions (alarms, on/off sensor types) and added ability for multiple guard conditions

* Update homeassistant/components/omnilogic/sensor.py

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

* Updated per comments in PR for Pump Type and removal of force_update().

* Update homeassistant/components/omnilogic/sensor.py

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

* Update homeassistant/components/omnilogic/common.py

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

* Correctly asserting conditions for the login exception case.

* Update .coveragerc

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

Co-authored-by: Mike Hershberger <mike.hershberger@gmail.com>
Co-authored-by: Chad <54695185+chadlyy@users.noreply.github.com>
Co-authored-by: Tim Empringham <tim.empringham@live.ca>
Co-authored-by: djtimca <60706061+djtimca@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-25 17:55:10 +02:00
Angelo Gagliano 318096be79 Remove auto from the fan speed modes for VeSync (#40559) 2020-09-25 15:12:47 +02:00
Franck Nijhof 25bfaf6c0d Upgrade tqdm to 4.49.0 (#40573) 2020-09-25 14:29:27 +02:00
Joakim Plate 0fbeb3bf7b Use HA constants for Rfxtrx units (#40562)
* Add more units and device classes

* Battery level is a value beteen 0 and 9 where 9 indicate full

Actual 0 battery can't occur since since then we would get to signal

* Adjust tests

* Add wind direction and adjust rain rate

* Adjust data types to be None rather than empty string

* Set counter values to count unit

* Forgotten unit
2020-09-25 08:27:38 -04:00
Bouwe Westerdijk b6aa29012e Bump Plugwise-Smile to v1.5.1 (#40572) 2020-09-25 13:18:21 +02:00
Franck Nijhof 9fdab64e8b Merge pull request #40571 from home-assistant/rc 2020-09-25 10:29:07 +02:00
Daniel Hjelseth Høyer 82c61fb6a7 Upgrade Tibber library to 0.15.3 (#40570) 2020-09-25 10:05:01 +02:00
Joakim Sørensen 2d429ea678 Add modifications for snapshot uploads (#40503)
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
2020-09-25 10:02:26 +02:00
Franck Nijhof 7be494f845 Bumped version to 0.115.3 2020-09-25 09:28:38 +02:00
Kevin Cathcart 1c8e8419b6 Fix bug in state trigger when using for: without to: (#40556) 2020-09-25 09:27:49 +02:00
Bram Kragten da7f206414 Updated frontend to 20200918.2 (#40549) 2020-09-25 09:27:43 +02:00
Rob Bierbooms 6bd72c3ff5 Fix connection validation during import for dsmr integration (#40548)
* Close transport when equipment identifier is received

* Minor fix
2020-09-25 09:27:37 +02:00
Steven Looman 82c137d69b Increase upnp timeout from 5 seconds to 10 seconds (#40540) 2020-09-25 09:27:32 +02:00
cagnulein a404c51797 Fix luci device_tracker when release is none (#40524)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-25 09:27:27 +02:00
uvjustin ff39cd753c Disable audio in stream when audio stream profile is None (#40521) 2020-09-25 09:27:22 +02:00
J. Nick Koston fe056f518e Ensure group state is recalculated when re-adding on reload (#40497) 2020-09-25 09:27:15 +02:00
Anders Melchiorsen 0ebeb161e1 Fix handling of quoted time_pattern values (#40470)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2020-09-25 09:27:10 +02:00
Robert Van Gorkom f953454374 Increase gogogate2 request timeout (#40461) 2020-09-25 09:27:07 +02:00
Maciej Bieniek 016834185a Bump accuweather library to version 0.0.11 (#40458) 2020-09-25 09:27:00 +02:00
square99 34c0e0f58d Fix proxy camera conversion with PNG Alpha(RGBA) (#40446) 2020-09-25 09:26:56 +02:00
MeIchthys 95e6969912 Fix regression in Nextcloud component (#40438) 2020-09-25 09:26:52 +02:00
Pedro Lamas 297e5300b4 Fix webostv supported features for "external_speaker" sound output (#40435) 2020-09-25 09:26:48 +02:00
jan iversen 6cccd87318 Make modbus switch read_coil failure resistent (#40417)
* Make modbus switch read_coil failure resistent.

Make sure all return paths return true/false.

* Add comment how binary_sensor get its value (is_on).
2020-09-25 09:26:43 +02:00
cagnulein 532c624d01 Fix luci device_tracker incorrectly reporting devices status (#40409) 2020-09-25 09:26:39 +02:00
Michael Thingnes ed17a81f50 Validate Met.no forecast entries before passing them on to HA (#40400) 2020-09-25 09:26:33 +02:00
On Freund 44be190378 Fix handling of empty ws port (#40399) 2020-09-25 09:26:29 +02:00
Maciej Bieniek b1ac920505 Fix OSError (#40393) 2020-09-25 09:26:25 +02:00
Tom Harris 1901cc962e Bump pyinsteon to 1.0.8 (#40383) 2020-09-25 09:26:21 +02:00
Michael Thingnes babaf48867 Fix Met.no missing conditions in API forecasts (#40373) 2020-09-25 09:26:17 +02:00
Robert Svensson b3e2426967 Axis - Fix list applications breaks if empty response (#40360) 2020-09-25 09:26:14 +02:00
uvjustin f1ee7fed4c Ignore packets with missing dts in peek_first_pts (#40299) 2020-09-25 09:26:10 +02:00
Markus Haack 3efda8d1d2 Guard SolarEdge for inverters without batteries (#40295) 2020-09-25 09:26:07 +02:00
Harrison Pace a5f00d1db2 Use Cloud State as alternative state if condition unknown (#37121) 2020-09-25 09:26:03 +02:00
Kevin Cathcart 371b589cb2 Fix bug in state trigger when using for: without to: (#40556) 2020-09-25 09:15:04 +02:00
cagnulein 4287694b42 Fix luci device_tracker when release is none (#40524)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-25 09:06:24 +02:00
Martin Eberhardt 700b119482 Add @darkfox as Rejseplanen code owner (#40329) 2020-09-25 07:48:08 +02:00
Ari Simonen fd05a7232a Improve handling of sources without a name in Denon (#40514) 2020-09-25 07:46:57 +02:00
HomeAssistant Azure c30982c981 [ci skip] Translation update 2020-09-25 00:04:29 +00:00
Aaron Bach ebdb34a911 Bump simplisafe-python to 9.3.3 (#40560) 2020-09-24 16:19:25 -06:00
Aaron Bach f82ca44aac Bump pyairvisual to 5.0.2 (#40554)
* Bump pyairvisual to 5.0.2

* Fix tests
2020-09-24 15:31:47 -06:00
Rob Bierbooms 0856c7292c Fix connection validation during import for dsmr integration (#40548)
* Close transport when equipment identifier is received

* Minor fix
2020-09-24 22:50:30 +02:00
Bram Kragten 6afa197586 Updated frontend to 20200918.2 (#40549) 2020-09-24 22:43:34 +02:00
Dermot Duffy 0a656f13eb Fix/Refactor Hyperion Integration (#39738) 2020-09-24 21:37:34 +02:00
Ville Skyttä e06f2a89ea Add Huawei LTE SMS storage full and unread sensors (#40021) 2020-09-24 20:18:55 +03:00
Steven Looman c3b6675617 Increase upnp timeout from 5 seconds to 10 seconds (#40540) 2020-09-24 11:27:55 -05:00
Guido Schmitz 0b11559031 Improve devolo Home Control code quality (#40480)
Co-authored-by: Markus Bong <2Fake1987@gmail.com>
2020-09-24 10:57:52 -05:00
epenet dc30f0e00c Ensure the title is consistent (#40528) 2020-09-24 16:39:42 +02:00
epenet 73f29a6cd4 Ensure consitstency of file docstring for 1-wire (#40528) 2020-09-24 16:39:24 +02:00
epenet 49be073002 Update constant name for onewire (#40530) 2020-09-24 16:37:15 +02:00
Ville Skyttä e3f9818af5 Add more Huawei LTE sensor metadata (#39988) 2020-09-24 17:32:44 +03:00
uvjustin 8e0bb92c79 Disable audio in stream when audio stream profile is None (#40521) 2020-09-24 14:35:52 +02:00
Franck Nijhof ebe3b5bfff Upgrade sentry-sdk to 0.17.8 (#40531) 2020-09-24 14:10:14 +02:00
Eugene Prystupa 7a337ac6fb Fix Bond error logging format (#40519) 2020-09-23 21:40:38 -05:00
Chris Talkington 4b58b8057d Update sonarr to 0.3.0 (#40515) 2020-09-24 02:29:37 +02:00
jjlawren d694c1f548 Bump plexapi to 4.1.1 (#40512) 2020-09-23 19:26:05 -05:00
HomeAssistant Azure c77c0e4780 [ci skip] Translation update 2020-09-24 00:05:22 +00:00
springstan 62054b8433 Correct label in mqtt config flow (#40507) 2020-09-23 21:55:33 +02:00
J. Nick Koston 3880ac0b0d Ensure group state is recalculated when re-adding on reload (#40497) 2020-09-23 20:55:32 +02:00
springstan 6c8e0e20fb Add and use light lux constant in entire code base (#40171) 2020-09-23 20:48:01 +02:00
springstan 6a7caad8dc Use content type json constant (#40312) 2020-09-23 20:21:55 +02:00
Philip Allgaier 9c1eb78a0f Adjust safe_theme for better readability (#40223) 2020-09-23 18:57:35 +02:00
Tomasz 223000a9fb Add all supported languages to OpenWeatherMap (#40448) 2020-09-23 17:57:06 +02:00
nagyrobi 9f5cd5547b Support all available languages in voicerss integration (#40502) 2020-09-23 17:56:23 +02:00
Martin Hjelmare 27c5594cda Add supervisor add-on stop helper (#40501) 2020-09-23 17:54:07 +02:00
Martin Hjelmare ccff7f97cb Add supervisor helper to start add-on (#40495) 2020-09-23 17:05:28 +02:00
Franck Nijhof 40d003eccf Upgrade isort to 5.5.3 (#40493) 2020-09-23 16:44:51 +02:00
Franck Nijhof 784af5ad10 Upgrade sentry-sdk to 0.17.7 (#40492) 2020-09-23 16:44:25 +02:00
jan iversen c7f48e9ea3 Make modbus switch read_coil failure resistent (#40417)
* Make modbus switch read_coil failure resistent.

Make sure all return paths return true/false.

* Add comment how binary_sensor get its value (is_on).
2020-09-23 08:50:01 -05:00
Franck Nijhof 7c61caf68e Revert "Support learning different command types with remote" (#40486)
This reverts commit c6a48d3b61.
2020-09-23 12:39:27 +02:00
springstan c2d20c548f Use content type multipart constant (#40314) 2020-09-23 11:29:56 +02:00
Anders Melchiorsen 7876cdb37a Fix handling of quoted time_pattern values (#40470)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2020-09-23 09:21:57 +02:00
jjlawren df9634a41f Refactor Plex tests using fixtures (#40260)
* Refactor Plex tests using fixtures

* Avoid unnecessary coroutine declaration
2020-09-22 22:14:41 -05:00
Felipe Martins Diel c6a48d3b61 Support learning different command types with remote (#39670) 2020-09-22 22:09:19 -05:00
lamiskin 5ebce075a1 Improve DOODS folder handling and add process time attribute (#40344)
* Updates to DOODS

* Fix import order
2020-09-22 21:43:21 -05:00
Marvin Wichmann 72a7f69a08 Update xknx to version 0.14.4 (#40472) 2020-09-22 21:10:37 -05:00
springstan 06a133c3e9 Add and use length millimeters constant (#40116)
* Add and use length millimeters constant

* Fix pylint error

* Fix broken accuweather sensor test
2020-09-22 21:09:17 -05:00
Markus Haack 511ea09c99 Guard SolarEdge for inverters without batteries (#40295) 2020-09-22 21:04:01 -05:00
HomeAssistant Azure 75659ff787 [ci skip] Translation update 2020-09-23 00:05:01 +00:00
Robert Van Gorkom a40d853682 Increase gogogate2 request timeout (#40461) 2020-09-22 18:00:27 -05:00
Robert Svensson fb7fb0ea78 deCONZ - move event handling (#40424)
* Working draft

* Remove event references in sensor
2020-09-22 19:55:10 +02:00
Tom Schneider 6e8e4eedb5 Add binary_sensor for elevator states to hvv_departures (#36822)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-22 17:42:50 +02:00
Maciej Bieniek 0400754270 Bump accuweather library to version 0.0.11 (#40458) 2020-09-22 17:36:44 +02:00
square99 1ed8e41e90 Fix proxy camera conversion with PNG Alpha(RGBA) (#40446) 2020-09-22 17:34:23 +02:00
J. Nick Koston f837da6fe3 Defer template tracking setup until template entity start (#40388) 2020-09-22 09:28:02 -05:00
J. Nick Koston 7029345b9d Add support for selecting multiple entity ids from logbook (#40075) 2020-09-22 09:27:04 -05:00
J. Nick Koston f0f817c361 Serialize websocket event message once (#40453)
Since most of the json serialize work for the websocket was done
multiple times for the same message, we can avoid the overhead
of serializing the same message many times (once per websocket
client) with a cache.
2020-09-22 08:47:04 -05:00
Marvin Wichmann d82b97fbe1 Update xknx to 0.14.3 (#40430) 2020-09-22 15:35:44 +02:00
Adam Belebczuk 02a19d0123 Bump pywemo to 0.5.0 (#40439) 2020-09-22 11:24:22 +02:00
MeIchthys 2f9afd3a2c Fix regression in Nextcloud component (#40438) 2020-09-22 10:58:51 +02:00
Robert Svensson 430275ac88 Axis - Fix list applications breaks if empty response (#40360) 2020-09-22 10:57:26 +02:00
cagnulein 8bff25fedd Fix luci device_tracker incorrectly reporting devices status (#40409) 2020-09-22 10:53:46 +02:00
Pedro Lamas d5741a5ba4 Fix webostv supported features for "external_speaker" sound output (#40435) 2020-09-22 10:49:44 +02:00
Perry Naseck 0582bf7746 Firmata analog input, PWM/analog output, deprecate arduino (#40369)
* firmata analog input

* firmata pwm/analog out, use more HA const

* firmata update pymata to 1.19

* deprecate arduino, firmata supersedes it

* firmata sensor diff min, pull review quality changes

* firmata condense platform setup into loop
2020-09-22 09:44:16 +02:00
Bas Nijholt 50b727ba83 Add PLAY and PAUSE to webos button service description (#40353) 2020-09-22 09:32:09 +02:00
Harrison Pace 8ad7b68c9e Use Cloud State as alternative state if condition unknown (#37121) 2020-09-22 09:01:58 +02:00
Eugene Prystupa f34455b6c2 Add debug logging to Bond fireplace entity (#40318)
* Add logging to Bond fireplace entity for troubleshooting turn off problem

* Update homeassistant/components/bond/light.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/bond/light.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-21 21:38:43 -05:00
Brett b3691d5d90 Improve timeout error handling for Splunk (#40384)
* Bugfix to catch asyncio.timeout

* Better asyncio.timeout warning message
2020-09-21 20:01:52 -05:00
HomeAssistant Azure 7c344fa0cd [ci skip] Translation update 2020-09-22 00:07:08 +00:00
Ville Skyttä 5e90a4d000 Use more state attribute name constants (#40428) 2020-09-21 23:03:39 +02:00
Tom Harris f78391ce2a Bump pyinsteon to 1.0.8 (#40383) 2020-09-21 22:40:29 +02:00
Michael Thingnes bfbaa1e8bb Validate Met.no forecast entries before passing them on to HA (#40400) 2020-09-21 21:56:08 +02:00
Maciej Bieniek 663245c351 Fix OSError (#40393) 2020-09-21 21:10:02 +02:00
On Freund 447446c565 Fix handling of empty ws port (#40399) 2020-09-21 20:27:00 +02:00
Martin Hjelmare 1d7754f160 Add supervisor add-on uninstall helper (#40413) 2020-09-21 19:25:06 +02:00
MatthewFlamm 31ece55c57 bump pynws to 1.3.0 (#40386) 2020-09-21 19:18:54 +02:00
Marvin Wichmann 3d6434be75 Use centralized KnxEntity for all KNX platforms (#40381) 2020-09-21 18:08:35 +02:00
Robin Wohlers-Reichel c13fbf795d Update Solax Library to 0.2.4 (#40330) 2020-09-21 17:50:03 +02:00
Philip Allgaier 2a4d7dc561 Update voluptuous to 0.12.0 (#40401) 2020-09-21 10:43:35 -05:00
Julien Tant 8b9c757fdc Add zodiac integration (#38935)
* add zodiac sign integration

* add tests & refacto

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* fix indentation from suggested correction, fix quality scale and remove useless functions

* fix code formatting

* Create const.py

* Update sensor.py

* Update const.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update sensor.py

* Update test_sensor.py

* Update __init__.py

* Update sensor.py

* Update test_sensor.py

* Update sensor.py

* Update __init__.py

* Update test_sensor.py

* Update __init__.py

* Fix zodiac time patch

* Delete sensor.fr.json

* Update sensor.py

* Delete sensor.en.json

* Update test_sensor.py

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-21 10:41:30 -05:00
Martin Hjelmare 2ef3dfb673 Fix supervisor get addon info (#40412) 2020-09-21 16:26:09 +02:00
Finbarr Brady 4aa9b72739 Remove myself as Luci code owner (#40398) 2020-09-21 14:10:39 +02:00
Josef Schlehofer 7cebfa75fc Upgrade youtube_dl to version 2020.09.20 (#40395) 2020-09-21 10:49:16 +02:00
Martin Hjelmare a0df6ccb81 Add supervisor install add-on helper (#40138) 2020-09-21 10:28:24 +02:00
Chris Talkington 37e51aa166 Add reauth source constant for config entries (#40352) 2020-09-20 21:15:48 -05:00
uvjustin 8d3e4b6b3f Ignore packets with missing dts in peek_first_pts (#40299) 2020-09-20 21:26:24 -04:00
HomeAssistant Azure 587e3f1eb2 [ci skip] Translation update 2020-09-21 00:02:47 +00:00
Chris Talkington 432911c994 Apply code review for canary config flow (#40355)
* apply code review for canary config flow

* Update __init__.py

* Update __init__.py

* Update __init__.py

* Update camera.py

* Update camera.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update __init__.py
2020-09-20 17:38:02 -05:00
Michael Thingnes 83b0954e58 Fix Met.no missing conditions in API forecasts (#40373) 2020-09-20 23:56:04 +02:00
Marvin Wichmann 45288431f9 Update xknx to 0.14.2 (#40304)
* Updates xknx to 0.14.0

* Review: Explicity add state attributes to weather device

* Review: Remove state attributes from weather device

* Review: Add `counter` as a state attribute to binary_sensors
2020-09-20 23:40:36 +02:00
springstan 0c077685b6 Use content type text plain constant (#40313) 2020-09-20 13:19:10 +02:00
Brett 4f5d3b4035 Rebuilt Splunk using custom library (#40123)
* Rebuilt Splunk using splunk_data_sender

* Fixing lint issues

* Apply suggestions from code review

Recommended Fixes

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

* Moved to single send queue and fixed ssl verify

* Using coroutine and Asyncio.lock

* Changed to custom library hass_splunk

* Fixed "use_ssl" parameter

* Better error catching

* Better error log

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-20 11:22:43 +02:00
Ville Skyttä 167490b71c Complete helpers.service type hints (#40193)
* Complete helpers.service type hints

* Update homeassistant/helpers/service.py

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

* Handle None entity.supported_features
2020-09-20 12:03:58 +03:00
HomeAssistant Azure 5dcaeebdac [ci skip] Translation update 2020-09-20 00:05:00 +00:00
Paulus Schoutsen ddbadb1e26 Merge pull request #40310 from home-assistant/rc 2020-09-19 23:06:09 +02:00
Felipe Martins Diel cf81a5c09a Improve tests for Broadlink config flow (#39894) 2020-09-19 20:37:20 +00:00
Paulus Schoutsen a8b6464d7f Bumped version to 0.115.2 2020-09-19 20:13:52 +00:00
Rob Bierbooms 85ae63c656 Fix error creating duplicate ConfigEntry upon import for rfxtrx (#40296) 2020-09-19 20:13:44 +00:00
Alexei Chetroi 68cc34df6f Update ZHA dependencies (#40283) 2020-09-19 20:13:23 +00:00
Daniel Shokouhi 9955e7e5e1 Bump hangups to 0.4.11 (#40258) 2020-09-19 20:11:41 +00:00
Bram Kragten ab8ef1c9e1 Updated frontend to 20200918.0 (#40253) 2020-09-19 20:11:40 +00:00
Robert Van Gorkom 7e6d64a24c Fix high CPU usage in vera integration. (#40249) 2020-09-19 20:11:39 +00:00
On Freund e582caccc9 Fix Kodi discovery title (#40247) 2020-09-19 20:11:39 +00:00
Felipe Martins Diel 1eb8035122 Handle an unsupported device in the Broadlink config flow (#40242) 2020-09-19 20:11:38 +00:00
jan iversen 57b7ed6a07 Correct modbus switch to return correct coil (#40190) 2020-09-19 20:11:37 +00:00
Erik Montnemery d35f06ac15 Get option flow defaults from yaml for non configured MQTT options (#40177) 2020-09-19 20:11:36 +00:00
Erik Montnemery a50f121011 Get option flow defaults from yaml for non configured MQTT options (#40177) 2020-09-19 22:10:01 +02:00
Alexei Chetroi a9168c04fd Update ZHA dependencies (#40283) 2020-09-19 12:39:02 -04:00
Chris Talkington 6b317ced17 Update roku media browser classes (#40285)
* update roku media browser classes

this should allow proper icons to be shown vs plain directory

* Update test_media_player.py

* Update browse_media.py

* Update browse_media.py

* Update browse_media.py

* Update browse_media.py

* Update browse_media.py

* Update browse_media.py

* Update test_media_player.py
2020-09-19 18:02:15 +02:00
SukramJ e300cf3747 Add binary_sensor for cloud connectivity to HomematicIP Cloud (#39675)
* Add binary_sensor for cloud connectivity to HomematicIP Cloud

* Fix Test

* Remove device_class

* Switch from _device to _home

* Switch from _device to _home for sensor
2020-09-19 10:59:46 -05:00
springstan b088830382 Add and use currency cent constant (#40261) 2020-09-19 10:34:54 -05:00
springstan 7de1fe7416 Use percentage constant in more integrations (#40165) 2020-09-19 10:30:22 -05:00
Ian Duffy 711ca6aff5 Add kodi browse media for channels (#40277)
* Add kodi browse media for channels

* Rename "TV Channels" to "Channels"
2020-09-19 17:14:20 +02:00
Chris Talkington 0c8b530aa2 Add device info to canary camera and sensors (#40053)
* add device info to canary sensors

* Update test_sensor.py

* Update sensor.py

* Update sensor.py

* Update test_sensor.py

* Create const.py

* Update sensor.py

* Update test_sensor.py

* Update sensor.py

* Update test_sensor.py

* Update camera.py

* Update camera.py

* Update sensor.py

* Update camera.py

* Update camera.py
2020-09-19 10:09:40 -05:00
Rob Bierbooms 467a001e1f Fix error creating duplicate ConfigEntry upon import for rfxtrx (#40296) 2020-09-19 13:08:14 +02:00
jan iversen 9bd28306f6 Correct modbus switch to return correct coil (#40190) 2020-09-19 12:14:51 +02:00
Tom 5832184304 Add port to plugwise (#40017) 2020-09-19 12:08:16 +02:00
Franck Nijhof b175adae53 Add missing integration quality scale to tags integration (#40291) 2020-09-19 11:49:53 +02:00
Franck Nijhof 399661a7f4 Add missing integration quality scale to image integration (#40289) 2020-09-19 11:48:56 +02:00
springstan e330468a13 Use pressure constants in code base (#40262) 2020-09-19 09:26:08 +02:00
Chris Talkington f563068ce6 Add config flow to canary (#40055)
* Create config_flow.py

* Update config_flow.py

* work on config flow

* Update test_config_flow.py

* Update __init__.py

* Update camera.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update conftest.py

* Update test_config_flow.py

* Update test_init.py

* Update test_init.py

* Apply suggestions from code review

* Update camera.py

* Update test_init.py

* Update camera.py

* Update __init__.py

* Update test_init.py

* Update test_init.py

* Update __init__.py

* Update __init__.py

* Apply suggestions from code review

* Update __init__.py

* Update test_init.py

* Update __init__.py

* Update __init__.py

* Update config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update config_flow.py
2020-09-18 23:22:19 -05:00
Greg Badros 94dfb66824 Make tplink SmartStrip communication more robust (#40281) 2020-09-19 04:48:19 +02:00
twdkeule 052e8f0983 Add Influxdb precision option (#38454) 2020-09-19 04:42:03 +02:00
HomeAssistant Azure 62c4e072f5 [ci skip] Translation update 2020-09-19 00:07:12 +00:00
Daniel Shokouhi cf89b8764b Bump hangups to 0.4.11 (#40258) 2020-09-18 20:43:36 +02:00
Maikel Punie 1ba098508c Update velbus to 2.0.45 (#40256) 2020-09-18 20:19:54 +02:00
timkoers 46b86f4a2f Add UniFi Uptime sensor (#40058)
* Added UniFi Uptime sensor

Added the UniFi uptime data as a sensor. Untested.

* Update sensor.py

Updated code as a result of the tests.

* Changed timestamp format and device class

Converted state to iso timestamp and changed device class to DEVICE_CLASS_TIMESTAMP.

* Updated unit of measurement to None

* Added import

* Update homeassistant/components/unifi/sensor.py

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

* Removed whitespace

* Added the uptime sensors option to the config flow

* All the unit tests should be there now

* Whoops

* Fixed translation

* Properly formatted the code

* Flake8 really has angel eyes

* Black should also be satisfied now

* Should have satisfied all static code analysis tools

* Fixed add uptime sensor function

* Fixed overintendation

* Fixed unit tests

* Made a spelling mistake during editing of unit tests

* Test verifies if utc time is correct

* Converted to iso format

* Converted unit test to iso format

* Unit test sensor json had the wrong uptime name

* Added options_updated handler

* Fixed remove sensors unit test

* Update homeassistant/components/unifi/sensor.py

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* Update homeassistant/components/unifi/sensor.py

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* Update test_device_tracker.py

Removed uptime from the devices

* Fixed black formatting issue

* I think the code coverage should be good now

* Trying to add the sensors again

* Using signals to hopefully trigger the controller to add them again

* Forgot import

* Sorted components

* fixed isort comments

* Removed CLASS and DEVICE_CLASS

* Added TYPE again

* Removed double underscores

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2020-09-18 19:33:37 +02:00
Bram Kragten b25bb78916 Updated frontend to 20200918.0 (#40253) 2020-09-18 19:12:10 +02:00
Robert Van Gorkom 2858c8dcc7 Fix high CPU usage in vera integration. (#40249) 2020-09-18 17:39:12 +02:00
On Freund 7f072a5ca8 Fix Kodi discovery title (#40247) 2020-09-18 17:30:46 +02:00
Paulus Schoutsen bf741c1b26 Merge pull request #40243 from home-assistant/rc 2020-09-18 16:51:17 +02:00
Paulus Schoutsen 2df709c7d0 Bumped version to 0.115.1 2020-09-18 14:05:11 +00:00
On Freund e9b355bd8a Fix coolmaster.info (#40240) 2020-09-18 14:04:57 +00:00
On Freund ef279b125d Handle systems without groups (#40238) 2020-09-18 14:04:57 +00:00
On Freund 152b380a2f Fix kodi.call_method (#40236) 2020-09-18 14:04:56 +00:00
Felipe Martins Diel 8a39bea761 Fix RM mini 3 update manager (#40215) 2020-09-18 14:04:55 +00:00
Chris Caron d37fe1fbb6 Disable async on Apprise (#40213) 2020-09-18 14:04:54 +00:00
MeIchthys 33b56b0cf9 Fix Nextcloud sensors becoming unavailable (#40212) 2020-09-18 14:04:53 +00:00
Raman Gupta 0383030266 Fix Vizio async_unload_entry bug (#40210) 2020-09-18 14:04:52 +00:00
Julius Mittenzwei b8fe0c6c3a Upgrade pyvlx to 0.2.17 (#40182) 2020-09-18 14:04:52 +00:00
J. Nick Koston 7cb0c98c03 Log template listeners when debug logging is on (#40180) 2020-09-18 14:04:51 +00:00
MeIchthys 3612df91e1 Fix Nextcloud sensors becoming unavailable (#40212) 2020-09-18 15:34:17 +02:00
Chris Caron 0a0d44a0b5 Disable async on Apprise (#40213) 2020-09-18 15:32:38 +02:00
Felipe Martins Diel 2f7b6bfa2d Fix RM mini 3 update manager (#40215) 2020-09-18 15:31:25 +02:00
Markus Bong 27f11a1022 Use default values in advanced options in devolo home control (#40216) 2020-09-18 15:30:42 +02:00
Philip Allgaier ddbcfe83dd Catch TypeError in strptime() template helper (#40226) 2020-09-18 15:29:40 +02:00
Felipe Martins Diel 976d8f7abe Handle an unsupported device in the Broadlink config flow (#40242) 2020-09-18 15:29:26 +02:00
On Freund ff3fd63eea Handle systems without groups (#40238) 2020-09-18 15:28:39 +02:00
On Freund 4cd876f159 Fix coolmaster.info (#40240) 2020-09-18 15:28:02 +02:00
On Freund 3f514da285 Fix kodi.call_method (#40236) 2020-09-18 15:24:14 +02:00
Tomasz 2d9019d4b2 Fix shelly sensor names (#39854) 2020-09-18 14:32:33 +02:00
Raman Gupta d0a5feda44 Fix Vizio async_unload_entry bug (#40210) 2020-09-18 13:18:56 +02:00
Julius Mittenzwei ed4ab403de Upgrade pyvlx to 0.2.17 (#40182) 2020-09-17 20:18:55 -05:00
cgtobi 4efefd7fba Add cgtobi to kodi code owners (#40202)
* Add myself to Kodi code owners

* Run hassfest
2020-09-17 20:17:22 -05:00
cgtobi 689f1519c0 Add cgtobi to sonos code owners (#40204)
* Add myself to Sonos code owners

* Run hassfest
2020-09-17 20:16:29 -05:00
Raman Gupta 100d2369d5 Use async_on_remove for vizio listeners (#40185) 2020-09-17 20:13:40 -05:00
HomeAssistant Azure 0a0a8fc67d [ci skip] Translation update 2020-09-18 00:07:17 +00:00
Daniel de Jong 1887f11ec9 Do not default Pilight lights to max brightness (#39549)
Fix pilight lights would always turned on at max brightness instead of just turning on. Some 433mhz dimmers (like the KAKU series) remember their last brightness setting.

Fix pilight lights would not respect configured dimlevel_min
2020-09-17 22:48:52 +02:00
J. Nick Koston e9abb357e4 Log template listeners when debug logging is on (#40180) 2020-09-17 14:45:30 -05:00
Paulus Schoutsen 58c6702080 Merge pull request #40179 from home-assistant/rc 2020-09-17 17:37:29 +02:00
Franck Nijhof f77b3d4714 Bumped version to 0.115.0 2020-09-17 17:10:26 +02:00
J. Nick Koston f5aee6b886 Add missing conext preservation to bayesian and universal (#40178)
We already do this for template sensors, but it was
missing for bayesian and universal
2020-09-17 17:07:52 +02:00
Bram Kragten 6f26722f69 Fix editing tags only get isoformat from datetime (#40174)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-17 17:07:49 +02:00
Bram Kragten 13cfd1bae1 Updated frontend to 20200917.1 (#40170) 2020-09-17 17:07:45 +02:00
Joakim Sørensen 5271a3eb1e Update pyhaversion to 3.4.2 (#40161) 2020-09-17 17:07:42 +02:00
cagnulein 78022bf145 Fix luci device_tracker not reliably reporting home/away state (#40160) 2020-09-17 17:07:39 +02:00
Chris Talkington 99a57f5a4e Check mpd time type before splitting it (#40139) 2020-09-17 17:07:33 +02:00
SNoof85 2489a6c6ef Fix typo in strings for wolflink (#40164) 2020-09-17 18:07:03 +03:00
J. Nick Koston 44952a94cf Add missing conext preservation to bayesian and universal (#40178)
We already do this for template sensors, but it was
missing for bayesian and universal
2020-09-17 16:47:23 +02:00
Bram Kragten 95e998d25a Fix editing tags only get isoformat from datetime (#40174)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-17 16:45:55 +02:00
Chris Talkington 30de984827 Check mpd time type before splitting it (#40139) 2020-09-17 16:01:28 +02:00
Bram Kragten 0bb8a49ea2 Updated frontend to 20200917.1 (#40170) 2020-09-17 14:44:19 +02:00
Joakim Sørensen a82421306f Update pyhaversion to 3.4.2 (#40161) 2020-09-17 12:08:09 +02:00
cagnulein b4d29653c6 Fix luci device_tracker not reliably reporting home/away state (#40160) 2020-09-17 11:35:13 +02:00
Robert Van Gorkom 70173488a8 Add config support to zoneminder integration (#37060)
* Add config support to zoneminder integration.

* Fixing spelling issue.
Adding self to maintainers.
Updating config flows generated file.

* Maintain zoneminder functionality without breaking changes.

* Addressing lint feedback.
Updating code owners.

* Using non-blocking calls.

* Adding tests package file.

* Update service description.

Co-authored-by: Rohan Kapoor <rohan@rohankapoor.com>

* Resolving conflicts in requirements file.

* Resolving more conflicts.

* Addressing PR feedback.

* Merging from dev.

Co-authored-by: Rohan Kapoor <rohan@rohankapoor.com>
2020-09-16 22:58:51 -07:00
Ville Skyttä 271ffac4a9 Fix static/class async mocks on Python 3.8.0 and .1 (#40147)
* forked_daapd

* shelly

* simplipy
2020-09-17 08:20:00 +03:00
HomeAssistant Azure f6584c1866 [ci skip] Translation update 2020-09-17 00:08:34 +00:00
Robert Van Gorkom 00093faae2 Clean up vera typings (#40143)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-16 16:23:50 -05:00
Paulus Schoutsen a9e220c96b Bumped version to 0.115.0b12 2020-09-16 20:50:22 +00:00
Bram Kragten f7d7765d5e Update frontend to 20200916.0 (#40153) 2020-09-16 20:42:50 +00:00
Franck Nijhof 9ffcf35b23 Fix local media browser source conflicting with local www folder (#40151) 2020-09-16 20:42:49 +00:00
Franck Nijhof d3a59652bb Fix missing f from f-strings in cast integration (#40144) 2020-09-16 20:42:48 +00:00
Paulus Schoutsen c62a6cd779 Fix scene validator (#40140) 2020-09-16 20:42:47 +00:00
Bram Kragten a2cf09fb54 Update frontend to 20200916.0 (#40153) 2020-09-16 22:31:43 +02:00
Franck Nijhof f83f3c927a Fix local media browser source conflicting with local www folder (#40151) 2020-09-16 21:38:40 +02:00
J. Nick Koston 5ea04d64f6 Prompt to reauth when the august password is changed or token expires (#40103)
* Prompt to reauth when the august password is changed or token expires

* augment missing config flow coverage

* augment test coverage

* Adjust test

* Update homeassistant/components/august/__init__.py

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

* block until patch complete

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-16 17:35:01 +02:00
Franck Nijhof 540b925659 Fix missing f from f-strings in cast integration (#40144) 2020-09-16 17:04:57 +02:00
Niccolo Zapponi 2b7e735e3d Remove unsupported states from security systems in HomeKit (#40060) 2020-09-16 10:00:32 -05:00
Paulus Schoutsen d25192d8c5 Fix scene validator (#40140) 2020-09-16 16:26:34 +02:00
Paulus Schoutsen f1169120ae Bumped version to 0.115.0b11 2020-09-16 13:37:51 +00:00
Paulus Schoutsen b28dbe20b6 Fix ESPHome scan tag device ID (#40132) 2020-09-16 13:37:34 +00:00
Paulus Schoutsen 8dde59be02 Guard for when Yandex Transport data fetching fails (#40131) 2020-09-16 13:37:33 +00:00
Jesse Hills abca177894 Use device name stored in device_info for tag scan in ESPHome (#40130) 2020-09-16 13:37:32 +00:00
Jesse Hills d3bb2e5e16 Allow ESPHome to trigger the HA tag scanned event (#40128) 2020-09-16 13:37:31 +00:00
Maciej Bieniek 7f8a89838b Bump aioshelly library to version 0.3.2 (#40118) 2020-09-16 13:36:01 +00:00
springstan 39c4b338f1 Increase TIMEOUT_ACK to 10s (#40117) 2020-09-16 13:33:48 +00:00
Maciej Bieniek 4518335a56 Remove the unnecessary prefix from the sensor names in the Shelly integration (#40097) 2020-09-16 13:33:47 +00:00
Shay Levy b856b0e15d Guard both Shelly 2 & Shelly 2.5 in roller mode (#40086)
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2020-09-16 13:33:46 +00:00
Franck Nijhof 5d518b5365 Add media dirs core configuration (#40071)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-16 13:33:46 +00:00
Diogo Gomes ce86112612 Address error in SQL query (#39939) 2020-09-16 13:33:45 +00:00
Franck Nijhof ff0562ad1e Add media dirs core configuration (#40071)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-16 15:28:25 +02:00
Franck Nijhof 80764261c3 Upgrade sentry-sdk to 0.17.6 (#40133) 2020-09-16 13:47:52 +02:00
Paulus Schoutsen b515480a98 Fix ESPHome scan tag device ID (#40132) 2020-09-16 13:17:05 +02:00
Paulus Schoutsen 9309297d76 Guard for when Yandex Transport data fetching fails (#40131) 2020-09-16 12:48:38 +02:00
Jesse Hills 16e0ed9242 Use device name stored in device_info for tag scan in ESPHome (#40130) 2020-09-16 12:22:06 +02:00
Jesse Hills d650bcca3b Allow ESPHome to trigger the HA tag scanned event (#40128) 2020-09-16 11:54:59 +02:00
springstan a13c4d4c17 Increase TIMEOUT_ACK to 10s (#40117) 2020-09-16 08:14:11 +02:00
HomeAssistant Azure f28b7f2187 [ci skip] Translation update 2020-09-16 00:09:01 +00:00
Maciej Bieniek 413263a6eb Bump aioshelly library to version 0.3.2 (#40118) 2020-09-16 00:12:59 +02:00
AJ Schmidt 66bb6a6ffa AlarmDecoder config flow fixes (#40037) 2020-09-16 00:11:29 +02:00
springstan 000d2047fb Add and use currency constants (#40113) 2020-09-15 15:01:01 -06:00
springstan 90f5b178ef Use AREA_SQUARE_METERS constant in all integrations (#40107) 2020-09-15 15:00:26 -06:00
Martin Hjelmare a71a4d642b Clean dyson climate tests (#40110)
* Move setup without devices

* Remove not needed tests

* Move set temp test

* Move set temp cool mode test

* Run black

* Move test target temperature

* Move test current temperature

* Move test current humidity

* Move test hvac mode

* Move test hvac modes

* Move test fan modes

* Move test service fan modes

* Move test fan state

* Move test supported features

* Move test idle state

* Move test humidity invalid state

* Move test humidity without state

* Move test device cool

* Rename test

* Move test set mode service

* Clean imports

* Clean strings

* Only load climate platform for climate tests
2020-09-15 22:38:45 +02:00
cgtobi f651b1f54b Extract Netatmo test data (#40094) 2020-09-15 21:49:08 +02:00
Dan Klaffenbach 74cef6966d Expose angle and xy attributes in deCONZ event if present (#39822)
These attribute are used by the color wheel on the Müller Licht tint
remote control.
2020-09-15 21:13:17 +02:00
Diogo Gomes 749d3c360a Address error in SQL query (#39939) 2020-09-15 20:01:36 +02:00
springstan 5a12056e59 Add and use volume cubic constants (#40106) 2020-09-15 19:59:26 +02:00
springstan db582bdc1b Use http status constants more, add HTTP_ACCEPTED and HTTP_BAD_GATEWAY (#39993)
* Use http status codes and add HTTP_BAD_GATEWAY constant

* Address review comments:
 - using constants in tado integration
 - using constant in media_player init.py

* Add and use HTTP_ACCEPTED constant
2020-09-15 20:01:07 +03:00
Josef Schlehofer 59d610af17 Upgrade youtube_dl to version 2020.09.14 (#40104) 2020-09-15 18:52:42 +02:00
Hareesh M U c8d5500441 Add bimonthly period feature for utility_meter component (#39931) 2020-09-15 17:52:19 +02:00
Maciej Bieniek 56ba4907e1 Remove the unnecessary prefix from the sensor names in the Shelly integration (#40097) 2020-09-15 16:30:33 +02:00
Shay Levy 4fbd4957bd Guard both Shelly 2 & Shelly 2.5 in roller mode (#40086)
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2020-09-15 16:29:24 +02:00
Franck Nijhof b116e58620 Upgrade pytest-xdist to 2.1.0 (#40057) 2020-09-15 16:28:51 +02:00
Bram Kragten e095120023 Bumped version to 0.115.0b10 2020-09-15 16:21:32 +02:00
Bram Kragten 3ef3d848f7 Update frontend to 20200915.0 (#40101) 2020-09-15 16:19:42 +02:00
J. Nick Koston 610a327b52 Convert color temperature to hue and saturation for HomeKit (#40089)
The HomeKit spec does not permit the color temp characteristic
being exposed when color (hue, sat) is present.  Since
Home Assistant will still send color temp values, we need to
convert them to hue, sat values for HomeKit
2020-09-15 16:19:41 +02:00
cgtobi 81436fb688 Check Sonos for local library before browsing (#40085) 2020-09-15 16:19:40 +02:00
Alexei Chetroi 24fe9cdd5a Update ZHA dependency (#40083) 2020-09-15 16:19:39 +02:00
Erik Montnemery e5c499c22e Increase TIMEOUT_ACK to 2s (#40080) 2020-09-15 16:19:39 +02:00
cgtobi 99a8604601 Fix netatmo media browser of outdoor events (#40079)
* Fix outdoor events

* Fix test data

* Increase coverage
2020-09-15 16:19:38 +02:00
Paulus Schoutsen 3ef821d62f Fix tag last scanned serialization (#40067) 2020-09-15 16:19:37 +02:00
Pascal Vizeli a38e047e83 Update docker base image to 8.4.0 (#40066) 2020-09-15 16:19:36 +02:00
Jc2k e0fcf9b648 Bump aiohomekit version (regression fix) (#40064) 2020-09-15 16:18:08 +02:00
Evgeny 0e823b566b Fix default forecast mode OpenWeatherMap (#40062) 2020-09-15 16:00:28 +02:00
Markus Bong a9d24c2cd5 Correct devolo climate devices (#40061) 2020-09-15 16:00:27 +02:00
b3nj1 7a7cad39eb Fix ecobee weather forcast off by 1 bug (#40048) 2020-09-15 16:00:26 +02:00
J. Nick Koston 1a76a953c7 Update gogogate2-api to 2.0.2 (#40010)
* Update gogogate2-api to 2.0.2

Resolves a timeout issue: https://github.com/vangorra/python_gogogate2_api/pull/11

* mock voltage
2020-09-15 16:00:25 +02:00
r4nd0mbr1ck db27079fa8 Speedtestdotnet - use server name to generate server list (#39775) 2020-09-15 16:00:24 +02:00
Bram Kragten 272d36bc93 Update frontend to 20200915.0 (#40101) 2020-09-15 15:57:10 +02:00
Martin Hjelmare 487b56ab69 Fix hvv_departures config flow patches (#40095) 2020-09-15 12:37:31 +02:00
Franck Nijhof fffc7e2e8e Upgrade sentry-sdk to 0.17.5 (#40092) 2020-09-15 12:10:22 +02:00
Franck Nijhof 5d0fa1417e Upgrade pytest to 6.0.2 (#39959)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-15 10:09:56 +02:00
cgtobi 8236394b85 Check Sonos for local library before browsing (#40085) 2020-09-15 09:30:00 +02:00
J. Nick Koston 2ea604cc2a Convert color temperature to hue and saturation for HomeKit (#40089)
The HomeKit spec does not permit the color temp characteristic
being exposed when color (hue, sat) is present.  Since
Home Assistant will still send color temp values, we need to
convert them to hue, sat values for HomeKit
2020-09-15 09:27:30 +02:00
J. Nick Koston 8d687c951a Update gogogate2-api to 2.0.2 (#40010)
* Update gogogate2-api to 2.0.2

Resolves a timeout issue: https://github.com/vangorra/python_gogogate2_api/pull/11

* mock voltage
2020-09-15 08:48:30 +02:00
r4nd0mbr1ck 11319ac479 Speedtestdotnet - use server name to generate server list (#39775) 2020-09-14 22:50:44 -07:00
Robert Van Gorkom 903afb62d0 Add support for multiple vera controller hubs (#33613) 2020-09-14 22:06:52 -05:00
J. Nick Koston 938e06c00e Fix homekit error when the bridge has been ignored. (#40082) 2020-09-14 19:39:44 -05:00
HomeAssistant Azure d0f4b23063 [ci skip] Translation update 2020-09-15 00:09:18 +00:00
cgtobi cb0452d80e Fix netatmo media browser of outdoor events (#40079)
* Fix outdoor events

* Fix test data

* Increase coverage
2020-09-15 00:32:20 +02:00
Alexei Chetroi bdaea7879b Update ZHA dependency (#40083) 2020-09-14 16:48:39 -04:00
Erik Montnemery 0f3a2f1f29 Increase TIMEOUT_ACK to 2s (#40080) 2020-09-14 22:10:30 +02:00
J. Nick Koston 949bd8d738 Reduce listener cancelation code in template tracker (#40040) 2020-09-14 21:43:00 +02:00
b3nj1 7adec2d894 Fix ecobee weather forcast off by 1 bug (#40048) 2020-09-14 21:29:51 +02:00
Chris Talkington cacbb2eb12 Add unique_id to canary camera (#40054) 2020-09-14 17:41:05 +02:00
J. Nick Koston 15281f468e Extract the icon and state for logbook state changed events (#40039) 2020-09-14 09:35:19 -05:00
Paulus Schoutsen 3ba18550cd Fix tag last scanned serialization (#40067) 2020-09-14 15:40:32 +02:00
Pascal Vizeli e90a9940d4 Update docker base image to 8.4.0 (#40066) 2020-09-14 14:50:39 +02:00
Evgeny 09d437d531 Fix default forecast mode OpenWeatherMap (#40062) 2020-09-14 14:36:08 +02:00
Jc2k f1cc5182f0 Bump aiohomekit version (regression fix) (#40064) 2020-09-14 14:18:43 +02:00
Xiaonan Shen d26160c755 Add rpi_power integration (#35527)
Co-authored-by: Toast <swetoast@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-14 12:53:01 +02:00
Markus Bong 224fd24898 Correct devolo climate devices (#40061) 2020-09-14 12:24:49 +02:00
Xiaonan Shen 1e5186fe94 Deprecate the synology integration (#39958)
* Deprecate the synology integration

* Add release to remove synology
2020-09-14 12:14:13 +02:00
rajlaud 6e6d6c65ef Improve reproduce_state for media players (#38266) 2020-09-14 11:48:16 +02:00
Thomas Germain 3881e0cb23 Add temperature and uptime to Synology DSM (#39419)
Co-authored-by: Quentame <polletquentin74@me.com>
2020-09-14 09:42:37 +02:00
Ville Skyttä eb0af3752c Add more SSDP discovery data and constants (#39984) 2020-09-14 09:18:09 +02:00
J. Nick Koston 2e1dbe51a4 Make system_log test reliable (#40049) 2020-09-14 08:48:59 +02:00
J. Nick Koston c19b5c5ac3 Make recorder block_till_done reliable (#40043) 2020-09-14 08:48:29 +02:00
Ville Skyttä ad1a71ebc3 Don't try to create /test dir in camera tests (#39914)
ERROR:homeassistant.components.camera:
Can't write image to file: [Errno 13] Permission denied: '/test'
2020-09-14 08:40:59 +02:00
Ville Skyttä aad6a24f28 Fix vizio async mock fixtures on Python 3.8.0 and .1 (#39926) 2020-09-14 08:35:30 +02:00
Franck Nijhof bda66d1929 Upgrade coverage to 5.3.0 (#40056) 2020-09-14 08:34:18 +02:00
J. Nick Koston 2ff3c74fab Fix intermittently failing dyson test (#40051) 2020-09-13 21:37:52 -05:00
Chris Talkington 056e712667 Add device class to canary sensors (#40050)
* add device class to canary sensors

* Update test_sensor.py

* Update sensor.py

* Update sensor.py
2020-09-13 21:29:59 -05:00
HomeAssistant Azure 9acceda0f8 [ci skip] Translation update 2020-09-14 00:04:10 +00:00
Chris Talkington 9511103e26 Add unique_id to canary alarm_control_panel (#40041)
* add unique_id to canary alarm_control_panel

* Update test_alarm_control_panel.py

* Update alarm_control_panel.py

* Apply suggestions from code review

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

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-13 18:52:40 -05:00
Aidan Timson ae8c9d82bc Mark Azure DevOps device as a service (#40044) 2020-09-13 18:22:33 -05:00
J. Nick Koston 7b016063ca Refactor zeroconf setup to be async (#39955)
* Refactor zeroconf setup to be async

Most of the setup was calling back to async because
we were setting up listeners.  Since we only need
to jump into the executor to create the zeroconf
instance, its much faster to setup in async.

In testing this cut the setup time in half
or better.

* partial revert to after_deps
2020-09-13 18:06:19 -05:00
Chris Talkington 00acb180d6 Add canary alarm_control_panel tests (#40029)
* add canary alarm_control_panel tests

* Update .coveragerc

* Create test_alarm_control_panel.py

* Update __init__.py

* Update __init__.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update __init__.py

* Update __init__.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py

* Update test_alarm_control_panel.py
2020-09-13 16:36:26 -05:00
J. Nick Koston 46f9c0fb8a Update phrasing and pin validation for homekit_controller (#40006) 2020-09-13 15:26:04 -05:00
Paulus Schoutsen ef1649383c Bumped version to 0.115.0b9 2020-09-13 20:22:47 +00:00
Franck Nijhof afde5a7ece Fix entity extraction from Template conditions (#40034) 2020-09-13 20:22:38 +00:00
J. Nick Koston 30b8565548 Ensure homekit_controller traps exceptions from find_ip_by_device_id (#40030) 2020-09-13 20:22:38 +00:00
springstan a971b92899 Fix slack notifications requiring an icon (#40027) 2020-09-13 20:22:37 +00:00
J. Nick Koston 4ee7cdc8a0 Do not log an error when a host is unreachable while pinging (#40024) 2020-09-13 20:22:36 +00:00
Robert Svensson 4c2788a13c Improve handling of mireds being far out of spec (#40018) 2020-09-13 20:22:36 +00:00
Bouwe Westerdijk 8b4e193614 Ensure Plugwise unique_id is correctly set (#40014)
* Ensure unique_id is correctly set

* Removed unnec. line

Co-authored-by: Tom Scholten <git@scholten.nu>
2020-09-13 20:22:35 +00:00
Tom f0ce65af7d Add tests for Plugwise integration (#36371) 2020-09-13 20:22:34 +00:00
springstan b81c61dd99 Fix requiring username or password for nzbget yaml config (#40003) 2020-09-13 20:18:57 +00:00
J. Nick Koston 30ef7a5e88 Suppress homekit bridge discovery by homekit controller (#39990) 2020-09-13 20:18:56 +00:00
Franck Nijhof cd26384634 Fix entity extraction from Template conditions (#40034) 2020-09-13 22:05:45 +02:00
springstan 1f8c1f151d Fix requiring username or password for nzbget yaml config (#40003) 2020-09-13 22:04:48 +02:00
J. Nick Koston 36ce8ba79e Ensure homekit_controller traps exceptions from find_ip_by_device_id (#40030) 2020-09-13 21:55:49 +02:00
AJ Schmidt c32f698671 Add Config Flow to AlarmDecoder (#37998) 2020-09-13 12:29:25 -05:00
Chris Talkington 17efa1bda5 Improve canary tests (#39956) 2020-09-13 11:32:41 -05:00
springstan da19854520 Fix slack notifications requiring an icon (#40027) 2020-09-13 10:23:50 -06:00
springstan fc1fb0ab7c Revert 'Use STATE_UNKNOWN constant in dlink and ecobee' (#40022) 2020-09-13 17:11:24 +02:00
J. Nick Koston f3d50e2104 Do not log an error when a host is unreachable while pinging (#40024) 2020-09-13 16:44:37 +02:00
springstan 621526bbae Use moisture and moving device class in various integrations (#39963) 2020-09-13 16:33:54 +02:00
Robert Svensson ceeea52915 Improve handling of mireds being far out of spec (#40018) 2020-09-13 16:31:39 +02:00
J. Nick Koston ff4bb962c4 Cleanup and reduce duplicate code from recent template changes (#40012)
As a result of refactoring, there is duplicate code
we can now reduce.

Additionally `_wrap_state` can be removed because
it had unreachable checks for `None`
2020-09-13 09:21:11 -05:00
J. Nick Koston 84578f515d Suppress homekit bridge discovery by homekit controller (#39990) 2020-09-13 09:12:10 -05:00
Pascal Vizeli 5a6492b76d Update azure-pipelines-wheels.yml 2020-09-13 15:38:31 +02:00
Pascal Vizeli 11d74124cd Update azure-pipelines-wheels.yml 2020-09-13 15:38:02 +02:00
Bram Kragten b19fe17e76 Bumped version to 0.115.0b8 2020-09-13 11:41:46 +02:00
Joakim Sørensen 47326b2295 Bump pyhaversion to 3.4.0 (#40016) 2020-09-13 11:40:19 +02:00
Quentame 951c373110 Fix Freebox call sensor when no call in history (#40001) 2020-09-13 11:40:19 +02:00
Jeff Irion b9b76b3519 Bump androidtv to 0.0.50 (#39998) 2020-09-13 11:40:17 +02:00
Joakim Sørensen da6885af6c Bump frontend to 20200912.0 (#39997) 2020-09-13 11:40:16 +02:00
jjlawren bc2173747c Fix children_media_class for special folders (#39974) 2020-09-13 11:40:15 +02:00
uvjustin d0e6b3e268 Remove skip_sidx container option in stream (#39970)
* Remove skip_sidx container option

* Add comment
2020-09-13 11:40:14 +02:00
Joakim Sørensen 1d12d4d54c Bump pyhaversion to 3.4.0 (#40016) 2020-09-13 11:30:51 +02:00
Bouwe Westerdijk eac9c3c4f2 Ensure Plugwise unique_id is correctly set (#40014)
* Ensure unique_id is correctly set

* Removed unnec. line

Co-authored-by: Tom Scholten <git@scholten.nu>
2020-09-13 11:02:49 +02:00
Xiaonan Shen e3c51f0350 Fix xiaomi_aqara duplicated battery sensors (#39961) 2020-09-13 08:44:32 +02:00
Quentame bab4ad4f17 Add timeout config option to Synology DSM (#40000) 2020-09-12 20:36:39 -05:00
HomeAssistant Azure b05c88f1bc [ci skip] Translation update 2020-09-13 00:04:18 +00:00
Quentame 13df452dd4 Fix Freebox call sensor when no call in history (#40001) 2020-09-13 01:13:57 +02:00
Jeff Irion 285408b46c Bump androidtv to 0.0.50 (#39998) 2020-09-12 23:53:41 +02:00
springstan e55035b2f9 Use DEVICE_CLASS_MOTION in various integrations (#39962) 2020-09-12 16:20:30 -05:00
Joakim Sørensen 02cb592917 Bump frontend to 20200912.0 (#39997) 2020-09-12 16:18:48 -05:00
Simone Chemelli ca26c8bbd7 Shelly: Power and Energy sensors in roller mode (#39709) 2020-09-12 22:31:01 +02:00
uvjustin b0ba0e77f8 Remove skip_sidx container option in stream (#39970)
* Remove skip_sidx container option

* Add comment
2020-09-12 15:19:37 -04:00
springstan 827711bcd1 Use problem, presence and plug device class constants in various integrations (#39973) 2020-09-12 13:23:24 -05:00
springstan 3d4ef8cfe1 Use connectivity device class constant in various integrations (#39972) 2020-09-12 13:21:57 -05:00
Franck Nijhof 6751a38b8e Upgrade responses to 0.12.0 (#39986) 2020-09-12 19:40:10 +02:00
Franck Nijhof 18e9e262e4 Upgrade pytest-timeout to 1.4.2 (#39983) 2020-09-12 19:33:44 +02:00
springstan cee96ae207 Use opening and occupancy device class in various integrations (#39965) 2020-09-12 18:07:13 +02:00
jjlawren 4c0f075d6a Fix children_media_class for special folders (#39974) 2020-09-12 15:54:00 +02:00
Josef Schlehofer 6b966e2c47 Upgrade youtube_dl to version 2020.09.06 (#39969) 2020-09-12 14:58:29 +02:00
springstan 1bb5d4754f Use DEVICE_CLASS_DOOR and DEVICE_CLASS_SMOKE in various integrations (#39950) 2020-09-12 07:35:24 -05:00
Paulus Schoutsen 172a02a605 Bumped version to 0.115.0b7 2020-09-12 12:28:57 +00:00
Bram Kragten b6f868f629 Add children media class to children spotify media browser (#39953) 2020-09-12 12:28:47 +00:00
uvjustin 5697f4b4e7 Set output timescale to input timescale (#39946) 2020-09-12 12:28:47 +00:00
J. Nick Koston 30f9e1b479 Change template loop detection strategy to allow self-referencing updates when there are multiple templates (#39943) 2020-09-12 12:28:46 +00:00
Quentame fcbcebea9b Fix missing position attribute for MeteoFranceAlertSensor (#39938) 2020-09-12 12:28:45 +00:00
J. Nick Koston f81606cbf5 Return the listeners with the template result for the websocket api (#39925) 2020-09-12 12:28:44 +00:00
Greg Dowling 3240be0bb6 Bump pyloopenergy library to 0.2.1 (#39919) 2020-09-12 12:28:44 +00:00
On Freund 18be6cbadc Handle Kodi shutdown (#39856)
* Handle Kodi shutdown

* Core review comments

* Make async_on_quit a coroutine
2020-09-12 12:28:43 +00:00
On Freund cf6b84790f Handle Kodi shutdown (#39856)
* Handle Kodi shutdown

* Core review comments

* Make async_on_quit a coroutine
2020-09-12 14:22:14 +02:00
J. Nick Koston aaa8083d49 Change template loop detection strategy to allow self-referencing updates when there are multiple templates (#39943) 2020-09-12 14:20:21 +02:00
Franck Nijhof e746965b1c Upgrade mypy to 0.782 (#39967) 2020-09-12 11:31:22 +02:00
Franck Nijhof 3dda76115c Upgrade pytest-sugar to 0.9.4 (#39966) 2020-09-12 11:30:41 +02:00
Bram Kragten fbf0e69558 Add children media class to children spotify media browser (#39953) 2020-09-12 10:35:51 +02:00
Franck Nijhof ee6945d63d Upgrade pytest-cov to 2.10.1 (#39964) 2020-09-12 09:39:08 +02:00
Franck Nijhof 824f551969 Upgrade codecov to 2.1.9 (#39960) 2020-09-12 09:08:04 +02:00
springstan f93c0c5cd3 Use DEVICE_CLASS_WINDOW constant in various integrations (#39949) 2020-09-11 21:24:23 -05:00
Felipe Martins Diel a6d3ee90f0 Improve tests for Broadlink config flow (#39894) 2020-09-11 20:00:28 -05:00
Felipe Martins Diel 9f08955fef Improve tests for Broadlink devices (#39898) 2020-09-11 19:57:07 -05:00
springstan ac2e290d97 Use sound, vibration and safety device class constants in various integrations (#39952)
* Use sound, vibration and safety device class constants in various integrations

* Fix wrong imports
2020-09-11 19:37:33 -05:00
HomeAssistant Azure ee5c1ea3f7 [ci skip] Translation update 2020-09-12 00:05:00 +00:00
Xiaonan Shen 4e10895a19 Remove unchecked return value in synology_dsm (#39929) 2020-09-11 15:14:22 -05:00
Jakob Schlyter 9b49ca3820 Add template filter timedelta_seconds to create a timedelta from seconds (#39608) 2020-09-11 15:07:31 -05:00
springstan 719aa0f317 Use STATE_UNKNOWN constant in dlink and ecobee (#39948) 2020-09-11 15:05:07 -05:00
Martin Hjelmare 50c573eb4d Activate hassfest requirements CI check (#39940)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-09-11 21:38:32 +02:00
Greg Dowling f1cb8e80b3 Bump pyloopenergy library to 0.2.1 (#39919) 2020-09-11 20:47:48 +02:00
Jc2k 988a467afd Device automation triggers for stateless HomeKit accessories (#39090)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-11 13:34:07 -05:00
J. Nick Koston 741487a1fc Return the listeners with the template result for the websocket api (#39925) 2020-09-11 13:18:40 -05:00
uvjustin 9b29d09d45 Set output timescale to input timescale (#39946) 2020-09-11 14:07:45 -04:00
Quentame 062ac5f27d Fix missing position attribute for MeteoFranceAlertSensor (#39938) 2020-09-11 16:50:17 +02:00
Paulus Schoutsen a002e9b12f Bumped version to 0.115.0b6 2020-09-11 12:18:53 +00:00
Franck Nijhof db64a9ebfa Accept known hosts for get_url for OAuth (#39936) 2020-09-11 12:17:24 +00:00
J. Nick Koston 3fbde22cc4 Update zeroconf to 0.28.5 (#39923) 2020-09-11 12:17:24 +00:00
J. Nick Koston 758e60a58d Prevent missing integration from failing HomeKit startup (#39918) 2020-09-11 12:17:23 +00:00
Paulus Schoutsen 5201410e39 Bump aioshelly to 0.3.1 (#39917) 2020-09-11 12:16:43 +00:00
Thomas Lovén b1b7944012 Set variable values in scripts (#39915)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 12:16:01 +00:00
Paulus Schoutsen 8ef04268be Extract variable rendering (#39934) 2020-09-11 12:15:28 +00:00
Bas Nijholt b107e87d38 Don't trigger on attribute when the attribute doesn't change (#39910)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 12:12:58 +00:00
uvjustin b0b9579778 Disable audio for HLS or mpegts input (#39906) 2020-09-11 12:12:57 +00:00
Martin Hjelmare 7eade4029a Add children media class (#39902)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 12:12:57 +00:00
Marvin Wichmann 3d4913348a Warn users if KNX has no devices configured (#39899)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-11 12:12:56 +00:00
J. Nick Koston 1720b71d62 Limit zeroconf discovery to name/macaddress when provided (#39877)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-11 12:12:27 +00:00
Bas Nijholt c2a9a39ee0 Don't trigger on attribute when the attribute doesn't change (#39910)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 14:02:17 +02:00
Thomas Lovén f59e727f16 Set variable values in scripts (#39915)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 13:16:25 +02:00
Marvin Wichmann 8ea8969d80 Warn users if KNX has no devices configured (#39899)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-11 13:09:31 +02:00
Martin Hjelmare e96fed20c8 Add children media class (#39902)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-11 13:08:13 +02:00
J. Nick Koston e208aac834 Add async_track_state_removed_domain to allow tracking when a state is removed from a domain (#39859)
when a state is removed from a domain
2020-09-11 13:03:31 +02:00
Franck Nijhof 101b5b3b35 Accept known hosts for get_url for OAuth (#39936) 2020-09-11 13:00:00 +02:00
Paulus Schoutsen 5117a16841 Extract variable rendering (#39934) 2020-09-11 12:24:16 +02:00
J. Nick Koston 9389a7c9be Limit zeroconf discovery to name/macaddress when provided (#39877)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-11 12:19:21 +02:00
J. Nick Koston 487a74ba5d Update zeroconf to 0.28.5 (#39923) 2020-09-11 07:15:13 +02:00
HomeAssistant Azure 39d441a29b [ci skip] Translation update 2020-09-11 00:09:17 +00:00
J. Nick Koston bf1ad0a757 Prevent missing integration from failing HomeKit startup (#39918) 2020-09-10 23:19:11 +02:00
Paulus Schoutsen cfc020daa2 Bump aioshelly to 0.3.1 (#39917) 2020-09-10 23:07:23 +02:00
uvjustin 4ee5a29bc0 Disable audio for HLS or mpegts input (#39906) 2020-09-10 15:55:55 -04:00
Xiaonan Shen b66aaeea99 Add camera support to synology_dsm (#39838)
* Add camera support to synology_dsm

* Code improvements

* More code improvements
2020-09-10 21:08:37 +02:00
Paulus Schoutsen 589086f0d0 Bumped version to 0.115.0b5 2020-09-10 18:53:37 +00:00
Erik Montnemery 6f8060dea7 Fix discovery update of MQTT state templates (#39901) 2020-09-10 18:53:25 +00:00
J. Nick Koston b8ef87d84c Fix ping log level to be debug instead of warning (#39900) 2020-09-10 18:53:25 +00:00
J. Nick Koston 7370b0ffc6 Detect self-referencing loops in template entities and log a warning (#39897) 2020-09-10 18:53:24 +00:00
Paulus Schoutsen 209cf44e8e Add default variables to script helper (#39895) 2020-09-10 18:53:23 +00:00
Pascal Vizeli b7dacabbe4 Fix issue with grpcio build on 32bit arch (#39893) 2020-09-10 18:53:22 +00:00
Bram Kragten 5098c35814 Fix spotify media browser category (#39888) 2020-09-10 18:53:21 +00:00
Paulus Schoutsen 896df60f32 Shelly switch to guard for shelly 2 in roller mode (#39886) 2020-09-10 18:53:21 +00:00
Pascal Vizeli b26ab2849b Bump hass-nabucasa 0.37.0 (#39885) 2020-09-10 18:53:20 +00:00
Paulus Schoutsen 36f52a26f6 Fix event trigger (#39884)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-09-10 18:53:19 +00:00
bsmappee f0295d562d Bump pysmappee to 0.2.13 (#39883) 2020-09-10 18:53:18 +00:00
Joakim Sørensen 081bd22e59 Updated frontend to 20200909.0 (#39869)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2020-09-10 18:53:18 +00:00
Franck Nijhof 668c73010a Disable Met.no hourly weather by default (#39867)
Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
2020-09-10 18:53:17 +00:00
Paulus Schoutsen fe371f0438 Install stdlib-list in script/bootstrap (#39866) 2020-09-10 18:53:16 +00:00
Joakim Sørensen be28dc0bca Add exception for NoURLAvailableError in OAuth2FlowHandler (#39845)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-10 18:53:15 +00:00
Chris Talkington 4578baca3e Improve Roku media browser structure (#39754)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-10 18:53:15 +00:00
Erik Montnemery 4d6e694d14 Fix discovery update of MQTT state templates (#39901) 2020-09-10 20:52:23 +02:00
J. Nick Koston fd8a4182d9 Detect self-referencing loops in template entities and log a warning (#39897) 2020-09-10 20:50:11 +02:00
Franck Nijhof bedc1e5672 Upgrade numpy to 1.19.2 (#39912) 2020-09-10 20:47:15 +02:00
J. Nick Koston 047dc19351 Add zeroconf discovery to homekit (#39907)
Ensures HomeKit Bridge is offered for onboarding if
homekit is detected on the network.
2020-09-10 20:44:11 +02:00
J. Nick Koston fb31b04c08 Increase template test coverage. (#39908) 2020-09-10 20:43:45 +02:00
Paulus Schoutsen aa9dff572e Add default variables to script helper (#39895) 2020-09-10 20:41:42 +02:00
J. Nick Koston b5005430be Fix ping log level to be debug instead of warning (#39900) 2020-09-10 12:10:43 -04:00
Pascal Vizeli 40bcd38caa Update azure-pipelines-wheels.yml 2020-09-10 16:58:15 +02:00
Pascal Vizeli 68e2824a28 Fix issue with grpcio build on 32bit arch (#39893) 2020-09-10 15:56:05 +02:00
Joakim Sørensen 0cce35b23e Add exception for NoURLAvailableError in OAuth2FlowHandler (#39845)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-10 14:52:49 +02:00
RogerSelwyn 162c39258e Add Carbon Monoxide binary sensor to Homekit Controller (#39889) 2020-09-10 12:25:14 +01:00
Franck Nijhof 14f7f5ba45 Remove stale debug from WLED tests (#39882) 2020-09-10 13:16:33 +02:00
Paulus Schoutsen 35a9106a4b Shelly switch to guard for shelly 2 in roller mode (#39886) 2020-09-10 12:08:17 +02:00
Bram Kragten b49e6243d1 Fix spotify media browser category (#39888) 2020-09-10 12:06:18 +02:00
Paulus Schoutsen bb661ad083 Fix event trigger (#39884)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-09-10 11:25:56 +02:00
Pascal Vizeli 7b3369b71d Bump hass-nabucasa 0.37.0 (#39885) 2020-09-10 11:18:43 +02:00
Paulus Schoutsen c9f87afd8b Optimize requirements check with stdlib (#39871)
* Check requirements don't conflict stdlib

* Use regex
2020-09-10 10:51:13 +02:00
bsmappee 8648d8d012 Bump pysmappee to 0.2.13 (#39883) 2020-09-10 10:27:07 +02:00
Marius a6a011ec19 Use entity_class 'safety' in synology_dsm storage sensors (#39757)
* Use entity_class: 'safety' in storage sensors

and more meaningful icons then 'mdi:test-tube', not sure if these are even necessary, given the device_class that defines the icons too?

* Set device_class, not icon

Still, the temperature sensors have both set, should I take these out in this go too? While we're at it....

* added device_class temperature to temp sensors

and removed explicit icons
do we need to set a D_c also on the Status sensor? line 187

* revert device_class Safety

which is now set in const.py
following up on https://github.com/home-assistant/core/pull/39757#pullrequestreview-483705147

* Use DEVICE_CLASS_SAFETY from const

+ revert temp to avoid conflict

* const from binary

* reverted non binary status sensors

to use: "mdi:checkbox-marked-circle-outline" and set None to device_class

Co-authored-by: Quentame <polletquentin74@me.com>
2020-09-10 09:21:51 +02:00
Franck Nijhof b57f97b954 Upgrade isort to 5.5.2 (#39879) 2020-09-10 08:34:15 +02:00
Franck Nijhof b70df4ab18 Disable Met.no hourly weather by default (#39867)
Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
2020-09-10 07:58:40 +02:00
HomeAssistant Azure 6e79d49c80 [ci skip] Translation update 2020-09-10 00:04:20 +00:00
Sören Oldag 1f75f61bb0 Bump pyTibber to 0.15.2 (#39870) 2020-09-10 00:52:27 +02:00
Franck Nijhof 1a12611117 Upgrade sentry-sdk to 0.17.4 (#39868) 2020-09-10 00:49:54 +02:00
Aaron Bach 0e11c10468 Prompt user to reauthenticate AirVisual when API key expires (#38341)
* Prompt user to reauthenticate AirVisual when API key expires

* Don't version bump

* Cleanup

* Linting
2020-09-09 16:41:07 -06:00
Paulus Schoutsen c06b18b47b Install stdlib-list in script/bootstrap (#39866) 2020-09-10 00:36:58 +02:00
Joakim Sørensen 94b4824c27 Updated frontend to 20200909.0 (#39869)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2020-09-10 00:32:49 +02:00
Chris Talkington a918981ff3 Improve Roku media browser structure (#39754)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-09 23:22:26 +02:00
Paulus Schoutsen 6d7dfc0804 Bumped version to 0.115.0b4 2020-09-09 20:35:18 +00:00
Martin Hjelmare c5cf95c14b Remove media class apps and channels (#39864) 2020-09-09 20:34:15 +00:00
Alexei Chetroi f79ce7bd04 Update ZHA dependency (#39862) 2020-09-09 20:34:14 +00:00
Jason Hunter 578c1b283a Sort Local Media Source and fix media class (#39858) 2020-09-09 20:34:13 +00:00
Martin 5ae0844f35 Updated warning_device_warn (#39851)
duty_cycle: spec says in inrements of 10
duration: its a 16 bit field
2020-09-09 20:34:13 +00:00
J. Nick Koston 8e3e2d436e Use a unique id for each icmplib ping to avoid mixing unrelated responses (#39830) 2020-09-09 20:34:12 +00:00
Colin Frei 4af6804c50 Use correct URL for Fitbit callbacks (#39823) 2020-09-09 20:34:11 +00:00
Martin 9c40b511f2 Updated warning_device_warn (#39851)
duty_cycle: spec says in inrements of 10
duration: its a 16 bit field
2020-09-09 22:30:40 +02:00
Martin Hjelmare e6bc48ab68 Remove media class apps and channels (#39864) 2020-09-09 22:19:52 +02:00
Jason Hunter 9358b5089e Sort Local Media Source and fix media class (#39858) 2020-09-09 22:19:30 +02:00
J. Nick Koston b7ad83c655 Use a unique id for each icmplib ping to avoid mixing unrelated responses (#39830) 2020-09-09 22:19:14 +02:00
Alexei Chetroi b0b0b15d9d Update ZHA dependency (#39862) 2020-09-09 15:08:55 -04:00
Colin Frei 5fd059a3b6 Use correct URL for Fitbit callbacks (#39823) 2020-09-09 20:19:37 +02:00
Chris 1f000e2c3e Allow setting of hvac_mode when setting temperature in ozw (#39853) 2020-09-09 17:08:43 +02:00
Paulus Schoutsen 1333e23c23 Bumped version to 0.115.0b3 2020-09-09 13:15:53 +00:00
Martin Hjelmare b572c0df7f Make spotify media class lookup more robust (#39841) 2020-09-09 13:15:47 +00:00
cgtobi 139a0ca008 Fix Kodi media browser (#39840)
* Refactor

* Make linter happy

* Only return at the end

* Handle exception
2020-09-09 13:15:46 +00:00
Chris Talkington 0458b5e3a6 Fix nzbget sensors (#39833)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-09 13:15:45 +00:00
cgtobi c91c9f2b40 Fix Kodi media browser (#39829)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-09 13:15:45 +00:00
Maciej Bieniek 5165d746aa Add missing sensors after reworking sensor platform in Shelly integration (#39765) 2020-09-09 13:15:44 +00:00
Chris Talkington 74219663d6 Fix nzbget sensors (#39833)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-09 14:56:40 +02:00
Martin Hjelmare be04f14a78 Make spotify media class lookup more robust (#39841) 2020-09-09 14:48:28 +02:00
cgtobi 4f342eae27 Fix Kodi media browser (#39840)
* Refactor

* Make linter happy

* Only return at the end

* Handle exception
2020-09-09 14:12:11 +02:00
Philip Allgaier 8185ddf9a1 Add systemmonitor check for mandatory "arg" of sensors (#39687)
* Added check for mandatory "arg" of sensors

* Make pylint happy

* Moved to vol validator function for "arg" checks

* Make pylint happy once again

* Adjustments from code review
2020-09-09 12:57:24 +02:00
HomeAssistant Azure 90892d275c [ci skip] Translation update 2020-09-09 00:03:44 +00:00
cgtobi 1c4951a8d7 Fix Kodi media browser (#39829)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-08 23:42:45 +02:00
Quentame 95a33ba894 Bump Synology DSM to 0.9.0 (#39819) 2020-09-08 23:38:41 +02:00
Maciej Bieniek 748e2696dc Add missing sensors after reworking sensor platform in Shelly integration (#39765) 2020-09-08 23:22:44 +02:00
Paulus Schoutsen 6cadc5b157 Bumped version to 0.115.0b2 2020-09-08 21:18:08 +00:00
Franchie d32e3dc31a Avoid failing when hub does not provide cover position information (#39826)
The powerview hub, seemingly randomly, will occasionally not
provide data for cover positions. Some requests will return the
desired response, but minutes later the same request might not.

It appears this issue is being experienced by a number of people:
https://community.home-assistant.io/t/hunter-douglas-powerview-component-expanding-this-api/88635/48

While an unfortunate bug with the hub, crashing the integration
as a result of this missing data appears somewhat excessive.
This patch adds a simple check to ensure the 'position' key
has been returned by the hub before attempting to access its
data.
2020-09-08 21:18:04 +00:00
Bram Kragten 807bfb71df Update frontend to 20200908.0 (#39824) 2020-09-08 21:18:03 +00:00
Erik Montnemery c2f16cf21d Fix MQTT light value template (#39820) 2020-09-08 21:18:02 +00:00
Bram Kragten a45f5c7831 Update frontend to 20200908.0 (#39824) 2020-09-08 23:17:30 +02:00
Erik Montnemery 9aba1985c7 Fix MQTT light value template (#39820) 2020-09-08 23:11:42 +02:00
Franchie 066a418518 Avoid failing when hub does not provide cover position information (#39826)
The powerview hub, seemingly randomly, will occasionally not
provide data for cover positions. Some requests will return the
desired response, but minutes later the same request might not.

It appears this issue is being experienced by a number of people:
https://community.home-assistant.io/t/hunter-douglas-powerview-component-expanding-this-api/88635/48

While an unfortunate bug with the hub, crashing the integration
as a result of this missing data appears somewhat excessive.
This patch adds a simple check to ensure the 'position' key
has been returned by the hub before attempting to access its
data.
2020-09-08 16:00:38 -05:00
Paulus Schoutsen 9ca7efbe4c Bumped version to 0.115.0b1 2020-09-08 15:35:41 +00:00
J. Nick Koston a5dec53e1b Fix isy994 send_node_command (#39806) 2020-09-08 15:35:35 +00:00
J. Nick Koston f1de903fb5 Restore missing device_class to template binary_sensor (#39805) 2020-09-08 15:35:35 +00:00
J. Nick Koston fa07787007 Fix cover template entities honoring titlecase True/False (#39803) 2020-09-08 15:35:34 +00:00
Emilv2 0d27e10d77 Bump pydelijn to 0.6.1 (#39802) 2020-09-08 15:35:33 +00:00
Franck Nijhof 8dee5f4cf8 Remove deprecated Hue configuration (#39800) 2020-09-08 15:35:32 +00:00
Paulus Schoutsen c6a7350db1 Remove HTML support from frontend (#39799) 2020-09-08 15:35:32 +00:00
Paulus Schoutsen 2a68952334 Some shelly fixes (#39798) 2020-09-08 15:35:31 +00:00
Paulus Schoutsen 7f801faed1 Copy instead of deepcopy the variables in a wait for trigger (#39796) 2020-09-08 15:35:30 +00:00
cgtobi 02600bf190 Fix Sonos issue (#39790) 2020-09-08 15:35:29 +00:00
Bas Nijholt f41d283354 Restore miflora now that v0.7.0 is out (#39787)
* add miflora again, reverts part of github.com/home-assistant/core/pull/37707

* edit CODEOWNERS
2020-09-08 15:35:29 +00:00
Franck Nijhof f34e831650 Remove invalidation version from panel_custom (#39782) 2020-09-08 15:35:28 +00:00
J. Nick Koston c9ec533aa5 Add the ability to reload bayesian platforms from yaml (#39771) 2020-09-08 15:35:27 +00:00
Martin Hjelmare 2a879afc7a Add media class browse media attribute (#39770) 2020-09-08 15:35:26 +00:00
Paulus Schoutsen 71c2557405 Guard for spotify items without type (#39795)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2020-09-08 15:35:03 +00:00
Simone Chemelli 214fc04473 Support shelly cover(roller) mode (#39711)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-08 15:32:48 +00:00
J. Nick Koston 8adfcf23f0 Fix isy994 send_node_command (#39806) 2020-09-08 17:31:08 +02:00
J. Nick Koston 4bbd69955b Restore missing device_class to template binary_sensor (#39805) 2020-09-08 17:12:23 +02:00
J. Nick Koston 0507ec9d8b Fix cover template entities honoring titlecase True/False (#39803) 2020-09-08 17:08:31 +02:00
Martin Hjelmare 586d7eaba6 Add media class browse media attribute (#39770) 2020-09-08 16:42:01 +02:00
Franck Nijhof f075823529 Bump version to 0.116.0dev0 (#39768) 2020-09-08 16:39:48 +02:00
Emilv2 a695dc20fd Bump pydelijn to 0.6.1 (#39802) 2020-09-08 16:18:34 +02:00
Franck Nijhof 8e4710a2a9 Remove deprecated Hue configuration (#39800) 2020-09-08 15:52:04 +02:00
Paulus Schoutsen c6cba5ebc8 Remove HTML support from frontend (#39799) 2020-09-08 15:42:50 +02:00
Paulus Schoutsen 63aa46369b Copy instead of deepcopy the variables in a wait for trigger (#39796) 2020-09-08 15:23:38 +02:00
Paulus Schoutsen 5bcffba53e Guard for spotify items without type (#39795)
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2020-09-08 15:23:29 +02:00
Paulus Schoutsen 1e2741ff1b Some shelly fixes (#39798) 2020-09-08 15:12:20 +02:00
cgtobi 973524a4e6 Fix Sonos issue (#39790) 2020-09-08 14:13:48 +02:00
Bas Nijholt fa1a53cdeb Restore miflora now that v0.7.0 is out (#39787)
* add miflora again, reverts part of github.com/home-assistant/core/pull/37707

* edit CODEOWNERS
2020-09-08 13:50:53 +02:00
Franck Nijhof 401002dcd4 Remove invalidation version from panel_custom (#39782) 2020-09-08 11:59:39 +02:00
Andreas Rehn c68056d3ad Add missing EDL21 OBIS codes (#39714) 2020-09-08 10:40:05 +02:00
Simone Chemelli 0c8630a2f0 Support shelly cover(roller) mode (#39711)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-08 10:35:01 +02:00
J. Nick Koston a495946eeb Add the ability to reload bayesian platforms from yaml (#39771) 2020-09-08 09:41:17 +02:00
Tom bb9ea7ce6e Add tests for Plugwise integration (#36371) 2020-09-08 08:37:44 +02:00
HomeAssistant Azure 07d5af1969 [ci skip] Translation update 2020-09-08 00:04:13 +00:00
Franck Nijhof 7756038bee Bumped version to 0.115.0b0 2020-09-07 23:01:27 +02:00
Martin Hjelmare 38834d1945 Fix plex browse media (#39766) 2020-09-07 22:58:21 +02:00
Martin Hjelmare c3ee79e4db Clean up spotify media browser dict access (#39764) 2020-09-07 22:17:10 +02:00
Bram Kragten 72b392e853 Update frontend to 20200907.0 (#39761) 2020-09-07 21:32:13 +02:00
Aidan Timson 6f43285a28 Force token expires_in to float (#39489) 2020-09-07 21:26:58 +02:00
Bram Kragten d0e44893f5 Local media source: return different error if media folder doesnt exist (#39759) 2020-09-07 20:38:06 +02:00
David F. Mulcahey be8aa16170 Don't poll entities for unavailable ZHA devices (#39756)
* Don't poll entities for unavailable ZHA devices

* Update homeassistant/components/zha/entity.py

Co-authored-by: Bas Nijholt <basnijholt@gmail.com>

* cleanup after accepting suggestion

Co-authored-by: Bas Nijholt <basnijholt@gmail.com>
2020-09-07 13:52:00 -04:00
Bas Nijholt 36a1877cbd Add missing MENU option for webos.button service (#39746)
See all button options at https://github.com/bendavid/aiopylgtv/blob/master/aiopylgtv/buttons.py.
2020-09-07 19:24:06 +02:00
On Freund 78dbd090b5 Update pykodi to 0.1.2 (#39758) 2020-09-07 13:15:00 -04:00
Bram Kragten 4b01ab616a Timer make attribute format always h:mm:ss (#38292)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-07 19:12:52 +02:00
cgtobi ef8cdf0405 Add Kodi media browser support (#39729)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-07 18:22:20 +02:00
Marijn Pool c11b88b4c2 Remove remaining and add finishes_at attributes from timer (#37519) 2020-09-07 18:08:46 +02:00
Philip Allgaier 84992da24a Make Spotify library payload use "BrowseMedia" (#39744) 2020-09-07 17:52:35 +02:00
J. Nick Koston 5e83feeabf Increase test coverage for template sandbox (#39750) 2020-09-07 17:33:22 +02:00
Tomasz ae5d8f4d64 Support color temperature (#39743)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-07 17:29:51 +02:00
J. Nick Koston 90d574e521 Ensure static templates are still called back on first refresh (#39753) 2020-09-07 17:19:39 +02:00
Martin Hjelmare fc2cddc452 Fix netatmo browse_media return type (#39751) 2020-09-07 16:57:22 +02:00
Franck Nijhof 7c86fa0203 Support 'for' without setting the 'to'-state in automation state triggers (#39730) 2020-09-07 16:30:02 +02:00
J. Nick Koston 8c96eb7c56 Retry tado setup later when cloud service is unavailable (#39748) 2020-09-07 16:16:29 +02:00
Anders Melchiorsen 4b84b74b89 Support state trigger with from/for but no to (#39480) 2020-09-07 16:08:24 +02:00
Chris Talkington 8a3279a5c9 Add device action support for remotes (#39400) 2020-09-07 08:54:18 -05:00
Markus Bong 7c56ee8e0c Add devolo remote devices as binary sensors (#39105) 2020-09-07 08:48:14 -05:00
Markus Bong 007873153e Add devolo current and total consumption to sensors (#38386) 2020-09-07 07:24:05 -05:00
Tom f6aa3e0cdc Improve Plugwise config_options testing (#39736) 2020-09-07 14:13:47 +02:00
Paulus Schoutsen b07628ae57 Rework Shelly sensors (#39747)
* Rework Shelly sensors

* Lint

* Add shelly/entity to coveragerc
2020-09-07 14:13:20 +02:00
Bram Kragten 90c6e1c449 Fix cast media player browser (#39745) 2020-09-07 13:44:10 +02:00
Tom 5b5b57b810 Bump Plugwise_Smile from 1.1.0 to 1.4.0 (#39726)
* Provisional commit to test latest pre-release of module

* Bump version to release
2020-09-07 13:17:22 +02:00
cgtobi 21dbce1554 Make Sonos use BrowseMedia (#39742) 2020-09-07 11:24:31 +02:00
Franck Nijhof 72300a54df Upgrade isort to 5.5.1 (#39737) 2020-09-07 11:17:03 +02:00
RogerSelwyn 2bd2dcb50a Bump pyskyqhub to 0.1.3 (#39739)
To fix issue - https://github.com/RogerSelwyn/skyq_hub/issues/4 - where tests (and manage) modules includes in pypi package
2020-09-07 10:36:37 +02:00
J. Nick Koston 2e6cd4f12b Optimize template sandbox for Home Assistant (#39731) 2020-09-07 09:17:41 +02:00
Chris 12cc158b64 Remove ozw lock service for loops, replace with get_value() (#39735) 2020-09-07 08:39:23 +02:00
Alexei Chetroi cd0195a27a Update ZHA dependencies (#39700)
* Update ZHA dependencies
* Update zigpy-zigate
* Move ZNP on top of the radios so it's probed 1st

Some stick don't like if there was some unexpected traffic on the port
prior the initialization.

* Update dependencies
2020-09-06 23:10:15 -04:00
Erik Montnemery 863b63d75e Fix handling of device registry defaults (#39688) 2020-09-06 21:08:50 -05:00
pbalogh77 3a36a789ad Improve climate support for fibaro (#39038)
* Fibaro climate improvements

1, Implemented support for multinode climate devices, such as Danfoss HC10, differentiating zones based on endPointId
2, Improved recognition of temperature sensor subdevice for climate devices
3, Changed default opmode for devices without an opmode to "auto" instead of "fan_only", for better clarity and to avoid misunderstandings

* pylint inspired code restructuring to reduce depth

gotta love pylint
2020-09-06 21:03:03 -05:00
Andrew Marks d0af3339fc Add unique_id to jewish_calendar entities (#39025) 2020-09-06 20:29:17 -05:00
HomeAssistant Azure c74f187b1f [ci skip] Translation update 2020-09-07 00:03:02 +00:00
J. Nick Koston 4779916ac4 Set DEVICE_CLASS_GATE for iSmartGate gates (#39703) 2020-09-06 18:55:20 -05:00
Jason Hunter 1a78d96014 allow creating directories from camera snapshot, stream record, and tensorflow file out (#39728) 2020-09-06 18:54:24 -04:00
Franck Nijhof 1ec3446c56 State condition can also accept an input_* Entity ID as state value (#39691) 2020-09-07 00:36:01 +02:00
Chris 165dd351b7 Fix some missing ozw sensors (#39686) 2020-09-07 00:04:55 +02:00
Martin Hjelmare 8eed7110a1 Add hassfest requirements validation (#39329) 2020-09-06 23:41:41 +02:00
Robert Svensson 41abc08d63 Axis - Improve naming of some events (#39699)
* Add support for events from Loitering guard and Motion guard
* Improve naming of events originating from applications Fence guard and VMD4 (Loitering guard and motion guard also benefit from this)
2020-09-06 23:26:06 +02:00
J. Nick Koston 251d8919ea Add domain filter support to async_all to match async_entity_ids (#39725)
This avoids copying all the states before applying
the filter
2020-09-06 23:20:32 +02:00
Bram Kragten 19818d96b7 Spotify browser add more sources (#39296)
Co-authored-by: Tobias Sauerwein <cgtobi@gmail.com>
2020-09-06 22:55:29 +02:00
Ville Skyttä f828cdcaef Fix setup of ONVIF devices without snapshot capability (#39723)
* Fix setup of ONVIF devices without snapshot capability

* Unrelated debug message typo fix
2020-09-06 16:52:06 -04:00
Philip Allgaier dd00cfc7a2 Fix media browser panel title (#39720) 2020-09-06 16:48:07 -04:00
J. Nick Koston e649e27d4d Bump zeroconf to resolve a performance issue with the cache reaper (#39713)
https://github.com/jstasiak/python-zeroconf/pull/297
2020-09-06 22:40:27 +02:00
Bouwe Westerdijk 61e8ab1300 Add Plugwise scan_interval config option (#37229)
Co-authored-by: Tom Scholten <tom@sue.nl>
Co-authored-by: Tom Scholten <git@scholten.nu>
2020-09-06 15:26:14 -05:00
Franck Nijhof e52a303e93 Merge branch 'master' into dev 2020-09-06 21:09:50 +02:00
David F. Mulcahey f2d21ea735 Update ZHA storage every 10 minutes (#39710) 2020-09-06 15:00:28 -04:00
fillefilip8 8af64456ec Add number parsing for OpenHardwareMonitor (#39030) 2020-09-06 20:49:54 +02:00
uvjustin c9a4deb118 Set log level for libav.mp4 in stream (#39719)
Also add @uvjustin to codeowners
2020-09-06 20:46:36 +02:00
Franck Nijhof 878347243d Numeric state condition can also accept input_number entity ID (#39680) 2020-09-06 20:04:07 +02:00
J. Nick Koston d7e471e244 Add HomeKit discovery for iSmartGate (#39702) 2020-09-06 12:56:38 -05:00
Maciej Bieniek f29154011e Bump aioshelly library to 0.3.0 (#39716) 2020-09-06 10:34:51 -05:00
kennedyshead af47a94e70 Update py-melissa-climate to 2.1.4 (#39708)
* Bumping melissa version

Took 48 minutes

* Black

Took 6 minutes

Co-authored-by: magnusknutas <magnus@thefarm.se>
2020-09-06 10:22:52 -05:00
Franck Nijhof a3c45a6f89 Add shorthand notation for Template conditions (#39705) 2020-09-06 16:55:06 +02:00
Franck Nijhof da9b077c11 Time condition can also accept an input_datetime Entity ID (#39676) 2020-09-06 16:06:09 +02:00
Simone Chemelli f298281ec4 Make multi-switches device a single device with 2 switches (#39689)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-06 16:05:10 +02:00
Paulus Schoutsen df8daf561e Browse media class (#39698) 2020-09-06 15:52:59 +02:00
Chris Talkington 13a6aaa6ff Add media browser support to roku (#39652)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-09-06 14:53:45 +02:00
Martin Hjelmare 405311e89f Bump pytradfri to 7.0.2 (#39707) 2020-09-06 12:01:14 +02:00
Martin Hjelmare 36632f64f1 Mock tradfri lights correctly (#39706) 2020-09-06 11:54:08 +02:00
Jason Hunter 3b88452b2f Upgrade TensorFlow to 2.3 (#39673) 2020-09-06 10:12:36 +02:00
HomeAssistant Azure 2f0138e891 [ci skip] Translation update 2020-09-06 00:03:25 +00:00
Martin Hjelmare f584e3f689 Bump pytradfri to 7.0.1 (#39696) 2020-09-06 00:36:32 +02:00
Simone Chemelli 1fffa748e5 Improve handling of DHCP devices (#39683) 2020-09-06 00:17:10 +02:00
Joakim Plate 74fea6d306 Add Arcam radio media browsing (#39593) 2020-09-06 00:10:18 +02:00
Martin Hjelmare b6630a48b2 Add tradfri api call error handling (#39681)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-09-05 23:02:32 +02:00
Joakim Plate 29c1bec0f3 Match documentation on expose being default True (#39692) 2020-09-05 21:49:33 +02:00
MatthewFlamm 958c9c08d6 Use more homeassistant constants in NWS (#39690) 2020-09-05 21:11:15 +02:00
springstan d2b1918e9c Drop UNIT_ prefix for percentage constant (#39383) 2020-09-05 21:09:14 +02:00
Egor Shilyaev cdc93d7110 Fix for starline authorization (#39674) 2020-09-05 16:40:39 +02:00
Robert Van Gorkom b860caa631 Add iSmartGate support (#39437)
* Add iSmartGate support.

* Addressing PR feedback.

* More PR feedback cleanups.
2020-09-05 09:26:01 -05:00
Martin Hjelmare 52c09396e0 Fix monoprice option flow test (#39685) 2020-09-05 15:25:22 +02:00
Keilin Bickar 3022fc4702 Add Emulated Kasa Integration (#39630)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-05 07:57:45 -05:00
Rob Bierbooms 8567fe94e1 Add connection validation on import for dsmr integration (#39664) 2020-09-05 12:05:46 +02:00
Nishchith Shetty 3565fec005 Add parameters for enabling Auth in Apache Kafka integration (#39611) 2020-09-05 10:44:30 +02:00
Philip Allgaier 7be5ef8b6c Improve systemmonitor (#36283)
* Improvements for systemmonitor

* Use MDI CPU icon (bit architecture determined at runtime)
* Consistent usages of "percent" (ensured backwards compatibility by explicity setting the entity_id)
* Default value "/" (root) for disk_* sensors to prevent runtime issues if not specified in configuration

* Added CPU temperature sensor to systemmonitor

* Code streamlining of CPU temperature retrieval

* Corrected sensor state handling and added "available" logic

* Corrected ENTITY_ID to include argument

* Optimized "available" handling & CPU temperature detection

* Corrected tuple for CPU temperature determination

* - Do not create CPU temperature entity if no sensor data can be read
- Re-use temperature sensor labels from "glances" integration

* Array fix

* Corrected sensor array access

* Handle empty temperature sensor labels (same logic as used by "glances")

* PR comments: Setting unique_ID and f-strings

* Removed unused constants

* Revert entity rename (wait until next release)
2020-09-05 05:51:18 +02:00
HomeAssistant Azure 2183ff5906 [ci skip] Translation update 2020-09-05 00:04:17 +00:00
Evgeny b0192cf9c0 Add OpenWeatherMap config_flow (#34659)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-04 18:22:50 -05:00
Maciej Bieniek 1e770f089d Bump accuweather library (#39667) 2020-09-04 18:01:49 -05:00
Maciej Bieniek 8b4847162d Bump gios library (#39669) 2020-09-04 18:01:34 -05:00
Jason Hunter 706f1f8a66 Register media browser panel (#39655)
* register media browser panel

* Apply suggestions from code review.

Co-authored-by: Zack Arnett <arnett.zackary@gmail.com>

* Update homeassistant/components/media_source/__init__.py

Co-authored-by: Zack Arnett <arnett.zackary@gmail.com>

Co-authored-by: Zack Arnett <arnett.zackary@gmail.com>
2020-09-05 00:28:53 +02:00
Bram Kragten ab2d171909 Updated frontend to 20200904.0 (#39665) 2020-09-05 00:23:20 +02:00
RogerSelwyn 0d3396ed64 Add mac address to sky_hub tracker (#39506)
* Add mac address to Sky_Hub tracker

* Update manifest.json

* Update device_tracker.py

* Update device_tracker.py

* Update device_tracker.py

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-04 15:31:06 -05:00
Andrew Marks 01bac9f433 Refactor sharkiq tests (#39564)
* Refactor sharkiq tests

* Fix linting

* Remove unussed logger

* Test one more code branch

* Don't patch integration files

* Remove legacy calls

* Linting fixes

* Refactor coordinator update tests

* Reformat test params

* Refector config flow tests

* Minor code cleanup

* Fix spelling error

* Address review

* Minor formatting change

* Remove vacuum.py from .coveragerc
2020-09-04 15:13:11 -05:00
Joakim Plate 1cb60dd5c7 Replace old source prefixing for channels with new media browser (#39596)
* Replace old source prefixing for channels with new media browser

* Restore support to call select source with prefix

* Drop warning log for deprecated call method
2020-09-04 22:12:31 +02:00
Charles Garwood 4885b22cb4 Improve ozw websocket response when node is not found (#39653)
* Return not_found error over ws if node is not found

* Remove unrelated code from this PR

* Only import ERR_NOT_FOUND from core websocket_api
2020-09-04 15:52:47 -04:00
Chris Talkington 1fb70625a3 Prevent mpchc from spamming logs (#39663) 2020-09-04 14:22:50 -05:00
On Freund ad6e8b2d62 Add event sensors for risco (#39594)
* Add Risco event sensors

* Fix lint
2020-09-04 14:11:07 -05:00
J. Nick Koston 9b23d7c2fd Use the shared Zeroconf instance in esphome (#38747) 2020-09-04 21:01:41 +02:00
Rob Bierbooms 7f7a0003c7 Address review comments on dsmr update to ConfigEntry (#39662) 2020-09-04 20:56:22 +02:00
kennedyshead 767be18265 Bumping aioasuswrt version so that it have license-tag and manifest (#39654)
Took 32 minutes

Co-authored-by: magnusknutas <magnus@thefarm.se>
2020-09-04 14:52:44 -04:00
cgtobi 84944cfc24 Add Netatmo media browser support (#39578) 2020-09-04 20:21:42 +02:00
Greg Dowling 08d5175d05 Improve handling of roon radio data (#39659) 2020-09-04 13:19:18 -05:00
Keilin Bickar 05e15dc318 Add unique ID to demo fan (#39658) 2020-09-04 11:23:53 -05:00
Maciej Bieniek f1ee11cb14 Bump brother library (#39657) 2020-09-04 11:21:23 -05:00
Jason Hunter f2b3e63ff6 Media Source implementation for Chromecast (#39305)
* Implement local media finder and integrate into cast

* update to media source as a platform

* Tweak media source design

* fix websocket and local source

* fix websocket schema

* fix playing media

* Apply suggestions from code review

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

* Add resolve_media websocket

* Register that shit

* Square brackets

* Sign path

* add support for multiple media sources and address PR review

* fix lint

* fix tests from auto whitelisting config/media

* allow specifying a name on the media source

* add tests

* fix for python 3.7

* Apply suggestions from code review

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

* add http back to cast and remove guess_type from executor as there is no i/o

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-04 11:16:29 -04:00
jjlawren f01a0f9151 Allow separate URL for REST switch state (#39557) 2020-09-04 16:58:40 +02:00
J. Nick Koston ebc31c0f08 Do not treat nexia http not found as invalid auth (#39484)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-04 16:54:27 +02:00
jjlawren 55040cfde5 Reduce log level for Plex service call (#39647) 2020-09-04 16:47:39 +02:00
Maciej Bieniek 0b7576b634 Add some missing sensors for Shelly integration (#39651) 2020-09-04 16:42:57 +02:00
J. Nick Koston a096c20930 Fix missing assert in template test (#39648) 2020-09-04 16:28:56 +02:00
Markus Bong fa1b8c824c Add devolo thermostat devices (#38594)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-04 08:33:54 -05:00
Bjørn Snoen f207d46390 Allow using environment cacert file (#38816) 2020-09-04 13:54:20 +02:00
Oscar Calvo 08d93b8349 Make resilient to errors while receiving SMS (#37577) 2020-09-04 12:48:15 +02:00
Hmmbob 60c7a91794 Add payload to debug output of rest_command (#39190) 2020-09-04 12:39:26 +02:00
Maciej Bieniek ad3e520e09 Fix sensors without unit attribute in Shelly integration (#39629) 2020-09-04 11:44:22 +02:00
Franck Nijhof 8fd9f56d21 Upgrade wled to 0.4.4 (#39641) 2020-09-04 11:33:31 +02:00
jjlawren dd7f282723 Add new Plex movie lookup method for media_player.play_media (#39584) 2020-09-04 11:32:36 +02:00
Franck Nijhof fdb737d1d9 Upgrade isort to 5.5.0 (#39639) 2020-09-04 09:23:24 +02:00
Franck Nijhof ed3e04b9ed Fix Spotify scopes validation for re-auth (#39638) 2020-09-04 08:57:12 +02:00
Angelo Gagliano eb7742ea7c Add support for VeSync Fans (#36132)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-09-03 21:05:37 -05:00
Chris Talkington 48cfbf8662 Improve broadlink sensor tests (#39632) 2020-09-03 20:01:15 -05:00
J. Nick Koston 1034e4ec50 Bump nexia to 0.9.4 (#39634)
Fix for type missing in the json response
2020-09-03 20:54:48 -04:00
HomeAssistant Azure bfd6989c75 [ci skip] Translation update 2020-09-04 00:04:26 +00:00
Felipe Martins Diel 353b40b28a Add tests for Broadlink remotes (#39235)
* Add tests for Broadlink remotes

* Reformat the tests with Black

* Add a helper method for device setup

* Rename device.setup() to device.setup_entry()

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-03 16:51:08 -05:00
Anders Melchiorsen da82d171e0 Add radio channel attribute to Sonos (#39631) 2020-09-03 23:47:32 +02:00
Chris Talkington f6a3eea7f2 Add device class to directv devices (#39628)
* add device class to directv devices

* Update test_media_player.py

* Update media_player.py

* Update test_media_player.py

* Update media_player.py
2020-09-03 23:27:13 +02:00
Rob Bierbooms d0120d5e0a Update DSMR integration to import yaml to ConfigEntry (#39473)
* Rewrite to import from platform setup

* Add config flow for import

* Implement reload

* Update sensor tests

* Add config flow tests

* Remove some code

* Fix pylint issue

* Remove update options code

* Add platform import test

* Remove infinite while loop

* Move async_setup_platform

* Check for unload_ok

* Remove commented out test code

* Implement function to check on host/port already existing

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Implement new method in import

* Update tests

* Fix test setup platform

* Add string

* Patch setup_platform

* Add block till done to patch block

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-03 16:19:45 -05:00
Chris Talkington 77f5fb765b Add device class for roku devices (#39627)
* add tv device class for roku tvs

* Update test_media_player.py

* Update test_media_player.py

* Update media_player.py

* Update test_media_player.py

* Update media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update media_player.py
2020-09-03 17:06:24 -04:00
On Freund a87fedc0af Automatically configure HTTP auth type in ONVIF snapshots (#38729)
* Allow selection of HTTP auth type in ONVIF snapshots

* Auto populate snapshot auth

* Fix no auth case

* Add missing return
2020-09-03 22:41:24 +02:00
Chris Talkington c1b8497aaa Improve sonarr sensor test (#39623)
* improve sonarr sensor test

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.py
2020-09-03 15:32:48 -05:00
J. Nick Koston 35e84d0427 Add as_local convenience function to jinja templates (#39618) 2020-09-03 14:35:16 -05:00
Chris Talkington a9cc882394 Improve mpd media position handling (#39390)
* improve mpd media position handling

* Update media_player.py

* Update media_player.py

* Update media_player.py
2020-09-03 12:23:02 -05:00
Chris Talkington 17b4c1a2ca Use CoordinatorEntity for supla (#39621) 2020-09-03 19:11:14 +02:00
Chris Talkington a0663d84d2 fix black for stream (#39622) 2020-09-03 11:54:04 -05:00
Martin Hjelmare bde0bdbf80 Clean tradfri hass data and add tests (#39620) 2020-09-03 18:39:24 +02:00
Joakim Plate d128443a2a Google assistant openclose (#39612)
* Make sure we set discreteOnlyOpenClose for binary sensors

* Mark switches that are assumed state as commandOnlyOnOff

* Drop stray extra line

* Fix pylint error

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
2020-09-03 18:32:57 +02:00
Michał Węgrzynek 8818a5ab6c Use DataUpdateCoordinator for supla (#38921)
* Linter suggestions

* Store coordinator in hass.data[supla_coordinators]

* Server cleanup

* Spelling mistake

* Fixes suggested in review

* Pass server and coordinator during async_setup_platform

* Linter changes

* Rename fetch_channels to _fetch_channels

* Linter suggestions

* Store coordinator in hass.data[supla_coordinators]

* Server cleanup

* Fixes suggested in review

* Pass server and coordinator during async_setup_platform

* Linter changes

* Remove scan interval configuration option

* Linting

* Isort

* Disable polling, update asyncpysupla version

* Black fixes

* Update manifest.json

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-09-03 11:25:30 -05:00
Eric Severance 9baa7c6c24 Restart keepalive streams (#38863) 2020-09-03 12:22:00 -04:00
Paulus Schoutsen fbbfd46fb8 Add .well-known/password-change (#39613) 2020-09-03 18:13:33 +02:00
jjlawren 4ebcbadfc2 Address Plex review comments (#39591) 2020-09-03 18:10:37 +02:00
starkillerOG e288246366 Add troubleshooting link to error message for xiaomi_aqara (#39617) 2020-09-03 17:26:13 +02:00
SukramJ 4dee2b599a Add HmIP-STV to HomematicIP Cloud (#39518)
* add general attribute for connection type

* Add HmIP-STV to HomematicIP Cloud
2020-09-03 17:23:42 +02:00
Tomer Figenblat 77c6a48553 Update aioswitcher to 1.2.1 (#39614) 2020-09-03 16:58:31 +02:00
Paulus Schoutsen 948ec80b6e Bump pytradfri to 7.0.0, support multiple gateways (#39609)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-03 14:47:14 +02:00
Martin Eberhardt 8ca9724258 Expose more attributes in rejseplanen (#37216) 2020-09-03 13:43:35 +02:00
Franck Nijhof 1c90bdddb4 Upgrade apprise to 0.8.8 (#39606) 2020-09-03 13:30:42 +02:00
Franck Nijhof 0cba7acf5a Upgrade sentry-sdk to 0.17.3 (#39607) 2020-09-03 13:29:17 +02:00
Maciej Bieniek 7e50a4999c Add support for Shelly Gas to the Shelly integration (#39478)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-03 10:54:25 +02:00
Paulus Schoutsen 6d1ba10788 Bump hass-nabucasa to 0.36.0 (#39603)
* Bump hass-nabucasa to 0.36.0

* hass-nabucasa 0.36.1
2020-09-03 10:43:51 +02:00
SukramJ f2f68859cc Fix wrong error message on adding a new HomematicIP Cloud AP (#39599) 2020-09-03 09:52:51 +02:00
jjlawren aecd74c6af Add service to scan for new Plex clients (#39074) 2020-09-03 09:35:37 +02:00
Maciej Bieniek 226406b853 Improve tests for GIOS integration (#39514) 2020-09-03 09:27:21 +02:00
jjlawren d66bc6a873 Add Recently Added and On Deck to Plex media browser (#39232) 2020-09-03 09:26:30 +02:00
Hendrik Schröter 49daf57c54 Fix rain retrival for OWM (#39566)
As documented in the OWM API (https://openweathermap.org/api/one-call-api), rain and snow are reported on a 1h basis:

current.rain
    current.rain.1h (where available) Rain volume for last hour, mm
current.snow
    current.snow.1h (where available) Snow volume for last hour, mm
2020-09-03 08:16:38 +02:00
J. Nick Koston 65e53b8251 Support reloading mqtt yaml configuration (#39531) 2020-09-02 20:16:21 -05:00
J. Nick Koston 56e76a3265 Support reloading the smtp notify platform (#39530)
* Support reloading the smtp notify platform

* patch test
2020-09-02 19:43:07 -05:00
J. Nick Koston 93555fed75 Support reloading the telegram notify platform (#39529)
* Support reloading the telegram notify platform

* services.yaml
2020-09-02 19:08:47 -05:00
HomeAssistant Azure 65b227126d [ci skip] Translation update 2020-09-03 00:06:16 +00:00
J. Nick Koston 661b593db3 Support reloading the rest notify platform (#39527)
* Support reloading the rest notify platform

* update services.yaml

* fix conflict
2020-09-02 18:25:43 -05:00
J. Nick Koston a778690b64 Support reloading the group notify platform (#39511) 2020-09-03 00:12:07 +02:00
Tomasz 2d2efeb9bb Add the ability to reload rpi_gpio platforms from yaml (#39548)
* add reload service

* test for reload service

* missing file

* Revert "missing file"

This reverts commit 24391fe3b9d9a5c03da8249422b394634a633bb2.

* Revert "test for reload service"

This reverts commit 5bda48d07000e533298766b5c3acb90e0f91fb50.
2020-09-02 14:28:18 -05:00
jjlawren cb1cf2238d Add Plex service to refresh a library (#39094)
* Add Plex service to refresh a library

* Clean up rebase leftovers

* Re-run black

* Fix docstring

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>
2020-09-02 13:56:41 -05:00
Daniel Hjelseth Høyer 97602a127a Reintroduce custom met.no url (#39583) 2020-09-02 20:56:23 +02:00
springstan e3354895f8 Round sensor readings for bom (#39513) 2020-09-02 11:59:21 -06:00
Charles Garwood 5fafaa3c4f Add get_migration_config to zwave websocket api (#39577)
* Add get_migration_config to zwave websocket api

* Add test
2020-09-02 18:56:09 +02:00
Xiaonan Shen 7b3182fa8f Improve Yeelight code (#39543)
* Rename ipaddr to ip_addr

* Move custom services to entity services

* Remove platform data

* Change service setup to callback

* Rename ip_addr to host

* Use _host inside class
2020-09-02 18:42:12 +02:00
Raman Gupta 04c849b0ee Remove vizio test assertions for integration details in test_init (#39579) 2020-09-02 18:38:53 +02:00
Ziv dfa6f0223a library version upgrade to 0.46 (#39580) 2020-09-02 18:07:27 +02:00
J. Nick Koston 45c28dd9c5 Provide a logbook option entity_matches_only to optimize for single entity lookup (#39555)
* Provide a logbook option entity_matches_only to optimize for single entity id lookup

When entity_matches_only is provided, contexts and events that do not
contain the entity_id are not included in the logbook response.

* Update homeassistant/components/logbook/__init__.py

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

* api only takes a single entity

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-02 10:32:08 -05:00
Olivér Falvai 70e39a26a2 Fix UPC ConnectBox logout and device hostnames (#39568) 2020-09-02 14:56:32 +02:00
Paulus Schoutsen 6de02fc1b9 Fix some more usages of asynctest (#39570) 2020-09-02 14:53:07 +02:00
Martin Hjelmare 24f63127de Fix vizio black formatting (#39573) 2020-09-02 14:16:23 +02:00
Michael Thingnes 0892acbabd Met.no migrate from classic to complete endpoint (#39493) 2020-09-02 14:11:13 +02:00
Joakim Plate ec6a1f9137 Add support for receiver and speaker device classes (#38381)
These are now officially supported by google
2020-09-02 11:59:51 +02:00
Raman Gupta 7ff633f531 Automatically update app list for Vizio SmartTV's (#38641) 2020-09-02 11:55:10 +02:00
Ville Skyttä 9f5baa0bf7 Syncthru device registry (#36750)
* Store printer instances in hass.data

* Add SyncThru device registry support

* Use config entry id as hass.data key

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

* Use printer hostname as device registry name

* Handle non-syncthru device more gracefully on entry setup

* Use device identifiers rather than connections to link entities with devices

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-09-02 11:50:57 +02:00
Paulus Schoutsen 78b0837cb8 Remove flaky wol test that didn't test anything (#39571) 2020-09-02 11:50:00 +02:00
Paulus Schoutsen d5bcafaefd Handle Alexa entity removed (#39569) 2020-09-02 11:30:37 +02:00
Phil Bruckner 4486251382 Add max_exceeded log level option to automations & scripts (#39448) 2020-09-02 11:05:14 +02:00
cgtobi 603707aa85 Add Sonos media browser capability (#39239) 2020-09-02 10:57:12 +02:00
Erik Montnemery 4c6960ed36 Fix discovery update of MQTT light (#39325) 2020-09-02 10:52:33 +02:00
J. Nick Koston e55a014e94 Undecorate RenderInfo result property (#39108) 2020-09-02 10:35:15 +02:00
J. Nick Koston 3e9963a216 Overcome group concurrent setup limitation (#39483)
With a lot of groups the limitation that groups
had to be setup one at a time could account for
the bulk of startup time.
2020-09-02 10:14:16 +02:00
J. Nick Koston 557684c3ce Add ability to disable the sqlite3 quick_check (#39479) 2020-09-02 10:12:56 +02:00
Paolo Antinori 225becc89a Add alexa unofficial specific API support for Italian (#39475)
Co-authored-by: ochlocracy <5885236+ochlocracy@users.noreply.github.com>
2020-09-02 09:56:11 +02:00
Simone Chemelli 07f2f78b02 Add shelly overtemp and vibration sensors (#39556) 2020-09-02 08:56:27 +02:00
Finbarr Brady acfb4e462e Bump openwrt-luci-rpc to 1.1.6 (#39561)
* Update requirements_all.txt

* Update manifest.json
2020-09-02 07:34:00 +02:00
Chris Talkington e921f72d31 Use media state to better represent roku state (#39540)
* use media state to better represent roku state

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update media_player.py

* Update test_media_player.py

* Update test_media_player.py
2020-09-01 20:40:45 -05:00
HomeAssistant Azure 5ce62c8446 [ci skip] Translation update 2020-09-02 00:03:29 +00:00
Bram Kragten 10606360f7 Updated frontend to 20200901.0 (#39560) 2020-09-02 00:35:11 +02:00
Arda ŞEREMET 1eda3d31f9 Apply code review on progettihwsw (#39520) 2020-09-01 19:42:17 +02:00
Andrew Marks 064d115ccb Address open review issues in sharkiq integration (#39504) 2020-09-01 17:51:27 +02:00
On Freund c6805aa354 Update pycoolmaster-async to 0.1.1 (#39551) 2020-09-01 16:41:05 +02:00
Jean-Yves Avenard cf4b6307ae Provide compatibility with older Home Assistant installations. (#39539)
Prior 0.113 all lights and switches were reported as dimmable devices and this was fixed by #37978.
However, under some circumstances Alexa will not smoothly transition from those broken devices to the new ones as it cache the list of entities.
It is imperative to have Alexa rediscover all devices and then remove the now non-responding duplicates using the Alexa phone App. This can take quite a while if you have lots of devices.
An alternative would be to log to the Alexa web site and remove all the lights instead and then re-discover them all.

If you have multiple echo devices on your network, it is possible that the entries would continue to show as duplicates. This is due to an individual echo devices caching the old list and re-using it.
The only known solution for this is to remove your echo devices from your Amazon account and re-add them.
After that, have Alexa rediscover all your devices.

This is a one-off requirement.

Fixes #39503
2020-09-01 09:16:40 -05:00
J. Nick Koston 762537d82d Deprecate manually passing entity ids to template entities (#39382)
It is no longer necessary to provide a list of entities to monitor
to the template platforms.

The template is now re-evaluated whenever
a referenced entity changes state, and new entities are automaticlly
discovered.

Automatic analysis can now determine the entities for all templates
without the need for manual setup.
2020-09-01 08:53:50 -05:00
rajlaud 352995c663 Squeezebox scene fixes (#38214)
* Support for playlist in media_content_id

* Support include playlist index in content_id

* Add media_player.media_stop support to squeezebox
2020-09-01 08:28:34 -04:00
Tom Brien 151c0d9761 Provide user-defined actions to app (#38572)
* Start moving stuff to iOS

* Load config on to hass.data

* Remove un used logging

* Switch to Rest API

* Add schema

* Return whole config in new view and leave old 100 % the same

* Update doc strings

* MartinHjelmare feedback

* Move register view to async_setup_entry
2020-09-01 08:24:23 -04:00
Paulus Schoutsen aa476b392c Filter out disconnected Shelly sensors (#39516) 2020-09-01 08:18:11 -04:00
On Freund 963651d6f2 Add support for authenticated Shelly devices (#39461)
* Add support for authenticated Shelly devices

* Fix comment typos

* Update homeassistant/components/shelly/config_flow.py

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

* Fix unauthenticated devices

* Update homeassistant/components/shelly/config_flow.py

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

* Code review fixes

* More code review fixes

* Fix typo

* Update homeassistant/components/shelly/config_flow.py

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

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-09-01 08:08:37 -04:00
SNoof85 32094c8773 Fix missing end tag in translation key (#39546) 2020-09-01 08:05:09 -04:00
On Freund dde0dab3db Handle missing values in Shelly sensors (#39515) 2020-09-01 08:04:42 -04:00
Finbarr Brady b541abc551 Bump openwrt-luci-rpc version: 1.1.3 → 1.1.5 (#39545) 2020-09-01 13:03:41 +02:00
Marvin Wichmann 69b3da48b1 Adds missing name property to KNX weather device (#39547) 2020-09-01 13:01:47 +02:00
jdelaney72 762d7357b5 Fix outdated api url in noaa_tides (#39370)
* Fix outdated dependency in noaa_tides

* Catch exceptions when instantiating new Station

* Add myself to codeowners
2020-09-01 12:42:39 +02:00
Xiaonan Shen 99d830551a Bump yeelight to 0.5.3 (#39542) 2020-09-01 00:06:30 -05:00
J. Nick Koston a77e09b2c2 Make async_track_template_result track multiple templates (#39371)
* Make async_track_template_result track multiple templates

Combine template entity updates to only write ha
state once per template group update

* Make async_track_template_result use dataclasses for input/output

* black versions

* naming
2020-08-31 19:07:40 -05:00
HomeAssistant Azure 8d68963854 [ci skip] Translation update 2020-09-01 00:07:08 +00:00
J. Nick Koston 60d1606049 Fix kodi codeowners (#39532) 2020-08-31 16:18:12 -05:00
Emily Mills 3fe8afe667 Removing myself as a kodi owner
I no longer use Kodi
2020-08-31 16:53:32 -04:00
On Freund 4828d3d85b Update pyvolumio to 0.1.1 (#39525) 2020-08-31 20:42:14 +02:00
J. Nick Koston 11e4ad2272 Bump zeroconf to 0.28.3 (#39471)
Changes:
https://github.com/jstasiak/python-zeroconf/pull/287

Hopefully this will fix the last round of HomeKit issues
2020-08-31 13:11:26 -05:00
On Freund d8b4fa4a8b Update pyvolumio to 0.1.2 (#39522) 2020-08-31 20:08:08 +02:00
On Freund 72fe4db937 Update pyrisco to 0.2.4 (#39521) 2020-08-31 20:04:41 +02:00
SukramJ 5de1d04b6e Bump dependency to 0.11.0 for HomematicIP Cloud (#39508)
* Bump dependency to 0.11.0 for HomematicIP Cloud

* Update test data
2020-08-31 18:18:12 +02:00
Maciej Bieniek 7e87181826 Bump gios library to version 0.1.3 (#39507) 2020-08-31 16:55:59 +02:00
Xiaonan Shen 45a927ffb2 Add config flow to yeelight (#37191) 2020-08-31 16:40:56 +02:00
Stefan Lehmann 3ab6663434 Fix ADS component by bumping pyads version to 3.2.2 (#39502) 2020-08-31 15:53:16 +02:00
David F. Mulcahey 7062838940 Add entity services to the Flo integration (#38287)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-31 15:37:45 +02:00
J. Nick Koston 4d637e5f30 Skip setup of dependencies if they are already setup (#39482)
after_dependencies were checking hass.config.components
to see if something was already setup.  We did not do
the same for dependencies which resulted in trying
to set them up more then once.

Noticed when `homeassistant.setup` was set to debug
logging and many integrations were announcing
waiting on http when it was already setup.
2020-08-31 07:54:15 -04:00
starkillerOG f187091594 Add Xiaomi Miio gateway illuminance sensor and gateway light (#37959)
Co-authored-by: Xiaonan Shen <s@sxn.dev>
Co-authored-by: Teemu R. <tpr@iki.fi>
2020-08-31 13:27:57 +02:00
arunderwood 84205a9a57 route53 - support updating base domain (#39264) 2020-08-31 11:48:55 +02:00
Marvin Wichmann bba8b8e759 Add support for a dedicated weather station within KNX (#39476)
* Adds support for a dedicated weather station within KNX

* Review

* Change config values to comply with the naming of the other platforms
2020-08-31 11:38:52 +02:00
Paulus Schoutsen 190611a079 Detect comments in jinja templates (#39496) 2020-08-31 10:51:30 +02:00
Denys Dovhan 00eb23b43f Allow loading Lovelace dashboards not only from root (#37561) 2020-08-31 10:51:03 +02:00
Franck Nijhof 97e1be98df Upgrade sentry-sdk to 0.17.1 (#39495) 2020-08-31 10:28:52 +02:00
Aidan Timson 09efbc569f Fix oauth2 template by updating outdated method name (#39486) 2020-08-31 10:25:25 +02:00
Franck Nijhof a1678368cf Upgrade pydocstyle to 5.1.1 (#39492) 2020-08-31 10:20:39 +02:00
Paulus Schoutsen 4688171ce0 Add cache headers to picture integration (#39402) 2020-08-31 09:25:39 +02:00
Eugene Prystupa b71cbd2033 Fix a problem with set_speed(off) when direct HA API for set speed is called (#39488) 2020-08-30 21:10:15 -05:00
Chris Talkington e1c7c3fdb2 Ensure patching applies while testing marytts (#39490)
* ensure patching applies while testing marytts

* Update test_tts.py
2020-08-30 21:04:49 -05:00
HomeAssistant Azure 2856915b6d [ci skip] Translation update 2020-08-31 00:03:01 +00:00
Tom Harris 75153dd4a3 Apply code review for insteon config flow (#39171)
* Move options import to async_setup_entry

* Add tests for insteon init

* Move common constants to const

* Clean up to adhear to standards

* Create mock insteon device manager

* Update for HA standards

* Use keys and align to config_flow steps

* Fix default port for hub v1

* Update doc string to represent function

* Remove dump print commands

* Add modem_type entry

* Simplify dict key test

* Setup platforms in async_setup_entry

* Black

* Black tests
2020-08-30 19:15:09 -04:00
Aidan Timson f7e6b060a7 Make onvif username optional (#39415) 2020-08-30 17:39:33 -04:00
Chris Talkington 159f6750d7 Update progettihwsw to use CoordinatorEntity (#39477)
* update progettihwsw to use CoordinatorEntity

* Update switch.py

* Update binary_sensor.py

* Update binary_sensor.py

* Update switch.py
2020-08-30 22:53:32 +02:00
Arda ŞEREMET e707b50658 Add integration for ProgettiHWSW automation boards (#37922)
* Opened a new fresh page to clean my mess.

* Solved pylint warnings

* Fixing pylint issue of defining attr outside init.

* Excluded files from being tested by codecov.

* Solved binary sensor error.

* Fixed some stylisation errors.

* Resolved input not updating problem.

* Added port entry to test file.

* Added tests for create_entry.

* Added support for better state management.

* Increased code coverage of config_flow.py & made some tweaks.

* Increased coverage of config_flow.py by adding tests for unknown exceptions.

* A small bugfix.

* Stylised code as per Chris' suggestions.

* Stylised code again.

* Improved quality of test code.

* Added step_id in config flow tests.
2020-08-30 15:03:33 -05:00
J. Nick Koston 4bbc737954 Fix light device trigger test flapping (#39470) 2020-08-30 14:34:16 -05:00
J. Nick Koston 25f9560fb6 Update schluter to use CoordinatorEntity (#39454) 2020-08-30 14:19:48 -05:00
J. Nick Koston 705b253a99 Update awair to use CoordinatorEntity (#39469) 2020-08-30 14:05:22 -05:00
Tom Brien 56057a638f Clarify when message come from FCM (#39455) 2020-08-30 14:04:36 -05:00
Chris Talkington 863c7414bc Implement code review for nzbget (#39425)
* implement code review for nzbget

* Update strings.json

* Update sensor.py

* Update config_flow.py

* Update sensor.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py
2020-08-30 13:59:15 -05:00
Chris Talkington 65a9e18b27 Improve patching in marytts tests (#39458)
* improve patching in marytts tests

* Update test_tts.py

* Update test_tts.py

* Update test_tts.py

* Update test_tts.py

* Update test_tts.py

* Update test_tts.py
2020-08-30 13:58:25 -05:00
J. Nick Koston 56ddbd87b2 Fix recorder test intermittently failing (#39468) 2020-08-30 13:58:00 -05:00
J. Nick Koston 9ec870c750 Update hunterdouglas_powerview to use CoordinatorEntity (#39463) 2020-08-30 13:28:09 -05:00
J. Nick Koston b57f33c41a Update control4 to use CoordinatorEntity (#39466) 2020-08-30 13:27:46 -05:00
J. Nick Koston ab0b0dc51c Update ovo_energy to use CoordinatorEntity (#39459) 2020-08-30 13:20:45 -05:00
J. Nick Koston 1fbb158211 Update dexcom to use CoordinatorEntity (#39464) 2020-08-30 13:20:01 -05:00
J. Nick Koston c4f5a05b27 Update coolmaster to use CoordinatorEntity (#39465) 2020-08-30 13:18:19 -05:00
Maciej Bieniek 80910b4f9a Add bieniu as code owner for shelly (#39467) 2020-08-30 13:17:27 -05:00
J. Nick Koston 9d1045dd7a Update met to use CoordinatorEntity (#39462) 2020-08-30 20:14:09 +02:00
Marvin Wichmann 9f4d4862b4 Update xknx to 0.13.0 (#39407) 2020-08-30 20:13:47 +02:00
J. Nick Koston 2b78d5235d Update risco to use CoordinatorEntity (#39456) 2020-08-30 13:04:30 -05:00
springstan e5b360cd08 Update coronavirus to use CoordinatorEntity (#39449)
* Update coronavirus to use CoordinatorEntity

* Remove should_poll from coronavirus
2020-08-30 13:04:01 -05:00
J. Nick Koston 692ed8c639 Update notion to use CoordinatorEntity (#39460) 2020-08-30 13:02:56 -05:00
J. Nick Koston 773860ca5c Update plugwise to use CoordinatorEntity (#39457) 2020-08-30 13:02:27 -05:00
springstan 953626b2d4 Update meteo_france to use CoordinatorEntity (#39432)
* Update meteo_france to use CoordinatorEntity

* Update homeassistant/components/meteo_france/sensor.py

* Update homeassistant/components/meteo_france/weather.py

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-30 19:52:53 +02:00
Chris Talkington bd7682a694 Update roku state faster after actions (#39453)
* update roku state faster after actions

* Update media_player.py

* Update remote.py
2020-08-30 12:42:53 -05:00
J. Nick Koston 8b893173fd Prevent CoordinatorEntity from requesting updates on disabled entities (#39452) 2020-08-30 12:10:22 -05:00
springstan 17734d54ab Update hue to use CoordinatorEntity (#39446) 2020-08-30 11:32:56 -05:00
springstan d3b845c01a Update tile to use CoordinatorEntity (#39439) 2020-08-30 11:32:32 -05:00
J. Nick Koston d9c9adbc91 Update tankerkoenig to use CoordinatorEntity (#39440) 2020-08-30 18:27:06 +02:00
springstan cceaa088cb Update toon to use CoordinatorEntity (#39441) 2020-08-30 18:26:37 +02:00
J. Nick Koston 225743a620 Update upnp to use CoordinatorEntity (#39434) 2020-08-30 18:17:41 +02:00
springstan 42818c150f Update pi_hole to use CoordinatorEntity (#39433) 2020-08-30 11:10:45 -05:00
springstan 7bed868d60 Update wolflink to use CoordinatorEntity (#39444) 2020-08-30 11:10:28 -05:00
springstan ce1ef73366 Update WLED to use CoordinatorEntity (#39442) 2020-08-30 18:05:55 +02:00
Marius 77fe206084 Update stookalert to use DEVICE_CLASS_SAFETY constant (#39438)
asper discussion here https://github.com/home-assistant/core/pull/39310#issuecomment-681968732
2020-08-30 18:01:04 +02:00
springstan 22b8d43bf5 Update tesla to use CoordinatorEntity (#39436) 2020-08-30 10:48:15 -05:00
springstan e701001c5f Update poolsense to use CoordinatorEntity (#39435) 2020-08-30 10:47:45 -05:00
springstan 1e97ca14f1 Update accuweather to fully use CoordinatorEntity (#39431) 2020-08-30 10:38:26 -05:00
springstan e984801104 Update iammeter to use CoordinatorEntity (#39423)
* Update iammeter to use CoordinatorEntity

* Remove async_will_remove_from_hass and async_added_to_hass
2020-08-30 10:02:55 -05:00
J. Nick Koston 0a389a4651 Update sharkiq to use CoordinatorEntity (#39427)
* Update sharkiq to use CoordinatorEntity

Fix pylint

* revert
2020-08-30 09:52:48 -05:00
springstan 70c241b51b Fix pylint erros for sharkiq (#39428) 2020-08-30 09:51:50 -05:00
J. Nick Koston 4a21b1f589 Update smart_meter_texas to use CoordinatorEntity (#39426) 2020-08-30 16:43:30 +02:00
springstan a1d48ad1ec Update juicenet to use CoordinatorEntity (#39424) 2020-08-30 09:38:15 -05:00
springstan baf5750425 Update gios to use CoordinatorEntity (#39421) 2020-08-30 09:37:03 -05:00
springstan 186c13f1ab Update eafm to use CoordinatorEntity (#39420) 2020-08-30 09:17:59 -05:00
Chris Talkington 16a0bd7ff3 Update ipp to use CoordinatorEntity (#39412)
* update ipp to use CoordinatorEntity

* Update homeassistant/components/ipp/__init__.py

Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>

* Solve isort and black

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
2020-08-30 09:07:36 -05:00
springstan 152b6c2d1a Update accuweather to use CoordinatorEntity (#39408) 2020-08-30 09:06:38 -05:00
springstan 29c1f873eb Update brother to use CoordinatorEntity (#39418) 2020-08-30 09:02:12 -05:00
springstan 64513c8c9a Update airvisual to use CoordinatorEntity (#39417) 2020-08-30 09:01:19 -05:00
springstan 4294d10789 Format sharkiq with black (#39422) 2020-08-30 08:56:59 -05:00
springstan be489e83a1 Update speedtestdotnet to use CoordinatorEntity (#39404) 2020-08-30 08:50:33 -05:00
Chris Talkington 5dfb043896 update nzbget to use CoordinatorEntity (#39406) 2020-08-30 08:47:28 -05:00
Paulus Schoutsen 5a7f1d62c1 CoordinatorEntity to call super added_to_hass (#39416) 2020-08-30 08:42:33 -05:00
Andrew Marks 3d1ff5b8d0 Add sharkiq integration for Shark IQ robot vacuums (#38272)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-30 15:26:11 +02:00
Paulus Schoutsen ab7b42c022 Google: Recover from an entity raising while serializing query (#39381)
Co-authored-by: Joakim Plate <elupus@ecce.se>
2020-08-30 15:19:56 +02:00
J. Nick Koston 854e33025b Update nexia to use CoordinatorEntity (#39391)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-30 14:57:02 +02:00
springstan b3ec3d0baf Update atag to use CoordinatorEntity (#39414) 2020-08-30 14:42:45 +02:00
Chris Talkington 108e2ec1ba Update roku to use CoordinatorEntity (#39405) 2020-08-30 14:42:31 +02:00
springstan 4425c3aea2 Update airly to use CoordinatorEntity (#39413) 2020-08-30 14:41:39 +02:00
J. Nick Koston 0f5733ac59 Update cert_expiry to use CoordinatorEntity (#39397) 2020-08-30 14:41:18 +02:00
J. Nick Koston 21f1875816 Update updater to use CoordinatorEntity (#39396) 2020-08-30 14:40:55 +02:00
J. Nick Koston 2525d319a3 Update nut to use CoordinatorEntity (#39394) 2020-08-30 14:40:26 +02:00
J. Nick Koston 4e876cb473 Update myq to use CoordinatorEntity (#39393) 2020-08-30 14:40:00 +02:00
J. Nick Koston a4f475245c Update griddy to use CoordinatorEntity (#39392) 2020-08-30 14:39:07 +02:00
J. Nick Koston f7d1cfb625 Update powerwall to use CoordinatorEntity (#39389) 2020-08-30 14:37:11 +02:00
Paulus Schoutsen ba75856f2b Do not break Alexa sync when encounter bad entity (#39380) 2020-08-30 14:36:00 +02:00
Ville Skyttä b4db9f615d Fix huawei_lte duplicate device registry identifiers (#39409)
Regression in 3c0f766933

Refs https://github.com/home-assistant/core/pull/38925
2020-08-30 14:27:56 +02:00
springstan c0c6a457bd Update air_quality to use CoordinatorEntity (#39410) 2020-08-30 14:26:03 +02:00
Maciej Bieniek 0cffba77cf Add more sensors to the Shelly integration (#39368) 2020-08-30 14:18:35 +02:00
Maciej Bieniek 4aa8b6cad8 Add basic binary_sensor support to Shelly (#39365) 2020-08-30 14:16:41 +02:00
Chris Talkington ef13da5555 Fix marytts sync requests within event loop (#39399) 2020-08-30 06:19:51 -05:00
J. Nick Koston f8712b0e00 Create a CoordinatorEntity class to avoid repating code in integrations (#39388) 2020-08-30 12:02:37 +02:00
Marius 87425d4ab1 Add device_class safety to synology_dsm storage binary_sensors (#39310)
* add device_class: safety to storage binary_sensors

* Update binary_sensor.py

* Update homeassistant/components/synology_dsm/binary_sensor.py

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

* Update binary_sensor.py

* Import device_class Safety

from homeassistant.components.binary_sensor

* Update binary_sensor.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-30 11:08:57 +02:00
J. Nick Koston dda4cf4d58 Tune logbook performance to accomodate recent changes (#39348) 2020-08-30 09:20:31 +02:00
Jeff Irion ad0d3b4848 Improve handling of exceptions in Android TV (#39229)
* Close the ADB connection when there is an exception

* Add a test

* Split a comment onto two lines

* Fix test ('async_update' -> 'async_update_entity')

* 'close' -> 'Close'
2020-08-29 21:56:25 -05:00
HomeAssistant Azure 904f5c4346 [ci skip] Translation update 2020-08-30 00:03:17 +00:00
Franck Nijhof 800cf6c8c0 Revert "Support selecting http vs https protocols for qvrpro (#38951)" (#39385)
This reverts commit 526c418e1e.
2020-08-29 17:45:54 -05:00
Anders Melchiorsen 79252c06b2 Upgrade eternalegypt to 0.0.12 (#39386) 2020-08-30 00:43:09 +02:00
Eugene Prystupa 867d5088e3 Fix bond fan.turn_on with OFF speed (#39387) 2020-08-29 17:03:19 -05:00
Chris Talkington 7469f57a7b Add config flow to nzbget (#38938)
* work on config flow

* Update test_init.py

* work on config flow

* Update test_config_flow.py

* Update test_config_flow.py

* Update __init__.py

* Update test_config_flow.py

* Update __init__.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update __init__.py

* Update __init__.py

* Update __init__.py

* Apply suggestions from code review

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

* Update __init__.py

* Update __init__.py

* Update __init__.py

* Update config_flow.py

* Update __init__.py

* Update __init__.py

* Create coordinator.py

* Update __init__.py

* Update sensor.py

* Update __init__.py

* Update .coveragerc

* Update coordinator.py

* Update __init__.py

* Update coordinator.py

* Update __init__.py

* Update coordinator.py

* Update config_flow.py

* Update __init__.py

* Update coordinator.py

* Update __init__.py

* Update test_config_flow.py

* Update coordinator.py

* Update test_config_flow.py

* Update test_init.py

* Update homeassistant/components/nzbget/coordinator.py

* Update test_config_flow.py

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-29 16:47:00 -05:00
J. Nick Koston 54ef16f01a Reload notify platforms concurrently with asyncio.gather (#39384) 2020-08-29 22:23:57 +02:00
Xiaonan Shen 22a123fd4b Support acpartner in aqara discovery (#37926) 2020-08-29 11:34:25 -05:00
Berni Moses a9b611d3ed Bump python-temescal to 0.3 for lg_soundbar (#39379) 2020-08-29 16:22:37 +02:00
Paulus Schoutsen 8302a7879e Catch bad devices when Google Sync (#39377) 2020-08-29 13:09:50 +02:00
Ville Skyttä b882304ec2 Upgrade pydocstyle to 5.1.0 (#39374) 2020-08-29 10:07:48 +02:00
Ville Skyttä 6ae9399237 Upgrade isort to 5.4.2 (#37939) 2020-08-29 08:23:55 +02:00
Ville Skyttä 1bf2c4d976 Upgrade pylint to 2.6.0 (#39363) 2020-08-29 07:59:24 +02:00
J. Nick Koston 67de1d3466 Fix sun test to patch time since it is now refetched (#39372)
This accounts for the fix in #39335
2020-08-28 22:06:06 -05:00
Chris Talkington 4682de5ac1 Improve patching in broadlink sensor tests (#39366)
* improve patching in broadlink sensor tests

* Update test_sensors.py

* Update test_sensors.py
2020-08-28 21:26:19 -05:00
pbalogh77 6348f130bc Add basic lock support for fibaro (#38962)
Added very basic support for locks in the Fibaro integration.
2020-08-28 21:16:02 -05:00
HomeAssistant Azure 989a040b67 [ci skip] Translation update 2020-08-29 00:03:59 +00:00
Aaron Godfrey 16ad8cf720 Fix todoist calendar events (#39197)
Updated the calendar event dict to contain a `summary` key so that the
title will display on the calendar panel.  Also update the start/end
date to not include time information if the event is all day so that it
renders as an all day event on the calendar panel.
2020-08-28 16:43:40 -05:00
cgtobi 755ddf1a94 Add Netatmo camera light service (#39354)
* Add camera light service

* Move service to camera

* Review
2020-08-28 16:09:07 -05:00
Daniel Shokouhi d587f134ca Reload mobile app notify service upon device name change, add device name to all webhook logs (#39364)
* Add device name to all webhook logs to help with multiple devices

* Reload notifications when we update the registration, update from rebase

* Make hassfest happy

* Adjust caplog test to accomodate log message change

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-28 15:13:43 -05:00
Diogo Gomes c163d4a4b5 bump pymediaroom (#39360) 2020-08-28 15:12:42 -05:00
Teemu R 94c474eab2 Add missing status mappings for xiaomi_miio (#39357) 2020-08-28 15:09:46 -05:00
Rob Bierbooms 5658a1efec Increase test coverage for rfxtrx integration (#39340)
* Increase switch coverage

* Increase binary sensor coverage

* Final improvements

* Remove debug statement

* Adjust test duplicate cover

* Remove None return test

* Assert on length of conf_entries

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-28 15:05:11 -05:00
Phil Bruckner b315df2118 Reduce automation state changes by using script helper's last_triggered attribute (#39323) 2020-08-28 14:51:15 -05:00
J. Nick Koston 92c06f0818 Ensure mobile_app notifications get re-registered after adding,removing,adding (#39362) 2020-08-28 14:08:09 -05:00
Phil Bruckner a99efcb5c2 Fix sun integration vulnerability to sudden large clock changes (#39335)
* Fix sun integration vulnerability to sudden large clock changes

* Fix update_sun_position as well
2020-08-28 13:09:43 -05:00
J. Nick Koston 57848cdf35 Add the ability to reload ping platforms from yaml (#39344) 2020-08-28 12:40:30 -05:00
J. Nick Koston 85869be2d8 Unregister mobile_app notification services when a device is removed (#39359) 2020-08-28 12:37:19 -05:00
Anna Tikhomirova 33a05541a4 Simplify mobile app debugging by adding sender device name (#38518)
* Simplify mobile app debugging by adding sender device name.

* Reformatted webhook.py with black
2020-08-28 12:36:59 -05:00
J. Nick Koston 3377f6b12a Register mobile_app notification services when a new device is added (#39356)
* Register mobile_app notification services when a new device is added

* targets and base service use their own patterns to generate the name
2020-08-28 12:18:02 -05:00
Paulus Schoutsen 4b8217777e Add basic light and sensor support to Shelly (#39288)
* Add basic light platform

* Add sensor support

* Bump aioshelly to 0.2.1

* Lint

* Use UNIT_PERCENTAGE

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

* Format sensor.py

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2020-08-28 17:33:34 +02:00
Paulus Schoutsen d9f3bdea53 Black 2020-08-28 15:33:08 +00:00
Jin 4b5d0915a9 Add support for hmi208(xiaomi plug BLE) (#39306)
As this plug has already been supported in [python-miio v5.1](https://github.com/rytilahti/python-miio/releases/tag/0.5.1).
Changes towards xiaomi-miio made for fully supporting this device in HA.
2020-08-28 17:24:14 +02:00
J. Nick Koston d2195e2b37 Add support for reloading min_max from yaml (#39327)
* Add support for reloading min_max from yaml

* git add
2020-08-28 10:23:19 -05:00
Phil Bruckner e6141ae558 Add description of what caused an automation trigger to fire (#39251)
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-28 17:02:12 +02:00
Paulus Schoutsen 5217139e0b Allow exposing domains in cloud (#39216) 2020-08-28 16:49:17 +02:00
J. Nick Koston 414a59ae9f Add the ability to reload homekit from yaml (#39326) 2020-08-28 16:46:45 +02:00
J. Nick Koston 400741006b Add the ability to reload generic platforms from yaml (#39289) 2020-08-28 16:44:51 +02:00
J. Nick Koston 2109444ba5 Update time triggers to use async_track_state_change_event (#39338)
This was one of the ones missed in the
async_track_state_change to
async_track_state_change_event conversion.
2020-08-28 16:32:05 +02:00
J. Nick Koston f8704a2dfc Ensure we always fire time pattern changes after microsecond 0 (#39302) 2020-08-28 16:27:25 +02:00
J. Nick Koston 7c191388a9 Use icmplib for ping when available (#39284)
* Use icmplib for ping when available

* Update homeassistant/components/ping/binary_sensor.py

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

* Revert "Update homeassistant/components/ping/binary_sensor.py"

This reverts commit 618f42512a89834bb8b2ed7830e7e77d79a29f44.

* move it up so its easier to see

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-28 08:50:09 -05:00
Ville Skyttä b4bac0f7a0 Exception chaining and wrapping improvements (#39320)
* Remove unnecessary exception re-wraps

* Preserve exception chains on re-raise

We slap "from cause" to almost all possible cases here. In some cases it
could conceivably be better to do "from None" if we really want to hide
the cause. However those should be in the minority, and "from cause"
should be an improvement over the corresponding raise without a "from"
in all cases anyway.

The only case where we raise from None here is in plex, where the
exception for an original invalid SSL cert is not the root cause for
failure to validate a newly fetched one.

Follow local convention on exception variable names if there is a
consistent one, otherwise `err` to match with majority of codebase.

* Fix mistaken re-wrap in homematicip_cloud/hap.py

Missed the difference between HmipConnectionError and
HmipcConnectionError.

* Do not hide original error on plex new cert validation error

Original is not the cause for the new one, but showing old in the
traceback is useful nevertheless.
2020-08-28 13:50:32 +02:00
Joakim Plate d768fd4de9 Bump arcam fmj with no install requires on asyncio (#39353) 2020-08-28 13:06:25 +02:00
Chris Talkington ab90ea7884 Fix black on homematicip_cloud binary_sensor (#39351) 2020-08-28 00:47:27 -05:00
Chris Talkington 98db0a2d2e fix black on generic_thermostat tests (#39350) 2020-08-28 00:24:11 -05:00
J. Nick Koston f914625b8a Add the ability to reload history_stats platforms from yaml (#39337)
* Add the ability to reload history_stats platforms from yaml

* Increase coverage and cleanup

* Fix coverage

* services.yaml
2020-08-28 00:22:43 -05:00
SukramJ b5c2c9ec9b Add device attribute for homematicip_cloud rotary handle (#39144) 2020-08-28 00:08:37 -05:00
J. Nick Koston 77490287e9 Add the ability to reload generic_thermostat platforms from yaml (#39291) 2020-08-27 23:59:49 -05:00
J. Nick Koston f449620d38 Add the ability to reload filesize platforms from yaml (#39347) 2020-08-27 23:53:27 -05:00
J. Nick Koston 0db5bb27a8 Add the ability to reload trend platforms from yaml (#39341) 2020-08-27 23:50:28 -05:00
Bill (William) O'Neill 526c418e1e Support selecting http vs https protocols for qvrpro (#38951)
* Support selecting http vs https protocols for qvrpro

* Make protocol selection limited to http or https
2020-08-27 22:22:28 -05:00
Greg Dowling 637fdf72ca Improve volume handling for Roon (#39119)
* Handle players without volume attribute.

* Refactor volume and now_playing error handling,

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Review suggestions.

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-27 22:18:09 -05:00
On Freund b14af3e727 Add Custom mapping of Risco states (#39218)
* Custom mapping of Risco states

* More informative error log

* Add alternative Risco terms

* Black formatting
2020-08-27 21:23:01 -05:00
On Freund 24db31fa28 Add (un)bypass services to Risco (#39292)
* Add (un)bypass services to Risco

* Simplify service registration
2020-08-27 20:39:27 -05:00
jgrob1 a83c778c4f Bump rflink to 0.0.54 (#39342)
* Update manifest.json

* Update requirements_all.txt

* Update requirements_test_all.txt
2020-08-27 20:35:33 -05:00
HomeAssistant Azure 68ba1d8790 [ci skip] Translation update 2020-08-28 00:05:07 +00:00
J. Nick Koston ca05f8928d Switch duckdns to use async_call_later (#39339) 2020-08-28 00:10:02 +02:00
Paul Daumlechner b1444ffefb Bump zeroconf to 0.28.2 (#39322)
* Bump zeroconf to 0.28.2

* Requirements updated
2020-08-27 14:47:15 -05:00
J. Nick Koston f4f8aa3e52 Prevent duckdns from consuming 100% cpu when time abruptly moves forward (#39334) 2020-08-27 21:17:52 +02:00
Oncleben31 90ac426a54 Meteo france "next_rain" attributes rework (#39092)
* Improve next_rain sensor attributes

* Add log message to identify missing condition

* Add a condtion

* Set the coordinator for 1 hour rain forecast in English

* Attribut dict keys shorten

* reverse transalate the API results for next rain

* Use f string for the keys in the dict

* Remove Logging from state property

* Remove other logging from state property
2020-08-27 21:08:39 +02:00
Erik Montnemery 4e39a00b3d Use boolean for mqtt fan state (#39332) 2020-08-27 21:04:58 +02:00
Charles Garwood c2365b8c0f Add get_nodes command to OZW websocket api (#39317)
* Add get_nodes command to OZW websocket api

* Fix black

* Use constants for get_nodes and get_node

* Missed a couple constants
2020-08-27 14:00:22 -04:00
cgtobi c8d49a8adf Add Spotify media browser capability (#39240)
Co-authored-by: Tobias Sauerwein <cgtobi@gmail.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-08-27 17:00:36 +02:00
Ville Skyttä 27f3c0a302 Skip install on tox pylint (#39260)
We're not operating on the installed package anyway, and necessary
dependencies are handled with tox deps.

As a nice bonus side effect, doing this sidesteps breakage caused by
pip's (up to 20.2.2 at least) behavior of prepending site-packages to
sys.path in certain cases, which in turn results in failures e.g. if a
version of typing that is incompatible with the (now overridden)
stdlib is installed there. And that combined with also pip's behavior
of installing a default build system consisting of setuptools and
wheel under the hood when it sees our pyproject.toml without a
build-system defined would provoke the breakage before we have a
chance to uninstall typing. (There are ways around this too, but
skipping the install makes the issue moot at least with our current
dependency set.)
2020-08-27 16:57:58 +02:00
Ville Skyttä 98993d8503 Trivial requirements cleanups (#39222) 2020-08-27 16:56:53 +02:00
matgad b880c33043 Bump zigpy-cc version (#39318) 2020-08-27 09:36:35 -04:00
Martin Hjelmare 55283df705 Remove protobuf requirement from tensorflow manifest (#39316) 2020-08-27 08:54:43 -04:00
Franck Nijhof 1c2ebdf307 Upgrade black to 20.8b1 (#39287) 2020-08-27 13:56:20 +02:00
João Gabriel 0d7eec710c Fix Panasonic Viera config flow and state update (#39303) 2020-08-27 13:51:18 +02:00
Martin Hjelmare b0a2c8d430 Bump hangups to 0.4.10 (#39312) 2020-08-27 13:26:46 +02:00
Fabian Affolter b759f2c7ca Updated certifi to > 2020.6.20 (#39160) 2020-08-27 12:45:17 +02:00
Felipe Martins Diel e4d29bf3ec Add tests for Broadlink sensors (#39230)
* Add tests for Broadlink sensors

* Remove sensor.py from .coveragerc
2020-08-26 22:43:17 -05:00
HomeAssistant Azure 195d4b6897 [ci skip] Translation update 2020-08-27 00:04:55 +00:00
Paulus Schoutsen 6348884735 Allow passing in user id instead of username to change password (#39266) 2020-08-26 23:37:33 +02:00
jjlawren 1bc4de2bd3 Add tests for Plex media browser (#39220) 2020-08-26 23:24:44 +02:00
Paulus Schoutsen 2e4cd5f343 Merge pull request #39286 from home-assistant/rc 2020-08-26 20:13:33 +02:00
Phil Bruckner 8fa1a1f600 Fix async_fire_time_changed in tests/common.py (#38705) 2020-08-26 16:44:01 +00:00
Marvin Wichmann a2651845f3 Centralize knx config and update xknx to 0.12.0 (#39219)
* Refactor KNX integration to centralize configuration yaml (#39189)

* Updates for xknx 0.12.0 (#38880)
2020-08-26 18:03:03 +02:00
J. Nick Koston 79f4b6eb6b Cleanup the rest reload test to use the pytest requests_mock fixture (#39282) 2020-08-26 17:53:11 +02:00
Paulus Schoutsen 77107e4501 Bumped version to 0.114.4 2020-08-26 15:52:05 +00:00
J. Nick Koston 9678cbdde2 Fix time pattern listener firing a few microseconds early (#39281) 2020-08-26 15:52:01 +00:00
Pascal Vizeli 5c9a8a27c8 Fix TTS languange characters (#39211) 2020-08-26 15:52:00 +00:00
J. Nick Koston 715fe4eef8 Fix time pattern listener firing a few microseconds early (#39281) 2020-08-26 17:50:25 +02:00
Paulus Schoutsen 51a63c1fc4 Drop last bits of asyncio.coroutine (#39280) 2020-08-26 16:57:52 +02:00
Paulus Schoutsen b47992dba0 Bump CI cache (#39283) 2020-08-26 16:53:22 +02:00
J. Nick Koston dc84196202 Add the ability to reload statistics platforms from yaml (#39268) 2020-08-26 14:52:19 +02:00
Paulus Schoutsen e96d8a961c Block typing from being installed (#37707) 2020-08-26 14:51:41 +02:00
Paulus Schoutsen df9de8eb5d Prevent bluepy from being part of requirements_all.txt (#39275) 2020-08-26 14:50:14 +02:00
Franck Nijhof 44118d8fb6 Add cache version to GitHub Actions CI (#39277) 2020-08-26 13:40:31 +02:00
Phil Bruckner 4ff376cdd6 Add timestamp option for input_datetime.set_datetime (#39121) 2020-08-26 11:28:30 +02:00
Maciej Bieniek 2568932c1c Bump brother library to version 0.1.15 (#39226) 2020-08-26 10:55:57 +02:00
Felipe Martins Diel 067efc7805 Remove services.yaml from the Broadlink integration (#39261) 2020-08-26 10:47:44 +02:00
Marty Zalega e065673d7b Version bump panasonic_viera to 0.3.6 (#39269)
This version fixes the issue of mishandling an error when requesting a session id
2020-08-26 10:32:23 +02:00
Paulus Schoutsen 2a9da208d4 Allow disabling integrations in manifest, block uuid package being installed and disable ezviz (#38444) 2020-08-26 10:20:14 +02:00
J. Nick Koston eaac00acfc Add the ability to reload filter platforms from yaml (#39267)
* Add the ability to reload filter platforms from yaml

* force in memory db

* fix listener leak on un-load
2020-08-25 20:55:45 -05:00
J. Nick Koston 215e3f2dab Add the ability to reload command_line platforms from yaml (#39262) 2020-08-25 19:52:36 -05:00
J. Nick Koston 5018e53b33 Add the ability to reload the rest platforms from yaml (#39257)
* Add the ability to reload rest platforms from yaml

* Revert changes to notify as these will be done in another pass
2020-08-25 19:05:29 -05:00
SukramJ 758c0adb5e Rename entity base class for HMIPC (#39243) 2020-08-26 01:55:55 +02:00
J. Nick Koston 810df38f0d Add the ability to reload light/cover groups from yaml (#39250)
* Add the ability to reload light/cover groups from yaml

Update previous usage to reduce code duplication.

* Fix conflict from rebase
2020-08-25 18:13:43 -05:00
J. Nick Koston e109b04efe Add api to reload config entries (#39068) 2020-08-26 00:59:22 +02:00
bsmappee 11f121b008 Implement local discovery of Smappee series-2 devices and improvements (#38728)
* prepare local api support for Smappee2-series

* Series-2 devices are now supported

* remove switch scan_interval
2020-08-26 00:37:53 +02:00
J. Nick Koston c87e03ee6f Ensure template tracking can recover after the template generates an exception (#39256) 2020-08-26 00:33:08 +02:00
J. Nick Koston 90842fcb84 Support reloading the universal platform (#39248) 2020-08-26 00:25:15 +02:00
J. Nick Koston 63ebea1706 Ensure the context is passed to group changes (#39221) 2020-08-26 00:22:10 +02:00
J. Nick Koston 20398cc0a6 Subscribe to state change events only if the template has entities (#39188) 2020-08-26 00:20:04 +02:00
Pascal Vizeli 68c0f770fe Update homeassistant base image 8.3.0 (#39245) 2020-08-25 23:10:18 +02:00
Daniel Hjelseth Høyer 7bc273b182 Remove yr integration after a request from yr.no (#39247) 2020-08-25 21:18:45 +02:00
Yuxiang Zhu 19cc168433 Add HomeKit Controller heater-cooler devices (#38979)
Some new HomeKit climate devices, like XiaoMi Air Conditioning Controller P3 are heater-cooler devices rather than
thermostat devices. This commit adds support for the heater-cooler class via homekit_controller.
2020-08-25 17:56:01 +01:00
Chris Talkington ab6fb5cb77 Ensure unique ids are generated for surepetcare (#39196)
* ensure unique ids are generated for surepetcare

* Create test_binary_sensor.py

* work on tests

* Update test_binary_sensor.py

* Update __init__.py

* Update __init__.py

* Update test_binary_sensor.py

* Update test_binary_sensor.py

* Update test_binary_sensor.py

* Update test_binary_sensor.py

* Update test_binary_sensor.py

* Update test_binary_sensor.py

* Update __init__.py
2020-08-25 11:34:14 -05:00
Erik Montnemery 114a7226d6 Wait before sending MQTT birth message (#39120)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-25 16:42:24 +02:00
Paulus Schoutsen 415213a325 Add support for attributes in state/numeric state trigger (#39238) 2020-08-25 16:21:16 +02:00
Pascal Vizeli 342e84e550 Fix TTS languange characters (#39211) 2020-08-25 14:23:21 +02:00
Paulus Schoutsen 9979e465aa Fix hassio auth data (#39244)
Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
2020-08-25 14:22:50 +02:00
Paulus Schoutsen 13df3bce1b Allow owner users to change password of any user (#39242) 2020-08-25 13:49:32 +02:00
javicalle ef35eea0f6 Remove 'entity_id' from ToggleRflinkLight (#37992)
Remove `entity_id` overwrite from `ToggleRflinkLight` class
2020-08-25 13:49:00 +02:00
Akın Ömeroğlu 7d4a9ac65a Bump python-temascal to 0.2 for lg_soundbar (#39213) 2020-08-25 09:32:48 +02:00
J. Nick Koston 3a7620bd08 Update sense icon mappings (#39225) 2020-08-24 21:35:48 -05:00
Paulus Schoutsen 2a1fe9d29a Add websocket trigger/condition commands (#39109) 2020-08-24 23:01:57 +02:00
Bram Kragten d5193e64de Updated frontend to 20200824.0 (#39224) 2020-08-24 14:33:58 -05:00
J. Nick Koston 6b7a7939d2 Include the first seen context data in the logbook api (#39194)
* Include the context_entity_id in the logbook api

context_entity_id is the first entity seen during
a time period that includes the context

* update test

* more of them

* include friendly name

* pylint wants a ternary

* Refactor

* performance

* fix homekit context

* Fix self describing events

* Fix external_events
2020-08-24 12:44:40 -05:00
Erik Montnemery b1c0d8fb6c Minor cleanup of MQTT ACK handling (#39217) 2020-08-24 17:28:07 +02:00
J. Nick Koston bee6d87e7a Standardize uuid generation for events/storage/registry (#39184) 2020-08-24 17:21:30 +02:00
Bram Kragten 28332f23b3 Don't sort keys when dumping json and yaml (#39214) 2020-08-24 16:58:27 +02:00
Franck Nijhof 181709f3d2 Allow templates in data & service parameters (making data_template & service_template obsolete) (#39210) 2020-08-24 16:21:48 +02:00
Leonardo Figueiro a47f73244c Add Wilight integration with SSDP (#36694)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-24 14:15:07 +02:00
Paulus Schoutsen fefa1a7259 Add shortcuts when we know template is static (#39208)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-08-24 13:40:34 +02:00
Paulus Schoutsen e61f7f0274 100% test coverage for Shelly config flow (#39209) 2020-08-24 13:39:23 +02:00
Franck Nijhof 46ab5ab38e Upgrade pre-commit to 2.7.1 (#39206) 2020-08-24 12:47:55 +02:00
Paulus Schoutsen ca2bc9906d Add Shelly integration (#39178) 2020-08-24 12:43:31 +02:00
jjlawren 6d95ee7a00 Websocket media browsing for Plex (#35590)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-24 12:41:01 +02:00
Erik Montnemery 3df67ff9e1 Fix race when waiting for MQTT ACK (#39193) 2020-08-24 11:13:12 +02:00
Paulus Schoutsen 71acb2c665 Only reload config entry if it is loaded (#39202) 2020-08-24 10:54:26 +02:00
Franck Nijhof e17c87ef72 Upgrade debugpy to 1.0.0rc2 (#39195) 2020-08-24 10:45:44 +02:00
Chris 7462d140af Trim CW from RGB when not supported in ozw (#39191)
* Trim the CW value if CW isn't supported

* Trim CW from white level as well
2020-08-23 19:20:37 -04:00
Ernst Klamer 2e8506de80 Add unique_id to solarlog sensors (#39186)
* Add unique_id to solarlog

Add unique_id to solarlog sensors

* Resolve suggested changes

Resolve suggested changes

* Update homeassistant/components/solarlog/sensor.py

Ok, thanks for the explanation.

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-23 12:58:43 -05:00
J. Nick Koston c3ad493bb7 Report usage of extract_entities by custom components (#39185)
Block core usage usage of extract_entities

Suggest event.async_track_template_result instead.
2020-08-23 19:38:45 +02:00
On Freund 15c101e85d Add pin code support to the Risco integration (#39177)
* Pin code support for Risco

* Remove unused parameter

* Fix imports

* Fix typo

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-23 12:34:30 -05:00
Lukas 9e3f7ac8df Update bug report template for new Logs location (#39183)
Logs were moved from Dev Tools > Info to Configuration > Info. This was already changed in ISSUE_TEMPLATE.md but not here.
2020-08-23 18:50:12 +02:00
Paul Madden 04c1c1a279 Support Rainbow radar site in BOM camera (#39129) 2020-08-23 11:46:11 -05:00
Fabian Affolter c86c522eb1 Upgrade py-cpuinfo to 7.0.0 (#39155) 2020-08-23 12:44:11 -04:00
Fabian Affolter 7874711936 Upgrade discogs_client to 2.3.0 (#39164)
* Upgrade discogs_client to 2.3.0

* Fix pylint issue
2020-08-23 11:41:11 -05:00
Franck Nijhof f757e258a7 Upgrade pre-commit to 2.7.0 (#39180) 2020-08-23 12:40:51 -04:00
Fritiof Hedman 961f36c679 Add ZwaveStringSensor to OZW integration (#38676)
* Add ZwaveStringSensor to OZW integration

* Remove unnecessary new line

* Set enabled default to false for ZwaveStringSensor

* Add missing decorator for property

* Add a test for ZwaveStringSensor

* Also test state of ZWaveStringSensor

* Remove entity type check
2020-08-23 15:16:26 +02:00
J.P. Hutchins 62b1f23328 Allow multiple config entries per host for transmission (#39127)
* Allow multiple integrations per host (check port) #36605

* Add test for allow multiple config entries per host for transmission
2020-08-23 13:29:44 +02:00
Fabian Affolter f295684c10 Upgrade TwitterAPI to 2.5.13 (#39157) 2020-08-23 12:27:53 +02:00
Fabian Affolter 1126c750e1 Upgrade colorlog to 4.2.1 (#39159) 2020-08-23 12:25:54 +02:00
Fabian Affolter d31dea50bb Upgrade discord.py to 1.4.1 (#39150) 2020-08-23 12:11:59 +02:00
Fabian Affolter 2bf31dc5b3 Upgrade mutagen to 1.45.1 (#39166) 2020-08-23 12:08:52 +02:00
J. Nick Koston b68c5cec94 Convert bayesian binary_sensor to use async_track_template_result (#39174)
Add coverage to reach 100% line coverage
2020-08-23 09:59:26 +02:00
J. Nick Koston 42227c1c53 Improve the performance of dt_util.utcnow() (#39145) 2020-08-23 09:57:58 +02:00
J. Nick Koston 3cc099af80 Make emulated_hue upnp responder async (#39126) 2020-08-23 09:50:59 +02:00
Chris Talkington dfa18b4b6a Fix unmocked calls in melcloud (#39170)
* fix unmocked calls in melcloud

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py
2020-08-22 18:31:53 -05:00
On Freund 3198233b8f Add binary sensors to Risco integration (#39137)
* Add binary sensors to Risco integration

* Minor cleanups

* RiscoEntity base class

* Platinum score

* Remove alarm parameter in _setup_risco

* Avoid zones and partitions sharing unique ids
2020-08-22 18:30:26 -05:00
Fabian Affolter 73328dab5e Upgrade psutil to 5.7.2 (#39149) 2020-08-22 18:18:05 -05:00
J. Nick Koston 9baf3ff706 Update universal media_player to use async_track_template_result (#39054)
* Update universal media_player to use async_track_template_result

* Review comments and add missing test cover
2020-08-22 18:12:53 -05:00
Fabian Affolter 2beca3e69a Upgrade jinja2 to >=2.11.2 (#39161) 2020-08-22 18:11:24 -05:00
Fabian Affolter bd136fa79a Upgrade sqlalchemy to 1.3.19 (#39167) 2020-08-22 18:09:36 -05:00
ktownsend-personal fa09a93cfe add zone status attribute so we can know if queued (#39133)
Before this proposed change, all of the zones related to a running program turn "on", but it's not possible to know which zone is actually running (vs. queued). Adding the mapped state values (they are the same as program status values) as an attribute will allow inspection of all 3 states.
2020-08-22 15:19:20 -06:00
Fabian Affolter 69de68c025 Upgrade slixmpp to 1.5.2 (#39169) 2020-08-22 16:31:39 -04:00
Fabian Affolter 7ca8e9077a Upgrade python-whois to 0.7.3 (#39153) 2020-08-22 14:09:00 -05:00
Fabian Affolter a1845e9ef0 Upgrade sendgrid to 6.4.6 (#39148) 2020-08-22 14:02:12 -05:00
Fabian Affolter 1f5b948ead Upgrade connect-box to 0.2.7 (#39162) 2020-08-22 13:57:28 -05:00
Fabian Affolter 644e826ca7 Upgrade praw to 7.1.0 (#39152) 2020-08-22 14:53:01 -04:00
Fabian Affolter 41ba1dff71 Upgrade beautifulsoup4 to 4.9.1 (#39158) 2020-08-22 14:48:25 -04:00
On Freund f075742a86 Address Kodi code review follow up (#39104)
* Code review follow up

* Update config_flow.py

* Update config_flow.py

* Update strings.json

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update util.py

* Update test_config_flow.py

* Update config_flow.py

* Update util.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update util.py

* Update test_config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update test_config_flow.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-22 13:40:12 -05:00
Franck Nijhof 3c1c6069da Fix Sentry user context and system info (#39130) 2020-08-22 19:51:39 +02:00
On Freund cdb6161d3d Add risco options flow (#39154) 2020-08-22 12:15:03 -05:00
Fabian Affolter 4af90e41ce Upgrade pylast to 3.3.0 (#39151) 2020-08-22 12:15:30 -04:00
Fabian Affolter e909596587 Upgrade volkszaehler to 0.1.3 (#39147) 2020-08-22 12:12:09 -04:00
Raman Gupta 55c71b5e83 Fix Vizio pylance error by using schema extend instead of dict update (#39139)
* fix pylance error by using schema extend instead of dict update

* fix bug
2020-08-22 12:09:20 -04:00
On Freund e3ce699d75 Risco code review follow ups (#39143) 2020-08-22 15:54:12 +02:00
J. Nick Koston 45401d4308 Fix flapping recorder last run test (#39134) 2020-08-22 09:35:18 +02:00
Erik Montnemery 18047726b6 Remove ending period from cast log 2020-08-22 09:01:17 +02:00
On Freund 1b8d9f7cc4 Add Risco integration (#36930)
* Risco integration

* Fix lint errors

* Raise ConfigEntryNotReady if can't connect

* Gracefully handle shutdown

* pass session to pyrisco

* minor change to init

* Fix retries

* Add exception log

* Remove retries

* Address code review comments

* Remove log
2020-08-21 23:49:09 -05:00
J. Nick Koston 83b9c6188d Make template entities reloadable (#39075)
* Make template entities reloadable

* Address review items
2020-08-21 18:31:48 -05:00
Charles Garwood 993088d26e Add OZW network_statistics websocket command (#39124)
* Add network_statistics websocket command

* Add tests
2020-08-21 22:52:03 +02:00
Bas Nijholt a9ffc149f8 Allow templating keys in data_template (#39008)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-21 22:42:05 +02:00
jjlawren b0f214bd9c Bump plexapi to 4.1.0 (#39118) 2020-08-21 15:03:44 -05:00
Sean Mooney 7c117452ba Update issue template for new Logs location (#39115)
Logs were moved from Dev Tools > Info to Configuration > Info.  I updated all the other repos before when this was changed, but missed this one.
2020-08-21 14:47:29 -04:00
Graham Wetzler 32db1d1eb2 Improve tests and config flow for Smart Meter Texas (#39089)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-21 19:20:42 +02:00
Charles Garwood 52d949ec90 Tweak OZW Websocket Instance/Network Responses (#39107) 2020-08-21 18:48:56 +02:00
Erik Montnemery 91ba8c0ef0 Warn when casting of tts fails (#38603)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-21 17:17:36 +02:00
Erik Montnemery ee043d8614 Wait for broker to ACK MQTT operations (#39051)
* Wait for broker to ACK MQTT operations

* Deduplicate new code

* Fix tests

* Improve test

* Don't hold PAHO lock when waiting for ACK

* Fix tests

* Add constant for ACK timeout
2020-08-21 17:00:13 +02:00
Aaron Bach 4a7c181e91 Allow Slack notifications to change username/icon on the fly (#39091)
* Allow Slack notifications to change username/icon on the fly

* Code review
2020-08-21 08:37:30 -06:00
Eric Severance ed68b15a31 Support unknown mime type for image attachments in html email (#38682) 2020-08-21 08:37:08 -06:00
Eric Severance f01634f75c Add wemo 'Socket' model for Homekit discovery (#38765)
Corresponds with the model WSP080 WiFi Smart Plug
https://www.belkin.com/us/p/P-WSP080/

```
[homeassistant.components.zeroconf] Discovered new device Wemo Plug 603._hap._tcp.local. {'host': '10.234.200.95', 'port': 54664, 'hostname': 'Wemo Plug 603.local.', 'type': '_hap._tcp.local.', 'name': 'Wemo Plug 603._hap._tcp.local.', 'properties': {'_raw': {'c#': b'2', 'ff': b'2', 'id': b'63:30:B3:10:BA:B1', 'md': b'Socket', 'pv': b'1.1', 's#': b'1', 'sf': b'1', 'ci': b'7', 'sh': b'AD4l7g=='}, 'c#': '2', 'ff': '2', 'id': '63:30:B3:10:BA:B1', 'md': 'Socket', 'pv': '1.1', 's#' : '1', 'sf': '1', 'ci': '7', 'sh': 'AD4l7g=='}}
```
2020-08-21 08:36:20 -06:00
Anders Melchiorsen 1ea21b7011 Clean up more netgear_lte resources on shutdown (#39065) 2020-08-21 09:23:03 -05:00
kbickar 2ec546db3d Fix for exception when checking if fan without speed is on (#39096)
* Fix for exception when checking if fan without speed is on

* Organized imports

* Space
2020-08-21 08:20:28 -06:00
Markus Bong 00b05d764d correct naming (#39102) 2020-08-21 08:17:29 -06:00
Aaron Bach 31e0ddaec5 Update Notion to use a DataUpdateCoordinator (#38978)
* Update Notion to use a DataUpdateCoordinator

* isort

* Bug
2020-08-21 08:10:12 -06:00
J. Nick Koston 6fd61be276 Update template triggers to use async_track_template_result (#39059)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-21 15:02:24 +02:00
J. Nick Koston 796d74886e Simplify template integration entities (#39083) 2020-08-21 14:33:53 +02:00
J. Nick Koston 5a9246468e Prevent invalid data from being passed to zeroconf (#39009) 2020-08-21 14:31:17 +02:00
J. Nick Koston 7c346c2f7c Skip the sqlite quick_check on clean restarts (#38972) 2020-08-21 14:20:46 +02:00
Paulus Schoutsen 05d54a60b0 Deprecate optional script context (#39034)
Co-authored-by: Phil Bruckner <pnbruckner@gmail.com>
2020-08-21 14:17:47 +02:00
J. Nick Koston f560256546 Update websocket api to use async_track_template_result (#39057) 2020-08-21 14:04:29 +02:00
J. Nick Koston 7878d97588 Use SimpleQueue for recorder (#38967)
Now that python 3.7 is the minimum supported version, we can
use the more efficient SimpleQueue in the recorder as it does
not have to use threading.Lock
2020-08-21 13:54:13 +02:00
Martin Hjelmare 3cea3eb6e5 Remove dead ozw discovery code (#39098) 2020-08-21 12:44:40 +02:00
Phil Bruckner 76ead858cf Add wait_for_trigger script action (#38075)
* Add wait_for_trigger script action

* Add tests

* Change script integration to use config validator
2020-08-21 11:38:25 +02:00
On Freund c1ed584f2d Add config flow to kodi (#38551)
* Add config flow to kodi

* Fix lint errors

* Remove entry update listener

* Create test_init.py

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update __init__.py

* fix indentation

* Apply suggestions from code review

* Apply suggestions from code review

* Update tests/components/kodi/__init__.py

* Fix init test

* Fix merge

* More review changes

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Fix black formatting

* Fix Flake8

* Don't store CONF_ID

* Fall back to entry id

* Apply suggestions from code review

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

* Update __init__.py

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-20 23:16:58 -05:00
thrust15 e0e31693f5 Update DOODS name (#38997)
https://github.com/home-assistant/home-assistant.io/pull/11703
I was working on the DOODS documentation, and I noticed above PR and the comment by Frenck. So I updated the name.
2020-08-20 14:52:02 -04:00
Andrey Kupreychik 8500e3c5a8 Prefer mac for onvif device identifier (#38864) 2020-08-20 14:39:04 -04:00
Jc2k 96a1c80626 Pre-create homekit_controller device registry entries when processing entity map (#39036) 2020-08-20 19:12:36 +01:00
Bram Kragten 3182dac1eb Generate ID when not provided (#39082) 2020-08-20 14:01:35 -04:00
Bram Kragten af6ca7a4d3 Update frontend to 20200820.0 (#39085) 2020-08-20 17:48:24 +02:00
Felipe Martins Diel a2c1f08c8c Implement config flow in the Broadlink integration (#36914)
* Implement config flow in the Broadlink integration

* General improvements to the Broadlink config flow

* Remove unnecessary else after return

* Fix translations

* Rename device to device_entry

* Add tests for the config flow

* Improve docstrings

* Test we do not accept more than one config entry per device

* Improve helpers

* Allow empty packets

* Allow multiple config files for switches related to the same device

* Rename mock_device to mock_api

* General improvements

* Make new attempts before marking the device as unavailable

* Let the name be the template for the entity_id

* Handle OSError

* Test network unavailable in the configuration flow

* Rename lock attribute

* Update manifest.json

* Import devices from platforms

* Test import flow

* Add deprecation warnings

* General improvements

* Rename deprecate to discontinue

* Test device setup

* Add type attribute to mock api

* Test we handle an update failure at startup

* Remove BroadlinkDevice from tests

* Remove device.py from .coveragerc

* Add tests for the config flow

* Add tests for the device

* Test device registry and update listener

* Test MAC address validation

* Add tests for the device

* Extract domains and types to a helper function

* Do not patch integration details

* Add tests for the device

* Set device classes where appropriate

* Set an appropriate connection class

* Do not set device class for custom switches

* Fix tests and improve code readability

* Use RM4 to test authentication errors

* Handle BroadlinkException in the authentication
2020-08-20 17:30:41 +02:00
J. Nick Koston eb4f667a1a Remove unused code from the template integration (#39048)
* Convert template lock to use async_track_template_result

* Convert template switch to use async_track_template_result

* Convert template fan to use async_track_template_result

* Convert template binary_sensor to use async_track_template_result

Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>

* Convert template cover to use async_track_template_result

* Convert template light to use async_track_template_result

* Convert template vacuum to use async_track_template_result

* Remove unused code from the template integration

Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
2020-08-20 09:30:56 -05:00
J. Nick Koston 5db90478f3 Convert template vacuum to use async_track_template_result (#39047)
* Convert template lock to use async_track_template_result

* Convert template switch to use async_track_template_result

* Convert template fan to use async_track_template_result

* Convert template binary_sensor to use async_track_template_result

Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>

* Convert template cover to use async_track_template_result

* Convert template light to use async_track_template_result

* Convert template vacuum to use async_track_template_result

Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
2020-08-20 09:30:31 -05:00
J. Nick Koston b4f0485be2 Convert template light to use async_track_template_result (#39045)
* Convert template lock to use async_track_template_result

* Convert template switch to use async_track_template_result

* Convert template fan to use async_track_template_result

* Convert template binary_sensor to use async_track_template_result

Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>

* Convert template cover to use async_track_template_result

* Convert template light to use async_track_template_result

Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
2020-08-20 09:29:41 -05:00
J. Nick Koston e861957937 Convert template cover to use async_track_template_result (#39042) 2020-08-20 09:29:19 -05:00
James Hilliard 8a9c94fd9e Fix hlk-sw16 checksum decode. (#39080) 2020-08-20 09:10:29 -05:00
J. Nick Koston 5a8013b58c Convert template binary_sensor to use async_track_template_result (#39027)
Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>

Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
2020-08-20 09:07:58 -05:00
J. Nick Koston 8813f669c2 Convert template alarm_control_panel to use async_track_template_result (#39014)
* Convert template lock to use async_track_template_result

* Convert template switch to use async_track_template_result

* Convert template fan to use async_track_template_result

* Convert template alarm_control_panel to use async_track_template_result
2020-08-20 08:54:16 -05:00
J. Nick Koston f3d077c1e1 Convert template fan to use async_track_template_result (#38983)
* Convert template lock to use async_track_template_result

* Convert template switch to use async_track_template_result

* Convert template fan to use async_track_template_result
2020-08-20 08:53:45 -05:00
J. Nick Koston 264e340b9e Convert template switch to use async_track_template_result (#38950) 2020-08-20 08:51:27 -05:00
J. Nick Koston d7f54ce98f Convert template lock to use async_track_template_result (#38946) 2020-08-20 08:32:52 -05:00
J. Nick Koston 1381b279f0 Update template sensor to use async_track_template_result (#38940)
* Add template entity

* Update template tracking to work for template sensors

* add test for whitespace

* Update homeassistant/helpers/config_validation.py

* revert

* fix

* reduce

* fix _refresh missing decorator

* defer until start

* do not throw errors during startup

* defer tracking until start event

Co-authored-by: Swamp-Ig <github@ninjateaparty.com>
2020-08-20 08:06:41 -05:00
Paulus Schoutsen b7ec0d4884 Remove stale print 2020-08-20 11:41:05 +00:00
Chris Talkington da5dc1130e Fix slower tests in sonarr (#39073) 2020-08-20 12:21:58 +02:00
Franck Nijhof d3389fa22e Sentry integration enhancements (#38833)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-20 11:37:27 +02:00
J. Nick Koston 4371068f6a Fix emulated hue on/off devices compatibility with alexa (#39063) 2020-08-20 10:27:14 +02:00
Daniel Hjelseth Høyer 28a9793a7b Update met.no library (#39076) 2020-08-20 10:26:49 +02:00
Ivan Belokobylskiy be0f2719e2 Upgrade to aioymaps==1.1.0 to support new types of stops #39006 (#39021) 2020-08-20 05:30:48 +02:00
uvjustin dc2d0b9297 Add audio to stream (#38846)
* Add audio to stream component

* Use container options to do most fmp4 formatting

* Add test for treatment of different audio inputs

* Add test for treatment of different audio inputs

* pcm_mulaw frames should be s16

* Use seek to get BytesIO length

* Remove unused utcnow

* Remove peek_next_audio_pts

* only demux audio and video packets - ignoring data and subtitle streams

Co-authored-by: Jason Hunter <hunterjm@gmail.com>
2020-08-19 23:18:54 -04:00
J. Nick Koston b0974d89a6 Ensure speedtest cancels the listener on options update (#39062) 2020-08-19 17:32:01 -07:00
Felipe Martins Diel fec4966ee0 Clean up feedreader files at the end (#39064) 2020-08-19 16:38:34 -05:00
Graham Wetzler bb164bb32c Smart Meter Texas integration (#37966)
* Run scaffold script

* Update version

* Bump version

* Initial commit

* Move meter and ESIID to device attributes

* Update internal to hourly due to api limit

* Format with Black

* Fix typo

* Update tests

* Update description

* Disable Pylint error

* Don't commit translations

* Remove meter number from sensor name

* Allow multiple meters per account

* Move data updates to a DataUpdateCoordinator

* Use setdefault to setup the component

* Move strings to const.py

* Fix tests

* Remove meter last updated attribute

* Bump smart-meter-texas version

* Fix logger call

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

* Remove unneeded manifest keys

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

* Remove icon property

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

* Handle instance where user already setup an account

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

* Remove icon constant

* Fix indentation

* Handle config flow errors better

* Use ESIID + meter number as unique ID for sensor

* Update config flow tests to reach 100% coverage

* Avoid reading meters on startup

Cherrypick @bdraco's suggestion

* Run scaffold script

* Update version

* Bump version

* Initial commit

* Move meter and ESIID to device attributes

* Update internal to hourly due to api limit

* Format with Black

* Fix typo

* Update tests

* Update description

* Disable Pylint error

* Don't commit translations

* Remove meter number from sensor name

* Allow multiple meters per account

* Move data updates to a DataUpdateCoordinator

* Use setdefault to setup the component

* Move strings to const.py

* Fix tests

* Remove meter last updated attribute

* Bump smart-meter-texas version

* Fix logger call

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

* Remove unneeded manifest keys

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

* Remove icon property

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

* Handle instance where user already setup an account

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

* Remove icon constant

* Fix indentation

* Handle config flow errors better

* Use ESIID + meter number as unique ID for sensor

* Update config flow tests to reach 100% coverage

* Remove unnecessary try/except block

This checks for the same exception just prior in execution on L51.

* Remove unused return values

* Add tests

* Improve tests and coverage

* Use more pythonic control flow

* Remove all uses of hass.data

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-19 13:16:45 -05:00
lawtancool e626937147 Fix Control4 light setup issues (#38952)
* catch KeyError and UnboundLocalError in light setup

* add check for no dimmer info from control4

* use existence of light_level data to enable dimming

* check if light data is not in dimmer and non_dimmer

* add item_variables logging

* add await to item_variables call

* add full item dump

* remove full item list

* change logging message

* fix typo

* reduce code inside try and add all entities at once

* Apply suggestions from code review

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

* format with black

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-19 14:05:02 -04:00
Franck Nijhof bdc5af8dd2 Add support for attributes in (numeric) state conditions (#39050) 2020-08-19 20:01:27 +02:00
Bram Kragten 5f10c55303 Fix ws create tags (#39043) 2020-08-19 10:36:32 -04:00
Charles Garwood 96035ccd6f Add websocket command to get a list of OZW instances and their status (#39019)
* Add websocket command to get a list of OZW instances and their status

* Add test

* Review comments
2020-08-19 09:37:04 -04:00
Paulus Schoutsen 3dc79aa60a Track entity sources (#37258)
Co-authored-by: David Mulcahey <david.mulcahey@me.com>
2020-08-19 14:57:38 +02:00
Paulus Schoutsen 24a16ff8fe Add image integration (#38969) 2020-08-19 11:33:04 +02:00
Brian Rogers 111c2006c8 Add Rachio zone moisture service (#38817)
* Add zone moisture percent service

* Fix tests

* Add flex const

* Add fixed constant
2020-08-18 21:51:24 -05:00
Tomasz 81b4c6956b Make ping binary_sensor update async (#35301)
* async_update

* isort and pylint

* @shenxn suggestions

Co-authored-by: Xiaonan Shen <s@sxn.dev>

* async_update

* store the command from the beginning

* command as string

* f-string instead of str.format

* create_subprocess_shell > create_subprocess_exec
more logs

* isort

* types

* use asyncio.wait_for

* Update homeassistant/components/ping/binary_sensor.py

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

* @bdraco review changes

* Update homeassistant/components/ping/binary_sensor.py

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

Co-authored-by: Xiaonan Shen <s@sxn.dev>
Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-18 17:25:50 -05:00
Erik Montnemery 14a3599c47 Bump pychromecast to 7.2.1 (#39018) 2020-08-18 23:43:38 +02:00
Franck Nijhof 475e70986b Extend IP ban / failed login notification information (#39020) 2020-08-18 23:32:19 +02:00
Anders Melchiorsen d4f1fd7396 Improve time_pattern validation schema (#38982) 2020-08-18 21:10:43 +02:00
kbickar 1505343b4b Update emulated_hue to allow getting bridge config without username (#38986)
* Allow bridge config without username

* Updated emulated_hue tests

* Test cleanup
2020-08-18 14:02:38 -05:00
David F. Mulcahey 1af6c04111 Add triggers for the Tag component (#39004) 2020-08-18 16:22:53 +02:00
Farid 3c876c4fe1 Bump pysuez to 0.1.19 (#38998) 2020-08-18 15:23:14 +02:00
Phil Bruckner 5d73714f5a Fix time trigger test (#38988)
* Fix time trigger test

* Forgot part of fix
2020-08-18 07:37:04 -05:00
dependabot[bot] d2469e4159 Bump codecov/codecov-action from v1.0.12 to v1.0.13 (#38991)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from v1.0.12 to v1.0.13.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Commits](https://github.com/codecov/codecov-action/compare/v1.0.12...6004246f47ab62d32be025ce173b241cd84ac58e)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-18 10:47:08 +02:00
Erik Montnemery af9ae2e0a4 Allow empty cast media_player config (#38971) 2020-08-18 08:04:32 +02:00
Charles Garwood e9f32617cc Bump python-openzwave-mqtt to 1.0.5 (#38984) 2020-08-18 07:21:30 +02:00
J. Nick Koston 9feae62f93 Update zeroconf to fix ServiceBrowser leak on cancelation (#38933) 2020-08-17 15:52:54 -05:00
Erik Montnemery 7198a5647d Make check-executables-have-shebangs manual (#38980) 2020-08-17 22:50:00 +02:00
endor bf643b63ad Add wind max speed to trafikverket_weatherstation (#38929)
* Add wind max speed to trafikverket_weatherstation

* Update CODEOWNERS
2020-08-17 15:39:00 -04:00
Ville Skyttä 802c556e82 State and service related type hint improvements (#38956)
* Improve type hint of service_func to register

* Add named type for state values

* Narrow some unnecessarily broad state type hints
2020-08-17 15:02:43 -04:00
Thomas Delaet 4ea587804e update python-velbus to 2.0.44 (#38966)
The only change is in python-velbus 2.0.44 is a more flexible way to import dependency pyserial as asked for by @MartinHjelmare
2020-08-17 15:01:21 -04:00
Phil Bruckner ca9dd0c833 Reorganize trigger code (#38655) 2020-08-17 11:54:56 -05:00
Ville Skyttä fca071742d Install ffmpeg on Travis CI for homekit camera tests (#38955)
INFO:homeassistant.setup:Setting up ffmpeg
DEBUG:haffmpeg.core:Start FFmpeg with ['ffmpeg', '-version', '']
ERROR:haffmpeg.core:FFmpeg fails [Errno 2] No such file or directory: 'ffmpeg': 'ffmpeg'
2020-08-17 09:50:21 +02:00
J. Nick Koston ab2b2f6dd5 Accommodate systems with very large databases and slow disk/cpu (#38947)
On startup we run an sqlite3 quick_check to verify the database
integrity. In the majority of cases, the quick_check takes under
10 seconds.

On systems with very large databases and very slow disk/cpu,
this can take much longer so we freeze the timeout.
2020-08-17 09:47:50 +02:00
Kit Klein 8d8c1335c5 Fix Konnected pro options (#38848) 2020-08-17 09:47:21 +02:00
J. Nick Koston 49edd91f4e Bump netdisco to 2.8.2 to accomodate new zeroconf exception (#38949) 2020-08-17 09:46:30 +02:00
cgtobi afa2d268f2 Improve Netatmo sensor naming (#38957) 2020-08-17 09:39:09 +02:00
pbalogh77 5a4de04bcf Fix HC3 compatibility further (#38931)
* Update __init__.py

Further fixes for HC3 compatibility.

* Update homeassistant/components/fibaro/__init__.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-17 08:19:34 +02:00
Aaron Bach 7071f3a966 Remove deprecated YAML config from OpenUV (#38857) 2020-08-16 19:57:10 -06:00
tizzen33 061d88f875 Fix 'Not Available' message for Onkyo integration (#38554) 2020-08-17 00:06:22 +02:00
Kit Klein a6236886e4 Set up konnected entities even if panel isn't immediately reachable (#38879) 2020-08-17 00:05:11 +02:00
J. Nick Koston 472b12bef5 Update TrackTemplateResultInfo to remove side effects from init (#38934)
* Verify and case

* Review comments

* Update homeassistant/helpers/event.py

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

* Update homeassistant/helpers/event.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-16 11:16:28 -05:00
automaton82 66a5f24d4a Fix the CONF_LOOP check to use the config (#38890) 2020-08-16 16:28:40 +02:00
Ville Skyttä 3c0f766933 Huawei LTE device registry improvements (#38925)
* Fix getting software version in unauthenticated mode

* Add serial number device identifier if available
2020-08-16 13:38:12 +02:00
cgtobi decf3d320b Fix Netatmo climate boost/heat event handling (#38923)
* Fix boost event handling

* Replace strings with vars
2020-08-16 12:18:58 +02:00
Dennis Gilmore 71a03c8ca5 bump the version of openevsewifi to latest upstream 1.1.0 (#38892)
The latest version of openevsewifi fixes some of the outstanding issues
with the component.

Signed-off-by: Dennis Gilmore <dennis@ausil.us>
2020-08-15 23:14:15 -05:00
Chris Talkington 037668ed80 Fix log message format in daikin (#38920) 2020-08-16 03:45:34 +02:00
J. Nick Koston 7d0e356560 Add track_template_result method to events (#38802)
* Merge original changes from #23590

* guard

* adjust

* adjust

* adjust

* Update async_render_to_info for recent codebase changes

* no more protected access

* do not fire right away per review comments

* update test to not fire right away

* closer

* rework tests for non firing first

* augment coverage

* remove cruft

* test for complex listen add/remove

* update docs to match review feedback to not fire right away

* preserve existing behavior

* fix test

* Ensure listeners are cleaned up

* de-dupe and comment

* de-dupe and comment

* coverage

* test to login again if we go from exception to ok to exception

* Update homeassistant/core.py

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

* Update homeassistant/helpers/event.py

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

* rename _boolean_coerce to result_as_boolean and move it out of event

* additional coverage

* Add more tests (may still be able to trim this down)

Co-authored-by: Swamp-Ig <github@ninjateaparty.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-15 19:53:03 -05:00
Martin Hjelmare 0f1e70ca79 Fix ozw pure rgb dimmer light (#38877)
* Fix ozw pure rgb light

* Add test
2020-08-15 14:41:30 -04:00
escoand 9c6b019ca9 Better timeout handling in samsungtv integration (#38759)
* handle PlatformNotReady

* set timeout in bridge

* set timeout in test

* Revert "handle PlatformNotReady"

This reverts commit 118ee06ba016f88abdf767efdf4ef1eacb4e5caa.
2020-08-15 20:25:37 +02:00
indykoning 92adb5d58a Add new growatt_server device class constants (#38906) 2020-08-15 18:04:49 +02:00
Franck Nijhof 755761867d Use current request context in OAuth redirect (#38692) 2020-08-15 15:26:54 +02:00
Jc2k a1dfa8ebc6 Bump aiohomekit to 0.2.47 (#38901) 2020-08-15 08:19:07 -05:00
Oncleben31 1544b8cea7 Fix error in meteo_france for overseas France cities (#38895) 2020-08-15 11:54:42 +02:00
J. Nick Koston af5cb948a0 Adjust slow add entities timeouts to handle slowest known case (#38876)
With this change, we should still be able to startup
in under 10 minutes if something really goes wrong.

The testing done in #38661 was used to determine
these values.
2020-08-15 07:14:02 +02:00
Fredrik Erlandsson 68047f7c1a Handle missing MAC address during daikin discovery (#38840)
* Abort flow if MAC-address can't be found

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-14 20:11:12 -05:00
Chris Caron 70c028458f Bump apprise to 0.8.7 (#38886) 2020-08-14 20:04:36 -05:00
indykoning b7275de837 Get more detailed info for growatt_server (#38852)
* Get more detailed info including inverter temperature

* Bump version to 0.1.1
2020-08-14 19:54:10 -05:00
Aidan Timson 4bfcfb0017 Update ovoenergy package to v1.1.7 (#38875) 2020-08-14 18:55:56 +02:00
J. Nick Koston 483d09b9c1 Adjust homekit controller pairing to have a new step for each potentially recoverable error (#38742)
* Adjust homekit controller pairing errors back to a single step

* adjust test

* Revert "Adjust homekit controller pairing errors back to a single step"

This reverts commit e5ed89bbbb053bb814219052ae99697a5a7b4e46.

* Revert "adjust test"

This reverts commit c2e9f21a8401c144315260f6fdf71ea8060f8ca3.

* adjust

* prune

* prune

* merge

* Update tests

* remove debug

* adjust

* Multiple steps

* adjust the test
2020-08-14 10:34:52 -05:00
Martin Hjelmare 4ecdb1f19f Fix PR link in PR template (#38871) 2020-08-14 09:11:41 -04:00
Quentame e0c0d3b53f Update meteo_france based on code review (#38789)
* Review: if not to pop

* Review: async_add_job --> async_add_executor_job

* Review: const

* Review: start logging messages with capital letter

* Review : UTC isoformated time --> fix "Invalid date""

* Fix hail forecast condition

* Review: _show_setup_form is a callback

* Fix update option

* Review: no icon for next_rain

* Review: inline cities form

* Review: store places as an instance attribute

* UNDO_UPDATE_LISTENER()
2020-08-14 09:10:13 -04:00
Erik J. Olson 91ead3be50 Add Slack url icon support (#38814)
* Add support for slack bot icons via URL

* Removed as_user property from message send

* Use f-strings rather than concatenation

* Don't span lines with complex expression
2020-08-14 09:07:04 -04:00
Chris 5c9f29c43a Fix ozw dimming transition (#38850)
* Handle float from light component

* Test with float

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-14 08:35:42 -04:00
Aidan Timson 47d1920f8a Fix OVO Energy Sensors (#38849) 2020-08-14 14:06:31 +02:00
Martin Hjelmare f4f614a0bc Add sympathy review check box to PR template (#38867)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-08-14 14:03:39 +02:00
Paulus Schoutsen 2bc533d0cb Fix logger name (#38866) 2020-08-14 13:27:11 +02:00
Martin Hjelmare 23510e6839 Disable env_canada pylint import error (#38868)
* Disable env_canada pylint import error

* Disable pylint in camera and sensor too
2020-08-14 11:15:45 +02:00
J. Nick Koston 49478298cc Ensure service browser does not collapse on bad dns names (#38851)
If a device on the network presented a bad name, zeroconf
would throw zeroconf.BadTypeInNameException and the service
browser would die off.  We now trap the exception and continue.
2020-08-13 22:00:39 -05:00
Eric Severance 2f955ccfd7 Bump pywemo to 0.4.46 (#38845) 2020-08-13 21:00:55 -05:00
Quentame f26a49eca5 Fix Freebox unsub dispatcher (#38842) 2020-08-13 20:56:06 -05:00
Niels Mündler fceba0bb88 Bump pysyncthru to 0.7.0 (#38832)
* Bump pysyncthru version to 0.7.0

This change includes a heavier refactoring, using a more reliable source for the device status and parsing display strings only for additional details

* Fix test flow to ensure a status is set
2020-08-13 20:48:26 -05:00
cgtobi 72472cd11f Remove superfluous netatmo icons (#38859) 2020-08-13 20:39:17 -05:00
J. Nick Koston ee64aafc39 Fix iqvia test patching the wrong integration (#38847) 2020-08-13 11:47:18 -05:00
Charles Garwood 18833d342e Fix typo in media_player docstring (#38843) 2020-08-13 10:16:28 -04:00
David F. Mulcahey ca5e752514 Add switch support to the Flo integration (#38268)
* Add switch domain to Flo integration

* lint

* updates post rebase

* fix after rebase

* remove device state attrs

* oops

* stale name and docstring
2020-08-13 07:52:30 -04:00
Marcio Granzotto Rodrigues 52a9921ed3 Nightscout PR fixes (#38737)
* Don't allow duplicate nightscout configs

* Fix nightscout translations

* Remove unnecessary should_poll method

* Remove SVG attribute, as it was duplicating the state

* Use aiohttp client session from HA

* Move validate_input outside the config class

* Use the entry unique_id on the sensor

* Move create entity logic

* Handle unexpected exception on Nightscout config
2020-08-13 07:46:07 -04:00
David F. Mulcahey 86aa758ecd Add binary sensor support to the Flo integration (#38267)
* update device

* add binary sensor

* updates post rebase

* fix entity type post rebase

* fix post rebase

* fix add entities

* fix name

* review comments
2020-08-13 07:26:47 -04:00
Paulus Schoutsen 03676693ce Catch upnp timeout error (#38794) 2020-08-13 12:11:58 +02:00
RogerSelwyn 1f3b9bc70c Fix creation of unrequired sensors in OVO energy (#38835) 2020-08-13 11:47:32 +02:00
Paulus Schoutsen 7343649c54 Convert Channels platform services to use platform register (#38827) 2020-08-13 11:08:59 +02:00
Paulus Schoutsen b3571602bb Add default_* to device registry (#38829) 2020-08-13 10:38:56 +02:00
J. Nick Koston a6cec21c43 Make executor max_workers consistent between python versions (#38821)
The default on python 3.8 is for max_workers is significantly
lower than the default on python 3.7 which means we can get starved
for workers.

To determine a reasonable maximum, the maximum was increased to large
number on 5 production instances.

The number of worker threads created during startup that were
needed to avoid waiting for a thread:

  HOU 1 - 71
  HOU 2 - 48
  OGG 1 - 60
  OGG 2 - 68
  OGG 3 - 64

This lead to a selection of 64 as it was reliable in all cases
and did not have a significant memory impact
2020-08-13 10:12:18 +02:00
cgtobi 3957337b9f Cleanup Netatmo sensors (#38627) 2020-08-13 09:36:47 +02:00
sean tearney 9244bf28ef Add Agent DVR Alarm Control Panel (#36468)
* Add Agent DVR Alarm Control Panel

* code review

* remove return statement
2020-08-13 07:28:06 +02:00
Chris Talkington 851c20aeb2 Update rokuecp to 0.6.0 (#38819)
* update rokuecp to 0.6.0

* Update requirements_all.txt

* Update requirements_test_all.txt
2020-08-12 21:41:29 -04:00
Chris Talkington 4d50a20500 Update pyipp to 0.11.0 (#38820)
* update pyipp to 0.11.0

* Update requirements_all.txt

* Update requirements_test_all.txt
2020-08-12 21:40:32 -04:00
Kit Klein 40f31faa10 update to use latest konnected py module (#38803) 2020-08-13 00:37:18 +02:00
Aaron Bach 9e21fb6b52 Handle unhandled exceptions related to unavailable SimpliSafe features (#38812) 2020-08-12 15:21:17 -06:00
Ville Skyttä 991bf126d4 Helpers type hint improvements (#38522) 2020-08-12 23:01:10 +02:00
Joakim Plate 15db2225da async_get_instance was not reentrant during await (#38263) 2020-08-12 22:35:24 +02:00
Charles Garwood 8cf0a01149 Add refresh_node_info command to OZW websocket api (#38573)
* Add ozw refresh_node_info websocket api

* Remove extra unsubs definition

* Remove unused bits from refresh_node_info websocket

* Add tests

* Add unsubscribe test

* Wait for response in unsubscribe test
2020-08-12 15:49:40 -04:00
Phil Bruckner 580e229cf2 Create variable with result of wait_template and accept template for timeout option (#38634) 2020-08-12 13:42:06 -05:00
J. Nick Koston 45526f4e8a Add async_track_state_added_domain for tracking when states are added to a domain (#38776)
* Fire event_state_added when a state is added after start

* async_track_state_added_domain

* test

* naming

* coverage
2020-08-12 13:30:40 -05:00
Phil Bruckner 716fa63e73 Update script helper constructor parameters (#38763)
Add domain and make it and name required.

Add optional running_description.
2020-08-12 11:39:05 -05:00
Raman Gupta fbf44b37a9 Simplify vizio unique ID check since only IP and device class are needed (#37692) 2020-08-12 16:50:36 +02:00
J. Nick Koston 444df4a7d2 Use the shared zeroconf instance when attempting to create another Zeroconf instance (#38744) 2020-08-12 16:08:33 +02:00
Eric Severance 34cb12d3c9 Addressing feedback from #37711 (#38781) 2020-08-12 09:34:27 -04:00
Ziv d058802325 Add dynalite level preset (#37533)
* implementation of "level" in preset

* updated library version - bug fix for covers during init with active=on

* cleanup after merge
2020-08-12 09:18:26 -04:00
Martin Hjelmare 7949357180 Unsubscribe ozw listeners (#38787) 2020-08-12 15:17:21 +02:00
Greg Dowling e9b50706a9 Add roon media player integration (#37553)
* Import roon code.

* Fix flake8/pylint issues.

* Fix lint issues, extend timeout, change contact infomation.

* Add new files to .coveragerc

* Make file executable.

* Fix problem with integration not working after initial creation.

* Improve logic unavailable players by caching data.

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Review changes

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

* Update review suggestions

* Rremove custom play action script.

* Add test requirements.

* Tidy manifest.

* Missed fixes.

* Refactor config_flow to use current pattern.

* Add config_flow tests.

* Refactor to use signal dispatch helpers.

* Remove ToDo: for now.

* Remove remaining zone / source logic for initial release,

* Stop authenticate blocking, handle timeout.

* Removed unneeded code.

* Review comments update.

* Fix comment.

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Fix bug in seek.

* Use sync rather than async update

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

* Upgrade library, remove exception now caught in library,

* Review comments.

* Review changes

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

* Check for duplicate host before adding.

* Review comment.

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

* Remove unused code, revise turn_on/turn_off.

* Sync translations.

* Make interim timeout const.

* Refactor tests.

* Add tests with an existing config entry.

* Apply suggestions from code review

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

* Remove CannotConnect

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-12 09:09:47 -04:00
cgtobi f286992b10 Remove Netatmo HomeKit discovery method (#38770) 2020-08-12 08:41:11 +02:00
dependabot[bot] 7ac38557e6 Bump actions/upload-artifact from v2.1.3 to v2.1.4 (#38779)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from v2.1.3 to v2.1.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2.1.3...58740802ef971a2d71eff71e63d48ab68d1f5507)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-12 08:30:13 +02:00
dependabot[bot] 4833cf4e4a Bump actions/setup-python from v2.1.1 to v2.1.2 (#38780)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from v2.1.1 to v2.1.2.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2.1.1...24156c231c5e9d581bde27d0cdbb72715060ea51)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-12 08:29:52 +02:00
Franck Nijhof 5f95b5caaf Fix lastest version in updater for Supervisor enabled installs (#38773)
* Fix lastest version in update for Supervisor enabled installs

* Fix updater tests
2020-08-12 08:00:38 +02:00
Jeff Irion 540d0e5428 Bump androidtv to 0.0.49 (#38778) 2020-08-11 22:27:16 -05:00
Alexei Chetroi b242b46888 Bump up ZHA dependencies (#38775) 2020-08-11 20:41:49 -04:00
Tom Harris b1fd931cdc Add config flow to insteon component (#36467)
* Squashed

* Fix requirements_all

* Update homeassistant/components/insteon/__init__.py

Only update options if the result is to create the entry.

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

* Update homeassistant/components/insteon/__init__.py

No return value needed.

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

* Ref RESULT_TYPE_CREATE_ENTRY correctly

* Return result back to import config process

* Make DOMAIN ref more clear

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-11 18:04:44 -05:00
cgtobi 6bdb2f3d11 Cleanup Netatmo code (#38772)
* Clean up const

* Clean up data handler
2020-08-12 00:23:51 +02:00
Eric Severance 49b375ff94 Allow ONVIF devices to resume a PullPoint subscription when the camera reboots (#37711) 2020-08-11 17:53:30 -04:00
Eric Severance 4d1ef02802 Stream clients operate on a copy of the intnernal self._outputs dict (#38766) 2020-08-11 17:20:43 -04:00
uvjustin 5355fcaba8 Add H.265 support to stream component (#38125)
* Add H.265 support to stream component

* Change find_box to generator

* Move fmp4 utilities to fmp4utils.py

* Add minimum segments and segment durations

* Remove MIN_SEGMENTS

* Fix when container_options is None

* Fix missing num_segments and update tests

* Remove unnecessary mock attribute

* Fix Segment construction in test_recorder_save

* fix recorder with lookback

Co-authored-by: Jason Hunter <hunterjm@gmail.com>
2020-08-11 17:12:41 -04:00
Franck Nijhof d0a59e28ac Revert "Add energy device class to Toon sensors" (#38768)
This reverts commit dd86de3255.
2020-08-11 23:03:56 +02:00
Eric Severance 61a911af41 Adapt the ONVIF Renewal termination_time for Amcrest cameras (#37750) 2020-08-11 16:59:26 -04:00
Franck Nijhof cc4ebc925c Improve X-Forwarded-* request headers handling (#38696)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
2020-08-11 22:57:50 +02:00
Erik Montnemery 4fa346278c Enable PAHO MQTT client logging (#38767) 2020-08-11 22:54:41 +02:00
Phil Bruckner 192fe58fc8 Time trigger can also accept an input_datetime Entity ID (#38698) 2020-08-11 15:16:28 -05:00
Franck Nijhof dd86de3255 Add energy device class to Toon sensors (#38686) 2020-08-11 13:42:10 -04:00
Vitalii Martyniak 96bcbb43c4 Add power sensor for Aqara Wall Plug (#38672) 2020-08-11 13:38:45 -04:00
Ziv 6a8378bec0 Add Dynalite service to request the channel level (#38735)
* added service to request the channel level

* cleanup

* Update homeassistant/components/dynalite/__init__.py

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

* Update homeassistant/components/dynalite/__init__.py

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

* Update services.yaml

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-11 18:33:16 +02:00
Paulus Schoutsen f31a580caf Speed up OZW availability check (#38758)
* Speed up OZW availability check

* Apply suggestions from code review

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-11 18:23:10 +02:00
stephan192 016cd8f8ef Move DwdWeatherWarningsAPI to a library hosted on PyPI (#34820)
* Move DwdWeatherWarningsAPI to a library hosted on PyPI
PyPI library uses new DWD WFS API
WFS API allows a more detailed query with reduced data sent as return
Change CONF_REGION_NAME from Optional to Required because it was never really optional
Set attribute region_state to "N/A" because it is not available via the new API
Add attributes warning_i_parameters and warning_i_color

* Use constants instead of raw strings
Streamline methods state and device_state_attributes

* Wrap api, use UTC time

* Update homeassistant/components/dwd_weather_warnings/sensor.py

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

* Update homeassistant/components/dwd_weather_warnings/manifest.json

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-11 17:55:50 +02:00
David F. Mulcahey 5802d65ef7 Bump ZHA quirks lib to 0.0.43 (#38762) 2020-08-11 11:14:02 -04:00
Brian Rogers 52b80a08c9 Bump Rachiopy version to 0.1.4 (#38761) 2020-08-11 16:40:18 +02:00
Joakim Sørensen 3fc2bae49e Bump frontend to 20200811.0 (#38760) 2020-08-11 15:45:07 +02:00
Paulus Schoutsen d1780b8d7e Mobile App integration to use tag integration (#38757) 2020-08-11 14:23:47 +02:00
etheralm 1d9a469f84 Bump dyson upstream library version (#38756) 2020-08-11 14:19:10 +02:00
David F. Mulcahey 6a24667944 Update Flo config flow and associated tests (#38722) 2020-08-11 14:13:40 +02:00
David F. Mulcahey 227d7c0a99 [RFC] Add Tag integration (#38727)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-11 11:08:47 +02:00
Yehuda Davis bd3f075060 Add Ecobee services (#38749)
Enable/disable automatic daylight savings time
Enable/disable the Alexa mic on the Ecobee 4
Enable/disable Smart Home/Away and follow me modes
2020-08-11 10:31:38 +02:00
Eliseo Martelli 9bc68b9a73 Remove prezzibenzina integration (ADR-0004) (#38736) 2020-08-11 10:17:34 +02:00
J. Nick Koston 0d51d8660e Install a threading.excepthook on python 3.8 and later (#38741)
Exceptions in threads were being silently discarded and never
logged as the new in python 3.8 threading.excepthook was not
being set.
2020-08-11 09:45:36 +02:00
Diogo Gomes 39843319e2 Update IPMA weather component (#38697)
* long overdue mismatch

* missing updated tests
2020-08-10 21:55:44 -05:00
Vaclav 8555e17eb9 Add hourly forecast to met.no (#38700)
* Add hourly forecast

* fix tests to assert for 2 entities created

* fix test to assert for 4 calls

* correct test tracking home number of calls

* fox tests

* fix test

* Apply suggestions from code review

* black

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-10 20:22:39 -05:00
David F. Mulcahey 844b3f8d23 Make default duration 1/10th of a second for ZHA light calls (#38739)
* default duration to 1/10th of a second
* update test
2020-08-10 17:40:07 -04:00
Chris Talkington cf72ade093 Add URL as common string (#38694)
* add URL as common string

* Update strings.json
2020-08-10 22:51:37 +02:00
Andrew Sayre bbda1272c2 Bump pysmartthings 0.7.3 (#38732) 2020-08-10 22:32:00 +02:00
Franck Nijhof ea65eb270f Ignore requirements for env_canada (#38731) 2020-08-10 18:00:02 +02:00
Paulus Schoutsen 52729e9dc8 Add scan_tag webhook to mobile app (#38721) 2020-08-10 17:54:46 +02:00
Franck Nijhof 3d0ea42ac0 Add current device class to WLED current sensor (#38687) 2020-08-10 17:50:03 +02:00
Pascal Vizeli c6105580bf Add scikit-build to installed env (#38726) 2020-08-10 16:34:52 +02:00
Ziv ff539f3f05 Add Dynalite current preset service (#38689)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-10 16:30:59 +02:00
Markus Bong dba82fedd4 Bump devolo-home-control-api to 0.13.0 (#38718) 2020-08-10 15:57:04 +02:00
Jc2k f82f815304 Add water level sensors provided by UK Environment Agency (#31954) 2020-08-10 15:51:04 +02:00
David F. Mulcahey f1fd8aa51f Add support for Flo by Moen water shutoff devices (#38171) 2020-08-10 14:19:38 +02:00
bsmappee 07de9deab6 Implement local discovery of Smappee legacy devices (#37812)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-10 13:34:18 +02:00
Pascal Vizeli 65f1e0c71a Update base image 8.2.1 (#38716) 2020-08-10 13:12:23 +02:00
Phil Bruckner 4c8c8a8c99 Fix async_fire_time_changed in tests/common.py (#38705) 2020-08-09 22:26:35 -05:00
J. Nick Koston 9bb7b3b125 Fix homekit_controller pairing retry when the first attempt is busy (#38605)
* Fix homekit_controller pairing retry

If the device was busy on the first pairing attempt, it
was not possible to retry.

* always restart pairing on recoverable execptions

* move code

* malformed pin is safe to restart

* make busy_error an abort

* switch max retries, simplify tests

* try pairing later

* try pairing later

* merge

* s/tlv_error/protocol_error/g

* Adjust wording
2020-08-09 22:17:13 -05:00
David F. Mulcahey 4e56339ba1 add event and device action for when devices drop (#38701) 2020-08-09 20:37:07 -04:00
Markus Haack 3d308e0599 Add SolarEdge battery level and dynamic icon for storage sensor (#37826)
* Add SolarEdge battery level and dynamic icon for storage sensor

* Add SolarEdge battery storage sensor

* Fix isort warning

* Remove charging attribute

* Fix isort warning

* Apply suggestions from code review

* Update homeassistant/components/solaredge/sensor.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 16:28:45 -05:00
Michaël Arnauts d7d7ee6524 Use global CONF_UNIQUE_ID for mqtt (#38595)
* Use global CONF_UNIQUE_ID for mqtt

* Update __init__.py

* Update __init__.py

* Update __init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 16:00:14 -05:00
Arto Jantunen abb81704d2 Add support for boost and eco modes to Daikin climate (#37282)
Daikin calls these 'econo' and 'powerful', but the result is the same..
2020-08-09 15:48:38 -05:00
Alex Ward feb36c3efc Persist hive light brightness for color change (#38677)
when changing the color for a hive light, keep the brightness at the
previous level.

Co-authored-by: Adam Charlton <ad5665@live.co.uk>

Co-authored-by: Adam Charlton <ad5665@live.co.uk>
2020-08-09 15:15:25 -05:00
Michaël Arnauts 3761942b82 Use global CONF_UNIQUE_ID for deconz (#38597) 2020-08-09 13:21:11 -05:00
Michaël Arnauts 2ba4c1193c Use global CONF_UNIQUE_ID for hue (#38596) 2020-08-09 13:20:11 -05:00
Vaclav b258e757c2 Add DataUpdateCoordinator to met integration (#38405)
* Add DataUpdateCoordinator to met integration

* isort

* redundant fetch_data

* Update homeassistant/components/met/weather.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/weather.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/weather.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/weather.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/met/weather.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* fix black, isort, flake8, hassfest, mypy

* remove unused async_setup method

* replace fetch_data by coordinator request_refresh

* remove redundant  async_update

* track_home

* Apply suggestions from code review

* Apply suggestions from code review

* Update homeassistant/components/met/__init__.py

* Apply suggestions from code review

* Update homeassistant/components/met/__init__.py

* Apply suggestions from code review

* Update homeassistant/components/met/__init__.py

* Apply suggestions from code review

* Update test_config_flow.py

* Apply suggestions from code review

* Apply suggestions from code review

* Update __init__.py

* Create test_init.py

* Update homeassistant/components/met/__init__.py

* Update __init__.py

* Update __init__.py

* Update homeassistant/components/met/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 13:18:02 -05:00
Marcio Granzotto Rodrigues 761067559d Add Nightscout integration (#38615)
* Implement NightScout sensor integration

* Add tests for NightScout integration

* Fix Nightscout captalization

* Change quality scale for Nightscout

* Trigger actions

* Add missing tests

* Fix stale comments

* Fix Nightscout manufacturer

* Add entry type service

* Change host to URL on nightscout config flow

* Add ConfigEntryNotReady exception to nighscout init

* Remote platform_schema from nightscout sensor

* Update homeassistant/components/nightscout/config_flow.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 13:15:56 -05:00
On Freund 96d48c309f Make CoolMasterNet integration async (#38643)
* make CoolMasteNet integration async

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Minor post-review tweaks

* Apply suggestions from code review

* Update homeassistant/components/coolmaster/__init__.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 13:08:07 -05:00
Chris 597d1e2799 Add missing Short type to set_config_param (#38618)
* Add missing Short type to set_config_param

* Forgot to fix the for loop

* Remove leftover return

* Guard the for loop

* Changed from if to else

* Fixed list iteration for validating input

* Adjusted per linter
2020-08-09 19:05:26 +02:00
Ian Duffy ef039d6a65 Fix Kodi play_media media type casing (#38665)
* [KODI] Fix casing issue

Alexa and the Services UI on HA feeds in a media type of "channel" for media type.
The Kodi code looks for a "CHANNEL" instead, as a result the functionality fails.

* Update homeassistant/components/kodi/media_player.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/kodi/media_player.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/kodi/media_player.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Update homeassistant/components/kodi/media_player.py

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 11:25:22 -05:00
Eugenio Panadero f526deaa87 Bump version of aiopvpc to v2.0.2 (#38691) 2020-08-09 11:23:49 -05:00
Maciej Bieniek a7e19c8896 Improve tests for AccuWeather integration (#38621)
* Add more tests

* Add tests for sensor platform

* Add more tests

* More tests

* Simplify parsing of attributes

* Change Quality scale to platinum

* Patch the library in the manual update entity test

* Add unsupported condition icon test

* Do not patch _async_get_data

* Apply suggestions from code review

* Update config_flow.py

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Update tests/components/accuweather/test_weather.py

* Apply suggestions from code review

* Add return_value

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-09 09:21:36 -05:00
Alan Tse ca3842b150 Address requested code changes in Tesla (#38680)
* Address requested code changes

* Address ternary operator in sensor
2020-08-09 09:16:39 -05:00
Paulus Schoutsen ac1f431f91 Bump updater timeout (#38690) 2020-08-09 14:10:27 +02:00
Franck Nijhof 20710d8605 Add current request context to get_url helper (#38602) 2020-08-09 14:07:31 +02:00
Justin Paupore 53b729a0d1 Support muting and relative-volume media_players in Google Assistant (#38651)
Support the action.devices.commands.mute intent to mute and unmute
media_players that declare support for mute/unmute.

For media players with support for volume up/down, but no support for
setting the volume to a specific number, allow use of the
action.devices.commands.relativeMute intent to control volume up/down.
This will improve support for IR blasters and other open-loop
media_player integrations.
2020-08-09 14:03:53 +02:00
J. Nick Koston a6f869aeee Improve performance of fetching the state domain (#38653)
Pre calc domain when an entity id created to avoid
having to call the property method which had to call
split_entity_id every time. If there are a lot of
zone related automations, async_active_zone can call
async_entity_ids frequently which results in 100000s
of split_entity_id via the domain property every
second.
2020-08-09 13:45:16 +02:00
J. Nick Koston ef8e74786f Support extracting entities by domain from templates (#38647) 2020-08-09 13:44:09 +02:00
J. Nick Koston d659502e35 Update aiohomekit to handle homekit devices that do not send format (#38679) 2020-08-09 13:29:46 +02:00
On Freund f0487b783d Bump pyvolumio to 0.1.1 (#38685) 2020-08-09 00:02:21 -05:00
Aaron Bach 6856735a1d Fix missing data for Guardian "AP enabled" binary sensor (#38681) 2020-08-08 21:00:55 -06:00
Thomas Hollstegge 5de21375c0 Make sure groups are initialized before template sensors (#37766)
* Make sure groups are initialized before template sensors

This way users may use the `expand` function in templates to expand
groups and have HA listen for changes to group members.

Fixes #35872

* Patch async_setup_platform instead of async_setup

* Cleanup

* Use an event to avoid sleep

* Update tests/components/template/test_sensor.py

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

Co-authored-by: J. Nick Koston <nick@koston.org>
2020-08-08 21:34:14 -05:00
Matthew Garrett 34e2a1825b Add support for exposing light effects via Google Assistant (#38575)
* Don't set SUPPORT_EFFECT on DemoLight if there are no effects

This requires an update to the group test - previously the other lights
instantiated by the DemoLight component had nothing in ATTR_EFFECT_LIST, but
still had SUPPORT_EFFECT set. This appears to have resulted in the light
group test code setting an effect on the group and expecting it to apply to
all lights, but given that two of the bulbs didn't actually support any
effects (due to the empty ATTR_EFFECT_LIST) this seems like a broken
assumption and updating the test to verify only the bulb that supports
effects has had one applied seems reasonable.

* Add support for exposing light effects via Google Assistant

The LightEffects trait only supports a fixed (and small) list of lighting
effects, but we can expose them via the Modes trait - this requires saying
"Set (foo) effect to (bar)" which is a little clumsy, but at least makes it
possible.
2020-08-08 14:28:04 -07:00
J. Nick Koston e304792f3a Ensure shared zeroconf is passed to homekit controller devices (#38678) 2020-08-08 15:37:05 -05:00
fabiocastagnino 02d572aae5 Add device classes for electrical measurement (#36800)
* added device classes for electrical measurement

(cherry picked from commit 2409fe19ed43bef568a0cca826652867d3a2d71a)

* upadte power factor unit (%)

* update power factor unit (%)
2020-08-08 21:04:18 +02:00
J. Nick Koston 74c23c3e96 Add support for reload_on_update to _abort_if_unique_id_configured (#38638)
* Add support for reload_on_update to _abort_if_unique_id_configured

async_update_entry now avoids firing update listeners and writing
the storage if there are no actual changes.

* Actually add the tests

* collapse branch

* Update homeassistant/config_entries.py

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

* handle entries that lack the ability to reload

* reduce

* adjust konnected tests

* update axis tests

* fix blocking

* more mocking

* config flow tests outside of test_config_flow

* reduce

* volumio

* Update homeassistant/config_entries.py

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

* set reload_on_update=False for integrations that implement self._abort_if_unique_id_configured(updates= and a reload listen

* get rid of copy

* revert test change

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-08 13:23:56 -05:00
Joakim Sørensen 1cb161017e Update frontend to 20200807.1 (#38626) 2020-08-08 20:00:56 +02:00
michaeldavie 9169d73c71 Bump env_canada to 0.2.0 (#37467) 2020-08-08 16:34:24 +02:00
Bas Nijholt 21e551b61d Bump pre-commit-hooks from v2.40 to v3.2.0 (#38664) 2020-08-08 15:01:57 +02:00
Bas Nijholt 0427d87ba4 Bump codespell from v1.16.0 to v1.17.1 and fix new spelling errors (#38663) 2020-08-08 14:41:02 +02:00
starkillerOG da89fa7884 Fix xiaomi_aqara discovery (#38622) 2020-08-08 13:59:53 +02:00
Bas Nijholt e258ab7ff0 Bump yamllint to v1.24.2 (#38633) 2020-08-08 13:18:37 +02:00
Bas Nijholt d49c55a8da Bump pyupgrade to v2.7.2 (#38629) 2020-08-08 12:36:12 +02:00
Alejandro Rivera 937b951727 Fix rest_command UnboundLocalError in exception handling (#38656)
```
2020-08-07 22:38:10 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.3903193064] local variable 'response' referenced before assignment
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 115, in async_service_handler
    async with getattr(websession, method)(
  File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 1012, in __aenter__
    self._resp = await self._coro
  File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 582, in _request
    break
  File "/usr/local/lib/python3.8/site-packages/aiohttp/helpers.py", line 586, in __exit__
    raise asyncio.TimeoutError from None
asyncio.exceptions.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 125, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1281, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1316, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 137, in async_service_handler
    _LOGGER.warning("Timeout call %s", response.url, exc_info=1)
UnboundLocalError: local variable 'response' referenced before assignment
```
2020-08-08 10:56:39 +02:00
Chris Talkington f8570438e9 Fix AccuWeather async timeout (#38654) 2020-08-07 23:50:08 -05:00
Alan Tse c3e77487da Bump teslajsonpy to 0.10.4 (#38652) 2020-08-07 22:58:31 -05:00
Alan Tse 94b6d09b51 Update Tesla to use DataUpdateCoordinator (#38306)
* Update Tesla to use DataUpdateCoordinator

* Update Tesla to use DataUpdateCoordinator

* Fix linting errors

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Address requested changes

* Apply suggestions from code review

Co-authored-by: Chris Talkington <chris@talkingtontech.com>

* Fix lint errors

* Remove controller from hass.data

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
2020-08-07 22:16:28 -05:00
Raman Gupta 0d5e279509 Standardize Vizio update service schema (#38636)
* update voluptuous schema to match standards and to handle data transformations

* improve test
2020-08-07 21:29:54 -05:00
Eugene Prystupa 50cd6be18d Raise error when unsupported (old) Bond firmware is detected (#38650) 2020-08-07 21:22:13 -05:00
Aaron Bach 4cceb4ad0a Bump regenmaschine to 2.1.0 (#38649) 2020-08-07 18:01:55 -06:00
Vaarlion 353817337e Automatically switch mpd between resume and start playing on media_play (#37854)
* Automatically switch between resume and start playing

* Fix Black issue

Weirdly when i run it i had an error `1544 files left unchanged, 3313 files failed to reformat.`
I didn't watch the commit check output afterward.
2020-08-07 22:28:49 +02:00
James Hilliard 3e9f2b8246 Remove unused async_setup_platform from HLK-SW16 switch (#38648) 2020-08-07 15:18:31 -05:00
Ole-Martin Heggen 2d70df9776 Fix url in seventeentrack delivered notification (#38646) 2020-08-07 14:14:42 -06:00
Franck Nijhof 94fd6cceef Remove tf-models-official from wheels builder (#38637) 2020-08-07 17:37:31 +02:00
Franck Nijhof fa956e3153 Bump version to 0.115.0dev0 (#38606) 2020-08-07 11:41:26 +02:00
Paulus Schoutsen 93e1f6176a Fix lint 2020-08-07 08:40:50 +00:00
cgtobi 6930aebea2 Switch Netatmo integration to dispatcher for internal communication (#38590)
* Switch to dispatcher for internal communication

* Fix method call

* Update homeassistant/components/netatmo/camera.py

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

* Update homeassistant/components/netatmo/camera.py

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

* Update homeassistant/components/netatmo/climate.py

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

* Update homeassistant/components/netatmo/climate.py

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

* Rename variables

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-07 09:25:59 +02:00
Jason Hunter 3546a82cfb Upgrade to TensorFlow 2 (#38384)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2020-08-07 08:56:28 +02:00
J. Nick Koston 7e34c2582f Ensure doorbird does not block startup (#38619) 2020-08-07 08:40:28 +02:00
Pascal Vizeli fa41a7c6e7 Bump OpenCV 4.3.0 and Numpy 1.19.1 (#38616) 2020-08-07 08:37:10 +02:00
Pascal Vizeli 72a6251042 V2 timeout for async_add_entities (#38601)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2020-08-07 08:36:38 +02:00
Paulus Schoutsen 881b6a831d Handle unavailable input_select in Google Assistant (#38611) 2020-08-07 08:17:00 +02:00
Paulus Schoutsen 6d0d5548e5 Do not report google states if nothing to report (#38608) 2020-08-07 08:16:46 +02:00
J. Nick Koston 5cc7605d20 Ensure homekit pairing barcode is usable on dark themes (#38609) 2020-08-06 22:26:43 -05:00
Raman Gupta 297dd9bbc2 Add vizio service to update a device setting (#36739)
* track all settings and add service to update a setting

* sort setting types

* reduce frequency of updates due to the increase in API calls per update

* change dict call to a get in case audio settings aren't available

unlikely to occur but less error prone

* Update if statement to be more consistent

* revert changes to track all settings and store in state machine

* revert one more change

* force setting_type and setting_name to lowercase to make it easier to understand how to make service call

* make service calls even simpler by attempting to transform certain parameters as much as possible
2020-08-06 22:43:03 -04:00
Austin Drummond 937d993a67 Expose video doorbell button state to HomeKit (#38617) 2020-08-06 17:47:39 -05:00
Aidan Timson 8fe11fec04 Improve the OVO Energy integration (#38598)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-06 20:43:42 +02:00
Ziv ae40f87a5c Add events to Dynalite platform (#38583)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-06 20:40:54 +02:00
Pascal Vizeli fd52ff531d Remove wrong update per core design on ZHA (#38599) 2020-08-06 13:02:32 -04:00
Kendell R 0cdd47b014 Change http to auto for cast media image url (#38242)
* Change http to auto

* Update media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Update test_media_player.py

* Format
2020-08-06 17:21:45 +02:00
DelusionalAI 988d3e9373 Add node firmware to ozw device registry (#38330) 2020-08-06 16:50:51 +02:00
Joakim Plate 39e6bca682 Support Next/Previous for InputSelector (#38378)
* Support Next/Previous for InputSelector

* Update homeassistant/components/google_assistant/trait.py

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

* Adjust to match new version of _next_selected

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2020-08-06 15:58:26 +02:00
starkillerOG aaad986002 Improve Xioami Aqara zeroconf discovery handling (#37469)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-08-06 12:54:18 +02:00
Paulus Schoutsen 95835326f3 Do not print warning when command line switch queries off (#38591) 2020-08-06 12:36:59 +02:00
Markus Bong e3e9ad1342 Add devolo blinds devices (#36597)
* add support for devolo blinds

* correct internal sync function

* correct naming

* fix R1719 in line 73:15

* remove 'break point' print

* simplified _sync check

* change comment

* change log msg
2020-08-06 12:14:39 +02:00
Dave Clarke 20e85e1191 Add support for Philips Hue Smart Button (#38555)
* Add support for Philips Hue Smart Button

* Fix linting with trailing commas

* Update to correct deconz and hue model names/IDs
2020-08-06 11:40:50 +02:00
Quentame 21f4d694bb Remove Linky integration (#38565) 2020-08-06 11:18:05 +02:00
Erik Montnemery 4ed1f8023b Suppress MQTT discovery updates without changes (#38568) 2020-08-06 10:43:47 +02:00
Pascal Vizeli 896bdbff8f Revert "Add a timeout for async_add_entities (#38474)" (#38584)
This reverts commit 7590af3930.
2020-08-06 09:32:42 +02:00
Martin Hjelmare 9d9426f24c Fix missing rfxtrx strings (#38570)
* Fix missing rfxtrx strings

* Clean
2020-08-06 08:32:53 +02:00
Jeff Irion 970c0e7594 Bump androidtv to 0.0.48 and pure-python-adb to 0.3.0.dev0 (#38578) 2020-08-06 06:02:28 +02:00
HomeAssistant Azure e32a57ce48 [ci skip] Translation update 2020-08-06 00:02:06 +00:00
Paulus Schoutsen f037feaebc Handle non-existing translations in clean script (#38574) 2020-08-06 01:49:52 +02:00
3884 changed files with 108584 additions and 27529 deletions
+70 -28
View File
@@ -8,10 +8,6 @@ omit =
homeassistant/scripts/*.py
# omit pieces of code that rely on external devices being present
homeassistant/components/accuweather/__init__.py
homeassistant/components/accuweather/const.py
homeassistant/components/accuweather/sensor.py
homeassistant/components/accuweather/weather.py
homeassistant/components/acer_projector/switch.py
homeassistant/components/actiontec/device_tracker.py
homeassistant/components/acmeda/__init__.py
@@ -29,6 +25,7 @@ omit =
homeassistant/components/ads/*
homeassistant/components/aftership/sensor.py
homeassistant/components/agent_dvr/__init__.py
homeassistant/components/agent_dvr/alarm_control_panel.py
homeassistant/components/agent_dvr/camera.py
homeassistant/components/agent_dvr/const.py
homeassistant/components/agent_dvr/helpers.py
@@ -36,7 +33,11 @@ omit =
homeassistant/components/airvisual/air_quality.py
homeassistant/components/airvisual/sensor.py
homeassistant/components/aladdin_connect/cover.py
homeassistant/components/alarmdecoder/*
homeassistant/components/alarmdecoder/__init__.py
homeassistant/components/alarmdecoder/alarm_control_panel.py
homeassistant/components/alarmdecoder/binary_sensor.py
homeassistant/components/alarmdecoder/const.py
homeassistant/components/alarmdecoder/sensor.py
homeassistant/components/alpha_vantage/sensor.py
homeassistant/components/amazon_polly/tts.py
homeassistant/components/ambiclimate/climate.py
@@ -103,11 +104,11 @@ omit =
homeassistant/components/braviatv/__init__.py
homeassistant/components/braviatv/const.py
homeassistant/components/braviatv/media_player.py
homeassistant/components/broadlink/__init__.py
homeassistant/components/broadlink/const.py
homeassistant/components/broadlink/device.py
homeassistant/components/broadlink/remote.py
homeassistant/components/broadlink/sensor.py
homeassistant/components/broadlink/switch.py
homeassistant/components/broadlink/updater.py
homeassistant/components/brottsplatskartan/sensor.py
homeassistant/components/browser/*
homeassistant/components/brunt/cover.py
@@ -120,7 +121,6 @@ omit =
homeassistant/components/buienradar/util.py
homeassistant/components/buienradar/weather.py
homeassistant/components/caldav/calendar.py
homeassistant/components/canary/alarm_control_panel.py
homeassistant/components/canary/camera.py
homeassistant/components/cast/*
homeassistant/components/cert_expiry/helper.py
@@ -169,7 +169,9 @@ omit =
homeassistant/components/deutsche_bahn/sensor.py
homeassistant/components/devolo_home_control/__init__.py
homeassistant/components/devolo_home_control/binary_sensor.py
homeassistant/components/devolo_home_control/climate.py
homeassistant/components/devolo_home_control/const.py
homeassistant/components/devolo_home_control/cover.py
homeassistant/components/devolo_home_control/devolo_device.py
homeassistant/components/devolo_home_control/devolo_multi_level_switch.py
homeassistant/components/devolo_home_control/light.py
@@ -221,7 +223,6 @@ omit =
homeassistant/components/emby/media_player.py
homeassistant/components/emoncms/sensor.py
homeassistant/components/emoncms_history/*
homeassistant/components/emulated_hue/upnp.py
homeassistant/components/enigma2/media_player.py
homeassistant/components/enocean/__init__.py
homeassistant/components/enocean/binary_sensor.py
@@ -268,7 +269,9 @@ omit =
homeassistant/components/firmata/board.py
homeassistant/components/firmata/const.py
homeassistant/components/firmata/entity.py
homeassistant/components/firmata/light.py
homeassistant/components/firmata/pin.py
homeassistant/components/firmata/sensor.py
homeassistant/components/firmata/switch.py
homeassistant/components/fitbit/sensor.py
homeassistant/components/fixer/sensor.py
@@ -309,8 +312,6 @@ omit =
homeassistant/components/gc100/*
homeassistant/components/geniushub/*
homeassistant/components/geizhals/sensor.py
homeassistant/components/gios/__init__.py
homeassistant/components/gios/air_quality.py
homeassistant/components/github/sensor.py
homeassistant/components/gitlab_ci/sensor.py
homeassistant/components/gitter/sensor.py
@@ -319,6 +320,8 @@ omit =
homeassistant/components/glances/sensor.py
homeassistant/components/gntp/notify.py
homeassistant/components/goalfeed/*
homeassistant/components/goalzero/__init__.py
homeassistant/components/goalzero/binary_sensor.py
homeassistant/components/google/*
homeassistant/components/google_cloud/tts.py
homeassistant/components/google_maps/device_tracker.py
@@ -373,6 +376,7 @@ omit =
homeassistant/components/hunterdouglas_powerview/sensor.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hydrawise/*
@@ -397,7 +401,17 @@ omit =
homeassistant/components/ihc/*
homeassistant/components/imap/sensor.py
homeassistant/components/imap_email_content/sensor.py
homeassistant/components/insteon/*
homeassistant/components/insteon/binary_sensor.py
homeassistant/components/insteon/climate.py
homeassistant/components/insteon/const.py
homeassistant/components/insteon/cover.py
homeassistant/components/insteon/fan.py
homeassistant/components/insteon/insteon_entity.py
homeassistant/components/insteon/ipdb.py
homeassistant/components/insteon/light.py
homeassistant/components/insteon/schemas.py
homeassistant/components/insteon/switch.py
homeassistant/components/insteon/utils.py
homeassistant/components/incomfort/*
homeassistant/components/intesishome/*
homeassistant/components/ios/*
@@ -440,6 +454,7 @@ omit =
homeassistant/components/knx/climate.py
homeassistant/components/knx/cover.py
homeassistant/components/kodi/__init__.py
homeassistant/components/kodi/browse_media.py
homeassistant/components/kodi/const.py
homeassistant/components/kodi/media_player.py
homeassistant/components/kodi/notify.py
@@ -471,7 +486,8 @@ omit =
homeassistant/components/london_underground/sensor.py
homeassistant/components/loopenergy/sensor.py
homeassistant/components/luci/device_tracker.py
homeassistant/components/luftdaten/*
homeassistant/components/luftdaten/__init__.py
homeassistant/components/luftdaten/sensor.py
homeassistant/components/lupusec/*
homeassistant/components/lutron/*
homeassistant/components/lutron_caseta/__init__.py
@@ -523,7 +539,9 @@ omit =
homeassistant/components/mjpeg/camera.py
homeassistant/components/mobile_app/*
homeassistant/components/mochad/*
homeassistant/components/modbus/*
homeassistant/components/modbus/climate.py
homeassistant/components/modbus/cover.py
homeassistant/components/modbus/switch.py
homeassistant/components/modem_callerid/sensor.py
homeassistant/components/mpchc/media_player.py
homeassistant/components/mpd/media_player.py
@@ -581,14 +599,17 @@ omit =
homeassistant/components/nuki/lock.py
homeassistant/components/nut/sensor.py
homeassistant/components/nx584/alarm_control_panel.py
homeassistant/components/nzbget/__init__.py
homeassistant/components/nzbget/sensor.py
homeassistant/components/nzbget/coordinator.py
homeassistant/components/obihai/*
homeassistant/components/octoprint/*
homeassistant/components/oem/climate.py
homeassistant/components/oasa_telematics/sensor.py
homeassistant/components/ohmconnect/sensor.py
homeassistant/components/ombi/*
homeassistant/components/omnilogic/__init__.py
homeassistant/components/omnilogic/common.py
homeassistant/components/omnilogic/sensor.py
homeassistant/components/onewire/const.py
homeassistant/components/onewire/sensor.py
homeassistant/components/onkyo/media_player.py
homeassistant/components/onvif/__init__.py
@@ -617,6 +638,9 @@ omit =
homeassistant/components/openuv/sensor.py
homeassistant/components/openweathermap/sensor.py
homeassistant/components/openweathermap/weather.py
homeassistant/components/openweathermap/forecast_update_coordinator.py
homeassistant/components/openweathermap/weather_update_coordinator.py
homeassistant/components/openweathermap/abstract_owm_sensor.py
homeassistant/components/opnsense/*
homeassistant/components/opple/light.py
homeassistant/components/orangepi_gpio/*
@@ -647,19 +671,16 @@ omit =
homeassistant/components/plaato/*
homeassistant/components/plex/media_player.py
homeassistant/components/plex/sensor.py
homeassistant/components/plugwise/__init__.py
homeassistant/components/plugwise/binary_sensor.py
homeassistant/components/plugwise/climate.py
homeassistant/components/plugwise/sensor.py
homeassistant/components/plugwise/switch.py
homeassistant/components/plum_lightpad/light.py
homeassistant/components/pocketcasts/sensor.py
homeassistant/components/point/*
homeassistant/components/poolsense/__init__.py
homeassistant/components/poolsense/sensor.py
homeassistant/components/poolsense/binary_sensor.py
homeassistant/components/prezzibenzina/sensor.py
homeassistant/components/proliphix/climate.py
homeassistant/components/progettihwsw/__init__.py
homeassistant/components/progettihwsw/binary_sensor.py
homeassistant/components/progettihwsw/switch.py
homeassistant/components/prometheus/*
homeassistant/components/prowl/notify.py
homeassistant/components/proxmoxve/*
@@ -711,6 +732,10 @@ omit =
homeassistant/components/roomba/roomba.py
homeassistant/components/roomba/sensor.py
homeassistant/components/roomba/vacuum.py
homeassistant/components/roon/__init__.py
homeassistant/components/roon/const.py
homeassistant/components/roon/media_player.py
homeassistant/components/roon/server.py
homeassistant/components/route53/*
homeassistant/components/rova/sensor.py
homeassistant/components/rpi_camera/*
@@ -735,7 +760,6 @@ omit =
homeassistant/components/sensehat/light.py
homeassistant/components/sensehat/sensor.py
homeassistant/components/sensibo/climate.py
homeassistant/components/sentry/__init__.py
homeassistant/components/serial/sensor.py
homeassistant/components/serial_pm/sensor.py
homeassistant/components/sesame/lock.py
@@ -743,6 +767,13 @@ omit =
homeassistant/components/seventeentrack/sensor.py
homeassistant/components/shiftr/*
homeassistant/components/shodan/sensor.py
homeassistant/components/shelly/__init__.py
homeassistant/components/shelly/binary_sensor.py
homeassistant/components/shelly/cover.py
homeassistant/components/shelly/entity.py
homeassistant/components/shelly/light.py
homeassistant/components/shelly/sensor.py
homeassistant/components/shelly/switch.py
homeassistant/components/sht31/sensor.py
homeassistant/components/sigfox/sensor.py
homeassistant/components/simplepush/notify.py
@@ -787,6 +818,7 @@ omit =
homeassistant/components/spc/*
homeassistant/components/speedtestdotnet/*
homeassistant/components/spider/*
homeassistant/components/splunk/*
homeassistant/components/spotcrime/sensor.py
homeassistant/components/spotify/__init__.py
homeassistant/components/spotify/media_player.py
@@ -801,7 +833,8 @@ omit =
homeassistant/components/streamlabswater/*
homeassistant/components/suez_water/*
homeassistant/components/supervisord/sensor.py
homeassistant/components/surepetcare/*.py
homeassistant/components/surepetcare/__init__.py
homeassistant/components/surepetcare/sensor.py
homeassistant/components/swiss_hydrological_data/sensor.py
homeassistant/components/swiss_public_transport/sensor.py
homeassistant/components/swisscom/device_tracker.py
@@ -813,7 +846,9 @@ omit =
homeassistant/components/synology_chat/notify.py
homeassistant/components/synology_dsm/__init__.py
homeassistant/components/synology_dsm/binary_sensor.py
homeassistant/components/synology_dsm/camera.py
homeassistant/components/synology_dsm/sensor.py
homeassistant/components/synology_dsm/switch.py
homeassistant/components/synology_srm/device_tracker.py
homeassistant/components/syslog/notify.py
homeassistant/components/systemmonitor/sensor.py
@@ -827,7 +862,13 @@ omit =
homeassistant/components/ted5000/sensor.py
homeassistant/components/telegram/notify.py
homeassistant/components/telegram_bot/*
homeassistant/components/tellduslive/*
homeassistant/components/tellduslive/__init__.py
homeassistant/components/tellduslive/binary_sensor.py
homeassistant/components/tellduslive/cover.py
homeassistant/components/tellduslive/entry.py
homeassistant/components/tellduslive/light.py
homeassistant/components/tellduslive/sensor.py
homeassistant/components/tellduslive/switch.py
homeassistant/components/tellstick/*
homeassistant/components/telnet/switch.py
homeassistant/components/temper/sensor.py
@@ -846,7 +887,9 @@ omit =
homeassistant/components/thingspeak/*
homeassistant/components/thinkingcleaner/*
homeassistant/components/thomson/device_tracker.py
homeassistant/components/tibber/*
homeassistant/components/tibber/__init__.py
homeassistant/components/tibber/notify.py
homeassistant/components/tibber/sensor.py
homeassistant/components/tikteck/light.py
homeassistant/components/tile/__init__.py
homeassistant/components/tile/device_tracker.py
@@ -921,6 +964,7 @@ omit =
homeassistant/components/vesync/__init__.py
homeassistant/components/vesync/common.py
homeassistant/components/vesync/const.py
homeassistant/components/vesync/fan.py
homeassistant/components/vesync/switch.py
homeassistant/components/viaggiatreno/sensor.py
homeassistant/components/vicare/*
@@ -1006,11 +1050,9 @@ omit =
homeassistant/components/zhong_hong/climate.py
homeassistant/components/xbee/*
homeassistant/components/ziggo_mediabox_xl/media_player.py
homeassistant/components/zoneminder/*
homeassistant/components/supla/*
homeassistant/components/zwave/util.py
homeassistant/components/ozw/__init__.py
homeassistant/components/ozw/discovery.py
homeassistant/components/ozw/entity.py
homeassistant/components/ozw/services.py
+1 -1
View File
@@ -16,7 +16,7 @@
<!--
Provide details about the versions you are using, which helps us to reproduce
and find the issue quicker. Version information is found in the
Home Assistant frontend: Developer tools -> Info.
Home Assistant frontend: Configuration -> Info.
-->
- Home Assistant Core release with the issue:
+1 -1
View File
@@ -20,7 +20,7 @@ about: Report an issue with Home Assistant Core
<!--
Provide details about the versions you are using, which helps us to reproduce
and find the issue quicker. Version information is found in the
Home Assistant frontend: Developer tools -> Info.
Home Assistant frontend: Configuration -> Info.
-->
- Home Assistant Core release with the issue:
+25 -2
View File
@@ -13,7 +13,7 @@
## Proposed change
<!--
<!--
Describe the big picture of your changes here to communicate to the
maintainers why we should accept this pull request. If it fixes a bug
or resolves a feature request, be sure to link to that issue in the
@@ -24,7 +24,7 @@
## Type of change
<!--
What type of change does your PR introduce to Home Assistant?
NOTE: Please, check only 1! box!
NOTE: Please, check only 1! box!
If your PR requires multiple boxes to be checked, you'll most likely need to
split it into multiple PRs. This makes things easier and faster to code review.
-->
@@ -98,6 +98,29 @@ The integration reached or maintains the following [Integration Quality Scale][q
- [ ] 🥇 Gold
- [ ] 🏆 Platinum
<!--
This project is very active and we have a high turnover of pull requests.
Unfortunately, the number of incoming pull requests is higher than what our
reviewers can review and merge so there is a long backlog of pull requests
waiting for review. You can help here!
By reviewing another pull request, you will help raise the code quality of
that pull request and the final review will be faster. This way the general
pace of pull request reviews will go up and your wait time will go down.
When picking a pull request to review, try to choose one that hasn't yet
been reviewed.
Thanks for helping out!
-->
To help with the load of incoming pull requests:
- [ ] I have reviewed two other [open pull requests][prs] in this repository.
[prs]: https://github.com/home-assistant/core/pulls?q=is%3Aopen+is%3Apr+-author%3A%40me+-draft%3Atrue+-label%3Awaiting-for-upstream+sort%3Acreated-asc+-review%3Aapproved
<!--
Thank you for contributing <3
+98 -100
View File
@@ -10,6 +10,7 @@ on:
pull_request: ~
env:
CACHE_VERSION: 1
DEFAULT_PYTHON: 3.7
PRE_COMMIT_HOME: ~/.cache/pre-commit
@@ -24,7 +25,7 @@ jobs:
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
@@ -33,34 +34,31 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
restore-keys: |
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements_test.txt') }}-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements_test.txt') }}-
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
pip install -U pip==20.1.1 setuptools
pip install -U pip setuptools
pip install -r requirements.txt -r requirements_test.txt
# Uninstalling typing as a workaround. Eventually we should make sure
# all our dependencies drop typing.
# Find offending deps with `pipdeptree -r -p typing`
pip uninstall -y typing
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v2
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
restore-keys: |
${{ runner.os }}-pre-commit-
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-
- name: Install pre-commit dependencies
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
@@ -75,7 +73,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -85,8 +83,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -100,7 +99,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -119,7 +118,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -129,8 +128,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -144,7 +144,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -163,7 +163,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -173,8 +173,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -188,7 +189,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -229,7 +230,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -239,8 +240,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -254,7 +256,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -276,7 +278,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -286,8 +288,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -301,7 +304,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -323,7 +326,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -333,8 +336,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -348,7 +352,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -367,7 +371,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -377,8 +381,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -392,7 +397,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -414,7 +419,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -424,8 +429,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -439,7 +445,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -469,7 +475,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -479,8 +485,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -494,7 +501,7 @@ jobs:
with:
path: ${{ env.PRE_COMMIT_HOME }}
key: |
${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Fail job if cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
@@ -511,24 +518,24 @@ jobs:
hassfest:
name: Check hassfest
runs-on: ubuntu-latest
needs: prepare-base
needs: prepare-tests
strategy:
matrix:
python-version: [3.7]
container: homeassistant/ci-azure:${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -538,7 +545,7 @@ jobs:
- name: Run hassfest
run: |
. venv/bin/activate
python -m script.hassfest --action validate
python -m script.hassfest --requirements --action validate
gen-requirements-all:
name: Check all requirements
@@ -548,7 +555,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v2.1.1
uses: actions/setup-python@v2.1.2
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -558,8 +565,9 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version
}}-${{ hashFiles('requirements.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
steps.python.outputs.python-version }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
@@ -582,34 +590,28 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-venv-${{ matrix.python-version }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
restore-keys: |
${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}
${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}
${{ runner.os }}-venv-${{ matrix.python-version }}-
- name:
Create full Python ${{ matrix.python-version }} virtual environment
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}-${{ hashFiles('requirements_all.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('requirements_test.txt') }}
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{ matrix.python-version }}-
- name: Create full Python ${{ matrix.python-version }} virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
pip install -U pip==20.1.1 setuptools wheel
pip install -U pip setuptools wheel
pip install -r requirements_all.txt
pip install -r requirements_test.txt
# Uninstalling typing as a workaround. Eventually we should make sure
# all our dependencies drop typing.
# Find offending deps with `pipdeptree -r -p typing`
pip uninstall -y typing
pip install -e .
pylint:
@@ -623,16 +625,15 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-venv-${{ matrix.python-version }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -658,16 +659,15 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-venv-${{ matrix.python-version }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -695,16 +695,15 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-venv-${{ matrix.python-version }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -737,7 +736,7 @@ jobs:
-p no:sugar \
tests
- name: Upload coverage artifact
uses: actions/upload-artifact@v2.1.3
uses: actions/upload-artifact@v2.1.4
with:
name: coverage-${{ matrix.python-version }}-group${{ matrix.group }}
path: .coverage
@@ -756,16 +755,15 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v2
- name:
Restore full Python ${{ matrix.python-version }} virtual environment
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v2
with:
path: venv
key: >-
${{ runner.os }}-venv-${{ matrix.python-version }}-${{
hashFiles('requirements_test.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
${{ env.CACHE_VERSION}}-${{ runner.os }}-venv-${{
matrix.python-version }}-${{ hashFiles('requirements_test.txt')
}}-${{ hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}
- name: Fail job if Python cache restore failed
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -781,4 +779,4 @@ jobs:
coverage report --fail-under=94
coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1.0.12
uses: codecov/codecov-action@v1.0.13
+9 -9
View File
@@ -1,11 +1,11 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.3.0
rev: v2.7.2
hooks:
- id: pyupgrade
args: [--py37-plus]
- repo: https://github.com/psf/black
rev: 19.10b0
rev: 20.8b1
hooks:
- id: black
args:
@@ -13,11 +13,11 @@ repos:
- --quiet
files: ^((homeassistant|script|tests)/.+)?[^/]+\.py$
- repo: https://github.com/codespell-project/codespell
rev: v1.16.0
rev: v1.17.1
hooks:
- id: codespell
args:
- --ignore-words-list=hass,alot,datas,dof,dur,farenheit,hist,iff,ines,ist,lightsensor,mut,nd,pres,referer,ser,serie,te,technik,ue,uint,visability,wan,wanna,withing
- --ignore-words-list=hass,alot,datas,dof,dur,farenheit,hist,iff,ines,ist,lightsensor,mut,nd,pres,referer,ser,serie,te,technik,ue,uint,visability,wan,wanna,withing,iam,incomfort
- --skip="./.*,*.csv,*.json"
- --quiet-level=2
exclude_types: [csv, json]
@@ -27,7 +27,7 @@ repos:
- id: flake8
additional_dependencies:
- flake8-docstrings==1.5.0
- pydocstyle==5.0.2
- pydocstyle==5.1.1
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/bandit
rev: 1.6.2
@@ -38,12 +38,12 @@ repos:
- --format=custom
- --configfile=tests/bandit.yaml
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/pre-commit/mirrors-isort
rev: v4.3.21
- repo: https://github.com/PyCQA/isort
rev: 5.5.3
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
rev: v3.2.0
hooks:
- id: check-executables-have-shebangs
stages: [manual]
@@ -54,7 +54,7 @@ repos:
- --branch=master
- --branch=rc
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.23.0
rev: v1.24.2
hooks:
- id: yamllint
- repo: https://github.com/prettier/prettier
+3 -1
View File
@@ -2,6 +2,7 @@ dist: bionic
addons:
apt:
packages:
- ffmpeg
- libudev-dev
- libavformat-dev
- libavcodec-dev
@@ -30,7 +31,8 @@ jobs:
- python: "3.7.1"
env: TOXENV=lint
- python: "3.7.1"
env: TOXENV=pylint PYLINT_ARGS=--jobs=0 TRAVIS_WAIT=30
# PYLINT_ARGS=--jobs=0 disabled for now: https://github.com/PyCQA/pylint/issues/3584
env: TOXENV=pylint TRAVIS_WAIT=30
- python: "3.7.1"
env: TOXENV=typing
+44 -16
View File
@@ -102,11 +102,14 @@ homeassistant/components/digital_ocean/* @fabaff
homeassistant/components/directv/* @ctalkington
homeassistant/components/discogs/* @thibmaek
homeassistant/components/doorbird/* @oblogic7 @bdraco
homeassistant/components/dsmr/* @Robbie1221
homeassistant/components/dsmr_reader/* @depl0y
homeassistant/components/dunehd/* @bieniu
homeassistant/components/dwd_weather_warnings/* @runningman84 @stephan192 @Hummel95
homeassistant/components/dweet/* @fabaff
homeassistant/components/dynalite/* @ziv1234
homeassistant/components/dyson/* @etheralm
homeassistant/components/eafm/* @Jc2k
homeassistant/components/ecobee/* @marthoc
homeassistant/components/ecovacs/* @OverloadUT
homeassistant/components/edl21/* @mtdcr
@@ -117,6 +120,7 @@ homeassistant/components/elkm1/* @gwww @bdraco
homeassistant/components/elv/* @majuss
homeassistant/components/emby/* @mezz64
homeassistant/components/emoncms/* @borpin
homeassistant/components/emulated_kasa/* @kbickar
homeassistant/components/enigma2/* @fbradyirl
homeassistant/components/enocean/* @bdurrer
homeassistant/components/entur_public_transport/* @hfurubotten
@@ -134,6 +138,7 @@ homeassistant/components/filter/* @dgomes
homeassistant/components/firmata/* @DaAwesomeP
homeassistant/components/fixer/* @fabaff
homeassistant/components/flick_electric/* @ZephireNZ
homeassistant/components/flo/* @dmulcahey
homeassistant/components/flock/* @fabaff
homeassistant/components/flume/* @ChrisMandich @bdraco
homeassistant/components/flunearyou/* @bachya
@@ -152,6 +157,7 @@ homeassistant/components/geonetnz_volcano/* @exxamalte
homeassistant/components/gios/* @bieniu
homeassistant/components/gitter/* @fabaff
homeassistant/components/glances/* @fabaff @engrbm87
homeassistant/components/goalzero/* @tkdrob
homeassistant/components/gogogate2/* @vangorra
homeassistant/components/google_assistant/* @home-assistant/cloud
homeassistant/components/google_cloud/* @lufton
@@ -164,6 +170,7 @@ homeassistant/components/growatt_server/* @indykoning
homeassistant/components/guardian/* @bachya
homeassistant/components/harmony/* @ehendrix23 @bramkragten @bdraco
homeassistant/components/hassio/* @home-assistant/hass-io
homeassistant/components/hdmi_cec/* @newAM
homeassistant/components/heatmiser/* @andylockran
homeassistant/components/heos/* @andrewsayre
homeassistant/components/here_travel_time/* @eifinger
@@ -188,10 +195,12 @@ homeassistant/components/humidifier/* @home-assistant/core @Shulyaka
homeassistant/components/hunterdouglas_powerview/* @bdraco
homeassistant/components/hvv_departures/* @vigonotion
homeassistant/components/hydrawise/* @ptcryan
homeassistant/components/hyperion/* @dermotduffy
homeassistant/components/iammeter/* @lewei50
homeassistant/components/iaqualink/* @flz
homeassistant/components/icloud/* @Quentame
homeassistant/components/ign_sismologia/* @exxamalte
homeassistant/components/image/* @home-assistant/core
homeassistant/components/incomfort/* @zxdavb
homeassistant/components/influxdb/* @fabaff @mdegat01
homeassistant/components/input_boolean/* @home-assistant/core
@@ -219,8 +228,8 @@ homeassistant/components/keba/* @dannerph
homeassistant/components/keenetic_ndms2/* @foxel
homeassistant/components/kef/* @basnijholt
homeassistant/components/keyboard_remote/* @bendavid
homeassistant/components/knx/* @Julius2342
homeassistant/components/kodi/* @armills
homeassistant/components/knx/* @Julius2342 @farmio @marvin-w
homeassistant/components/kodi/* @OnFreund @cgtobi
homeassistant/components/konnected/* @heythisisnate @kit-klein
homeassistant/components/lametric/* @robbiet480
homeassistant/components/launch_library/* @ludeeus
@@ -230,8 +239,9 @@ homeassistant/components/linux_battery/* @fabaff
homeassistant/components/local_ip/* @issacg
homeassistant/components/logger/* @home-assistant/core
homeassistant/components/logi_circle/* @evanjd
homeassistant/components/loopenergy/* @pavoni
homeassistant/components/lovelace/* @home-assistant/frontend
homeassistant/components/luci/* @fbradyirl @mzdrale
homeassistant/components/luci/* @mzdrale
homeassistant/components/luftdaten/* @fabaff
homeassistant/components/lupusec/* @majuss
homeassistant/components/lutron/* @JonGilmore
@@ -239,21 +249,22 @@ homeassistant/components/lutron_caseta/* @swails
homeassistant/components/mastodon/* @fabaff
homeassistant/components/matrix/* @tinloaf
homeassistant/components/mcp23017/* @jardiamj
homeassistant/components/media_source/* @hunterjm
homeassistant/components/mediaroom/* @dgomes
homeassistant/components/melcloud/* @vilppuvuorinen
homeassistant/components/melissa/* @kennedyshead
homeassistant/components/met/* @danielhiversen
homeassistant/components/met/* @danielhiversen @thimic
homeassistant/components/meteo_france/* @hacf-fr @oncleben31 @Quentame
homeassistant/components/meteoalarm/* @rolfberkenbosch
homeassistant/components/metoffice/* @MrHarcombe
homeassistant/components/miflora/* @danielhiversen @ChristianKuehnel
homeassistant/components/miflora/* @danielhiversen @ChristianKuehnel @basnijholt
homeassistant/components/mikrotik/* @engrbm87
homeassistant/components/mill/* @danielhiversen
homeassistant/components/min_max/* @fabaff
homeassistant/components/minecraft_server/* @elmurato
homeassistant/components/minio/* @tkislan
homeassistant/components/mobile_app/* @robbiet480
homeassistant/components/modbus/* @adamchengtkc @janiversen
homeassistant/components/modbus/* @adamchengtkc @janiversen @vzahradnik
homeassistant/components/monoprice/* @etsinko @OnFreund
homeassistant/components/moon/* @fabaff
homeassistant/components/mpd/* @fabaff
@@ -272,10 +283,12 @@ homeassistant/components/netdata/* @fabaff
homeassistant/components/nexia/* @ryannazaretian @bdraco
homeassistant/components/nextbus/* @vividboarder
homeassistant/components/nextcloud/* @meichthys
homeassistant/components/nightscout/* @marciogranzotto
homeassistant/components/nilu/* @hfurubotten
homeassistant/components/nissan_leaf/* @filcole
homeassistant/components/nmbs/* @thibmaek
homeassistant/components/no_ip/* @fabaff
homeassistant/components/noaa_tides/* @jdelaney72
homeassistant/components/notify/* @home-assistant/core
homeassistant/components/notify_events/* @matrozov @papajojo
homeassistant/components/notion/* @bachya
@@ -290,6 +303,7 @@ homeassistant/components/nzbget/* @chriscla
homeassistant/components/obihai/* @dshokouhi
homeassistant/components/ohmconnect/* @robbiet480
homeassistant/components/ombi/* @larssont
homeassistant/components/omnilogic/* @oliver84 @djtimca @gentoosu
homeassistant/components/onboarding/* @home-assistant/core
homeassistant/components/onewire/* @garbled1
homeassistant/components/onvif/* @hunterjm
@@ -297,7 +311,7 @@ homeassistant/components/openerz/* @misialq
homeassistant/components/opengarage/* @danielhiversen
homeassistant/components/opentherm_gw/* @mvn23
homeassistant/components/openuv/* @bachya
homeassistant/components/openweathermap/* @fabaff
homeassistant/components/openweathermap/* @fabaff @freekode
homeassistant/components/opnsense/* @mtreinish
homeassistant/components/orangepi_gpio/* @pascallj
homeassistant/components/oru/* @bvlaicu
@@ -320,6 +334,7 @@ homeassistant/components/plum_lightpad/* @ColinHarrington @prystupa
homeassistant/components/point/* @fredrike
homeassistant/components/poolsense/* @haemishkyd
homeassistant/components/powerwall/* @bdraco @jrester
homeassistant/components/progettihwsw/* @ardaseremet
homeassistant/components/prometheus/* @knyar
homeassistant/components/proxmoxve/* @k4ds3 @jhollowe
homeassistant/components/ps4/* @ktnrg45
@@ -338,12 +353,16 @@ homeassistant/components/raincloud/* @vanstinator
homeassistant/components/rainforest_eagle/* @gtdiehl @jcalbert
homeassistant/components/rainmachine/* @bachya
homeassistant/components/random/* @fabaff
homeassistant/components/rejseplanen/* @DarkFox
homeassistant/components/repetier/* @MTrab
homeassistant/components/rfxtrx/* @danielhiversen @elupus
homeassistant/components/ring/* @balloob
homeassistant/components/risco/* @OnFreund
homeassistant/components/rmvtransport/* @cgtobi
homeassistant/components/roku/* @ctalkington
homeassistant/components/roomba/* @pschmitt @cyr-ius @shenxn
homeassistant/components/roon/* @pavoni
homeassistant/components/rpi_power/* @shenxn @swetoast
homeassistant/components/safe_mode/* @home-assistant/core
homeassistant/components/saj/* @fredericvl
homeassistant/components/salt/* @bjornorri
@@ -355,11 +374,13 @@ homeassistant/components/script/* @home-assistant/core
homeassistant/components/search/* @home-assistant/core
homeassistant/components/sense/* @kbickar
homeassistant/components/sensibo/* @andrey-git
homeassistant/components/sentry/* @dcramer
homeassistant/components/sentry/* @dcramer @frenck
homeassistant/components/serial/* @fabaff
homeassistant/components/seven_segments/* @fabaff
homeassistant/components/seventeentrack/* @bachya
homeassistant/components/sharkiq/* @ajmarks
homeassistant/components/shell_command/* @home-assistant/core
homeassistant/components/shelly/* @balloob @bieniu
homeassistant/components/shiftr/* @fabaff
homeassistant/components/shodan/* @fabaff
homeassistant/components/sighthound/* @robmarkcole
@@ -371,6 +392,7 @@ homeassistant/components/sky_hub/* @rogerselwyn
homeassistant/components/slide/* @ualex73
homeassistant/components/sma/* @kellerza
homeassistant/components/smappee/* @bsmappee
homeassistant/components/smart_meter_texas/* @grahamwetzler
homeassistant/components/smarthab/* @outadoc
homeassistant/components/smartthings/* @andrewsayre
homeassistant/components/smarty/* @z0mbieprocess
@@ -383,9 +405,11 @@ homeassistant/components/soma/* @ratsept
homeassistant/components/somfy/* @tetienne
homeassistant/components/sonarr/* @ctalkington
homeassistant/components/songpal/* @rytilahti @shenxn
homeassistant/components/sonos/* @cgtobi
homeassistant/components/spaceapi/* @fabaff
homeassistant/components/speedtestdotnet/* @rohankapoorcom @engrbm87
homeassistant/components/spider/* @peternijssen
homeassistant/components/splunk/* @Bre77
homeassistant/components/spotify/* @frenck
homeassistant/components/sql/* @dgomes
homeassistant/components/squeezebox/* @rajlaud
@@ -393,7 +417,7 @@ homeassistant/components/starline/* @anonym-tsk
homeassistant/components/statistics/* @fabaff
homeassistant/components/stiebel_eltron/* @fucm
homeassistant/components/stookalert/* @fwestenberg
homeassistant/components/stream/* @hunterjm
homeassistant/components/stream/* @hunterjm @uvjustin
homeassistant/components/stt/* @pvizeli
homeassistant/components/suez_water/* @ooii
homeassistant/components/sun/* @Swamp-Ig
@@ -405,10 +429,11 @@ homeassistant/components/switchbot/* @danielhiversen
homeassistant/components/switcher_kis/* @tomerfi
homeassistant/components/switchmate/* @danielhiversen
homeassistant/components/syncthru/* @nielstron
homeassistant/components/synology_dsm/* @ProtoThis @Quentame
homeassistant/components/synology_dsm/* @hacf-fr @Quentame
homeassistant/components/synology_srm/* @aerialls
homeassistant/components/syslog/* @fabaff
homeassistant/components/tado/* @michaelarnauts @bdraco
homeassistant/components/tag/* @balloob @dmulcahey
homeassistant/components/tahoma/* @philklei
homeassistant/components/tankerkoenig/* @guillempages
homeassistant/components/tautulli/* @ludeeus
@@ -429,6 +454,7 @@ homeassistant/components/tplink/* @rytilahti
homeassistant/components/traccar/* @ludeeus
homeassistant/components/tradfri/* @ggravlingen
homeassistant/components/trafikverket_train/* @endor-force
homeassistant/components/trafikverket_weatherstation/* @endor-force
homeassistant/components/transmission/* @engrbm87 @JPHutchins
homeassistant/components/tts/* @pvizeli
homeassistant/components/tuya/* @ollo69
@@ -437,7 +463,7 @@ homeassistant/components/ubee/* @mzdrale
homeassistant/components/unifi/* @Kane610
homeassistant/components/unifiled/* @florisvdk
homeassistant/components/upb/* @gwww
homeassistant/components/upc_connect/* @pvizeli
homeassistant/components/upc_connect/* @pvizeli @fabaff
homeassistant/components/upcloud/* @scop
homeassistant/components/updater/* @home-assistant/core
homeassistant/components/upnp/* @StevenLooman
@@ -448,13 +474,14 @@ homeassistant/components/velbus/* @Cereal2nd @brefra
homeassistant/components/velux/* @Julius2342
homeassistant/components/vera/* @vangorra
homeassistant/components/versasense/* @flamm3blemuff1n
homeassistant/components/version/* @fabaff
homeassistant/components/vesync/* @markperdue @webdjoe
homeassistant/components/version/* @fabaff @ludeeus
homeassistant/components/vesync/* @markperdue @webdjoe @thegardenmonkey
homeassistant/components/vicare/* @oischinger
homeassistant/components/vilfo/* @ManneW
homeassistant/components/vivotek/* @HarlemSquirrel
homeassistant/components/vizio/* @raman325
homeassistant/components/vlc_telnet/* @rodripf
homeassistant/components/volkszaehler/* @fabaff
homeassistant/components/volumio/* @OnFreund
homeassistant/components/waqi/* @andrey-git
homeassistant/components/watson_tts/* @rutkai
@@ -462,6 +489,7 @@ homeassistant/components/weather/* @fabaff
homeassistant/components/webostv/* @bendavid
homeassistant/components/websocket_api/* @home-assistant/core
homeassistant/components/wiffi/* @mampfes
homeassistant/components/wilight/* @leofig-rj
homeassistant/components/withings/* @vangorra
homeassistant/components/wled/* @frenck
homeassistant/components/wolflink/* @adamkrol93
@@ -475,16 +503,16 @@ homeassistant/components/xiaomi_tv/* @simse
homeassistant/components/xmpp/* @fabaff @flowolf
homeassistant/components/yamaha_musiccast/* @jalmeroth
homeassistant/components/yandex_transport/* @rishatik92 @devbis
homeassistant/components/yeelight/* @rytilahti @zewelor
homeassistant/components/yeelight/* @rytilahti @zewelor @shenxn
homeassistant/components/yeelightsunflower/* @lindsaymarkward
homeassistant/components/yessssms/* @flowolf
homeassistant/components/yi/* @bachya
homeassistant/components/yr/* @danielhiversen
homeassistant/components/zeroconf/* @Kane610
homeassistant/components/zerproc/* @emlove
homeassistant/components/zha/* @dmulcahey @adminiuga
homeassistant/components/zodiac/* @JulienTant
homeassistant/components/zone/* @home-assistant/core
homeassistant/components/zoneminder/* @rohankapoorcom
homeassistant/components/zoneminder/* @rohankapoorcom @vangorra
homeassistant/components/zwave/* @home-assistant/z-wave
# Individual files
-1
View File
@@ -11,7 +11,6 @@ COPY . homeassistant/
RUN \
pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
-r homeassistant/requirements_all.txt \
&& pip3 uninstall -y typing \
&& pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
-e ./homeassistant \
&& python3 -m compileall homeassistant/homeassistant
-6
View File
@@ -166,9 +166,6 @@ stages:
. venv/bin/activate
pip install -U pip setuptools pytest-azurepipelines pytest-xdist -c homeassistant/package_constraints.txt
pip install -r requirements_test_all.txt
# This is a TEMP. Eventually we should make sure our 4 dependencies drop typing.
# Find offending deps with `pipdeptree -r -p typing`
pip uninstall -y typing
- script: |
. venv/bin/activate
pip install -e .
@@ -211,9 +208,6 @@ stages:
pip install -U pip setuptools wheel
pip install -r requirements_all.txt
pip install -r requirements_test.txt
# This is a TEMP. Eventually we should make sure our 4 dependencies drop typing.
# Find offending deps with `pipdeptree -r -p typing`
pip uninstall -y typing
- script: |
. venv/bin/activate
pip install -e .
+8 -1
View File
@@ -47,8 +47,9 @@ jobs:
- template: templates/azp-job-wheels.yaml@azure
parameters:
builderVersion: '$(versionWheels)'
builderApk: 'build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev'
builderApk: 'build-base;cmake;git;linux-headers;libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev'
builderPip: 'Cython;numpy;scikit-build'
builderEnvFile: true
skipBinary: 'aiohttp'
wheelsRequirement: 'requirements_wheels.txt'
wheelsRequirementDiff: 'requirements_diff.txt'
@@ -90,4 +91,10 @@ jobs:
sed -i "s|# bme680|bme680|g" ${requirement_file}
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
done
# Write env for build settings
(
echo "GRPC_BUILD_WITH_BORING_SSL_ASM="
echo "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1"
) > .env_file
displayName: 'Prepare requirements files for Home Assistant wheels'
+5 -5
View File
@@ -1,11 +1,11 @@
{
"image": "homeassistant/{arch}-homeassistant",
"build_from": {
"aarch64": "homeassistant/aarch64-homeassistant-base:8.2.1",
"armhf": "homeassistant/armhf-homeassistant-base:8.2.1",
"armv7": "homeassistant/armv7-homeassistant-base:8.2.1",
"amd64": "homeassistant/amd64-homeassistant-base:8.2.1",
"i386": "homeassistant/i386-homeassistant-base:8.2.1"
"aarch64": "homeassistant/aarch64-homeassistant-base:8.4.0",
"armhf": "homeassistant/armhf-homeassistant-base:8.4.0",
"armv7": "homeassistant/armv7-homeassistant-base:8.4.0",
"amd64": "homeassistant/amd64-homeassistant-base:8.4.0",
"i386": "homeassistant/i386-homeassistant-base:8.4.0"
},
"labels": {
"io.hass.type": "core"
+1 -1
View File
@@ -195,7 +195,7 @@ def closefds_osx(min_fd: int, max_fd: int) -> None:
get rid of.
"""
# pylint: disable=import-outside-toplevel
from fcntl import fcntl, F_GETFD, F_SETFD, FD_CLOEXEC
from fcntl import F_GETFD, F_SETFD, FD_CLOEXEC, fcntl
for _fd in range(min_fd, max_fd):
try:
+1 -3
View File
@@ -312,9 +312,7 @@ class AuthManager:
if provider is not None and hasattr(provider, "async_will_remove_credentials"):
# https://github.com/python/mypy/issues/1424
await provider.async_will_remove_credentials( # type: ignore
credentials
)
await provider.async_will_remove_credentials(credentials) # type: ignore
await self._store.async_remove_credentials(credentials)
+3 -1
View File
@@ -150,7 +150,9 @@ async def _load_mfa_module(hass: HomeAssistant, module_name: str) -> types.Modul
module = importlib.import_module(module_path)
except ImportError as err:
_LOGGER.error("Unable to load mfa module %s: %s", module_name, err)
raise HomeAssistantError(f"Unable to load mfa module {module_name}: {err}")
raise HomeAssistantError(
f"Unable to load mfa module {module_name}: {err}"
) from err
if hass.config.skip_pip or not hasattr(module, "REQUIREMENTS"):
return module
+4 -1
View File
@@ -48,7 +48,10 @@ class User:
)
_permissions: Optional[perm_mdl.PolicyPermissions] = attr.ib(
init=False, eq=False, order=False, default=None,
init=False,
eq=False,
order=False,
default=None,
)
@property
+1 -1
View File
@@ -72,4 +72,4 @@ class _OwnerPermissions(AbstractPermissions):
return lambda entity_id, key: True
OwnerPermissions = _OwnerPermissions() # pylint: disable=invalid-name
OwnerPermissions = _OwnerPermissions()
+4 -2
View File
@@ -5,8 +5,10 @@ import attr
if TYPE_CHECKING:
# pylint: disable=unused-import
from homeassistant.helpers import entity_registry as ent_reg # noqa: F401
from homeassistant.helpers import device_registry as dev_reg # noqa: F401
from homeassistant.helpers import ( # noqa: F401
device_registry as dev_reg,
entity_registry as ent_reg,
)
@attr.s(slots=True)
+3 -1
View File
@@ -146,7 +146,9 @@ async def load_auth_provider_module(
module = importlib.import_module(f"homeassistant.auth.providers.{provider}")
except ImportError as err:
_LOGGER.error("Unable to load auth provider %s: %s", provider, err)
raise HomeAssistantError(f"Unable to load auth provider {provider}: {err}")
raise HomeAssistantError(
f"Unable to load auth provider {provider}: {err}"
) from err
if hass.config.skip_pip or not hasattr(module, "REQUIREMENTS"):
return module
+1 -1
View File
@@ -71,7 +71,7 @@ class CommandLineAuthProvider(AuthProvider):
except OSError as err:
# happens when command doesn't exist or permission is denied
_LOGGER.error("Error while authenticating %r: %s", username, err)
raise InvalidAuthError
raise InvalidAuthError from err
if process.returncode != 0:
_LOGGER.error(
@@ -30,6 +30,16 @@ def _disallow_id(conf: Dict[str, Any]) -> Dict[str, Any]:
CONFIG_SCHEMA = vol.All(AUTH_PROVIDER_SCHEMA, _disallow_id)
@callback
def async_get_provider(hass: HomeAssistant) -> "HassAuthProvider":
"""Get the provider."""
for prv in hass.auth.auth_providers:
if prv.type == "homeassistant":
return cast(HassAuthProvider, prv)
raise RuntimeError("Provider not found")
class InvalidAuth(HomeAssistantError):
"""Raised when we encounter invalid authentication."""
@@ -235,6 +245,35 @@ class HassAuthProvider(AuthProvider):
self.data.validate_login, username, password
)
async def async_add_auth(self, username: str, password: str) -> None:
"""Call add_auth on data."""
if self.data is None:
await self.async_initialize()
assert self.data is not None
await self.hass.async_add_executor_job(self.data.add_auth, username, password)
await self.data.async_save()
async def async_remove_auth(self, username: str) -> None:
"""Call remove_auth on data."""
if self.data is None:
await self.async_initialize()
assert self.data is not None
self.data.async_remove_auth(username)
await self.data.async_save()
async def async_change_password(self, username: str, new_password: str) -> None:
"""Call change_password on data."""
if self.data is None:
await self.async_initialize()
assert self.data is not None
await self.hass.async_add_executor_job(
self.data.change_password, username, new_password
)
await self.data.async_save()
async def async_get_or_create_credentials(
self, flow_result: Dict[str, str]
) -> Credentials:
+10 -5
View File
@@ -112,7 +112,8 @@ async def async_setup_hass(
config_dict = await conf_util.async_hass_config_yaml(hass)
except HomeAssistantError as err:
_LOGGER.error(
"Failed to parse configuration.yaml: %s. Activating safe mode", err,
"Failed to parse configuration.yaml: %s. Activating safe mode",
err,
)
else:
if not is_virtual_env():
@@ -160,7 +161,8 @@ async def async_setup_hass(
http_conf = (await http.async_get_last_config(hass)) or {}
await async_from_config_dict(
{"safe_mode": {}, "http": http_conf}, hass,
{"safe_mode": {}, "http": http_conf},
hass,
)
if runtime_config.open_ui:
@@ -331,8 +333,10 @@ def async_enable_logging(
):
if log_rotate_days:
err_handler: logging.FileHandler = logging.handlers.TimedRotatingFileHandler(
err_log_path, when="midnight", backupCount=log_rotate_days
err_handler: logging.FileHandler = (
logging.handlers.TimedRotatingFileHandler(
err_log_path, when="midnight", backupCount=log_rotate_days
)
)
else:
err_handler = logging.FileHandler(err_log_path, mode="w", delay=True)
@@ -391,7 +395,8 @@ async def _async_log_pending_setups(
if remaining:
_LOGGER.warning(
"Waiting on integrations to complete setup: %s", ", ".join(remaining),
"Waiting on integrations to complete setup: %s",
", ".join(remaining),
)
+1 -1
View File
@@ -120,7 +120,7 @@ async def async_setup_entry(hass, config_entry):
except (AbodeException, ConnectTimeout, HTTPError) as ex:
LOGGER.error("Unable to connect to Abode: %s", str(ex))
raise ConfigEntryNotReady
raise ConfigEntryNotReady from ex
for platform in ABODE_PLATFORMS:
hass.async_create_task(
@@ -127,6 +127,6 @@ class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator):
InvalidApiKeyError,
RequestsExceededError,
) as error:
raise UpdateFailed(error)
raise UpdateFailed(error) from error
_LOGGER.debug("Requests remaining: %s", self.accuweather.requests_remaining)
return {**current, **{ATTR_FORECAST: forecast}}
@@ -34,7 +34,7 @@ class AccuWeatherFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
if user_input is not None:
websession = async_get_clientsession(self.hass)
try:
with timeout(10):
async with timeout(10):
accuweather = AccuWeather(
user_input[CONF_API_KEY],
websession,
+13 -13
View File
@@ -5,12 +5,13 @@ from homeassistant.const import (
LENGTH_FEET,
LENGTH_INCHES,
LENGTH_METERS,
LENGTH_MILLIMETERS,
PERCENTAGE,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
TIME_HOURS,
UNIT_PERCENTAGE,
UV_INDEX,
VOLUME_CUBIC_METERS,
)
@@ -24,7 +25,6 @@ ATTR_UNIT_METRIC = "Metric"
CONCENTRATION_PARTS_PER_CUBIC_METER = f"p/{VOLUME_CUBIC_METERS}"
COORDINATOR = "coordinator"
DOMAIN = "accuweather"
LENGTH_MILIMETERS = "mm"
MANUFACTURER = "AccuWeather, Inc."
NAME = "AccuWeather"
UNDO_UPDATE_LISTENER = "undo_update_listener"
@@ -53,15 +53,15 @@ FORECAST_SENSOR_TYPES = {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-cloudy",
ATTR_LABEL: "Cloud Cover Day",
ATTR_UNIT_METRIC: UNIT_PERCENTAGE,
ATTR_UNIT_IMPERIAL: UNIT_PERCENTAGE,
ATTR_UNIT_METRIC: PERCENTAGE,
ATTR_UNIT_IMPERIAL: PERCENTAGE,
},
"CloudCoverNight": {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-cloudy",
ATTR_LABEL: "Cloud Cover Night",
ATTR_UNIT_METRIC: UNIT_PERCENTAGE,
ATTR_UNIT_IMPERIAL: UNIT_PERCENTAGE,
ATTR_UNIT_METRIC: PERCENTAGE,
ATTR_UNIT_IMPERIAL: PERCENTAGE,
},
"Grass": {
ATTR_DEVICE_CLASS: None,
@@ -130,15 +130,15 @@ FORECAST_SENSOR_TYPES = {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-lightning",
ATTR_LABEL: "Thunderstorm Probability Day",
ATTR_UNIT_METRIC: UNIT_PERCENTAGE,
ATTR_UNIT_IMPERIAL: UNIT_PERCENTAGE,
ATTR_UNIT_METRIC: PERCENTAGE,
ATTR_UNIT_IMPERIAL: PERCENTAGE,
},
"ThunderstormProbabilityNight": {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-lightning",
ATTR_LABEL: "Thunderstorm Probability Night",
ATTR_UNIT_METRIC: UNIT_PERCENTAGE,
ATTR_UNIT_IMPERIAL: UNIT_PERCENTAGE,
ATTR_UNIT_METRIC: PERCENTAGE,
ATTR_UNIT_IMPERIAL: PERCENTAGE,
},
"Tree": {
ATTR_DEVICE_CLASS: None,
@@ -210,8 +210,8 @@ SENSOR_TYPES = {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-cloudy",
ATTR_LABEL: "Cloud Cover",
ATTR_UNIT_METRIC: UNIT_PERCENTAGE,
ATTR_UNIT_IMPERIAL: UNIT_PERCENTAGE,
ATTR_UNIT_METRIC: PERCENTAGE,
ATTR_UNIT_IMPERIAL: PERCENTAGE,
},
"DewPoint": {
ATTR_DEVICE_CLASS: DEVICE_CLASS_TEMPERATURE,
@@ -238,7 +238,7 @@ SENSOR_TYPES = {
ATTR_DEVICE_CLASS: None,
ATTR_ICON: "mdi:weather-rainy",
ATTR_LABEL: "Precipitation",
ATTR_UNIT_METRIC: LENGTH_MILIMETERS,
ATTR_UNIT_METRIC: LENGTH_MILLIMETERS,
ATTR_UNIT_IMPERIAL: LENGTH_INCHES,
},
"PressureTendency": {
@@ -2,7 +2,8 @@
"domain": "accuweather",
"name": "AccuWeather",
"documentation": "https://www.home-assistant.io/integrations/accuweather/",
"requirements": ["accuweather==0.0.9"],
"requirements": ["accuweather==0.0.11"],
"codeowners": ["@bieniu"],
"config_flow": true
"config_flow": true,
"quality_scale": "platinum"
}
+4 -28
View File
@@ -5,7 +5,7 @@ from homeassistant.const import (
CONF_NAME,
DEVICE_CLASS_TEMPERATURE,
)
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import (
ATTR_FORECAST,
@@ -48,14 +48,14 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_add_entities(sensors, False)
class AccuWeatherSensor(Entity):
class AccuWeatherSensor(CoordinatorEntity):
"""Define an AccuWeather entity."""
def __init__(self, name, kind, coordinator, forecast_day=None):
"""Initialize."""
super().__init__(coordinator)
self._name = name
self.kind = kind
self.coordinator = coordinator
self._device_class = None
self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
self._unit_system = "Metric" if self.coordinator.is_metric else "Imperial"
@@ -85,16 +85,6 @@ class AccuWeatherSensor(Entity):
"entry_type": "service",
}
@property
def should_poll(self):
"""Return the polling requirement of the entity."""
return False
@property
def available(self):
"""Return True if entity is available."""
return self.coordinator.last_update_success
@property
def state(self):
"""Return the state."""
@@ -154,11 +144,7 @@ class AccuWeatherSensor(Entity):
def device_state_attributes(self):
"""Return the state attributes."""
if self.forecast_day is not None:
if self.kind == "WindGustDay":
self._attrs["direction"] = self.coordinator.data[ATTR_FORECAST][
self.forecast_day
][self.kind]["Direction"]["English"]
elif self.kind == "WindGustNight":
if self.kind in ["WindGustDay", "WindGustNight"]:
self._attrs["direction"] = self.coordinator.data[ATTR_FORECAST][
self.forecast_day
][self.kind]["Direction"]["English"]
@@ -177,13 +163,3 @@ class AccuWeatherSensor(Entity):
def entity_registry_enabled_default(self):
"""Return if the entity should be enabled when first added to the entity registry."""
return bool(self.kind not in OPTIONAL_SENSORS)
async def async_added_to_hass(self):
"""Connect to dispatcher listening for entity data notifications."""
self.async_on_remove(
self.coordinator.async_add_listener(self.async_write_ha_state)
)
async def async_update(self):
"""Update AccuWeather entity."""
await self.coordinator.async_request_refresh()
@@ -16,7 +16,7 @@
"longitude": "Longitud",
"name": "Nom de la integraci\u00f3"
},
"description": "Si necessites ajuda amb la configuraci\u00f3, consulta: https://www.home-assistant.io/integrations/accuweather/ \n\n La previsi\u00f3 meteorol\u00f2gica no est\u00e0 habilitada de manera predeterminada. Pots activar-la en les opcions de la integraci\u00f3.",
"description": "Si necessites ajuda amb la configuraci\u00f3, consulta els seg\u00fcent enlla\u00e7: https://www.home-assistant.io/integrations/accuweather/ \n\n Alguns sensors no estan activats de manera predeterminada. Els pots activar des del registre d'entitats, despr\u00e9s de la configurraci\u00f3 de la integraci\u00f3.\n La previsi\u00f3 meteorol\u00f2gica no est\u00e0 activada de manera predeterminada. Pots activar-la en les opcions de la integraci\u00f3.",
"title": "AccuWeather"
}
}
@@ -0,0 +1,12 @@
{
"config": {
"step": {
"user": {
"data": {
"latitude": "Zem\u011bpisn\u00e1 \u0161\u00ed\u0159ka",
"longitude": "Zem\u011bpisn\u00e1 d\u00e9lka"
}
}
}
}
}
@@ -0,0 +1,13 @@
{
"config": {
"step": {
"user": {
"data": {
"latitude": "Breitengrad",
"longitude": "L\u00e4ngengrad"
},
"title": "AccuWeather"
}
}
}
}
@@ -0,0 +1,35 @@
{
"config": {
"abort": {
"single_instance_allowed": "Sidumine juba tehtud. V\u00f5imalik on ainult 1 sidumine,"
},
"error": {
"cannot_connect": "\u00dchendus eba\u00f5nnestus",
"invalid_api_key": "API v\u00f5ti on vale",
"requests_exceeded": "Accuweatheri API-le esitatud p\u00e4ringute piirarv on \u00fcletatud. Peate ootama (v\u00f5i muutma API v\u00f5tit)."
},
"step": {
"user": {
"data": {
"api_key": "API v\u00f5ti",
"latitude": "Laiuskraad",
"longitude": "Pikkuskraad",
"name": "Sidumise nimi"
},
"description": "Kui vajate seadistamisel abi vaadake siit: https://www.home-assistant.io/integrations/accuweather/ \n\n M\u00f5ni andur pole vaikimisi lubatud. P\u00e4rast sidumise seadistamist saate need \u00fcksused lubada. \n Ilmapennustus pole vaikimisi lubatud. Saate selle lubada sidumise s\u00e4tetes.",
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Ilmateade"
},
"description": "AccuWeather API tasuta versioonis toimub ilmaennustuse lubamisel andmete v\u00e4rskendamine iga 32 minuti asemel iga 64 minuti j\u00e4rel.",
"title": "AccuWeatheri valikud"
}
}
}
}
@@ -0,0 +1,35 @@
{
"config": {
"abort": {
"single_instance_allowed": "D\u00e9j\u00e0 configur\u00e9. Une seule configuration possible."
},
"error": {
"cannot_connect": "\u00c9chec de connexion",
"invalid_api_key": "Cl\u00e9 API invalide",
"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": {
"user": {
"data": {
"api_key": "Cl\u00e9 d'API",
"latitude": "Latitude",
"longitude": "Longitude",
"name": "Nom de l'int\u00e9gration"
},
"description": "Si vous avez besoin d'aide pour la configuration, consultez le site suivant : https://www.home-assistant.io/integrations/accuweather/\n\nCertains capteurs ne sont pas activ\u00e9s par d\u00e9faut. Vous pouvez les activer dans le registre des entit\u00e9s apr\u00e8s la configuration de l'int\u00e9gration.\nLes pr\u00e9visions m\u00e9t\u00e9orologiques ne sont pas activ\u00e9es par d\u00e9faut. Vous pouvez l'activer dans les options d'int\u00e9gration.",
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Pr\u00e9visions m\u00e9t\u00e9orologiques"
},
"description": "En raison des limitations de la version gratuite de la cl\u00e9 API AccuWeather, lorsque vous activez les pr\u00e9visions m\u00e9t\u00e9orologiques, les mises \u00e0 jour des donn\u00e9es seront effectu\u00e9es toutes les 64 minutes au lieu de toutes les 32 minutes.",
"title": "Options AccuWeather"
}
}
}
}
@@ -0,0 +1,9 @@
{
"config": {
"step": {
"user": {
"description": "\uad6c\uc131\uc5d0 \ub300\ud55c \ub3c4\uc6c0\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 \ub2e4\uc74c\uc744 \ucc38\uc870\ud574\uc8fc\uc138\uc694:\nhttps://www.home-assistant.io/integrations/accuweather/\n\n\uc77c\ubd80 \uc13c\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc5f0\ub3d9 \uad6c\uc131 \ud6c4 \uad6c\uc131\uc694\uc18c \ub808\uc9c0\uc2a4\ud2b8\ub9ac\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\uc77c\uae30\uc608\ubcf4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc5f0\ub3d9 \uc635\uc158\uc5d0\uc11c \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
}
}
}
}
@@ -4,9 +4,9 @@
"single_instance_allowed": "Ju\u017c skonfigurowano. Mo\u017cliwa jest tylko jedna konfiguracja."
},
"error": {
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia.",
"cannot_connect": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia",
"invalid_api_key": "Nieprawid\u0142owy klucz API.",
"requests_exceeded": "Dozwolona liczba zapyta\u0144 do interfejsu API Accuweather zosta\u0142a przekroczona. Musisz poczeka\u0107 lub zmieni\u0107 klucz API."
"requests_exceeded": "Dozwolona liczba zapyta\u0144 do interfejsu API AccuWeather zosta\u0142a przekroczona. Musisz poczeka\u0107 lub zmieni\u0107 klucz API."
},
"step": {
"user": {
@@ -0,0 +1,24 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "Chave API",
"latitude": "Latitude",
"longitude": "Longitude"
},
"title": "AccuWeather"
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Previs\u00e3o do Tempo"
},
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave da API AccuWeather, quando voc\u00ea habilita a previs\u00e3o do tempo, as atualiza\u00e7\u00f5es de dados ser\u00e3o realizadas a cada 64 minutos em vez de a cada 32 minutos."
}
}
}
}
@@ -1,8 +1,16 @@
{
"config": {
"abort": {
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"invalid_api_key": "Chave de API inv\u00e1lida"
},
"step": {
"user": {
"data": {
"api_key": "Chave de API",
"latitude": "Latitude",
"longitude": "Longitude"
}
@@ -4,7 +4,7 @@
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e."
},
"error": {
"cannot_connect": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.",
"cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f.",
"invalid_api_key": "\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API.",
"requests_exceeded": "\u041f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a API Accuweather. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043b\u044e\u0447 API."
},
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Disminuint",
"rising": "Augmentant",
"steady": "Estable"
}
}
}
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "Langev",
"rising": "T\u00f5usev",
"steady": "\u00dchtlane"
}
}
}
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "En baisse",
"rising": "En hausse",
"steady": "Stable"
}
}
}
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "R\u00e9ckleefeg",
"rising": "Erh\u00e9ijung",
"steady": "Stabil"
}
}
}
@@ -0,0 +1,9 @@
{
"state": {
"accuweather__pressure_tendency": {
"falling": "\u4e0b\u964d",
"rising": "\u4e0a\u5347",
"steady": "\u7a69\u5b9a"
}
}
}
@@ -16,7 +16,7 @@
"longitude": "\u7d93\u5ea6",
"name": "\u6574\u5408\u540d\u7a31"
},
"description": "\u5047\u5982\u4f60\u9700\u8981\u5354\u52a9\u9032\u884c\u8a2d\u5b9a\uff0c\u8acb\u53c3\u95b1\uff1ahttps://www.home-assistant.io/integrations/accuweather/\n\n\u5929\u6c23\u9810\u5831\u9810\u8a2d\u672a\u958b\u555f\u3002\u53ef\u4ee5\u65bc\u6574\u5408\u9078\u9805\u4e2d\u958b\u555f\u3002",
"description": "\u5047\u5982\u4f60\u9700\u8981\u5354\u52a9\u9032\u884c\u8a2d\u5b9a\uff0c\u8acb\u53c3\u95b1\uff1ahttps://www.home-assistant.io/integrations/accuweather/\n\n\u67d0\u4e9b\u50b3\u611f\u5668\u9810\u8a2d\u70ba\u672a\u555f\u7528\uff0c\u53ef\u4ee5\u65bc\u6574\u5408\u8a2d\u5b9a\u4e2d\u555f\u7528\u9019\u4e9b\u5be6\u9ad4\u3002\u5929\u6c23\u9810\u5831\u9810\u8a2d\u672a\u958b\u555f\u3002\u53ef\u4ee5\u65bc\u6574\u5408\u9078\u9805\u4e2d\u958b\u555f\u3002",
"title": "AccuWeather"
}
}
@@ -13,6 +13,7 @@ from homeassistant.components.weather import (
WeatherEntity,
)
from homeassistant.const import CONF_NAME, TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util.dt import utc_from_timestamp
from .const import (
@@ -37,13 +38,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_add_entities([AccuWeatherEntity(name, coordinator)], False)
class AccuWeatherEntity(WeatherEntity):
class AccuWeatherEntity(CoordinatorEntity, WeatherEntity):
"""Define an AccuWeather entity."""
def __init__(self, name, coordinator):
"""Initialize."""
super().__init__(coordinator)
self._name = name
self.coordinator = coordinator
self._attrs = {}
self._unit_system = "Metric" if self.coordinator.is_metric else "Imperial"
@@ -72,16 +73,6 @@ class AccuWeatherEntity(WeatherEntity):
"entry_type": "service",
}
@property
def should_poll(self):
"""Return the polling requirement of the entity."""
return False
@property
def available(self):
"""Return True if entity is available."""
return self.coordinator.last_update_success
@property
def condition(self):
"""Return the current condition."""
@@ -169,16 +160,6 @@ class AccuWeatherEntity(WeatherEntity):
]
return forecast
async def async_added_to_hass(self):
"""Connect to dispatcher listening for entity data notifications."""
self.async_on_remove(
self.coordinator.async_add_listener(self.async_write_ha_state)
)
async def async_update(self):
"""Update AccuWeather entity."""
await self.coordinator.async_request_refresh()
@staticmethod
def _calc_precipitation(day: dict) -> float:
"""Return sum of the precipitation."""
@@ -26,10 +26,8 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
if (
user_input is not None
and self.discovered_hubs is not None
# pylint: disable=unsupported-membership-test
and user_input["id"] in self.discovered_hubs
):
# pylint: disable=unsubscriptable-object
return await self.async_create(self.discovered_hubs[user_input["id"]])
# Already configured hosts
+2 -1
View File
@@ -37,5 +37,6 @@ async def update_devices(hass, config_entry, api):
)
if device is not None:
dev_registry.async_update_device(
device.id, name=api_item.name,
device.id,
name=api_item.name,
)
+2 -2
View File
@@ -1,5 +1,5 @@
"""Support for Acmeda Roller Blind Batteries."""
from homeassistant.const import DEVICE_CLASS_BATTERY, UNIT_PERCENTAGE
from homeassistant.const import DEVICE_CLASS_BATTERY, PERCENTAGE
from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
@@ -33,7 +33,7 @@ class AcmedaBattery(AcmedaBase):
"""Representation of a Acmeda cover device."""
device_class = DEVICE_CLASS_BATTERY
unit_of_measurement = UNIT_PERCENTAGE
unit_of_measurement = PERCENTAGE
@property
def name(self):
+2 -2
View File
@@ -11,7 +11,7 @@ from homeassistant.components.adguard.const import (
DOMAIN,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import TIME_MILLISECONDS, UNIT_PERCENTAGE
from homeassistant.const import PERCENTAGE, TIME_MILLISECONDS
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.typing import HomeAssistantType
@@ -134,7 +134,7 @@ class AdGuardHomePercentageBlockedSensor(AdGuardHomeSensor):
"AdGuard DNS Queries Blocked Ratio",
"mdi:magnify-close",
"blocked_percentage",
UNIT_PERCENTAGE,
PERCENTAGE,
)
async def _adguard_update(self) -> None:
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "\u0422\u0430\u0437\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0438\u0437\u0438\u0441\u043a\u0432\u0430 AdGuard Home {minimal_version} \u0438\u043b\u0438 \u043f\u043e-\u043d\u043e\u0432\u0430 {minimal_version}, \u0438\u043c\u0430\u0442\u0435 {current_version}. \u041c\u043e\u043b\u044f, \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u0439\u0442\u0435 \u0432\u0430\u0448\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043a\u0430 \u0437\u0430 Hass.io AdGuard Home.",
"adguard_home_outdated": "\u0422\u0430\u0437\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0438\u0437\u0438\u0441\u043a\u0432\u0430 AdGuard Home {minimal_version} \u0438\u043b\u0438 \u043f\u043e-\u043d\u043e\u0432\u0430 {minimal_version}, \u0438\u043c\u0430\u0442\u0435 {current_version}.",
"existing_instance_updated": "\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0430\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.",
"single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Aquesta integraci\u00f3 necessita la versi\u00f3 d'AdGuard Home {minimal_version} o una superior, tens la {current_version}. Actualitza el complement de Hass.io d'AdGuard Home.",
"adguard_home_outdated": "Aquesta integraci\u00f3 necessita la versi\u00f3 d'AdGuard Home {minimal_version} o una superior, tens la {current_version}.",
"existing_instance_updated": "S'ha actualitzat la configuraci\u00f3 existent.",
"single_instance_allowed": "Nom\u00e9s es permet una \u00fanica configuraci\u00f3 d'AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Denne integration kr\u00e6ver AdGuard Home {minimal_version} eller h\u00f8jere, du har {current_version}. Opdater venligst din Hass.io AdGuard Home-tilf\u00f8jelse.",
"adguard_home_outdated": "Denne integration kr\u00e6ver AdGuard Home {minimal_version} eller h\u00f8jere, du har {current_version}.",
"existing_instance_updated": "Opdaterede eksisterende konfiguration.",
"single_instance_allowed": "Kun en enkelt konfiguration af AdGuard Home er tilladt."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Diese Integration erfordert AdGuard Home {minimal_version} oder h\u00f6her, du hast {current_version}. Bitte aktualisiere dein Hass.io AdGuard Home Add-on.",
"adguard_home_outdated": "Diese Integration erfordert AdGuard Home {minimal_version} oder h\u00f6her, du hast {current_version}.",
"existing_instance_updated": "Bestehende Konfiguration wurde aktualisiert.",
"single_instance_allowed": "Es ist nur eine einzige Konfiguration von AdGuard Home zul\u00e4ssig."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "This integration requires AdGuard Home {minimal_version} or higher, you have {current_version}. Please update your Hass.io AdGuard Home add-on.",
"adguard_home_outdated": "This integration requires AdGuard Home {minimal_version} or higher, you have {current_version}.",
"existing_instance_updated": "Updated existing configuration.",
"single_instance_allowed": "Only a single configuration of AdGuard Home is allowed."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Esta integraci\u00f3n requiere AdGuard Home {minimal_version} o superior, tiene {current_version}. Actualice su complemento Hass.io AdGuard Home.",
"adguard_home_outdated": "Esta integraci\u00f3n requiere AdGuard Home {minimal_version} o superior, tiene {current_version}.",
"existing_instance_updated": "Se actualiz\u00f3 la configuraci\u00f3n existente.",
"single_instance_allowed": "Solo se permite una \u00fanica configuraci\u00f3n de AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Esta integraci\u00f3n requiere AdGuard Home {minimal_version} o superior, usted tiene {current_version}. Por favor, actualice su complemento Hass.io AdGuard Home.",
"adguard_home_outdated": "Esta integraci\u00f3n requiere AdGuard Home {minimal_version} o superior, usted tiene {current_version}.",
"existing_instance_updated": "Se ha actualizado la configuraci\u00f3n existente.",
"single_instance_allowed": "S\u00f3lo se permite una \u00fanica configuraci\u00f3n de AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Cette int\u00e9gration n\u00e9cessite AdGuard Home {minimal_version} ou une version ult\u00e9rieure, vous disposez de {current_version}. Veuillez mettre \u00e0 jour votre compl\u00e9ment Hass.io AdGuard Home.",
"adguard_home_outdated": "Cette int\u00e9gration n\u00e9cessite AdGuard Home {minimal_version} ou une version ult\u00e9rieure, vous disposez de {current_version}.",
"existing_instance_updated": "La configuration existante a \u00e9t\u00e9 mise \u00e0 jour.",
"single_instance_allowed": "Une seule configuration d'AdGuard Home est autoris\u00e9e."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Questa integrazione richiede AdGuard Home {minimal_version} o versione successiva, si dispone di {current_version}. Aggiorna il componente aggiuntivo AdGuard Home di Hass.io.",
"adguard_home_outdated": "Questa integrazione richiede AdGuard Home {minimal_version} o versione successiva, si dispone di {current_version}.",
"existing_instance_updated": "Configurazione esistente aggiornata.",
"single_instance_allowed": "\u00c8 consentita solo una singola configurazione di AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "\uc774 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub294 AdGuard Home {minimal_version} \uc774\uc0c1\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud604\uc7ac \ubc84\uc804\uc740 {current_version} \uc785\ub2c8\ub2e4. Hass.io AdGuard Home \uc560\ub4dc\uc628\uc744 \uc5c5\ub370\uc774\ud2b8 \ud574\uc8fc\uc138\uc694.",
"adguard_home_outdated": "\uc774 \ud1b5\ud569 \uad6c\uc131\uc694\uc18c\ub294 AdGuard Home {minimal_version} \uc774\uc0c1\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud604\uc7ac \ubc84\uc804\uc740 {current_version} \uc785\ub2c8\ub2e4.",
"existing_instance_updated": "\uae30\uc874 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud588\uc2b5\ub2c8\ub2e4.",
"single_instance_allowed": "\ud558\ub098\uc758 AdGuard Home \ub9cc \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "D\u00ebs Integratioun ben\u00e9idegt AdgGuard Home {minimal_version} oder m\u00e9i, dir hutt {current_version}. Aktualis\u00e9iert w.e.g. \u00e4ren Hass.io AdGuard Home Add-on.",
"adguard_home_outdated": "D\u00ebs Integratioun ben\u00e9idegt AdgGuard Home {minimal_version} oder m\u00e9i, dir hutt {current_version}.",
"existing_instance_updated": "D\u00e9i bestehend Konfiguratioun ass ge\u00e4nnert.",
"single_instance_allowed": "N\u00ebmmen eng eenzeg Konfiguratioun vun AdGuard Home ass erlaabt."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Deze integratie vereist AdGuard Home {minimal_version} of hoger, u heeft {current_version}. Update uw Hass.io AdGuard Home-add-on.",
"adguard_home_outdated": "Deze integratie vereist AdGuard Home {minimal_version} of hoger, u heeft {current_version}.",
"existing_instance_updated": "Bestaande configuratie bijgewerkt.",
"single_instance_allowed": "Slechts \u00e9\u00e9n configuratie van AdGuard Home is toegestaan."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Denne integrasjonen krever AdGuard Home {minimal_version} eller h\u00f8yere, du har {current_version}. Vennligst oppdater Hass.io AdGuard Home-tillegget.",
"adguard_home_outdated": "Denne integrasjonen krever AdGuard Home {minimal_version} eller h\u00f8yere, du har {current_version}.",
"existing_instance_updated": "Oppdatert eksisterende konfigurasjon.",
"single_instance_allowed": "Kun en konfigurasjon av AdGuard Hjemer tillatt."
},
@@ -1,13 +1,11 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Ta integracja wymaga AdGuard Home {minimal_version} lub nowszej wersji, masz {current_version}. Zaktualizuj sw\u00f3j dodatek Hass.io AdGuard Home.",
"adguard_home_outdated": "Ta integracja wymaga AdGuard Home {minimal_version} lub nowszej wersji, masz {current_version}.",
"existing_instance_updated": "Zaktualizowano istniej\u0105c\u0105 konfiguracj\u0119.",
"single_instance_allowed": "Dozwolona jest tylko jedna konfiguracja AdGuard Home."
},
"error": {
"connection_error": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia."
"connection_error": "Nie mo\u017cna nawi\u0105za\u0107 po\u0142\u0105czenia"
},
"step": {
"hassio_confirm": {
@@ -16,7 +16,7 @@
"data": {
"password": "Senha",
"ssl": "O AdGuard Home usa um certificado SSL",
"username": "Nome de usu\u00e1rio",
"username": "Usu\u00e1rio",
"verify_ssl": "O AdGuard Home usa um certificado apropriado"
},
"description": "Configure sua inst\u00e2ncia do AdGuard Home para permitir o monitoramento e o controle."
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "\u042d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 AdGuard Home \u0432\u0435\u0440\u0441\u0438\u0438 {current_version}. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f {minimal_version}, \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0430\u044f. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Hass.io.",
"adguard_home_outdated": "\u042d\u0442\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 AdGuard Home \u0432\u0435\u0440\u0441\u0438\u0438 {current_version}. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e {minimal_version} \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e.",
"existing_instance_updated": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430.",
"single_instance_allowed": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Za to integracijo je potrebna AdGuard Home {minimal_version} ali vi\u0161ja, vi imate {current_version}. Prosimo posodobite va\u0161 hass.io AdGuard Home dodatek.",
"adguard_home_outdated": "Za to integracijo je potrebna AdGuard Home {minimal_version} ali vi\u0161ja, vi imate {current_version}.",
"existing_instance_updated": "Posodobljena obstoje\u010da konfiguracija.",
"single_instance_allowed": "Dovoljena je samo ena konfiguracija AdGuard Home."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "Den h\u00e4r integrationen kr\u00e4ver AdGuard Home {minimal_version} eller senare, du har {current_version}. Uppdatera ditt Hass.io AdGuard Home-till\u00e4gg.",
"adguard_home_outdated": "Den h\u00e4r integrationen kr\u00e4ver AdGuard Home {minimal_version} eller senare, du har {current_version}.",
"existing_instance_updated": "Uppdaterade existerande konfiguration.",
"single_instance_allowed": "Endast en enda konfiguration av AdGuard Home \u00e4r till\u00e5ten."
},
@@ -1,8 +1,6 @@
{
"config": {
"abort": {
"adguard_home_addon_outdated": "\u6574\u5408\u9700\u8981 AdGuard Home {minimal_version} \u6216\u66f4\u65b0\u7248\u672c\uff0c\u60a8\u76ee\u524d\u4f7f\u7528\u7248\u672c\u70ba {current_version}\u3002\u8acb\u66f4\u65b0 Hass.io AdGuard Home \u5143\u4ef6\u3002",
"adguard_home_outdated": "\u6574\u5408\u9700\u8981 AdGuard Home {minimal_version} \u6216\u66f4\u65b0\u7248\u672c\uff0c\u60a8\u76ee\u524d\u4f7f\u7528\u7248\u672c\u70ba {current_version}\u3002",
"existing_instance_updated": "\u5df2\u66f4\u65b0\u73fe\u6709\u8a2d\u5b9a\u3002",
"single_instance_allowed": "\u50c5\u5141\u8a31\u8a2d\u5b9a\u4e00\u7d44 AdGuard Home\u3002"
},
@@ -4,6 +4,7 @@ import logging
import voluptuous as vol
from homeassistant.components.binary_sensor import (
DEVICE_CLASS_MOVING,
DEVICE_CLASSES_SCHEMA,
PLATFORM_SCHEMA,
BinarySensorEntity,
@@ -43,7 +44,7 @@ class AdsBinarySensor(AdsEntity, BinarySensorEntity):
def __init__(self, ads_hub, name, ads_var, device_class):
"""Initialize ADS binary sensor."""
super().__init__(ads_hub, name, ads_var)
self._device_class = device_class or "moving"
self._device_class = device_class or DEVICE_CLASS_MOVING
async def async_added_to_hass(self):
"""Register device notification."""
+1 -1
View File
@@ -2,6 +2,6 @@
"domain": "ads",
"name": "ADS",
"documentation": "https://www.home-assistant.io/integrations/ads",
"requirements": ["pyads==3.2.1"],
"requirements": ["pyads==3.2.2"],
"codeowners": []
}
@@ -16,7 +16,7 @@ DEFAULT_BRAND = "Agent DVR by ispyconnect.com"
_LOGGER = logging.getLogger(__name__)
FORWARDS = ["camera"]
FORWARDS = ["alarm_control_panel", "camera"]
async def async_setup(hass, config):
@@ -33,9 +33,9 @@ async def async_setup_entry(hass, config_entry):
agent_client = Agent(server_origin, async_get_clientsession(hass))
try:
await agent_client.update()
except AgentError:
except AgentError as err:
await agent_client.close()
raise ConfigEntryNotReady
raise ConfigEntryNotReady from err
if not agent_client.is_available:
raise ConfigEntryNotReady
@@ -0,0 +1,124 @@
"""Support for Agent DVR Alarm Control Panels."""
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntity
from homeassistant.components.alarm_control_panel.const import (
SUPPORT_ALARM_ARM_AWAY,
SUPPORT_ALARM_ARM_HOME,
SUPPORT_ALARM_ARM_NIGHT,
)
from homeassistant.const import (
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_NIGHT,
STATE_ALARM_DISARMED,
)
from .const import CONNECTION, DOMAIN as AGENT_DOMAIN
ICON = "mdi:security"
CONF_HOME_MODE_NAME = "home"
CONF_AWAY_MODE_NAME = "away"
CONF_NIGHT_MODE_NAME = "night"
CONST_ALARM_CONTROL_PANEL_NAME = "Alarm Panel"
async def async_setup_entry(
hass, config_entry, async_add_entities, discovery_info=None
):
"""Set up the Agent DVR Alarm Control Panels."""
async_add_entities(
[AgentBaseStation(hass.data[AGENT_DOMAIN][config_entry.entry_id][CONNECTION])]
)
class AgentBaseStation(AlarmControlPanelEntity):
"""Representation of an Agent DVR Alarm Control Panel."""
def __init__(self, client):
"""Initialize the alarm control panel."""
self._state = None
self._client = client
self._unique_id = f"{client.unique}_CP"
name = CONST_ALARM_CONTROL_PANEL_NAME
self._name = name = f"{client.name} {name}"
@property
def icon(self):
"""Return icon."""
return ICON
@property
def state(self):
"""Return the state of the device."""
return self._state
@property
def supported_features(self) -> int:
"""Return the list of supported features."""
return SUPPORT_ALARM_ARM_HOME | SUPPORT_ALARM_ARM_AWAY | SUPPORT_ALARM_ARM_NIGHT
@property
def device_info(self):
"""Return the device info for adding the entity to the agent object."""
return {
"identifiers": {(AGENT_DOMAIN, self._client.unique)},
"manufacturer": "Agent",
"model": CONST_ALARM_CONTROL_PANEL_NAME,
"sw_version": self._client.version,
}
async def async_update(self):
"""Update the state of the device."""
await self._client.update()
armed = self._client.is_armed
if armed is None:
self._state = None
return
if armed:
prof = (await self._client.get_active_profile()).lower()
self._state = STATE_ALARM_ARMED_AWAY
if prof == CONF_HOME_MODE_NAME:
self._state = STATE_ALARM_ARMED_HOME
elif prof == CONF_NIGHT_MODE_NAME:
self._state = STATE_ALARM_ARMED_NIGHT
else:
self._state = STATE_ALARM_DISARMED
async def async_alarm_disarm(self, code=None):
"""Send disarm command."""
await self._client.disarm()
self._state = STATE_ALARM_DISARMED
async def async_alarm_arm_away(self, code=None):
"""Send arm away command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_AWAY_MODE_NAME)
self._state = STATE_ALARM_ARMED_AWAY
async def async_alarm_arm_home(self, code=None):
"""Send arm home command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_HOME_MODE_NAME)
self._state = STATE_ALARM_ARMED_HOME
async def async_alarm_arm_night(self, code=None):
"""Send arm night command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_NIGHT_MODE_NAME)
self._state = STATE_ALARM_ARMED_NIGHT
@property
def name(self):
"""Return the name of the base station."""
return self._name
@property
def available(self) -> bool:
"""Device available."""
return self._client.is_available
@property
def unique_id(self) -> str:
"""Return a unique ID."""
return self._unique_id
@@ -1,7 +1,7 @@
{
"config": {
"abort": {
"already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane."
"already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane"
},
"error": {
"already_in_progress": "Konfiguracja urz\u0105dzenia jest ju\u017c w toku.",
@@ -2,6 +2,13 @@
"config": {
"error": {
"device_unavailable": "O dispositivo n\u00e3o est\u00e1 dispon\u00edvel"
},
"step": {
"user": {
"data": {
"port": "Porta"
}
}
}
}
}
@@ -0,0 +1,14 @@
"""Describe group states."""
from homeassistant.components.group import GroupIntegrationRegistry
from homeassistant.core import callback
from homeassistant.helpers.typing import HomeAssistantType
@callback
def async_describe_on_off_states(
hass: HomeAssistantType, registry: GroupIntegrationRegistry
) -> None:
"""Describe group on off states."""
registry.exclude_domain()
+1 -1
View File
@@ -125,7 +125,7 @@ class AirlyDataUpdateCoordinator(DataUpdateCoordinator):
try:
await measurements.update()
except (AirlyError, ClientConnectorError) as error:
raise UpdateFailed(error)
raise UpdateFailed(error) from error
values = measurements.current["values"]
index = measurements.current["indexes"][0]
+3 -22
View File
@@ -6,6 +6,7 @@ from homeassistant.components.air_quality import (
AirQualityEntity,
)
from homeassistant.const import CONF_NAME
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import (
ATTR_API_ADVICE,
@@ -57,12 +58,12 @@ def round_state(func):
return _decorator
class AirlyAirQuality(AirQualityEntity):
class AirlyAirQuality(CoordinatorEntity, AirQualityEntity):
"""Define an Airly air quality."""
def __init__(self, coordinator, name):
"""Initialize."""
self.coordinator = coordinator
super().__init__(coordinator)
self._name = name
self._icon = "mdi:blur"
@@ -71,11 +72,6 @@ class AirlyAirQuality(AirQualityEntity):
"""Return the name."""
return self._name
@property
def should_poll(self):
"""Return the polling requirement of the entity."""
return False
@property
def icon(self):
"""Return the icon."""
@@ -121,11 +117,6 @@ class AirlyAirQuality(AirQualityEntity):
"entry_type": "service",
}
@property
def available(self):
"""Return True if entity is available."""
return self.coordinator.last_update_success
@property
def device_state_attributes(self):
"""Return the state attributes."""
@@ -138,13 +129,3 @@ class AirlyAirQuality(AirQualityEntity):
LABEL_PM_10_LIMIT: self.coordinator.data[ATTR_API_PM10_LIMIT],
LABEL_PM_10_PERCENT: round(self.coordinator.data[ATTR_API_PM10_PERCENT]),
}
async def async_added_to_hass(self):
"""Connect to dispatcher listening for entity data notifications."""
self.async_on_remove(
self.coordinator.async_add_listener(self.async_write_ha_state)
)
async def async_update(self):
"""Update Airly entity."""
await self.coordinator.async_request_refresh()
+1 -1
View File
@@ -3,7 +3,7 @@
"name": "Airly",
"documentation": "https://www.home-assistant.io/integrations/airly",
"codeowners": ["@bieniu"],
"requirements": ["airly==0.0.2"],
"requirements": ["airly==1.0.0"],
"config_flow": true,
"quality_scale": "platinum"
}
+5 -25
View File
@@ -7,11 +7,11 @@ from homeassistant.const import (
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
PRESSURE_HPA,
TEMP_CELSIUS,
UNIT_PERCENTAGE,
)
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import (
ATTR_API_HUMIDITY,
@@ -42,7 +42,7 @@ SENSOR_TYPES = {
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_ICON: None,
ATTR_LABEL: ATTR_API_HUMIDITY.capitalize(),
ATTR_UNIT: UNIT_PERCENTAGE,
ATTR_UNIT: PERCENTAGE,
},
ATTR_API_PRESSURE: {
ATTR_DEVICE_CLASS: DEVICE_CLASS_PRESSURE,
@@ -72,12 +72,12 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
async_add_entities(sensors, False)
class AirlySensor(Entity):
class AirlySensor(CoordinatorEntity):
"""Define an Airly sensor."""
def __init__(self, coordinator, name, kind):
"""Initialize."""
self.coordinator = coordinator
super().__init__(coordinator)
self._name = name
self.kind = kind
self._device_class = None
@@ -91,11 +91,6 @@ class AirlySensor(Entity):
"""Return the name."""
return f"{self._name} {SENSOR_TYPES[self.kind][ATTR_LABEL]}"
@property
def should_poll(self):
"""Return the polling requirement of the entity."""
return False
@property
def state(self):
"""Return the state."""
@@ -143,18 +138,3 @@ class AirlySensor(Entity):
def unit_of_measurement(self):
"""Return the unit the value is expressed in."""
return SENSOR_TYPES[self.kind][ATTR_UNIT]
@property
def available(self):
"""Return True if entity is available."""
return self.coordinator.last_update_success
async def async_added_to_hass(self):
"""Connect to dispatcher listening for entity data notifications."""
self.async_on_remove(
self.coordinator.async_add_listener(self.async_write_ha_state)
)
async def async_update(self):
"""Update Airly entity."""
await self.coordinator.async_request_refresh()
@@ -0,0 +1,12 @@
{
"config": {
"step": {
"user": {
"data": {
"latitude": "Laiuskraad",
"longitude": "Pikkuskraad"
}
}
}
}
}
@@ -10,7 +10,7 @@
"step": {
"user": {
"data": {
"api_key": "Cl\u00e9 API Airly",
"api_key": "Cl\u00e9 d'API",
"latitude": "Latitude",
"longitude": "Longitude",
"name": "Nom de l'int\u00e9gration"
+34 -39
View File
@@ -3,8 +3,13 @@ import asyncio
from datetime import timedelta
from math import ceil
from pyairvisual import Client
from pyairvisual.errors import AirVisualError, NodeProError
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.errors import (
AirVisualError,
InvalidKeyError,
KeyExpiredError,
NodeProError,
)
import voluptuous as vol
from homeassistant.config_entries import SOURCE_IMPORT
@@ -20,8 +25,11 @@ from homeassistant.const import (
)
from homeassistant.core import callback
from homeassistant.helpers import aiohttp_client, config_validation as cv
from homeassistant.helpers.entity import Entity
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
UpdateFailed,
)
from .const import (
CONF_CITY,
@@ -203,30 +211,38 @@ def _standardize_node_pro_config_entry(hass, config_entry):
async def async_setup_entry(hass, config_entry):
"""Set up AirVisual as config entry."""
websession = aiohttp_client.async_get_clientsession(hass)
if CONF_API_KEY in config_entry.data:
_standardize_geography_config_entry(hass, config_entry)
client = Client(api_key=config_entry.data[CONF_API_KEY], session=websession)
websession = aiohttp_client.async_get_clientsession(hass)
cloud_api = CloudAPI(config_entry.data[CONF_API_KEY], session=websession)
async def async_update_data():
"""Get new data from the API."""
if CONF_CITY in config_entry.data:
api_coro = client.api.city(
api_coro = cloud_api.air_quality.city(
config_entry.data[CONF_CITY],
config_entry.data[CONF_STATE],
config_entry.data[CONF_COUNTRY],
)
else:
api_coro = client.api.nearest_city(
config_entry.data[CONF_LATITUDE], config_entry.data[CONF_LONGITUDE],
api_coro = cloud_api.air_quality.nearest_city(
config_entry.data[CONF_LATITUDE],
config_entry.data[CONF_LONGITUDE],
)
try:
return await api_coro
except (InvalidKeyError, KeyExpiredError):
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN,
context={"source": "reauth"},
data=config_entry.data,
)
)
except AirVisualError as err:
raise UpdateFailed(f"Error while retrieving data: {err}")
raise UpdateFailed(f"Error while retrieving data: {err}") from err
coordinator = DataUpdateCoordinator(
hass,
@@ -250,19 +266,15 @@ async def async_setup_entry(hass, config_entry):
else:
_standardize_node_pro_config_entry(hass, config_entry)
client = Client(session=websession)
async def async_update_data():
"""Get new data from the API."""
try:
return await client.node.from_samba(
config_entry.data[CONF_IP_ADDRESS],
config_entry.data[CONF_PASSWORD],
include_history=False,
include_trends=False,
)
async with NodeSamba(
config_entry.data[CONF_IP_ADDRESS], config_entry.data[CONF_PASSWORD]
) as node:
return await node.async_get_latest_measurements()
except NodeProError as err:
raise UpdateFailed(f"Error while retrieving data: {err}")
raise UpdateFailed(f"Error while retrieving data: {err}") from err
coordinator = DataUpdateCoordinator(
hass,
@@ -350,20 +362,15 @@ async def async_update_options(hass, config_entry):
await coordinator.async_request_refresh()
class AirVisualEntity(Entity):
class AirVisualEntity(CoordinatorEntity):
"""Define a generic AirVisual entity."""
def __init__(self, coordinator):
"""Initialize."""
super().__init__(coordinator)
self._attrs = {ATTR_ATTRIBUTION: DEFAULT_ATTRIBUTION}
self._icon = None
self._unit = None
self.coordinator = coordinator
@property
def available(self):
"""Return if entity is available."""
return self.coordinator.last_update_success
@property
def device_state_attributes(self):
@@ -375,11 +382,6 @@ class AirVisualEntity(Entity):
"""Return the icon."""
return self._icon
@property
def should_poll(self) -> bool:
"""Disable polling."""
return False
@property
def unit_of_measurement(self):
"""Return the unit the value is expressed in."""
@@ -398,13 +400,6 @@ class AirVisualEntity(Entity):
self.update_from_latest_data()
async def async_update(self):
"""Update the entity.
Only used by the generic entity update service.
"""
await self.coordinator.async_request_refresh()
@callback
def update_from_latest_data(self):
"""Update the entity from the latest data."""
@@ -40,9 +40,9 @@ class AirVisualNodeProSensor(AirVisualEntity, AirQualityEntity):
@property
def air_quality_index(self):
"""Return the Air Quality Index (AQI)."""
if self.coordinator.data["current"]["settings"]["is_aqi_usa"]:
return self.coordinator.data["current"]["measurements"]["aqi_us"]
return self.coordinator.data["current"]["measurements"]["aqi_cn"]
if self.coordinator.data["settings"]["is_aqi_usa"]:
return self.coordinator.data["measurements"]["aqi_us"]
return self.coordinator.data["measurements"]["aqi_cn"]
@property
def available(self):
@@ -52,61 +52,59 @@ class AirVisualNodeProSensor(AirVisualEntity, AirQualityEntity):
@property
def carbon_dioxide(self):
"""Return the CO2 (carbon dioxide) level."""
return self.coordinator.data["current"]["measurements"].get("co2")
return self.coordinator.data["measurements"].get("co2")
@property
def device_info(self):
"""Return device registry information for this entity."""
return {
"identifiers": {
(DOMAIN, self.coordinator.data["current"]["serial_number"])
},
"name": self.coordinator.data["current"]["settings"]["node_name"],
"identifiers": {(DOMAIN, self.coordinator.data["serial_number"])},
"name": self.coordinator.data["settings"]["node_name"],
"manufacturer": "AirVisual",
"model": f'{self.coordinator.data["current"]["status"]["model"]}',
"model": f'{self.coordinator.data["status"]["model"]}',
"sw_version": (
f'Version {self.coordinator.data["current"]["status"]["system_version"]}'
f'{self.coordinator.data["current"]["status"]["app_version"]}'
f'Version {self.coordinator.data["status"]["system_version"]}'
f'{self.coordinator.data["status"]["app_version"]}'
),
}
@property
def name(self):
"""Return the name."""
node_name = self.coordinator.data["current"]["settings"]["node_name"]
node_name = self.coordinator.data["settings"]["node_name"]
return f"{node_name} Node/Pro: Air Quality"
@property
def particulate_matter_2_5(self):
"""Return the particulate matter 2.5 level."""
return self.coordinator.data["current"]["measurements"].get("pm2_5")
return self.coordinator.data["measurements"].get("pm2_5")
@property
def particulate_matter_10(self):
"""Return the particulate matter 10 level."""
return self.coordinator.data["current"]["measurements"].get("pm1_0")
return self.coordinator.data["measurements"].get("pm1_0")
@property
def particulate_matter_0_1(self):
"""Return the particulate matter 0.1 level."""
return self.coordinator.data["current"]["measurements"].get("pm0_1")
return self.coordinator.data["measurements"].get("pm0_1")
@property
def unique_id(self):
"""Return a unique, Home Assistant friendly identifier for this entity."""
return self.coordinator.data["current"]["serial_number"]
return self.coordinator.data["serial_number"]
@callback
def update_from_latest_data(self):
"""Update the entity from the latest data."""
self._attrs.update(
{
ATTR_VOC: self.coordinator.data["current"]["measurements"].get("voc"),
ATTR_VOC: self.coordinator.data["measurements"].get("voc"),
**{
ATTR_SENSOR_LIFE.format(pollutant): lifespan
for pollutant, lifespan in self.coordinator.data["current"][
"status"
]["sensor_life"].items()
for pollutant, lifespan in self.coordinator.data["status"][
"sensor_life"
].items()
},
}
)
@@ -1,7 +1,7 @@
"""Define a config flow manager for AirVisual."""
import asyncio
from pyairvisual import Client
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.errors import InvalidKeyError, NodeProError
import voluptuous as vol
@@ -34,12 +34,19 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
VERSION = 2
CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL
def __init__(self):
"""Initialize the config flow."""
self._geo_id = None
self._latitude = None
self._longitude = None
self.api_key_data_schema = vol.Schema({vol.Required(CONF_API_KEY): str})
@property
def geography_schema(self):
"""Return the data schema for the cloud API."""
return vol.Schema(
return self.api_key_data_schema.extend(
{
vol.Required(CONF_API_KEY): str,
vol.Required(
CONF_LATITUDE, default=self.hass.config.latitude
): cv.latitude,
@@ -85,8 +92,8 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
step_id="geography", data_schema=self.geography_schema
)
geo_id = async_get_geography_id(user_input)
await self._async_set_unique_id(geo_id)
self._geo_id = async_get_geography_id(user_input)
await self._async_set_unique_id(self._geo_id)
self._abort_if_unique_id_configured()
# Find older config entries without unique ID:
@@ -95,13 +102,13 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
continue
if any(
geo_id == async_get_geography_id(geography)
self._geo_id == async_get_geography_id(geography)
for geography in entry.data[CONF_GEOGRAPHIES]
):
return self.async_abort(reason="already_configured")
websession = aiohttp_client.async_get_clientsession(self.hass)
client = Client(session=websession, api_key=user_input[CONF_API_KEY])
cloud_api = CloudAPI(user_input[CONF_API_KEY], session=websession)
# If this is the first (and only the first) time we've seen this API key, check
# that it's valid:
@@ -113,7 +120,7 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
async with check_keys_lock:
if user_input[CONF_API_KEY] not in checked_keys:
try:
await client.api.nearest_city()
await cloud_api.air_quality.nearest_city()
except InvalidKeyError:
return self.async_show_form(
step_id="geography",
@@ -123,10 +130,19 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
checked_keys.add(user_input[CONF_API_KEY])
return self.async_create_entry(
title=f"Cloud API ({geo_id})",
data={**user_input, CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_GEOGRAPHY},
)
return await self.async_step_geography_finish(user_input)
async def async_step_geography_finish(self, user_input=None):
"""Handle the finalization of a Cloud API config entry."""
existing_entry = await self.async_set_unique_id(self._geo_id)
if existing_entry:
self.hass.config_entries.async_update_entry(existing_entry, data=user_input)
return self.async_abort(reason="reauth_successful")
return self.async_create_entry(
title=f"Cloud API ({self._geo_id})",
data={**user_input, CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_GEOGRAPHY},
)
async def async_step_import(self, import_config):
"""Import a config entry from configuration.yaml."""
@@ -141,16 +157,10 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
await self._async_set_unique_id(user_input[CONF_IP_ADDRESS])
websession = aiohttp_client.async_get_clientsession(self.hass)
client = Client(session=websession)
node = NodeSamba(user_input[CONF_IP_ADDRESS], user_input[CONF_PASSWORD])
try:
await client.node.from_samba(
user_input[CONF_IP_ADDRESS],
user_input[CONF_PASSWORD],
include_history=False,
include_trends=False,
)
await node.async_connect()
except NodeProError as err:
LOGGER.error("Error connecting to Node/Pro unit: %s", err)
return self.async_show_form(
@@ -159,11 +169,37 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
errors={CONF_IP_ADDRESS: "unable_to_connect"},
)
await node.async_disconnect()
return self.async_create_entry(
title=f"Node/Pro ({user_input[CONF_IP_ADDRESS]})",
data={**user_input, CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_NODE_PRO},
)
async def async_step_reauth(self, data):
"""Handle configuration by re-auth."""
self._latitude = data[CONF_LATITUDE]
self._longitude = data[CONF_LONGITUDE]
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(self, user_input=None):
"""Handle re-auth completion."""
if not user_input:
return self.async_show_form(
step_id="reauth_confirm", data_schema=self.api_key_data_schema
)
conf = {
CONF_API_KEY: user_input[CONF_API_KEY],
CONF_LATITUDE: self._latitude,
CONF_LONGITUDE: self._longitude,
}
self._geo_id = async_get_geography_id(conf)
return await self.async_step_geography_finish(conf)
async def async_step_user(self, user_input=None):
"""Handle the start of the config flow."""
if not user_input:
@@ -3,6 +3,6 @@
"name": "AirVisual",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airvisual",
"requirements": ["pyairvisual==4.4.0"],
"requirements": ["pyairvisual==5.0.2"],
"codeowners": ["@bachya"]
}
+20 -24
View File
@@ -15,8 +15,8 @@ from homeassistant.const import (
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_TEMPERATURE,
PERCENTAGE,
TEMP_CELSIUS,
UNIT_PERCENTAGE,
)
from homeassistant.core import callback
@@ -38,10 +38,6 @@ ATTR_POLLUTANT_SYMBOL = "pollutant_symbol"
ATTR_POLLUTANT_UNIT = "pollutant_unit"
ATTR_REGION = "region"
MASS_PARTS_PER_MILLION = "ppm"
MASS_PARTS_PER_BILLION = "ppb"
VOLUME_MICROGRAMS_PER_CUBIC_METER = "µg/m3"
SENSOR_KIND_LEVEL = "air_pollution_level"
SENSOR_KIND_AQI = "air_quality_index"
SENSOR_KIND_POLLUTANT = "main_pollutant"
@@ -57,8 +53,8 @@ GEOGRAPHY_SENSORS = [
GEOGRAPHY_SENSOR_LOCALES = {"cn": "Chinese", "us": "U.S."}
NODE_PRO_SENSORS = [
(SENSOR_KIND_BATTERY_LEVEL, "Battery", DEVICE_CLASS_BATTERY, UNIT_PERCENTAGE),
(SENSOR_KIND_HUMIDITY, "Humidity", DEVICE_CLASS_HUMIDITY, UNIT_PERCENTAGE),
(SENSOR_KIND_BATTERY_LEVEL, "Battery", DEVICE_CLASS_BATTERY, PERCENTAGE),
(SENSOR_KIND_HUMIDITY, "Humidity", DEVICE_CLASS_HUMIDITY, PERCENTAGE),
(SENSOR_KIND_TEMPERATURE, "Temperature", DEVICE_CLASS_TEMPERATURE, TEMP_CELSIUS),
]
@@ -98,7 +94,13 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
if config_entry.data[CONF_INTEGRATION_TYPE] == INTEGRATION_TYPE_GEOGRAPHY:
sensors = [
AirVisualGeographySensor(
coordinator, config_entry, kind, name, icon, unit, locale,
coordinator,
config_entry,
kind,
name,
icon,
unit,
locale,
)
for locale in GEOGRAPHY_SENSOR_LOCALES
for kind, name, icon, unit in GEOGRAPHY_SENSORS
@@ -223,22 +225,20 @@ class AirVisualNodeProSensor(AirVisualEntity):
def device_info(self):
"""Return device registry information for this entity."""
return {
"identifiers": {
(DOMAIN, self.coordinator.data["current"]["serial_number"])
},
"name": self.coordinator.data["current"]["settings"]["node_name"],
"identifiers": {(DOMAIN, self.coordinator.data["serial_number"])},
"name": self.coordinator.data["settings"]["node_name"],
"manufacturer": "AirVisual",
"model": f'{self.coordinator.data["current"]["status"]["model"]}',
"model": f'{self.coordinator.data["status"]["model"]}',
"sw_version": (
f'Version {self.coordinator.data["current"]["status"]["system_version"]}'
f'{self.coordinator.data["current"]["status"]["app_version"]}'
f'Version {self.coordinator.data["status"]["system_version"]}'
f'{self.coordinator.data["status"]["app_version"]}'
),
}
@property
def name(self):
"""Return the name."""
node_name = self.coordinator.data["current"]["settings"]["node_name"]
node_name = self.coordinator.data["settings"]["node_name"]
return f"{node_name} Node/Pro: {self._name}"
@property
@@ -249,18 +249,14 @@ class AirVisualNodeProSensor(AirVisualEntity):
@property
def unique_id(self):
"""Return a unique, Home Assistant friendly identifier for this entity."""
return f"{self.coordinator.data['current']['serial_number']}_{self._kind}"
return f"{self.coordinator.data['serial_number']}_{self._kind}"
@callback
def update_from_latest_data(self):
"""Update the entity from the latest data."""
if self._kind == SENSOR_KIND_BATTERY_LEVEL:
self._state = self.coordinator.data["current"]["status"]["battery"]
self._state = self.coordinator.data["status"]["battery"]
elif self._kind == SENSOR_KIND_HUMIDITY:
self._state = self.coordinator.data["current"]["measurements"].get(
"humidity"
)
self._state = self.coordinator.data["measurements"].get("humidity")
elif self._kind == SENSOR_KIND_TEMPERATURE:
self._state = self.coordinator.data["current"]["measurements"].get(
"temperature_C"
)
self._state = self.coordinator.data["measurements"].get("temperature_C")
@@ -0,0 +1,17 @@
{
"config": {
"step": {
"geography": {
"data": {
"latitude": "Laiuskraad",
"longitude": "Pikkuskraad"
}
},
"user": {
"data": {
"cloud_api": "Geograafiline asukoht"
}
}
}
}
}
@@ -21,7 +21,7 @@
"node_pro": {
"data": {
"ip_address": "Adresse IP / nom d'h\u00f4te de l'unit\u00e9",
"password": "Mot de passe de l'unit\u00e9"
"password": "Mot de passe"
},
"description": "Surveillez une unit\u00e9 AirVisual personnelle. Le mot de passe peut \u00eatre r\u00e9cup\u00e9r\u00e9 dans l'interface utilisateur de l'unit\u00e9.",
"title": "Configurer un AirVisual Node/Pro"
@@ -32,7 +32,7 @@
"node_pro": "AirVisual Node Pro",
"type": "Type d'int\u00e9gration"
},
"description": "Surveiller la qualit\u00e9 de l\u2019air dans un emplacement g\u00e9ographique.",
"description": "Choisissez le type de donn\u00e9es AirVisual que vous souhaitez surveiller.",
"title": "Configurer AirVisual"
}
}
@@ -4,7 +4,7 @@
"already_configured": "Ten klucz API jest ju\u017c w u\u017cyciu."
},
"error": {
"general_error": "Nieoczekiwany b\u0142\u0105d.",
"general_error": "Nieoczekiwany b\u0142\u0105d",
"invalid_api_key": "Nieprawid\u0142owy klucz API.",
"unable_to_connect": "Nie mo\u017cna po\u0142\u0105czy\u0107 si\u0119 z jednostk\u0105 Node/Pro."
},
@@ -11,6 +11,11 @@
"longitude": "Longitude"
}
},
"node_pro": {
"data": {
"password": "Senha"
}
},
"user": {
"data": {
"type": "Tipo de Integra\u00e7\u00e3o"
@@ -6,6 +6,7 @@ import voluptuous as vol
from homeassistant.const import (
ATTR_CODE,
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CODE,
CONF_DEVICE_ID,
CONF_DOMAIN,
@@ -56,7 +57,7 @@ async def async_get_actions(hass: HomeAssistant, device_id: str) -> List[dict]:
if state is None:
continue
supported_features = state.attributes["supported_features"]
supported_features = state.attributes[ATTR_SUPPORTED_FEATURES]
# Add actions for each entity that belongs to this integration
if supported_features & SUPPORT_ALARM_ARM_AWAY:
@@ -11,6 +11,7 @@ from homeassistant.components.alarm_control_panel.const import (
)
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CONDITION,
CONF_DEVICE_ID,
CONF_DOMAIN,
@@ -73,7 +74,7 @@ async def async_get_conditions(
if state is None:
continue
supported_features = state.attributes["supported_features"]
supported_features = state.attributes[ATTR_SUPPORTED_FEATURES]
# Add conditions for each entity that belongs to this integration
conditions += [
@@ -8,9 +8,11 @@ from homeassistant.components.alarm_control_panel.const import (
SUPPORT_ALARM_ARM_HOME,
SUPPORT_ALARM_ARM_NIGHT,
)
from homeassistant.components.automation import AutomationActionType, state
from homeassistant.components.automation import AutomationActionType
from homeassistant.components.device_automation import TRIGGER_BASE_SCHEMA
from homeassistant.components.homeassistant.triggers import state as state_trigger
from homeassistant.const import (
ATTR_SUPPORTED_FEATURES,
CONF_DEVICE_ID,
CONF_DOMAIN,
CONF_ENTITY_ID,
@@ -63,7 +65,7 @@ async def async_get_triggers(hass: HomeAssistant, device_id: str) -> List[dict]:
if entity_state is None:
continue
supported_features = entity_state.attributes["supported_features"]
supported_features = entity_state.attributes[ATTR_SUPPORTED_FEATURES]
# Add triggers for each entity that belongs to this integration
triggers += [
@@ -151,13 +153,13 @@ async def async_attach_trigger(
to_state = STATE_ALARM_ARMED_NIGHT
state_config = {
state.CONF_PLATFORM: "state",
state_trigger.CONF_PLATFORM: "state",
CONF_ENTITY_ID: config[CONF_ENTITY_ID],
state.CONF_TO: to_state,
state_trigger.CONF_TO: to_state,
}
if from_state:
state_config[state.CONF_FROM] = from_state
state_config = state.TRIGGER_SCHEMA(state_config)
return await state.async_attach_trigger(
state_config[state_trigger.CONF_FROM] = from_state
state_config = state_trigger.TRIGGER_SCHEMA(state_config)
return await state_trigger.async_attach_trigger(
hass, state_config, action, automation_info, platform_type="device"
)
@@ -0,0 +1,31 @@
"""Describe group states."""
from homeassistant.components.group import GroupIntegrationRegistry
from homeassistant.const import (
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_CUSTOM_BYPASS,
STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_NIGHT,
STATE_ALARM_TRIGGERED,
STATE_OFF,
)
from homeassistant.core import callback
from homeassistant.helpers.typing import HomeAssistantType
@callback
def async_describe_on_off_states(
hass: HomeAssistantType, registry: GroupIntegrationRegistry
) -> None:
"""Describe group on off states."""
registry.on_off_states(
{
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_CUSTOM_BYPASS,
STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_NIGHT,
STATE_ALARM_TRIGGERED,
},
STATE_OFF,
)
@@ -25,7 +25,7 @@
"state": {
"_": {
"armed": "Zabezpe\u010deno",
"armed_away": "Re\u017eim nep\u0159\u00edtomnost",
"armed_away": "Nep\u0159\u00edtomnost",
"armed_custom_bypass": "Zabezpe\u010deno u\u017eivatelsk\u00fdm obejit\u00edm",
"armed_home": "Re\u017eim domov",
"armed_night": "No\u010dn\u00ed re\u017eim",
@@ -1,4 +1,27 @@
{
"device_automation": {
"action_type": {
"arm_away": "Valvesta {entity_name}",
"arm_home": "Valvesta {entity_name} kodus re\u017eiimis",
"arm_night": "Valvesta {entity_name} \u00f6\u00f6re\u017eiimis",
"disarm": "V\u00f5ta {entity_name} valvest maha",
"trigger": "K\u00e4ivita {entity_name}"
},
"condition_type": {
"is_armed_away": "{entity_name} on valvestatud",
"is_armed_home": "{entity_name} on valvestatud kodure\u017eiimis",
"is_armed_night": "{entity_name} on valvestatud \u00f6\u00f6re\u017eiimis",
"is_disarmed": "{entity_name} on valve alt maas",
"is_triggered": "{entity_name} on h\u00e4iret andnud"
},
"trigger_type": {
"armed_away": "{entity_name} valvestatus",
"armed_home": "{entity_name} valvestatus kodure\u017eiimis",
"armed_night": "{entity_name} valvestatus \u00f6\u00f6re\u017eiimis",
"disarmed": "{entity_name} v\u00f5eti valvest maha",
"triggered": "{entity_name} andis h\u00e4iret"
}
},
"state": {
"_": {
"armed": "Valves",
@@ -26,7 +26,7 @@
"_": {
"armed": "Activ\u00e9",
"armed_away": "Enclench\u00e9e (absent)",
"armed_custom_bypass": "Activ\u00e9e avec exception",
"armed_custom_bypass": "Arm\u00e9 avec exception personnalis\u00e9e",
"armed_home": "Enclench\u00e9e (pr\u00e9sent)",
"armed_night": "Enclench\u00e9 (nuit)",
"arming": "Activation",
@@ -25,7 +25,7 @@
"state": {
"_": {
"armed": "Ingeschakeld",
"armed_away": "Afwezig Ingeschakeld",
"armed_away": "Ingeschakeld afwezig",
"armed_custom_bypass": "Ingeschakeld met overbrugging(en)",
"armed_home": "Ingeschakeld thuis",
"armed_night": "Ingeschakeld nacht",
+100 -157
View File
@@ -1,167 +1,82 @@
"""Support for AlarmDecoder devices."""
import asyncio
from datetime import timedelta
import logging
from adext import AdExt
from alarmdecoder.devices import SerialDevice, SocketDevice, USBDevice
from alarmdecoder.devices import SerialDevice, SocketDevice
from alarmdecoder.util import NoDeviceError
import voluptuous as vol
from homeassistant.components.binary_sensor import DEVICE_CLASSES_SCHEMA
from homeassistant.const import CONF_HOST, EVENT_HOMEASSISTANT_STOP
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.discovery import load_platform
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_HOST,
CONF_PORT,
CONF_PROTOCOL,
EVENT_HOMEASSISTANT_STOP,
)
from homeassistant.helpers.typing import HomeAssistantType
from homeassistant.util import dt as dt_util
from .const import (
CONF_DEVICE_BAUD,
CONF_DEVICE_PATH,
DATA_AD,
DATA_REMOVE_STOP_LISTENER,
DATA_REMOVE_UPDATE_LISTENER,
DATA_RESTART,
DOMAIN,
PROTOCOL_SERIAL,
PROTOCOL_SOCKET,
SIGNAL_PANEL_MESSAGE,
SIGNAL_REL_MESSAGE,
SIGNAL_RFX_MESSAGE,
SIGNAL_ZONE_FAULT,
SIGNAL_ZONE_RESTORE,
)
_LOGGER = logging.getLogger(__name__)
DOMAIN = "alarmdecoder"
DATA_AD = "alarmdecoder"
CONF_DEVICE = "device"
CONF_DEVICE_BAUD = "baudrate"
CONF_DEVICE_PATH = "path"
CONF_DEVICE_PORT = "port"
CONF_DEVICE_TYPE = "type"
CONF_AUTO_BYPASS = "autobypass"
CONF_PANEL_DISPLAY = "panel_display"
CONF_ZONE_NAME = "name"
CONF_ZONE_TYPE = "type"
CONF_ZONE_LOOP = "loop"
CONF_ZONE_RFID = "rfid"
CONF_ZONES = "zones"
CONF_RELAY_ADDR = "relayaddr"
CONF_RELAY_CHAN = "relaychan"
CONF_CODE_ARM_REQUIRED = "code_arm_required"
DEFAULT_DEVICE_TYPE = "socket"
DEFAULT_DEVICE_HOST = "localhost"
DEFAULT_DEVICE_PORT = 10000
DEFAULT_DEVICE_PATH = "/dev/ttyUSB0"
DEFAULT_DEVICE_BAUD = 115200
DEFAULT_AUTO_BYPASS = False
DEFAULT_PANEL_DISPLAY = False
DEFAULT_CODE_ARM_REQUIRED = True
DEFAULT_ZONE_TYPE = "opening"
SIGNAL_PANEL_MESSAGE = "alarmdecoder.panel_message"
SIGNAL_PANEL_ARM_AWAY = "alarmdecoder.panel_arm_away"
SIGNAL_PANEL_ARM_HOME = "alarmdecoder.panel_arm_home"
SIGNAL_PANEL_DISARM = "alarmdecoder.panel_disarm"
SIGNAL_ZONE_FAULT = "alarmdecoder.zone_fault"
SIGNAL_ZONE_RESTORE = "alarmdecoder.zone_restore"
SIGNAL_RFX_MESSAGE = "alarmdecoder.rfx_message"
SIGNAL_REL_MESSAGE = "alarmdecoder.rel_message"
DEVICE_SOCKET_SCHEMA = vol.Schema(
{
vol.Required(CONF_DEVICE_TYPE): "socket",
vol.Optional(CONF_HOST, default=DEFAULT_DEVICE_HOST): cv.string,
vol.Optional(CONF_DEVICE_PORT, default=DEFAULT_DEVICE_PORT): cv.port,
}
)
DEVICE_SERIAL_SCHEMA = vol.Schema(
{
vol.Required(CONF_DEVICE_TYPE): "serial",
vol.Optional(CONF_DEVICE_PATH, default=DEFAULT_DEVICE_PATH): cv.string,
vol.Optional(CONF_DEVICE_BAUD, default=DEFAULT_DEVICE_BAUD): cv.string,
}
)
DEVICE_USB_SCHEMA = vol.Schema({vol.Required(CONF_DEVICE_TYPE): "usb"})
ZONE_SCHEMA = vol.Schema(
{
vol.Required(CONF_ZONE_NAME): cv.string,
vol.Optional(CONF_ZONE_TYPE, default=DEFAULT_ZONE_TYPE): vol.Any(
DEVICE_CLASSES_SCHEMA
),
vol.Optional(CONF_ZONE_RFID): cv.string,
vol.Optional(CONF_ZONE_LOOP): vol.All(vol.Coerce(int), vol.Range(min=1, max=4)),
vol.Inclusive(
CONF_RELAY_ADDR,
"relaylocation",
"Relay address and channel must exist together",
): cv.byte,
vol.Inclusive(
CONF_RELAY_CHAN,
"relaylocation",
"Relay address and channel must exist together",
): cv.byte,
}
)
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: vol.Schema(
{
vol.Required(CONF_DEVICE): vol.Any(
DEVICE_SOCKET_SCHEMA, DEVICE_SERIAL_SCHEMA, DEVICE_USB_SCHEMA
),
vol.Optional(
CONF_PANEL_DISPLAY, default=DEFAULT_PANEL_DISPLAY
): cv.boolean,
vol.Optional(CONF_AUTO_BYPASS, default=DEFAULT_AUTO_BYPASS): cv.boolean,
vol.Optional(
CONF_CODE_ARM_REQUIRED, default=DEFAULT_CODE_ARM_REQUIRED
): cv.boolean,
vol.Optional(CONF_ZONES): {vol.Coerce(int): ZONE_SCHEMA},
}
)
},
extra=vol.ALLOW_EXTRA,
)
PLATFORMS = ["alarm_control_panel", "sensor", "binary_sensor"]
def setup(hass, config):
async def async_setup(hass, config):
"""Set up for the AlarmDecoder devices."""
conf = config.get(DOMAIN)
return True
restart = False
device = conf[CONF_DEVICE]
display = conf[CONF_PANEL_DISPLAY]
auto_bypass = conf[CONF_AUTO_BYPASS]
code_arm_required = conf[CONF_CODE_ARM_REQUIRED]
zones = conf.get(CONF_ZONES)
device_type = device[CONF_DEVICE_TYPE]
host = DEFAULT_DEVICE_HOST
port = DEFAULT_DEVICE_PORT
path = DEFAULT_DEVICE_PATH
baud = DEFAULT_DEVICE_BAUD
async def async_setup_entry(hass: HomeAssistantType, entry: ConfigEntry) -> bool:
"""Set up AlarmDecoder config flow."""
undo_listener = entry.add_update_listener(_update_listener)
ad_connection = entry.data
protocol = ad_connection[CONF_PROTOCOL]
def stop_alarmdecoder(event):
"""Handle the shutdown of AlarmDecoder."""
if not hass.data.get(DOMAIN):
return
_LOGGER.debug("Shutting down alarmdecoder")
nonlocal restart
restart = False
hass.data[DOMAIN][entry.entry_id][DATA_RESTART] = False
controller.close()
def open_connection(now=None):
async def open_connection(now=None):
"""Open a connection to AlarmDecoder."""
nonlocal restart
try:
controller.open(baud)
await hass.async_add_executor_job(controller.open, baud)
except NoDeviceError:
_LOGGER.debug("Failed to connect. Retrying in 5 seconds")
hass.helpers.event.track_point_in_time(
_LOGGER.debug("Failed to connect. Retrying in 5 seconds")
hass.helpers.event.async_track_point_in_time(
open_connection, dt_util.utcnow() + timedelta(seconds=5)
)
return
_LOGGER.debug("Established a connection with the alarmdecoder")
restart = True
hass.data[DOMAIN][entry.entry_id][DATA_RESTART] = True
def handle_closed_connection(event):
"""Restart after unexpected loss of connection."""
nonlocal restart
if not restart:
if not hass.data[DOMAIN][entry.entry_id][DATA_RESTART]:
return
restart = False
hass.data[DOMAIN][entry.entry_id][DATA_RESTART] = False
_LOGGER.warning("AlarmDecoder unexpectedly lost connection")
hass.add_job(open_connection)
@@ -185,18 +100,14 @@ def setup(hass, config):
"""Handle relay or zone expander message from AlarmDecoder."""
hass.helpers.dispatcher.dispatcher_send(SIGNAL_REL_MESSAGE, message)
controller = False
if device_type == "socket":
host = device[CONF_HOST]
port = device[CONF_DEVICE_PORT]
baud = ad_connection.get(CONF_DEVICE_BAUD)
if protocol == PROTOCOL_SOCKET:
host = ad_connection[CONF_HOST]
port = ad_connection[CONF_PORT]
controller = AdExt(SocketDevice(interface=(host, port)))
elif device_type == "serial":
path = device[CONF_DEVICE_PATH]
baud = device[CONF_DEVICE_BAUD]
if protocol == PROTOCOL_SERIAL:
path = ad_connection[CONF_DEVICE_PATH]
controller = AdExt(SerialDevice(interface=path))
elif device_type == "usb":
AdExt(USBDevice.find())
return False
controller.on_message += handle_message
controller.on_rfx_message += handle_rfx_message
@@ -205,24 +116,56 @@ def setup(hass, config):
controller.on_close += handle_closed_connection
controller.on_expander_message += handle_rel_message
hass.data[DATA_AD] = controller
open_connection()
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_alarmdecoder)
load_platform(
hass,
"alarm_control_panel",
DOMAIN,
{CONF_AUTO_BYPASS: auto_bypass, CONF_CODE_ARM_REQUIRED: code_arm_required},
config,
remove_stop_listener = hass.bus.async_listen_once(
EVENT_HOMEASSISTANT_STOP, stop_alarmdecoder
)
if zones:
load_platform(hass, "binary_sensor", DOMAIN, {CONF_ZONES: zones}, config)
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = {
DATA_AD: controller,
DATA_REMOVE_UPDATE_LISTENER: undo_listener,
DATA_REMOVE_STOP_LISTENER: remove_stop_listener,
DATA_RESTART: False,
}
if display:
load_platform(hass, "sensor", DOMAIN, conf, config)
await open_connection()
for component in PLATFORMS:
hass.async_create_task(
hass.config_entries.async_forward_entry_setup(entry, component)
)
return True
async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry):
"""Unload a AlarmDecoder entry."""
hass.data[DOMAIN][entry.entry_id][DATA_RESTART] = False
unload_ok = all(
await asyncio.gather(
*[
hass.config_entries.async_forward_entry_unload(entry, component)
for component in PLATFORMS
]
)
)
if not unload_ok:
return False
hass.data[DOMAIN][entry.entry_id][DATA_REMOVE_UPDATE_LISTENER]()
hass.data[DOMAIN][entry.entry_id][DATA_REMOVE_STOP_LISTENER]()
await hass.async_add_executor_job(hass.data[DOMAIN][entry.entry_id][DATA_AD].close)
if hass.data[DOMAIN][entry.entry_id]:
hass.data[DOMAIN].pop(entry.entry_id)
if not hass.data[DOMAIN]:
hass.data.pop(DOMAIN)
return True
async def _update_listener(hass: HomeAssistantType, entry: ConfigEntry):
"""Handle options update."""
_LOGGER.debug("AlarmDecoder options updated: %s", entry.as_dict()["options"])
await hass.config_entries.async_reload(entry.entry_id)
@@ -12,6 +12,7 @@ from homeassistant.components.alarm_control_panel.const import (
SUPPORT_ALARM_ARM_HOME,
SUPPORT_ALARM_ARM_NIGHT,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_CODE,
STATE_ALARM_ARMED_AWAY,
@@ -20,66 +21,70 @@ from homeassistant.const import (
STATE_ALARM_DISARMED,
STATE_ALARM_TRIGGERED,
)
from homeassistant.helpers import entity_platform
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.typing import HomeAssistantType
from . import (
from .const import (
CONF_ALT_NIGHT_MODE,
CONF_AUTO_BYPASS,
CONF_CODE_ARM_REQUIRED,
DATA_AD,
DEFAULT_ARM_OPTIONS,
DOMAIN,
OPTIONS_ARM,
SIGNAL_PANEL_MESSAGE,
)
_LOGGER = logging.getLogger(__name__)
SERVICE_ALARM_TOGGLE_CHIME = "alarm_toggle_chime"
ALARM_TOGGLE_CHIME_SCHEMA = vol.Schema({vol.Required(ATTR_CODE): cv.string})
SERVICE_ALARM_KEYPRESS = "alarm_keypress"
ATTR_KEYPRESS = "keypress"
ALARM_KEYPRESS_SCHEMA = vol.Schema({vol.Required(ATTR_KEYPRESS): cv.string})
def setup_platform(hass, config, add_entities, discovery_info=None):
async def async_setup_entry(
hass: HomeAssistantType, entry: ConfigEntry, async_add_entities
):
"""Set up for AlarmDecoder alarm panels."""
if discovery_info is None:
return
options = entry.options
arm_options = options.get(OPTIONS_ARM, DEFAULT_ARM_OPTIONS)
client = hass.data[DOMAIN][entry.entry_id][DATA_AD]
auto_bypass = discovery_info[CONF_AUTO_BYPASS]
code_arm_required = discovery_info[CONF_CODE_ARM_REQUIRED]
entity = AlarmDecoderAlarmPanel(auto_bypass, code_arm_required)
add_entities([entity])
entity = AlarmDecoderAlarmPanel(
client=client,
auto_bypass=arm_options[CONF_AUTO_BYPASS],
code_arm_required=arm_options[CONF_CODE_ARM_REQUIRED],
alt_night_mode=arm_options[CONF_ALT_NIGHT_MODE],
)
async_add_entities([entity])
def alarm_toggle_chime_handler(service):
"""Register toggle chime handler."""
code = service.data.get(ATTR_CODE)
entity.alarm_toggle_chime(code)
platform = entity_platform.current_platform.get()
hass.services.register(
DOMAIN,
platform.async_register_entity_service(
SERVICE_ALARM_TOGGLE_CHIME,
alarm_toggle_chime_handler,
schema=ALARM_TOGGLE_CHIME_SCHEMA,
{
vol.Required(ATTR_CODE): cv.string,
},
"alarm_toggle_chime",
)
def alarm_keypress_handler(service):
"""Register keypress handler."""
keypress = service.data[ATTR_KEYPRESS]
entity.alarm_keypress(keypress)
hass.services.register(
DOMAIN,
platform.async_register_entity_service(
SERVICE_ALARM_KEYPRESS,
alarm_keypress_handler,
schema=ALARM_KEYPRESS_SCHEMA,
{
vol.Required(ATTR_KEYPRESS): cv.string,
},
"alarm_keypress",
)
class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
"""Representation of an AlarmDecoder-based alarm panel."""
def __init__(self, auto_bypass, code_arm_required):
def __init__(self, client, auto_bypass, code_arm_required, alt_night_mode):
"""Initialize the alarm panel."""
self._client = client
self._display = ""
self._name = "Alarm Panel"
self._state = None
@@ -95,6 +100,7 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
self._zone_bypassed = None
self._auto_bypass = auto_bypass
self._code_arm_required = code_arm_required
self._alt_night_mode = alt_night_mode
async def async_added_to_hass(self):
"""Register callbacks."""
@@ -180,11 +186,11 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
def alarm_disarm(self, code=None):
"""Send disarm command."""
if code:
self.hass.data[DATA_AD].send(f"{code!s}1")
self._client.send(f"{code!s}1")
def alarm_arm_away(self, code=None):
"""Send arm away command."""
self.hass.data[DATA_AD].arm_away(
self._client.arm_away(
code=code,
code_arm_required=self._code_arm_required,
auto_bypass=self._auto_bypass,
@@ -192,7 +198,7 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
def alarm_arm_home(self, code=None):
"""Send arm home command."""
self.hass.data[DATA_AD].arm_home(
self._client.arm_home(
code=code,
code_arm_required=self._code_arm_required,
auto_bypass=self._auto_bypass,
@@ -200,18 +206,19 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
def alarm_arm_night(self, code=None):
"""Send arm night command."""
self.hass.data[DATA_AD].arm_night(
self._client.arm_night(
code=code,
code_arm_required=self._code_arm_required,
alt_night_mode=self._alt_night_mode,
auto_bypass=self._auto_bypass,
)
def alarm_toggle_chime(self, code=None):
"""Send toggle chime command."""
if code:
self.hass.data[DATA_AD].send(f"{code!s}9")
self._client.send(f"{code!s}9")
def alarm_keypress(self, keypress):
"""Send custom keypresses."""
if keypress:
self.hass.data[DATA_AD].send(keypress)
self._client.send(keypress)

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