Compare commits

..

1031 Commits

Author SHA1 Message Date
Paulus Schoutsen
5080246fb6 Merge pull request #74760 from home-assistant/rc 2022-07-08 16:08:11 -07:00
Shay Levy
a3abe7456e Fix CI failure due to integrations leaving dirty known_devices.yaml (#74329) 2022-07-08 14:29:24 -07:00
Paulus Schoutsen
14c6b8d41f Bumped version to 2022.7.2 2022-07-08 14:22:45 -07:00
Benoit Anastay
ea709912d4 Fix error with HDD temperature report in Freebox integration (#74718)
* Fix error whith HDD temperature report

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

* Use get method instead of ignoring the sensor

* Update test values

Add idle state drive with unkown temp

* update Tests for system sensors api

* Fix booleans values

* Fix disk unique_id

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

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

* script.translations develop

* Correct origin_menu option
2022-07-08 14:18:16 -07:00
Paulus Schoutsen
d539acf2ff Merge pull request #74689 from home-assistant/rc 2022-07-07 23:11:02 -07:00
Paulus Schoutsen
5018b91f6c Bumped version to 2022.7.1 2022-07-07 21:59:59 -07:00
Michał Mrozek
b73cc32ffb Update kaiterra-async-client to 1.0.0 (#74677) 2022-07-07 21:59:54 -07:00
J. Nick Koston
937d0d731d Fix exception in doorbird logbook during startup (#74649)
* Fix exception in doorbird logbook during startup

Fixes

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

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

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

* Fixed black and flake8 test

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

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

* Remove model match because sensors are matched with manufacturer channel

* Update manufacturerspecific.py

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

* Fix typing

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-07-07 21:59:43 -07:00
c-soft
fa220c5c25 Bump satel_integra to 0.3.7 to fix compat with python 3.10 (#74543) 2022-07-07 21:59:43 -07:00
Robert Svensson
bf5633fa43 Bump deCONZ dependency to v96 (#74460) 2022-07-07 21:59:42 -07:00
Franck Nijhof
eb0f8f9542 Merge pull request #74522 from home-assistant/rc 2022-07-06 20:32:56 +02:00
Franck Nijhof
06c6ddb2d6 Bumped version to 2022.7.0 2022-07-06 19:33:46 +02:00
Franck Nijhof
8e5b6ff185 Update Home Assistant Frontend to 20220706.0 (#74520)
Bump Home Assistant Frontend to 20220706.0
2022-07-06 19:33:27 +02:00
Franck Nijhof
380244fa7b Update homematicip to 1.0.3 (#74516) 2022-07-06 19:33:23 +02:00
Erik Montnemery
9d3dde60ff Fix openweathermap forecast sensors (#74513) 2022-07-06 19:33:20 +02:00
Gyosa3
519d15428c Add new alias for valid Celcius temperature units in Tuya (#74511) 2022-07-06 19:33:17 +02:00
Marcel van der Veldt
b277c28ed7 Bump aioslimproto to 2.1.1 (#74499) 2022-07-06 19:33:14 +02:00
Erik Montnemery
c7c8887719 Migrate aemet weather to native_* (#74494) 2022-07-06 19:33:10 +02:00
J. Nick Koston
06aa92b0b6 Bump aiohomekit to 0.7.20 (#74489) 2022-07-06 19:33:07 +02:00
J. Nick Koston
cd42555238 Fix apple tv not coming online if connected before entity created (#74488) 2022-07-06 19:33:03 +02:00
Paulus Schoutsen
56e90dd30b Bumped version to 2022.7.0b5 2022-07-05 13:56:38 -07:00
Erik Montnemery
89360516d7 Revert "Migrate aemet to native_*" (#74471) 2022-07-05 13:56:34 -07:00
Zack Barett
9cbb684d50 Bump Frontend to 20220705.0 (#74467) 2022-07-05 13:56:33 -07:00
J. Nick Koston
43fe351f1b Avoid loading mqtt for type checking (#74464) 2022-07-05 13:56:32 -07:00
J. Nick Koston
59aba0bc75 Bump aiohomekit to 0.7.19 (#74463) 2022-07-05 13:56:32 -07:00
Paulus Schoutsen
98d5c415b3 Bumped version to 2022.7.0b4 2022-07-05 08:50:00 -07:00
Franck Nijhof
c79b741971 Re-introduce default scan interval in Scrape sensor (#74455) 2022-07-05 08:49:47 -07:00
Arne Mauer
c933a49c71 Fix multi_match to match with the IKEA airpurifier channel (#74432)
Fix multi_match for FilterLifeTime, device_run_time, filter_run_time sensors for ikea starkvind
2022-07-05 08:49:46 -07:00
epenet
18b3ffbf99 Remove lutron_caseta from mypy ignore list (#74427) 2022-07-05 08:49:25 -07:00
J. Nick Koston
54516ee939 Bump pyunifiprotect to 4.0.9 (#74424) 2022-07-05 08:47:15 -07:00
J. Nick Koston
82b9eae882 Bump rflink to 0.0.63 (#74417) 2022-07-05 08:47:14 -07:00
Erik Montnemery
edb5c7d2c8 Correct climacell weather migration to native_* (#74409) 2022-07-05 08:47:13 -07:00
Erik Montnemery
3ff0218326 Migrate accuweather weather to native_* (#74407) 2022-07-05 08:47:12 -07:00
Shay Levy
db83c78478 Bump aioimaplib to 1.0.0 (#74393) 2022-07-05 08:47:11 -07:00
Erik Montnemery
25639ccf25 Migrate meteoclimatic weather to native_* (#74392) 2022-07-05 08:47:10 -07:00
Erik Montnemery
6ba06c0f53 Migrate met_eireann weather to native_* (#74391)
Co-authored-by: avee87 <6134677+avee87@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-07-05 08:47:10 -07:00
Erik Montnemery
d0a86b3cd2 Migrate ipma weather to native_* (#74387) 2022-07-05 08:47:09 -07:00
Erik Montnemery
f0993ca4a8 Migrate knx weather to native_* (#74386) 2022-07-05 08:47:08 -07:00
Paulus Schoutsen
bb84484096 Guard invalid data sensor significant change (#74369) 2022-07-05 08:47:07 -07:00
Kevin Stillhammer
ce04480e60 Support unload for multiple adguard entries (#74360) 2022-07-05 08:47:07 -07:00
David Brückmann
a90654bd63 Fix unreachable DenonAVR reporting as available when polling fails (#74344) 2022-07-05 08:47:06 -07:00
Erik Montnemery
3aafa0cf49 Migrate aemet to native_* (#74037) 2022-07-05 08:47:05 -07:00
Paulus Schoutsen
b7a02d9465 Bumped version to 2022.7.0b3 2022-07-03 13:56:29 -07:00
shbatm
c530e965f8 Onvif: bump onvif-zeep-async to 1.2.1 (#74341)
* Update requirements_all.txt

* Update requirements_test_all.txt

* Update manifest.json
2022-07-03 13:56:24 -07:00
J. Nick Koston
c2072cc92b Fix esphome state mapping (#74337) 2022-07-03 13:56:24 -07:00
G Johansson
2a1a6301a9 Fix unique id issue for OpenWeatherMap (#74335) 2022-07-03 13:56:23 -07:00
Franck Nijhof
fe437cc9b7 Add configuration directory to system health (#74318) 2022-07-03 13:56:22 -07:00
avee87
ec03631339 Remove visibility from metoffice weather (#74314)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-07-03 13:56:21 -07:00
avee87
0ca4e81e13 Migrate metoffice to native_* (#74312) 2022-07-03 13:56:20 -07:00
Paulus Schoutsen
08ee73d671 Guard creating areas in onboarding (#74306) 2022-07-03 13:56:20 -07:00
mbo18
373347950c Migrate Meteo_france to native_* (#74297) 2022-07-03 13:56:19 -07:00
Dave T
4e793a51ba Dont substitute user/pass for relative stream urls on generic camera (#74201)
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
2022-07-03 13:56:18 -07:00
Paulus Schoutsen
bc41832c71 Bumped version to 2022.7.0b2 2022-07-01 10:12:02 -07:00
J. Nick Koston
2305c625fb Revert scrape changes to 2022.6.6 (#74305) 2022-07-01 10:11:57 -07:00
Álvaro Fernández Rojas
877803169b Fix QNAP QSW DHCP discover bugs (#74291)
qnqp_qsw: fix DHCP discover bugs

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

* change syntax
2022-07-01 10:11:55 -07:00
J. Nick Koston
b61530742e Fix key collision between platforms in esphome state updates (#74273) 2022-07-01 10:11:54 -07:00
Christopher Hoage
1351b83731 Bump venstarcolortouch to 0.17 (#74271) 2022-07-01 10:11:53 -07:00
Joakim Plate
135d104430 Bump pyRFXtrx to 0.30.0 (#74146) 2022-07-01 10:11:51 -07:00
Paulus Schoutsen
762fe17f48 Bumped version to 2022.7.0b1 2022-06-30 11:02:38 -07:00
Zack Barett
4755f00549 Bump frontend to 20220630.0 (#74266) 2022-06-30 11:02:22 -07:00
Phil Bruckner
3db1552f26 Fix Life360 unload (#74263)
* Fix life360 async_unload_entry

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

* Add test for dhcp

* Add another test to cover when there are no changes required
2022-06-30 11:02:09 -07:00
Christopher Bailey
d36643947d Fix duplicate key for motion sensor for UniFi Protect (#74202) 2022-06-30 11:02:08 -07:00
Shay Levy
9d727d2a71 Fix Shelly Duo RGBW color mode attribute (#74193) 2022-06-30 11:02:07 -07:00
Franck Nijhof
7690ecc4ff Fix clicksend request content type headers (#74189) 2022-06-30 11:02:07 -07:00
MasonCrawford
71c2f99ee4 Add config flow to lg_soundbar (#71153)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-30 11:02:06 -07:00
Franck Nijhof
78fe1fb102 Bumped version to 2022.7.0b0 2022-06-29 19:29:36 +02:00
Zack Barett
466ba47b35 Frontend bump to 20220629.0 (#74180) 2022-06-29 12:10:21 -05:00
TheJulianJES
4d673278c7 Fix color transition when turning on a ZHA light (#74024)
* Initial implementation of fixing color transition when turning on a ZHA light

* Add off_with_transition attribute, very slightly cleanup

* Fix unnecessarily using last off_brightness when just turning on light

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

* Use DEFAULT_TRANSITION constant for color transition, add DEFAULT_MIN_BRIGHTNESS constant

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

* Improve config_flow.py type checking

* Add tests for config flow

Fix form defaults for reauth flow.

* Cover reauth when config entry loaded

* Update per review (except for dataclasses)

* Restore check for missing location information

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

* Fix updates from review

* Update tests per review changes

* Change IntegData to a dataclass

* Use dataclasses to represent fetched Life360 data

* Always add extra attributes

* Update per review take 2

* Tweak handling of bad last_seen or location_accuracy

* Fix type of Life360Member.gps_accuracy

* Update per review take 3

* Update .coveragerc

* Parametrize successful reauth flow test

* Fix test coverage failure

* Update per review take 4

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

* Enable Flame/Pilot switch

* Update homeassistant/components/intellifire/switch.py

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

* Update homeassistant/components/intellifire/switch.py

Thats a great fix!

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

* write not update

* fixed forced upates

* removed data field

* Refactor to support update to backing library

* pre-push-ninja-style

* moving over

* fixed coverage

* removed tuple junk

* re-added description

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

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

* adressing PR comments

* actually store generated values

* Update homeassistant/components/intellifire/__init__.py

Way better option!

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

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

* Fixed black and flake8 test

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

* Isort and codespell fixes

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

* update sensors to support the new ikea_airpurifier channel

* Fix black, flake8, isort

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

* Last fix for test_fan.py

* fix fan test

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

* Update homeassistant/components/system_bridge/sensor.py

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

* Add missing import

* Update homeassistant/components/system_bridge/sensor.py

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

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

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

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

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

* migrate to new async integration library

* updated unit tests

* updated logger

* fix tests and improve test coverage

* fix test

* fix requirements

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

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

* Increase test coverage to 100%

* Increase test coverage

* Verify that stream source includes user:pass

* Code review: refactor test to use MockConfigEntry

* Code review: Improve test docstring

* Edit comment; retrigger CI.

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

* Resolve conflicts

* Fix lint

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

* Move definition back to init

* Use attributes

* Revert "Use attributes"

This reverts commit ff4851015d5e15b1b1304554228ca274d586977d.

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

* Update homeassistant/config_entries.py

* fix cast tests

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

* Added callback logic for door status

* close unused connections

* Close connection after verification

* Matched to current version

* Matched __init__.py to current release

* Matched cover.py to existing version

* added missing awaits

* Moved callback

* Bumped AIOAladdinConnect to 0.1.3

* Removed await from callback config

* Finished tests

* Added callback test

* Bumped AIOAladdinConnect to 0.1.4

* Finished tests

* Callback correct call to update HA

* Modified calls to state machine

* Modified update path

* Removed unused status

* Bumped AIOAladdinConnect to 0.1.7

* Revised test_cover cover tests and bumped AIOAladdinConnect to 0.1.10

* Bumped AIOAladdinConnect to 0.1.11

* Bumped AIOAladdinConenct to 0.1.12

* Bumped AIOAladdinConnect to 0.1.13

* Bumped AIOAladdinConnect to 0.1.14

* Added ability to handle multiple doors

* Added timout errors to config flow

* asyncio timout error added to setup retry

* Cleanup added to hass proceedure

* Bumped AIOAladdinConnect to 0.1.16

* Bumped AIOAladdinConnect to 0.1.18

* Bumped AIOAladdinConnect to 0.1.19

* Bumped AIOAladdinConnect to 0.1.20

* Addressed recommended changes: SCAN_INTERVAL and spelling

* Moved to async_get_clientsession and bumped AIOAladdinConnect to 0.1.21

* Missing test for new code structure

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

* Update tests/components/aladdin_connect/test_init.py

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

* Removed extra_attributes.

* Added typing to variable acc

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

* Refactor for readability

* Skip unjoin call if already ungrouped

* Store unjoin data in a dedicated dataclass

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

Fixes #59080

* adjust test for stronger entity glob includes

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

* add unsupported attributes and refactor

* remove await

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

* config entities

* remove multistate input sensor used for testing

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

* Tests

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

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

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

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

* Undo related change

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

* Cleanup device

* Apply suggestion

* Raise ValueError

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

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

* Improve typing of dict arguments

* Use mapping for async_step_reauth

* Add async_step_reauth_confirm

* Don't try old token

* Adjust translations

* Adjust tests

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

* Update tests/components/awair/test_config_flow.py

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

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

* feat(nuki): add ring action state attribute

* Emit event on Nuki Opener ring

* Removed event attributes

* Use entity registry to get entity id

* Move event firing to the async update method

* Move events code outside try-except

* Black autoformat

* Added missing period to doc

* Import order

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

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

* Avoid false positivies on device_class

* Adjust device_class handling

* Adjust device_class again using a singleton

* Adjust device_class (again)

* Simplify DEVICE_CLASS check

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

* Switchbot depenacy update, full async.

* Update tests, remove redundant config entry check.

* Update requirements_test_all.txt

* Update requirements_all.txt

* Remove asyncio lock. Not required anymore with bleak.

* Update requirements_all.txt

* Update requirements_test_all.txt

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

* Add special case of Mapping[xxx, Any]

* Add Mapping tests

* Add entity functions

* Adjust docstring

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

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

* Revert changes to rflink

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

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

* Adjust to latest findings

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

* tweak

* cache

* cache hash

* weaken

* Revert "weaken"

This reverts commit 4856f500807c21aa1c9333d44fd53555bae7bb82.

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

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

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

* cover

* Update homeassistant/helpers/template.py

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

* id reuse is possible

* account for iterting all sensors

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

* Fix security channel type hints

* Fix homeautomation channel type hints

* Fix type hints in zha base channel

* Adjust select entity

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

Fixes #73818

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

* fix warning message

* fix typos

* Add importing yaml config

* patch integration setup

* Add check for errrors raised by the library

* fix coverage

* Adjust comment and logging message

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

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

Still need to work out problem building wheels

--

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

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

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

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

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

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

* use for views as well

* handle UnicodeEncodeError

* tweak

* DRY

* DRY

* not needed

* fix tests

* Update tests/components/http/test_view.py

* Update tests/components/http/test_view.py

* black

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

* Update requirements

* push opencv

* we don't need numpy on core for now

* Remove unused ignore

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

* Finalize pure boost switch

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

* update tests

* Remove extra function wrapper

* Recover debug logging for subscriptions

* Small changes and test

* Update homeassistant/components/mqtt/client.py

* Update client.py

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

* Adjust state_attributes

* Adjust capability_attributes

* Adjust is_on

* Adjust vallox component

* Revert "Adjust is_on"

This reverts commit 48d207f250f99d8126702342c05a6be6e877e4d5.

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

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

* Change generic

* Use v10.0.0b2

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

* Add test

* Add test

* Review comments

* Adjust tests

* Rename variable

* also test keyword_only args

* Use docstrings

* Fix tests

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

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

Fixes #73610

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

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

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

* Address review comment

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

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

* Fix zha entity type hints

* Fix switch type hints

* Fix light type hints

* Fix cover type hints

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

* Fix zha button type hints

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

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

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

* Speed up creating group entities from YAML

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

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* Update homeassistant/components/group/__init__.py

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

* typing

* unbreak

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

* Add checks for lock

* Add tests

* Fix components

* Fix spelling

* Revert "Fix components"

This reverts commit 121ff6dc511d28c17b4fc13185155a2402193405.

* Adjust comment

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

* Adjustments based on code review

* Changes from code review, use dict instead of tuple

* Remove unneeded deafult in dict get

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

* Update tts.py

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

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

* ...

* Update const.py

* Update ingress.py

* Update test_ingress.py

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

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

* Add missing translations and remove untested committed

* Remove unnecessary translation

* Remove dead code

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

* Add test coverage for multiple config entries

* Add support for multiple config entries to google config flow

* Clear hass.data when unloading config entry

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

* Assign existing google config entries a unique id

* Migrate entities to new unique id format

* Support muliple accounts per oauth client id

* Fix mypy typing errors

* Hard fail to keep state consistent, removing graceful degredation

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

* Adjust comment

* Simplify return-type

* Only check properties when ignore_missing_annotations is disabled

* Adjust tests

* Add comment

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

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

* Fix pycketcasts in requirements_all.txt

* Fix pycketcasts in requirements_all.txt

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

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

* Adjust device_action

* Adjust device_tracker

* Adjust fan

* Adjust lock

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

* Fix hint

* Always use Tuple

* Replace empty list with empty tuple

* Allow float for third config tuple value

* ReportConfig -> AttrReportConfig

* dict -> AttrReportConfig

* Allow int attributes

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

* fix async_setup

* add strings

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

* Update cover.py

* Adjust tests

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

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

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

Fixes #73442

* Update sensor.py

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

* Adjust .coveragerc

* Apply suggestions from code review

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

* Add TypeVar

* Apply suggestions from code review

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

* One more

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

* Flake8

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

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

* Fix linked device

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

* Mark Somfy thermostat as supported

* Fix wrong usage of cast

* Update presets to lowercase

* Rename constants

* Remove _saved_target_temp

* Apply black

* Clean code

* Fix mypy errors

* Use constants from pyoverkiz

* Use enum for target temp

* Add comment

* Use ClimateEntityFeature

* Ease code

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

* Remove unused imports

* Use HVACAction

* Use HVACMode

* Use more Overkiz constants

* Don’t copy/paste

* Don’t use magic number

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

* Cleanup ZigpyDeviceType

* Cleanup ZigpyEndpointType

* Cleanup ZigpyGroupType

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

* Adjust parsers

* Adjust event

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

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

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* docs were wrong

* Update homeassistant/components/hunterdouglas_powerview/cover.py

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

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

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

* Adjust airvisual

* Adjust aladdin_connect

* Adjust ambee

* Adjust aussie-broadband

* Adjust brunt

* Adjust cloudflare

* Adjust deconz

* Adjust deluge

* Adjust devolo_home_control

* Adjust efergy

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

* Address review comment

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

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

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

* Fix mypy errors

* Adjust media_player

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

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

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

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

* qnap_qsw: config_flow: add async_step_dhcp

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

* qnap_qsw: config_flow: lower DHCP logging

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

* tests: qnap_qsw: fix copy & paste

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

* qnap_qsw: dhcp: introduce changes suggested by @bdraco

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

* Update homeassistant/components/qnap_qsw/config_flow.py

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

* qnap_qsw: async_step_user: disable raising on progress

Allows async_step_user to win over a discovery.

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

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

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

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

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

* Fix tests

* Fix mypy

* One service to two services

* Minor fix test

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

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

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

Fixes #73610

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

* Add type hints

* Remvoe unused strings

* Remove persistent notification setup

* Patch async_configre

* Fix pylint warning

* Address review comments

* Clean types

* Code review: defer local var assignment

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

* Use options

* Adjust help text

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

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

* Support discovery in nest config flow

* Remove configuration entries

* Remove unused import

* Remove dead code

* Update homeassistant/components/nest/strings.json

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

* Remove commented out code

* Use config flow for app auth reauthentication path

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

* More dead code removal

* Apply suggestions from code review

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

* Remove outdated code

* Update homeassistant/components/nest/config_flow.py

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

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

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

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

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

* fix Black and isort errors

fixing errors from Black and isort CI validation

* Fix black and flake8 issues

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

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

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

* Code cleanup

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

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

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

* tweak mocking

* -vvv

* fix time freeze being too broad in litterrobot

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

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

* Remove unneeded comments

* Remove supported features

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

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

* Fix mypy warning

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

* Remove type enforcements

* Lint

* Fix legacy unit_of_measurement

* Address review comments

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

* Wait for entry setup in test

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

* Add checks on return_type

* Fix tests

* Add tests

* Add BinOp to test

* Update tests/pylint/test_enforce_type_hints.py

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

* Update pylint/plugins/hass_enforce_type_hints.py

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

* Add TypeHintMatch property

* Update pylint/plugins/hass_enforce_type_hints.py

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

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

* Remove defered uniqueid assigner now yaml has gone

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

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

* Only process one discovery at a time

* Revert all LIFX duplicate/inflight discovery checks

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

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

* Bump aiolifx version to support the latest LIFX devices

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

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

Fixes #72894.

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

* Refactor LIFX discovery to better handle duplicate responses

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

* Update clear_inflight_discovery with review suggestion

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

* Move the existing entity check to before the asyncio lock

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

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

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

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

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

* ffmpeg

* uno mas

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

* Fix initial loading of data

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

* simplify tests

* Remove extra file

* remove unused import

* fix redundant code

* Update homeassistant/components/eight_sleep/__init__.py

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

* incorporate feedback

* Review comments

* remove typing from tests

* Fix based on changes

* Fix requirements

* Remove stale comment

* Fix tests

* Reverse the flow and force the config entry to reconnect

* Review comments

* Abort if import flow fails

* Split import and user logic

* Fix error

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

* Code cleanup

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

* Update homeassistant/components/mqtt/__init__.py

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

* Update homeassistant/components/mqtt/mixins.py

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

* Update homeassistant/components/mqtt/__init__.py

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

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

* fix black

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

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

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

This reverts commit 4dbd11ee04b4e8f935a22dfb51405b7bdaaba676.

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

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

This reverts commit 14366c6a2491584282b8bb96fe3779fd41849897.

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

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

* Update homeassistant/components/mqtt/__init__.py

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

* Update homeassistant/components/mqtt/mixins.py

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

* Update homeassistant/components/mqtt/__init__.py

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

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

* suggest and bugs fix

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

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

* Remove unsupported boards

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

* Fix inconsistencies and bugs in input validation

* Update validation rules and exceptions

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

* fix black

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

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

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

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

This reverts commit 4dbd11ee04b4e8f935a22dfb51405b7bdaaba676.

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

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

This reverts commit 14366c6a2491584282b8bb96fe3779fd41849897.

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

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for derived classes

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

* MartinHjelmare's suggestion for annotations

* vesync: fix imports

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

* Fix schema and default name

* Add tests

* Update requirements

* Improve test

* Tweak TemplateSensor initializer

* Drop attributes and availability from TemplateEntity

* Use rest sensor for proof of concept

* Revert changes in SNMP sensor

* Don't set _attr_should_poll in mixin class

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

* update yolink-api ignore invalidate message
2022-06-08 08:11:41 +02:00
Raman Gupta
7980e3f406 Tweak zwave_js firmware upload view (#73202)
Small tweaks to zwave_js firmware upload view
2022-06-08 08:10:48 +02:00
epenet
f91aa33c5f Add FlowResultType enum to data entry flow (#72955) 2022-06-07 22:02:44 -07:00
J. Nick Koston
329595bf73 Make radiotherm hold mode a switch (#73104) 2022-06-07 14:26:06 -10:00
GitHub Action
1331c75ec2 [ci skip] Translation update 2022-06-08 00:22:19 +00:00
J. Nick Koston
7ae8bd5137 Remove sqlalchemy lambda_stmt usage from history, logbook, and statistics (#73191) 2022-06-07 16:15:50 -07:00
Aaron Bach
db0f089a2e Fix bugs with RainMachine zone run time sensors (#73179) 2022-06-07 16:14:40 -07:00
Michael
8c34067f17 Fix creating unique IDs for WiFi switches in Fritz!Tools (#73183) 2022-06-07 16:11:38 -07:00
Michael
eca6768016 Use default None for voltage property of FritzDevice in Fritz!Smarthome (#73141)
use default None for device.voltage
2022-06-07 16:01:44 -07:00
Eric Severance
d587e4769a Bump pywemo to 0.9.1 (#73186) 2022-06-07 23:39:15 +02:00
Robert Hillis
94c037605a Address late comment on Goalzero refactor (#73180) 2022-06-07 22:35:59 +02:00
Christopher Bailey
1bc9867940 Bump version of pyunifiprotect to 3.9.0 (#73168)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-07 08:19:39 -10:00
Maciej Bieniek
f10cae1052 Add missing state_class to xiaomi_aqara sensors (#73167)
Add missing state_class
2022-06-07 20:57:29 +03:00
Maciej Bieniek
981c34f88d Use class attribute instead of property in min_max integration (#73175) 2022-06-07 19:15:25 +02:00
Maciej Bieniek
0b5c0f8249 Bump nam backend library (#72771)
* Update config flow

* Fix discovery with auth

* Call check_credentials() on init

* Update tests

* Bump library version

* Cleaning

* Return dataclass instead of tuple

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

* fix logbook imports

* migrate new tests

* few more

* last one

* fix merge

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

* Use Mapping

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

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

* fixing after MartinHjelmare review conversion alarm state to hass state

* fixing after MartinHjelmare review conversion alarm state to hass state

* manage the status in the alarm control

* simplyfing return function

* Removing iAlarm XR integration because of Antifurto365 explicit request to remove after some issues in their cloud service
2022-06-06 22:23:10 -07:00
Raman Gupta
16bf6903bd Bump pyeight to 0.3.0 (#73151) 2022-06-07 00:07:49 -04:00
GitHub Action
05e5dd7baf [ci skip] Translation update 2022-06-07 00:20:09 +00:00
Jesse Hills
ca54eaf40d Fix KeyError from ESPHome media players on startup (#73149) 2022-06-07 11:02:08 +12:00
jjlawren
4f75de2345 Fix errors when unjoining multiple Sonos devices simultaneously (#73133) 2022-06-06 15:18:07 -07:00
Steven Looman
6c9408aef5 Bump async-upnp-client==0.31.1 (#73135)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-06 11:46:52 -10:00
Álvaro Fernández Rojas
dbd3ca5ecd airzone: update aioairzone to v0.4.5 (#73127)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2022-06-06 23:19:15 +03:00
Marc Mueller
caed0a486f Update mypy to 0.961 (#73142) 2022-06-06 22:03:52 +02:00
J. Nick Koston
de2e9b6d77 Fix state_changes_during_period history query when no entities are passed (#73139) 2022-06-06 12:50:52 -07:00
Paulus Schoutsen
861de5c0f0 Point iAlarm XR at PyPI fork (#73143) 2022-06-06 12:49:15 -07:00
Marc Mueller
983a76a91c Update pylint to 2.14.0 (#73119) 2022-06-06 21:43:47 +02:00
Jan Stienstra
ed54cea3f2 Jellyfin: Add support for movie collections (#73086) 2022-06-06 12:17:21 -07:00
Igor Loborec
a9e4673aff Bump holidays to 0.14.2 (#73121) 2022-06-06 19:07:02 +02:00
rappenze
e5b447839a Fix fibaro cover detection (#72986) 2022-06-06 13:20:16 +02:00
J. Nick Koston
0b62944148 Mark counter domain as continuous to exclude it from logbook (#73101) 2022-06-05 21:25:26 -10:00
J. Nick Koston
457c7a4ddc Fix incompatiblity with live logbook and google_assistant (#73063) 2022-06-05 19:06:49 -10:00
G Johansson
7536586bed Add binary sensors for Pure devices Boost Config (#73032) 2022-06-05 18:58:48 -10:00
J. Nick Koston
6b2e5858b3 Send an empty logbook response when all requested entity_ids are filtered away (#73046) 2022-06-05 21:14:47 -07:00
J. Nick Koston
c66b000d34 Reduce branching in generated lambda_stmts (#73042) 2022-06-05 21:13:31 -07:00
lymanepp
3744edc512 Tomorrowio utc fix (#73102)
* Discard past data using local time instead of UTC

* Tweak changes to fix tests

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

* Update .coveragerct

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

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

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

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

* split long lines
2022-06-05 09:32:59 +02:00
G Johansson
aad3253ed1 Bump pysensibo to 1.0.16 (#73029) 2022-06-04 18:47:08 -10:00
kingy444
41f38f1099 Use constant in powerview diagnostics (#73059) 2022-06-04 18:14:04 -10:00
kingy444
395d58840c Add Hunter Douglas Powerview Diagnostics (#72918)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-04 17:42:21 -10:00
Robert Hillis
a502a8798f Add config flow to skybell (#70887) 2022-06-04 16:37:08 -10:00
J. Nick Koston
cbea919c3d Bump aiolookup to 0.1.1 (#73048) 2022-06-04 16:34:04 -10:00
Robert Hillis
e98a641376 Refactor goalzero (#72398) 2022-06-04 18:50:38 -07:00
J. Nick Koston
bc22e79c7b Add a test for a complex entity filter (#73005) 2022-06-04 18:43:23 -07:00
GitHub Action
13734428bb [ci skip] Translation update 2022-06-05 00:26:15 +00:00
J. Nick Koston
7ac7af094f Fix missing historical context data in logbook for MySQL and PostgreSQL (#73011) 2022-06-04 12:54:10 -07:00
J. Nick Koston
0a2a166860 Fix history stats not comparing all times in UTC (#73040) 2022-06-04 12:47:30 -07:00
Matrix
c7416c0bb9 Add yolink vibration sensor (#72926)
* Add yolink vibration sensor

* add battery entity

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

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

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

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

* fix typo

* fix import

* fix isort

* add gateway_test

* implement gateway test

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

This PR fixes #72153

* Added test case as requested

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

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

* Keep track of a context for each listener

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

* Clone list before calling callbacks

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

* Only yield actual values

* Add a test for update context

* Factor out iteration of _listeners to helper

* Verify context is passed to coordinator

* Switch to Any as type instead of object

* Remove function which use was dropped earliers

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

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

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

Fixes #72894.

Signed-off-by: Avi Miller <me@dje.li>
2022-06-03 08:09:00 +02:00
epenet
fe1c3d3be8 Revert "Allow non-async functions in device automation (#72147)" (#72909) 2022-06-02 23:00:47 -07:00
Allen Porter
3a8a816584 Cleanup nest config flow tests to use common setup fixtures (#72878)
* Cleanup nest config flow tests to use common setup

* Remove some conditionals in test setup
2022-06-02 21:42:52 -07:00
J. Nick Koston
5b31414225 Fix misalignments between sql based filtering with the entityfilter based filtering (#72936) 2022-06-02 20:52:53 -07:00
J. Nick Koston
f52fa3599f Only create auto comfort entities for BAF devices that support them (#72948) 2022-06-02 20:51:27 -07:00
GitHub Action
43b802252a [ci skip] Translation update 2022-06-03 00:19:45 +00:00
Paulus Schoutsen
fbb08994f4 Only sync when HA is started up as we already sync at startup (#72940) 2022-06-02 16:15:04 -07:00
Khole
a4c3585448 Fix Hive authentication (#72929) 2022-06-02 14:54:26 -07:00
J. Nick Koston
9fbde245d0 Fix performance of logbook entity and devices queries with large MySQL databases (#72898) 2022-06-02 14:54:06 -07:00
Erik Montnemery
b97d346df7 Fix reload of MQTT yaml config (#72901) 2022-06-02 11:32:31 -07:00
nojocodex
8e4321af59 Fix logging & exit code reporting to S6 on HA shutdown (#72921) 2022-06-02 19:49:08 +02:00
Allen Porter
8c50c7fbd4 Fix bug in caldav and avoid unnecessary copy of dataclass (#72922) 2022-06-02 08:40:13 -07:00
J. Nick Koston
d3b1896a06 Only present history_stats state as unknown if the time is in the future (#72880) 2022-06-02 08:39:53 -07:00
puddly
1c38c20cac Bump ZHA dependency zigpy from 0.45.1 to 0.46.0 (#72877) 2022-06-02 08:27:12 -07:00
J. Nick Koston
f1a31d8d33 Add support for async_remove_config_entry_device to unifiprotect (#72742)
* Add support for async_remove_config_entry_device to unifiprotect

* tweaks

* tweaks

* more cleanups

* more cleanups

* fix unhelpful auto import

* add coverage

* fix mac formatting

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

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

* Merge test_common_new to test_common

* Add alarm_control_panel

* Add binary_sensor

* Add button

* Add camera

* Add climate

* Add config_flow

* Add cover

* Add device_tracker_disovery

* Add device_trigger

* Add diagnostics

* Add discovery

* Add humidifier

* Add init

* Add lecacy_vacuum

* Add light_json

* Add light_template

* Add light

* Add lock

* Add number

* Add scene

* Add select

* Add sensor

* Add siren

* Add state_vacuum

* Add subscription

* Add switch

* Add tag

* Add trigger

* Add missed tests

* Add another missed test

* Add device_tracker

* Remove commented out code

* Correct tests according comments

* Improve mqtt_mock_entry and recover tests

* Split fixtures with and without yaml setup

* Update fixtures manual_mqtt

* Update fixtures mqtt_json

* Fix test tasmota

* Update fixture mqtt_room

* Revert fixture changes, improve test

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

* reset mock outside context manager

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

* Add comment

* Remove async requirement for get_automations_func

* Update homeassistant/components/device_automation/__init__.py

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

* Update homeassistant/components/device_automation/__init__.py

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

* Add Exception to type hint

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

* Update remaining pylint plugins

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

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

* Rework integration pt1

* Show by default

* Handle auth error

* Use const

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

* Remove visible

* Version latest

* Filesystem space use

* Dev package

* Fix sensor

* Add services

* Update package

* Add temperature and voltage

* GPU

* Bump package version

* Update config flow

* Add displays

* Fix displays connected

* Round to whole number

* GPU fan speed in RPM

* Handle disconnections

* Update package

* Fix

* Update tests

* Handle more errors

* Check submodule and return missing uuid in test

* Handle auth error on config flow

* Fix test

* Bump package version

* Handle key errors

* Update package to release version

* Client session in config flow

* Log

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

* 30 secs

* Add test for timeout error

* Cleanup logs

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

* Update tests/components/system_bridge/test_config_flow.py

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

* uuid raise specific error

* Type

* Lambda to functions for complex logic

* Unknown error test

* Bump package to 3.0.5

* Bump package to 3.0.6

* Use typings from package and pydantic

* Use dict()

* Use data listener function and map to models

* Use passed module handler

* Use lists from models

* Update to 3.1.0

* Update coordinator to use passed module

* Improve coordinator

* Add debug

* Bump package and avaliable -> available

* Add version check

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

* Keep astroid migration for another PR

* Defer elif case

* Adjust tests

* Use ancestors

* Match on single base_class

* Invert for loops

* Review comments

* slots is new in 3.10
2022-06-01 13:09:53 +02:00
J. Nick Koston
5d2326386d Fix logbook spinner never disappearing when all entities are filtered (#72816) 2022-06-01 12:33:46 +02:00
starkillerOG
023990577c Add Motionblinds WoodShutter support (#72814) 2022-06-01 12:33:13 +02:00
Paulus Schoutsen
d57a650290 Don't trigger entity sync when Google Assistant gets disabled (#72805) 2022-06-01 12:12:54 +02:00
J. Nick Koston
d8b0376942 Fix purge of legacy database events that are not state changed (#72815) 2022-06-01 11:56:06 +02:00
dependabot[bot]
ee861c8ea5 Bump actions/cache from 3.0.2 to 3.0.3 (#72817)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-01 11:35:36 +02:00
J. Nick Koston
e874a04319 Bump sqlalchemy to 1.4.37 (#72809)
Fixes a bug where reconnects might fail with MySQL 8.0.24+

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

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

* add test

* use Mapping for async_step_reauth arguments

* only update changed data

* improve tests

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

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

* Adjust tautulli

* Adjust tile

* Adjust tractive

* Adjust trafikverket_ferry

* Adjust trafikverket_train

* Adjust unifiprotect

* Adjust uptimerobot

* Adjust verisure

* Adjust vlc_telnet

* Adjust wallbox

* Adjust watttime

* Adjust yale_smart_alarm
2022-05-31 22:44:06 +02:00
Joakim Plate
84779482b8 Don't set headers kwargs multiple times (#72779) 2022-05-31 13:08:50 -07:00
J. Nick Koston
35ee4ad55b Prevent live logbook from sending state changed events when we only want device ids (#72780) 2022-05-31 13:08:04 -07:00
David F. Mulcahey
7854aaa746 Bump ZHA quirks lib to 0.0.75 (#72765) 2022-05-31 12:24:35 -07:00
J. Nick Koston
935ef79156 Fix queries for logbook context_ids running in the wrong executor (#72778) 2022-05-31 12:24:18 -07:00
J. Nick Koston
d9d22a9556 Initial orjson support (#72754) 2022-05-31 12:18:11 -07:00
Aaron Bach
a3e1b285cf Alter RainMachine to not create entities if the underlying data is missing (#72733) 2022-05-31 13:09:07 -06:00
Malte Franken
638992f9c4 Make zone condition more robust by ignoring unavailable and unknown entities (#72751)
* ignore entities with state unavailable or unknown

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

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

* Adjust tests

* Refactor _METHOD_MATCH dict

* Remove duplicate function

* Early exit

* Undo object hint

* METHOD > FUNCTION

* Add comment

* Remove extend

* Remove break

* Extract __any_platform__

* Add tests

* Cache _PLATFORMS

* Adjust tests

* Review comments

* mypy

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

* Update integrations depending on MQTT
2022-05-31 09:32:44 +02:00
J. Nick Koston
4ae3929a00 Revert wiz reload on setup_retry discovery (#72743) 2022-05-30 22:52:05 -07:00
J. Nick Koston
b3682a5c81 Revert bond reload on setup_retry discovery (#72744) 2022-05-30 22:51:35 -07:00
Raman Gupta
5fdc694325 Bump zwave-js-server-python to 0.37.1 (#72731)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-05-30 22:05:09 -07:00
Aaron Bach
969b7bd448 Bump simplisafe-python to 2022.05.2 (#72740) 2022-05-30 22:04:53 -07:00
jjlawren
17abbd7f51 Bump plexapi to 4.11.2 (#72729) 2022-05-30 20:56:59 -07:00
Paulus Schoutsen
99f3ca1f08 Add support for announce to play_media (#72566) 2022-05-30 20:41:05 -07:00
J. Nick Koston
f9bd384e6c Stop waiting for setup retry upon discovery (#72738) 2022-05-30 20:24:34 -07:00
Aaron Bach
ec44a63a84 Bump regenmaschine to 2022.05.1 (#72735) 2022-05-30 18:58:08 -06:00
J. Nick Koston
587fd05603 Make logbook inherit the recorder filter (#72728) 2022-05-30 17:34:32 -07:00
GitHub Action
362f5720ed [ci skip] Translation update 2022-05-31 00:23:11 +00:00
Aaron Bach
6b3f6e22d0 Fix invalid RainMachine syntax (#72732) 2022-05-30 17:48:42 -06:00
Raman Gupta
565b60210d Add @lymanepp as codeowner to tomorrowio (#72725) 2022-05-30 18:41:30 -04:00
eyager1
6f8ba7ee2f Add empty string to list of invalid states (#72590)
Add null state to list of invalid states
2022-05-31 00:32:52 +02:00
epenet
285a7251df Adjust config-flow type hints in zwave_me (#72714) 2022-05-31 00:10:38 +02:00
Duco Sebel
59f155b482 Fix homewizard diagnostics and add tests (#72611) 2022-05-30 14:37:28 -07:00
Aaron Bach
8e75547ca4 Guard against missing data in 1st generation RainMachine controllers (#72632) 2022-05-30 14:36:58 -07:00
Ethan Madden
8c16ac2e47 Vesync air quality (#72658) 2022-05-30 22:13:53 +02:00
Franck Nijhof
7ecb527648 Remove unneeded token_request override in Geocaching (#72713) 2022-05-30 21:55:44 +02:00
kingy444
45e4dd379b Add support for topdown shades to hunterdouglas_powerview (#62788)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-05-30 07:54:39 -10:00
J. Nick Koston
3399be2dad Retry bond setup when zeroconf discovery happens (#72687) 2022-05-30 18:41:07 +02:00
Dimiter Geelen
f06ceef43d Bump PyVLX to 0.2.20 (#72678) 2022-05-30 18:36:01 +02:00
Thijs W
d5fc7e3174 Upgrade frontier_silicon library to AFSAPI 0.2.4 (#69371) 2022-05-30 18:31:57 +02:00
epenet
640f53ce21 Remove YAML configuration from upnp (#72410) 2022-05-30 17:07:18 +02:00
epenet
57ed667257 Remove YAML configuration from nzbget (#72424) 2022-05-30 16:46:55 +02:00
epenet
f2fde5c1f9 Adjust config-flow type hints in sharkiq (#72688) 2022-05-30 16:35:50 +02:00
epenet
5273e3ea9d Adjust config-flow type hints in motion_blinds (#72444) 2022-05-30 16:30:41 +02:00
epenet
c48591ff29 Adjust config-flow type hints in denonavr (#72477) 2022-05-30 16:30:11 +02:00
epenet
3d19d2d24f Adjust config flow type hints in withings (#72504) 2022-05-30 16:29:47 +02:00
jjlawren
30e71dd96f Add support for Sonos loudness switch (#72572) 2022-05-30 16:09:14 +02:00
rappenze
c10a523055 Sync fibaro entity visible state (#72379) 2022-05-30 15:53:57 +02:00
Rami Mosleh
dd5b1681e7 Remove YAML configuration from mikrotik (#72581) 2022-05-30 15:34:28 +02:00
Rami Mosleh
ce94168c50 Remove YAML support for glances (#72706) 2022-05-30 15:25:02 +02:00
Jan Bouwhuis
b7040efef6 Cleanup and use new MQTT_BASE_SCHEMA constants (#72283)
* Use new MQTT_BASE_SCHEMA constants

* Update constants for mqtt_room and manual_mqtt

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

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

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

* cleanups

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

* fixing after MartinHjelmare review conversion alarm state to hass state

* fixing after MartinHjelmare review conversion alarm state to hass state

* manage the status in the alarm control

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

* Fix mypy errors

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

* use entry_id instead of unique_id

* remove not needed `_hass` property

* fix skiping failing stations

* remove not neccessary error log

* set DeviceEntryType.SERVICE

* fix use entry_id instead of unique_id

* apply suggestions on tests

* add return value also to other tests

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

* Suggest change

* suggest fix

* fix

* fix

* Fix suggest

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

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

* Unmute WS66i Zone when volume changes

* Raise CannotConnect instead of ConnectionError in validation method

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

* update comments

* Switch to ValueError

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

* tests

* reduce lines

* simplify

* refactor

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

* clean up

* clean up

* Remove unnecessary type definition

* typo

* fix logic ot be more deterministic

* Another fix

* Comment

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

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

* Remove commented out piece

* Comment

* Remove unnecessary variable

* More cleanup

* Make future merge easier

* remove dupe

* switch order

* add comment

* Remove unnecessary error handling

* make code easier to read

* review feedback for code

* Fix logic

* Update test based on review

* Tweak comments

* reset mock so asertions are more clear

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

* type a few more places

* fixes

* numbers are always stringified

* numbers are always stringified

* coverage

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

* Updates based on PR feedback

* Revert libary bump

* Update after PR feedback

* Update Binary device class for smoke sensor

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

* Remove entity category

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

* Updates after PR review

* Remove unused import

* Update light based on PR feedback

* Update light code from PR review

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

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

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

* Make sure plex creates mocks in the event loop

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

* add model

* find attr

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

* Fix restoring color mode

* Correct set operations

* Derive color mode from group members

* Add color mode to color channel

* use Zigpy color mode enum

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

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

* Rename variables

* fix logic

* correct typehint

* Update homeassistant/components/zwave_js/api.py

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

* black

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

* Fix test

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* Update homeassistant/components/zwave_js/logbook.py

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

* black

* Remove value updated event

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

* Remove debug prints

* Improve tests

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

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

I discovered this was not displayed the hard way :)

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

* Update homeassistant/components/nmbs/sensor.py

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

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

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

* Use mapping for reauth

* Update init
2022-05-25 21:31:17 -05:00
J. Nick Koston
bfa7693d18 Fixes for logbook filtering and add it to the live stream (#72501) 2022-05-25 15:17:08 -10:00
Marc Mueller
1ac71455cb Move remaining metadata to pyproject (#72469) 2022-05-26 02:54:49 +02:00
GitHub Action
30edc039ae [ci skip] Translation update 2022-05-26 00:23:39 +00:00
Allen Porter
c181af92a2 Throw nest climate API errors as HomeAssistantErrors (#72474) 2022-05-25 13:00:48 -07:00
Franck Nijhof
3e0e8dd105 Bump version to 2022.7.0dev0 (#72500) 2022-05-25 12:57:55 -07:00
2353 changed files with 55260 additions and 26674 deletions

View File

@@ -132,7 +132,7 @@ requirements: &requirements
- homeassistant/package_constraints.txt
- script/pip_check
- requirements*.txt
- setup.cfg
- pyproject.toml
any:
- *base_platforms

View File

@@ -210,7 +210,6 @@ omit =
homeassistant/components/denonavr/media_player.py
homeassistant/components/denonavr/receiver.py
homeassistant/components/deutsche_bahn/sensor.py
homeassistant/components/devolo_home_control/cover.py
homeassistant/components/devolo_home_control/light.py
homeassistant/components/devolo_home_control/sensor.py
homeassistant/components/devolo_home_control/switch.py
@@ -262,7 +261,9 @@ omit =
homeassistant/components/eddystone_temperature/sensor.py
homeassistant/components/edimax/switch.py
homeassistant/components/egardia/*
homeassistant/components/eight_sleep/*
homeassistant/components/eight_sleep/__init__.py
homeassistant/components/eight_sleep/binary_sensor.py
homeassistant/components/eight_sleep/sensor.py
homeassistant/components/eliqonline/sensor.py
homeassistant/components/elkm1/__init__.py
homeassistant/components/elkm1/alarm_control_panel.py
@@ -407,6 +408,7 @@ omit =
homeassistant/components/fritzbox_callmonitor/const.py
homeassistant/components/fritzbox_callmonitor/base.py
homeassistant/components/fritzbox_callmonitor/sensor.py
homeassistant/components/frontier_silicon/const.py
homeassistant/components/frontier_silicon/media_player.py
homeassistant/components/futurenow/light.py
homeassistant/components/garadget/cover.py
@@ -504,16 +506,21 @@ omit =
homeassistant/components/huawei_lte/switch.py
homeassistant/components/hue/light.py
homeassistant/components/hunterdouglas_powerview/__init__.py
homeassistant/components/hunterdouglas_powerview/button.py
homeassistant/components/hunterdouglas_powerview/coordinator.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/diagnostics.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hunterdouglas_powerview/model.py
homeassistant/components/hunterdouglas_powerview/scene.py
homeassistant/components/hunterdouglas_powerview/sensor.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hunterdouglas_powerview/shade_data.py
homeassistant/components/hunterdouglas_powerview/util.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hydrawise/*
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/ialarm_xr/alarm_control_panel.py
homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py
homeassistant/components/iaqualink/climate.py
@@ -575,6 +582,7 @@ omit =
homeassistant/components/isy994/sensor.py
homeassistant/components/isy994/services.py
homeassistant/components/isy994/switch.py
homeassistant/components/isy994/util.py
homeassistant/components/itach/remote.py
homeassistant/components/itunes/media_player.py
homeassistant/components/jellyfin/__init__.py
@@ -624,18 +632,16 @@ omit =
homeassistant/components/launch_library/const.py
homeassistant/components/launch_library/diagnostics.py
homeassistant/components/launch_library/sensor.py
homeassistant/components/lcn/binary_sensor.py
homeassistant/components/lcn/climate.py
homeassistant/components/lcn/helpers.py
homeassistant/components/lcn/scene.py
homeassistant/components/lcn/sensor.py
homeassistant/components/lcn/services.py
homeassistant/components/lg_netcast/media_player.py
homeassistant/components/lg_soundbar/media_player.py
homeassistant/components/life360/__init__.py
homeassistant/components/life360/const.py
homeassistant/components/life360/coordinator.py
homeassistant/components/life360/device_tracker.py
homeassistant/components/life360/helpers.py
homeassistant/components/lifx/__init__.py
homeassistant/components/lifx/const.py
homeassistant/components/lifx/light.py
@@ -671,6 +677,7 @@ omit =
homeassistant/components/lutron_caseta/light.py
homeassistant/components/lutron_caseta/scene.py
homeassistant/components/lutron_caseta/switch.py
homeassistant/components/lutron_caseta/util.py
homeassistant/components/lw12wifi/light.py
homeassistant/components/lyric/__init__.py
homeassistant/components/lyric/api.py
@@ -785,6 +792,7 @@ omit =
homeassistant/components/netgear/router.py
homeassistant/components/netgear/sensor.py
homeassistant/components/netgear/switch.py
homeassistant/components/netgear/update.py
homeassistant/components/netgear_lte/*
homeassistant/components/netio/switch.py
homeassistant/components/neurio_energy/sensor.py
@@ -957,7 +965,13 @@ omit =
homeassistant/components/radarr/sensor.py
homeassistant/components/radio_browser/__init__.py
homeassistant/components/radio_browser/media_source.py
homeassistant/components/radiotherm/__init__.py
homeassistant/components/radiotherm/entity.py
homeassistant/components/radiotherm/climate.py
homeassistant/components/radiotherm/coordinator.py
homeassistant/components/radiotherm/data.py
homeassistant/components/radiotherm/switch.py
homeassistant/components/radiotherm/util.py
homeassistant/components/rainbird/*
homeassistant/components/raincloud/*
homeassistant/components/rainmachine/__init__.py
@@ -1049,6 +1063,7 @@ omit =
homeassistant/components/shelly/sensor.py
homeassistant/components/shelly/utils.py
homeassistant/components/sigfox/sensor.py
homeassistant/components/simplepush/__init__.py
homeassistant/components/simplepush/notify.py
homeassistant/components/simplisafe/__init__.py
homeassistant/components/simplisafe/alarm_control_panel.py
@@ -1059,7 +1074,14 @@ omit =
homeassistant/components/sisyphus/*
homeassistant/components/sky_hub/*
homeassistant/components/skybeacon/sensor.py
homeassistant/components/skybell/*
homeassistant/components/skybell/__init__.py
homeassistant/components/skybell/binary_sensor.py
homeassistant/components/skybell/camera.py
homeassistant/components/skybell/coordinator.py
homeassistant/components/skybell/entity.py
homeassistant/components/skybell/light.py
homeassistant/components/skybell/sensor.py
homeassistant/components/skybell/switch.py
homeassistant/components/slack/__init__.py
homeassistant/components/slack/notify.py
homeassistant/components/sia/__init__.py
@@ -1100,12 +1122,6 @@ omit =
homeassistant/components/soma/cover.py
homeassistant/components/soma/sensor.py
homeassistant/components/soma/utils.py
homeassistant/components/somfy/__init__.py
homeassistant/components/somfy/api.py
homeassistant/components/somfy/climate.py
homeassistant/components/somfy/cover.py
homeassistant/components/somfy/sensor.py
homeassistant/components/somfy/switch.py
homeassistant/components/somfy_mylink/__init__.py
homeassistant/components/somfy_mylink/cover.py
homeassistant/components/sonos/__init__.py
@@ -1181,6 +1197,7 @@ omit =
homeassistant/components/synology_dsm/binary_sensor.py
homeassistant/components/synology_dsm/button.py
homeassistant/components/synology_dsm/camera.py
homeassistant/components/synology_dsm/coordinator.py
homeassistant/components/synology_dsm/diagnostics.py
homeassistant/components/synology_dsm/common.py
homeassistant/components/synology_dsm/entity.py
@@ -1284,9 +1301,6 @@ omit =
homeassistant/components/tradfri/light.py
homeassistant/components/tradfri/sensor.py
homeassistant/components/tradfri/switch.py
homeassistant/components/trafikverket_ferry/__init__.py
homeassistant/components/trafikverket_ferry/coordinator.py
homeassistant/components/trafikverket_ferry/sensor.py
homeassistant/components/trafikverket_train/__init__.py
homeassistant/components/trafikverket_train/sensor.py
homeassistant/components/trafikverket_weatherstation/__init__.py
@@ -1345,6 +1359,7 @@ omit =
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/velbus/__init__.py
homeassistant/components/velbus/binary_sensor.py
homeassistant/components/velbus/button.py
homeassistant/components/velbus/climate.py
homeassistant/components/velbus/const.py
homeassistant/components/velbus/cover.py
@@ -1476,9 +1491,11 @@ omit =
homeassistant/components/yolink/__init__.py
homeassistant/components/yolink/api.py
homeassistant/components/yolink/binary_sensor.py
homeassistant/components/yolink/climate.py
homeassistant/components/yolink/const.py
homeassistant/components/yolink/coordinator.py
homeassistant/components/yolink/entity.py
homeassistant/components/yolink/lock.py
homeassistant/components/yolink/sensor.py
homeassistant/components/yolink/siren.py
homeassistant/components/yolink/switch.py
@@ -1500,7 +1517,6 @@ omit =
homeassistant/components/zha/core/gateway.py
homeassistant/components/zha/core/helpers.py
homeassistant/components/zha/core/registries.py
homeassistant/components/zha/core/typing.py
homeassistant/components/zha/entity.py
homeassistant/components/zha/light.py
homeassistant/components/zha/sensor.py

View File

@@ -29,7 +29,7 @@ jobs:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -70,7 +70,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -104,7 +104,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -135,7 +135,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.03.1
uses: home-assistant/builder@2022.06.2
with:
args: |
$BUILD_ARGS \
@@ -171,6 +171,7 @@ jobs:
- raspberrypi4
- raspberrypi4-64
- tinker
- yellow
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -200,7 +201,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2022.03.1
uses: home-assistant/builder@2022.06.2
with:
args: |
$BUILD_ARGS \

View File

@@ -20,14 +20,15 @@ on:
type: boolean
env:
CACHE_VERSION: 9
PIP_CACHE_VERSION: 3
HA_SHORT_VERSION: 2022.6
CACHE_VERSION: 10
PIP_CACHE_VERSION: 4
HA_SHORT_VERSION: 2022.7
DEFAULT_PYTHON: 3.9
PRE_COMMIT_CACHE: ~/.cache/pre-commit
PIP_CACHE: /tmp/pip-cache
SQLALCHEMY_WARN_20: 1
PYTHONASYNCIODEBUG: 1
HASS_CI: 1
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -155,7 +156,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Generate partial Python venv restore key
@@ -172,7 +173,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: >-
@@ -189,7 +190,7 @@ jobs:
# ${{ runner.os }}-${{ steps.python.outputs.python-version }}-base-venv-${{ env.CACHE_VERSION }}-
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -212,7 +213,7 @@ jobs:
hashFiles('.pre-commit-config.yaml') }}"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -235,13 +236,13 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -253,7 +254,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -285,13 +286,13 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -303,7 +304,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -336,13 +337,13 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -354,7 +355,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -378,13 +379,13 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -396,7 +397,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
@@ -502,7 +503,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -525,13 +526,13 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -573,7 +574,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')"
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: >-
@@ -590,7 +591,7 @@ jobs:
# ${{ runner.os }}-${{ matrix.python-version }}-venv-${{ env.CACHE_VERSION }}-
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -629,7 +630,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -671,7 +672,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -689,7 +690,7 @@ jobs:
run: |
. venv/bin/activate
python --version
mypy homeassistant
mypy homeassistant pylint
- name: Run mypy (partially)
if: needs.changes.outputs.test_full_suite == 'false'
shell: bash
@@ -715,7 +716,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -758,7 +759,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.2
uses: actions/cache@v3.0.4
with:
path: venv
key: ${{ runner.os }}-${{ matrix.python-version }}-${{
@@ -795,14 +796,14 @@ jobs:
--dist=loadfile \
--test-group-count ${{ needs.changes.outputs.test_group_count }} \
--test-group=${{ matrix.group }} \
--cov homeassistant \
--cov="homeassistant" \
--cov-report=xml \
-o console_output_style=count \
-p no:sugar \
tests
- name: Run pytest (partially)
if: needs.changes.outputs.test_full_suite == 'false'
timeout-minutes: 10
timeout-minutes: 20
shell: bash
run: |
. venv/bin/activate
@@ -818,7 +819,7 @@ jobs:
--timeout=9 \
--durations=10 \
-n auto \
--cov homeassistant.components.${{ matrix.group }} \
--cov="homeassistant.components.${{ matrix.group }}" \
--cov-report=xml \
--cov-report=term-missing \
-o console_output_style=count \

View File

@@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -43,7 +43,7 @@ jobs:
uses: actions/checkout@v3.0.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v4.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}

View File

@@ -47,6 +47,13 @@ jobs:
# execinfo-dev when building wheels. The setuptools build setup does not have an option for
# adding a single LDFLAG so copy all relevant linux flags here (as of 1.43.0)
echo "GRPC_PYTHON_LDFLAGS=-lpthread -Wl,-wrap,memcpy -static-libgcc -lexecinfo"
# Fix out of memory issues with rust
echo "CARGO_NET_GIT_FETCH_WITH_CLI=true"
# OpenCV headless installation
echo "CI_BUILD=1"
echo "ENABLE_HEADLESS=1"
) > .env_file
- name: Upload env_file
@@ -62,7 +69,7 @@ jobs:
path: ./requirements_diff.txt
core:
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for core
name: Build musllinux wheels with musllinux_1_2 / cp310 at ${{ matrix.arch }} for core
if: github.repository_owner == 'home-assistant'
needs: init
runs-on: ubuntu-latest
@@ -70,8 +77,6 @@ jobs:
fail-fast: false
matrix:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
tag:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -87,23 +92,21 @@ jobs:
name: requirements_diff
- name: Build wheels
uses: home-assistant/wheels@2022.01.2
uses: home-assistant/wheels@2022.06.7
with:
tag: ${{ matrix.tag }}
abi: cp310
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-host: wheels.hass.io
wheels-key: ${{ secrets.WHEELS_KEY }}
wheels-user: wheels
env-file: true
apk: "build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;cargo"
pip: "Cython;numpy==1.21.6"
apk: "libffi-dev;openssl-dev;yaml-dev"
skip-binary: aiohttp
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements.txt"
integrations:
name: Build wheels with ${{ matrix.tag }} (${{ matrix.arch }}) for integrations
name: Build musllinux wheels with musllinux_1_2 / cp310 at ${{ matrix.arch }} for integrations
if: github.repository_owner == 'home-assistant'
needs: init
runs-on: ubuntu-latest
@@ -111,8 +114,6 @@ jobs:
fail-fast: false
matrix:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
tag:
- "3.9-alpine3.14"
steps:
- name: Checkout the repository
uses: actions/checkout@v3.0.2
@@ -132,35 +133,41 @@ jobs:
requirement_files="requirements_all.txt requirements_diff.txt"
for requirement_file in ${requirement_files}; do
sed -i "s|# pybluez|pybluez|g" ${requirement_file}
sed -i "s|# bluepy|bluepy|g" ${requirement_file}
sed -i "s|# beacontools|beacontools|g" ${requirement_file}
sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
sed -i "s|# evdev|evdev|g" ${requirement_file}
sed -i "s|# python-eq3bt|python-eq3bt|g" ${requirement_file}
sed -i "s|# pycups|pycups|g" ${requirement_file}
sed -i "s|# homekit|homekit|g" ${requirement_file}
sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
sed -i "s|# decora|decora|g" ${requirement_file}
sed -i "s|# avion|avion|g" ${requirement_file}
sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
sed -i "s|# opencv-python-headless|opencv-python-headless|g" ${requirement_file}
done
- name: Adjust build env
run: |
if [ "${{ matrix.arch }}" = "i386" ]; then
echo "NPY_DISABLE_SVML=1" >> .env_file
fi
(
# cmake > 3.22.2 have issue on arm
# Tested until 3.22.5
echo "cmake==3.22.2"
) >> homeassistant/package_constraints.txt
- name: Build wheels
uses: home-assistant/wheels@2022.01.2
uses: home-assistant/wheels@2022.06.7
with:
tag: ${{ matrix.tag }}
abi: cp310
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-host: wheels.hass.io
wheels-key: ${{ secrets.WHEELS_KEY }}
wheels-user: wheels
env-file: true
apk: "build-base;cmake;git;linux-headers;libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;cargo"
pip: "Cython;numpy;scikit-build"
skip-binary: aiohttp,grpcio
apk: "libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev"
skip-binary: aiohttp;grpcio
legacy: true
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txt"

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v2.32.1
rev: v2.34.0
hooks:
- id: pyupgrade
args: [--py39-plus]
@@ -93,7 +93,7 @@ repos:
language: script
types: [python]
require_serial: true
files: ^homeassistant/.+\.py$
files: ^(homeassistant|pylint)/.+\.py$
- id: pylint
name: pylint
entry: script/run-in-env.sh pylint -j 0
@@ -106,7 +106,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/manifest\.json|setup\.cfg|\.pre-commit-config\.yaml|script/gen_requirements_all\.py)$
files: ^(homeassistant/.+/manifest\.json|pyproject\.toml|\.pre-commit-config\.yaml|script/gen_requirements_all\.py)$
- id: hassfest
name: hassfest
entry: script/run-in-env.sh python3 -m script.hassfest
@@ -120,7 +120,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(script/hassfest/metadata\.py|homeassistant/const\.py$|setup\.cfg)$
files: ^(script/hassfest/metadata\.py|homeassistant/const\.py$|pyproject\.toml)$
- id: hassfest-mypy-config
name: hassfest-mypy-config
entry: script/run-in-env.sh python3 -m script.hassfest -p mypy_config

View File

@@ -83,9 +83,11 @@ homeassistant.components.dunehd.*
homeassistant.components.efergy.*
homeassistant.components.elgato.*
homeassistant.components.elkm1.*
homeassistant.components.emulated_hue.*
homeassistant.components.esphome.*
homeassistant.components.energy.*
homeassistant.components.evil_genius_labs.*
homeassistant.components.fan.*
homeassistant.components.fastdotcom.*
homeassistant.components.filesize.*
homeassistant.components.fitbit.*
@@ -113,6 +115,7 @@ homeassistant.components.homekit.aidmanager
homeassistant.components.homekit.config_flow
homeassistant.components.homekit.diagnostics
homeassistant.components.homekit.logbook
homeassistant.components.homekit.type_locks
homeassistant.components.homekit.type_triggers
homeassistant.components.homekit.util
homeassistant.components.homekit_controller
@@ -127,7 +130,6 @@ homeassistant.components.homewizard.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.hyperion.*
homeassistant.components.ialarm_xr.*
homeassistant.components.image_processing.*
homeassistant.components.input_button.*
homeassistant.components.input_select.*
@@ -196,6 +198,7 @@ homeassistant.components.rtsp_to_webrtc.*
homeassistant.components.samsungtv.*
homeassistant.components.scene.*
homeassistant.components.select.*
homeassistant.components.sensibo.*
homeassistant.components.sensor.*
homeassistant.components.senseme.*
homeassistant.components.senz.*
@@ -224,6 +227,7 @@ homeassistant.components.tplink.*
homeassistant.components.tolo.*
homeassistant.components.tractive.*
homeassistant.components.tradfri.*
homeassistant.components.trafikverket_ferry.*
homeassistant.components.trafikverket_train.*
homeassistant.components.trafikverket_weatherstation.*
homeassistant.components.tts.*

View File

@@ -6,6 +6,7 @@
# Home Assistant Core
setup.cfg @home-assistant/core
pyproject.toml @home-assistant/core
/homeassistant/*.py @home-assistant/core
/homeassistant/helpers/ @home-assistant/core
/homeassistant/util/ @home-assistant/core
@@ -128,8 +129,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/binary_sensor/ @home-assistant/core
/tests/components/binary_sensor/ @home-assistant/core
/homeassistant/components/bizkaibus/ @UgaitzEtxebarria
/homeassistant/components/blebox/ @bbx-a @bbx-jp
/tests/components/blebox/ @bbx-a @bbx-jp
/homeassistant/components/blebox/ @bbx-a @bbx-jp @riokuu
/tests/components/blebox/ @bbx-a @bbx-jp @riokuu
/homeassistant/components/blink/ @fronzbot
/tests/components/blink/ @fronzbot
/homeassistant/components/blueprint/ @home-assistant/core
@@ -272,6 +273,7 @@ build.json @home-assistant/supervisor
/tests/components/efergy/ @tkdrob
/homeassistant/components/egardia/ @jeroenterheerdt
/homeassistant/components/eight_sleep/ @mezz64 @raman325
/tests/components/eight_sleep/ @mezz64 @raman325
/homeassistant/components/elgato/ @frenck
/tests/components/elgato/ @frenck
/homeassistant/components/elkm1/ @gwww @bdraco
@@ -283,6 +285,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/emoncms/ @borpin
/homeassistant/components/emonitor/ @bdraco
/tests/components/emonitor/ @bdraco
/homeassistant/components/emulated_hue/ @bdraco
/tests/components/emulated_hue/ @bdraco
/homeassistant/components/emulated_kasa/ @kbickar
/tests/components/emulated_kasa/ @kbickar
/homeassistant/components/energy/ @home-assistant/core
@@ -327,7 +331,6 @@ build.json @home-assistant/supervisor
/tests/components/firmata/ @DaAwesomeP
/homeassistant/components/fivem/ @Sander0542
/tests/components/fivem/ @Sander0542
/homeassistant/components/fixer/ @fabaff
/homeassistant/components/fjaraskupan/ @elupus
/tests/components/fjaraskupan/ @elupus
/homeassistant/components/flick_electric/ @ZephireNZ
@@ -363,6 +366,7 @@ build.json @home-assistant/supervisor
/tests/components/fronius/ @nielstron @farmio
/homeassistant/components/frontend/ @home-assistant/frontend
/tests/components/frontend/ @home-assistant/frontend
/homeassistant/components/frontier_silicon/ @wlcrs
/homeassistant/components/garages_amsterdam/ @klaasnicolaas
/tests/components/garages_amsterdam/ @klaasnicolaas
/homeassistant/components/gdacs/ @exxamalte
@@ -445,6 +449,8 @@ build.json @home-assistant/supervisor
/tests/components/home_plus_control/ @chemaaa
/homeassistant/components/homeassistant/ @home-assistant/core
/tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_yellow/ @home-assistant/core
/tests/components/homeassistant_yellow/ @home-assistant/core
/homeassistant/components/homekit/ @bdraco
/tests/components/homekit/ @bdraco
/homeassistant/components/homekit_controller/ @Jc2k @bdraco
@@ -465,8 +471,8 @@ build.json @home-assistant/supervisor
/tests/components/huisbaasje/ @dennisschroer
/homeassistant/components/humidifier/ @home-assistant/core @Shulyaka
/tests/components/humidifier/ @home-assistant/core @Shulyaka
/homeassistant/components/hunterdouglas_powerview/ @bdraco @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @trullock
/homeassistant/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/homeassistant/components/hvv_departures/ @vigonotion
/tests/components/hvv_departures/ @vigonotion
/homeassistant/components/hydrawise/ @ptcryan
@@ -474,8 +480,6 @@ build.json @home-assistant/supervisor
/tests/components/hyperion/ @dermotduffy
/homeassistant/components/ialarm/ @RyuzakiKK
/tests/components/ialarm/ @RyuzakiKK
/homeassistant/components/ialarm_xr/ @bigmoby
/tests/components/ialarm_xr/ @bigmoby
/homeassistant/components/iammeter/ @lewei50
/homeassistant/components/iaqualink/ @flz
/tests/components/iaqualink/ @flz
@@ -568,6 +572,7 @@ build.json @home-assistant/supervisor
/tests/components/lcn/ @alengwenus
/homeassistant/components/lg_netcast/ @Drafteed
/homeassistant/components/life360/ @pnbruckner
/tests/components/life360/ @pnbruckner
/homeassistant/components/lifx/ @Djelibeybi
/homeassistant/components/light/ @home-assistant/core
/tests/components/light/ @home-assistant/core
@@ -824,7 +829,8 @@ build.json @home-assistant/supervisor
/tests/components/rachio/ @bdraco
/homeassistant/components/radio_browser/ @frenck
/tests/components/radio_browser/ @frenck
/homeassistant/components/radiotherm/ @vinnyfuria
/homeassistant/components/radiotherm/ @bdraco @vinnyfuria
/tests/components/radiotherm/ @bdraco @vinnyfuria
/homeassistant/components/rainbird/ @konikvranik
/homeassistant/components/raincloud/ @vanstinator
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
@@ -924,6 +930,8 @@ build.json @home-assistant/supervisor
/tests/components/sighthound/ @robmarkcole
/homeassistant/components/signal_messenger/ @bbernhard
/tests/components/signal_messenger/ @bbernhard
/homeassistant/components/simplepush/ @engrbm87
/tests/components/simplepush/ @engrbm87
/homeassistant/components/simplisafe/ @bachya
/tests/components/simplisafe/ @bachya
/homeassistant/components/sinch/ @bendikrb
@@ -931,6 +939,8 @@ build.json @home-assistant/supervisor
/tests/components/siren/ @home-assistant/core @raman325
/homeassistant/components/sisyphus/ @jkeljo
/homeassistant/components/sky_hub/ @rogerselwyn
/homeassistant/components/skybell/ @tkdrob
/tests/components/skybell/ @tkdrob
/homeassistant/components/slack/ @bachya @tkdrob
/tests/components/slack/ @bachya @tkdrob
/homeassistant/components/sleepiq/ @mfugate1 @kbickar
@@ -961,8 +971,6 @@ build.json @home-assistant/supervisor
/tests/components/solax/ @squishykid
/homeassistant/components/soma/ @ratsept @sebfortier2288
/tests/components/soma/ @ratsept @sebfortier2288
/homeassistant/components/somfy/ @tetienne
/tests/components/somfy/ @tetienne
/homeassistant/components/sonarr/ @ctalkington
/tests/components/sonarr/ @ctalkington
/homeassistant/components/songpal/ @rytilahti @shenxn
@@ -1061,12 +1069,12 @@ build.json @home-assistant/supervisor
/tests/components/todoist/ @boralyl
/homeassistant/components/tolo/ @MatthiasLohr
/tests/components/tolo/ @MatthiasLohr
/homeassistant/components/tomorrowio/ @raman325
/tests/components/tomorrowio/ @raman325
/homeassistant/components/tomorrowio/ @raman325 @lymanepp
/tests/components/tomorrowio/ @raman325 @lymanepp
/homeassistant/components/totalconnect/ @austinmroczek
/tests/components/totalconnect/ @austinmroczek
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey
/tests/components/tplink/ @rytilahti @thegardenmonkey
/homeassistant/components/traccar/ @ludeeus
/tests/components/traccar/ @ludeeus
/homeassistant/components/trace/ @home-assistant/core
@@ -1157,8 +1165,8 @@ build.json @home-assistant/supervisor
/tests/components/watttime/ @bachya
/homeassistant/components/waze_travel_time/ @eifinger
/tests/components/waze_travel_time/ @eifinger
/homeassistant/components/weather/ @fabaff
/tests/components/weather/ @fabaff
/homeassistant/components/weather/ @home-assistant/core
/tests/components/weather/ @home-assistant/core
/homeassistant/components/webhook/ @home-assistant/core
/tests/components/webhook/ @home-assistant/core
/homeassistant/components/webostv/ @bendavid @thecode

View File

@@ -123,7 +123,7 @@ enforcement ladder][mozilla].
## Adoption
This Code of Conduct was first adopted January 21st, 2017 and announced in
This Code of Conduct was first adopted on January 21st, 2017, and announced in
[this][coc-blog] blog post and has been updated on May 25th, 2020 to version
2.0 of the [Contributor Covenant][homepage] as announced in [this][coc2-blog]
blog post.

View File

@@ -25,21 +25,6 @@ RUN \
-e ./homeassistant --use-deprecated=legacy-resolver \
&& python3 -m compileall homeassistant/homeassistant
# Fix Bug with Alpine 3.14 and sqlite 3.35
# https://gitlab.alpinelinux.org/alpine/aports/-/issues/12524
ARG BUILD_ARCH
RUN \
if [ "${BUILD_ARCH}" = "amd64" ]; then \
export APK_ARCH=x86_64; \
elif [ "${BUILD_ARCH}" = "i386" ]; then \
export APK_ARCH=x86; \
else \
export APK_ARCH=${BUILD_ARCH}; \
fi \
&& curl -O http://dl-cdn.alpinelinux.org/alpine/v3.13/main/${APK_ARCH}/sqlite-libs-3.34.1-r0.apk \
&& apk add --no-cache sqlite-libs-3.34.1-r0.apk \
&& rm -f sqlite-libs-3.34.1-r0.apk
# Home Assistant S6-Overlay
COPY rootfs /

View File

@@ -18,6 +18,7 @@ RUN \
libavfilter-dev \
libpcap-dev \
libturbojpeg0 \
libyaml-dev \
libxml2 \
git \
cmake \

View File

@@ -1,11 +1,11 @@
image: homeassistant/{arch}-homeassistant
shadow_repository: ghcr.io/home-assistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.05.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.05.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.05.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.05.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.05.0
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.06.2
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.06.2
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.06.2
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.06.2
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.06.2
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io

View File

@@ -20,6 +20,7 @@ from .mfa_modules import MultiFactorAuthModule, auth_mfa_module_from_config
from .providers import AuthProvider, LoginFlow, auth_provider_from_config
EVENT_USER_ADDED = "user_added"
EVENT_USER_UPDATED = "user_updated"
EVENT_USER_REMOVED = "user_removed"
_MfaModuleDict = dict[str, MultiFactorAuthModule]
@@ -103,7 +104,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
"""Return a user as result of login flow."""
flow = cast(LoginFlow, flow)
if result["type"] != data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
if result["type"] != data_entry_flow.FlowResultType.CREATE_ENTRY:
return result
# we got final result
@@ -338,6 +339,8 @@ class AuthManager:
else:
await self.async_deactivate_user(user)
self.hass.bus.async_fire(EVENT_USER_UPDATED, {"user_id": user.id})
async def async_activate_user(self, user: models.User) -> None:
"""Activate a user."""
await self._store.async_activate_user(user)

View File

@@ -272,7 +272,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
if not errors:
return await self.async_finish(self.credential)
description_placeholders: dict[str, str | None] = {
description_placeholders: dict[str, str] = {
"mfa_module_name": auth_module.name,
"mfa_module_id": auth_module.id,
}

View File

@@ -7,6 +7,7 @@ from datetime import datetime, timedelta
import logging
import logging.handlers
import os
import platform
import sys
import threading
from time import monotonic
@@ -398,7 +399,7 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
domains.update(hass.config_entries.async_domains())
# Make sure the Hass.io component is loaded
if "HASSIO" in os.environ:
if "SUPERVISOR" in os.environ:
domains.add("hassio")
return domains
@@ -540,11 +541,22 @@ async def _async_set_up_integrations(
stage_2_domains = domains_to_setup - logging_domains - debuggers - stage_1_domains
def _cache_uname_processor() -> None:
"""Cache the result of platform.uname().processor in the executor.
Multiple modules call this function at startup which
executes a blocking subprocess call. This is a problem for the
asyncio event loop. By primeing the cache of uname we can
avoid the blocking call in the event loop.
"""
platform.uname().processor # pylint: disable=expression-not-assigned
# Load the registries
await asyncio.gather(
device_registry.async_load(hass),
entity_registry.async_load(hass),
area_registry.async_load(hass),
hass.async_add_executor_job(_cache_uname_processor),
)
# Start setup

View File

@@ -1,6 +1,7 @@
"""Config flow for the Abode Security System component."""
from __future__ import annotations
from collections.abc import Mapping
from http import HTTPStatus
from typing import Any, cast
@@ -149,9 +150,9 @@ class AbodeFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
return await self._async_abode_mfa_login()
async def async_step_reauth(self, config: dict[str, Any]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle reauthorization request from Abode."""
self._username = config[CONF_USERNAME]
self._username = entry_data[CONF_USERNAME]
return await self.async_step_reauth_confirm()

View File

@@ -11,9 +11,7 @@ from homeassistant.components.light import (
ATTR_BRIGHTNESS,
ATTR_COLOR_TEMP,
ATTR_HS_COLOR,
SUPPORT_BRIGHTNESS,
SUPPORT_COLOR,
SUPPORT_COLOR_TEMP,
ColorMode,
LightEntity,
)
from homeassistant.config_entries import ConfigEntry
@@ -101,11 +99,27 @@ class AbodeLight(AbodeDevice, LightEntity):
_hs = self._device.color
return _hs
@property
def color_mode(self) -> str | None:
"""Return the color mode of the light."""
if self._device.is_dimmable and self._device.is_color_capable:
if self.hs_color is not None:
return ColorMode.HS
return ColorMode.COLOR_TEMP
if self._device.is_dimmable:
return ColorMode.BRIGHTNESS
return ColorMode.ONOFF
@property
def supported_color_modes(self) -> set[str] | None:
"""Flag supported color modes."""
if self._device.is_dimmable and self._device.is_color_capable:
return {ColorMode.COLOR_TEMP, ColorMode.HS}
if self._device.is_dimmable:
return {ColorMode.BRIGHTNESS}
return {ColorMode.ONOFF}
@property
def supported_features(self) -> int:
"""Flag supported features."""
if self._device.is_dimmable and self._device.is_color_capable:
return SUPPORT_BRIGHTNESS | SUPPORT_COLOR | SUPPORT_COLOR_TEMP
if self._device.is_dimmable:
return SUPPORT_BRIGHTNESS
return 0

View File

@@ -4,6 +4,11 @@
"single_instance_allowed": "Endast en enda konfiguration av Abode \u00e4r till\u00e5ten."
},
"step": {
"reauth_confirm": {
"data": {
"username": "E-postadress"
}
},
"user": {
"data": {
"password": "L\u00f6senord",

View File

@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "Ya est\u00e1 configurado. Solo es posible una \u00fanica configuraci\u00f3n."
},
"create_entry": {
"default": "Algunos sensores no est\u00e1n habilitados de forma predeterminada. Puede habilitarlos en el registro de la entidad despu\u00e9s de la configuraci\u00f3n de la integraci\u00f3n.\n El pron\u00f3stico del tiempo no est\u00e1 habilitado de forma predeterminada. Puedes habilitarlo en las opciones de integraci\u00f3n."
},
"error": {
"cannot_connect": "No se pudo conectar",
"invalid_api_key": "Clave API no v\u00e1lida",

View File

@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "\u05ea\u05e6\u05d5\u05e8\u05ea\u05d5 \u05db\u05d1\u05e8 \u05e0\u05e7\u05d1\u05e2\u05d4. \u05e8\u05e7 \u05ea\u05e6\u05d5\u05e8\u05d4 \u05d0\u05d7\u05ea \u05d0\u05e4\u05e9\u05e8\u05d9\u05ea."
},
"create_entry": {
"default": "\u05d7\u05d9\u05d9\u05e9\u05e0\u05d9\u05dd \u05de\u05e1\u05d5\u05d9\u05de\u05d9\u05dd \u05d0\u05d9\u05e0\u05dd \u05de\u05d5\u05e4\u05e2\u05dc\u05d9\u05dd \u05db\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc. \u05d1\u05d9\u05db\u05d5\u05dc\u05ea\u05da \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05d5\u05ea\u05dd \u05d1\u05e8\u05d9\u05e9\u05d5\u05dd \u05d4\u05d9\u05e9\u05d5\u05d9\u05d5\u05ea \u05dc\u05d0\u05d7\u05e8 \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1.\n \u05ea\u05d7\u05d6\u05d9\u05ea \u05de\u05d6\u05d2 \u05d4\u05d0\u05d5\u05d5\u05d9\u05e8 \u05d0\u05d9\u05e0\u05d4 \u05de\u05d5\u05e4\u05e2\u05dc\u05ea \u05db\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc. \u05d1\u05d9\u05db\u05d5\u05dc\u05ea\u05da \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d6\u05d4 \u05d1\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d4\u05e9\u05d9\u05dc\u05d5\u05d1."
},
"error": {
"cannot_connect": "\u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05e0\u05db\u05e9\u05dc\u05d4",
"invalid_api_key": "\u05de\u05e4\u05ea\u05d7 API \u05dc\u05d0 \u05d7\u05d5\u05e7\u05d9",

View File

@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}

View File

@@ -6,19 +6,26 @@ from typing import Any, cast
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_FORECAST_NATIVE_TEMP,
ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_FORECAST_NATIVE_WIND_SPEED,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
Forecast,
WeatherEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_NAME,
LENGTH_INCHES,
LENGTH_KILOMETERS,
LENGTH_MILES,
LENGTH_MILLIMETERS,
PRESSURE_HPA,
PRESSURE_INHG,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
@@ -66,19 +73,25 @@ class AccuWeatherEntity(
) -> None:
"""Initialize."""
super().__init__(coordinator)
self._unit_system = API_METRIC if coordinator.is_metric else API_IMPERIAL
wind_speed_unit = self.coordinator.data["Wind"]["Speed"][self._unit_system][
"Unit"
]
if wind_speed_unit == "mi/h":
self._attr_wind_speed_unit = SPEED_MILES_PER_HOUR
# Coordinator data is used also for sensors which don't have units automatically
# converted, hence the weather entity's native units follow the configured unit
# system
if coordinator.is_metric:
self._attr_native_precipitation_unit = LENGTH_MILLIMETERS
self._attr_native_pressure_unit = PRESSURE_HPA
self._attr_native_temperature_unit = TEMP_CELSIUS
self._attr_native_visibility_unit = LENGTH_KILOMETERS
self._attr_native_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
self._unit_system = API_METRIC
else:
self._attr_wind_speed_unit = wind_speed_unit
self._unit_system = API_IMPERIAL
self._attr_native_precipitation_unit = LENGTH_INCHES
self._attr_native_pressure_unit = PRESSURE_INHG
self._attr_native_temperature_unit = TEMP_FAHRENHEIT
self._attr_native_visibility_unit = LENGTH_MILES
self._attr_native_wind_speed_unit = SPEED_MILES_PER_HOUR
self._attr_name = name
self._attr_unique_id = coordinator.location_key
self._attr_temperature_unit = (
TEMP_CELSIUS if coordinator.is_metric else TEMP_FAHRENHEIT
)
self._attr_attribution = ATTRIBUTION
self._attr_device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
@@ -106,14 +119,14 @@ class AccuWeatherEntity(
return None
@property
def temperature(self) -> float:
def native_temperature(self) -> float:
"""Return the temperature."""
return cast(
float, self.coordinator.data["Temperature"][self._unit_system]["Value"]
)
@property
def pressure(self) -> float:
def native_pressure(self) -> float:
"""Return the pressure."""
return cast(
float, self.coordinator.data["Pressure"][self._unit_system]["Value"]
@@ -125,7 +138,7 @@ class AccuWeatherEntity(
return cast(int, self.coordinator.data["RelativeHumidity"])
@property
def wind_speed(self) -> float:
def native_wind_speed(self) -> float:
"""Return the wind speed."""
return cast(
float, self.coordinator.data["Wind"]["Speed"][self._unit_system]["Value"]
@@ -137,7 +150,7 @@ class AccuWeatherEntity(
return cast(int, self.coordinator.data["Wind"]["Direction"]["Degrees"])
@property
def visibility(self) -> float:
def native_visibility(self) -> float:
"""Return the visibility."""
return cast(
float, self.coordinator.data["Visibility"][self._unit_system]["Value"]
@@ -162,9 +175,9 @@ class AccuWeatherEntity(
return [
{
ATTR_FORECAST_TIME: utc_from_timestamp(item["EpochDate"]).isoformat(),
ATTR_FORECAST_TEMP: item["TemperatureMax"]["Value"],
ATTR_FORECAST_TEMP_LOW: item["TemperatureMin"]["Value"],
ATTR_FORECAST_PRECIPITATION: self._calc_precipitation(item),
ATTR_FORECAST_NATIVE_TEMP: item["TemperatureMax"]["Value"],
ATTR_FORECAST_NATIVE_TEMP_LOW: item["TemperatureMin"]["Value"],
ATTR_FORECAST_NATIVE_PRECIPITATION: self._calc_precipitation(item),
ATTR_FORECAST_PRECIPITATION_PROBABILITY: round(
mean(
[
@@ -173,7 +186,7 @@ class AccuWeatherEntity(
]
)
),
ATTR_FORECAST_WIND_SPEED: item["WindDay"]["Speed"]["Value"],
ATTR_FORECAST_NATIVE_WIND_SPEED: item["WindDay"]["Speed"]["Value"],
ATTR_FORECAST_WIND_BEARING: item["WindDay"]["Direction"]["Degrees"],
ATTR_FORECAST_CONDITION: [
k for k, v in CONDITION_CLASSES.items() if item["IconDay"] in v

View File

@@ -1,6 +1,8 @@
"""Support for Acmeda Roller Blinds."""
from __future__ import annotations
from typing import Any
from homeassistant.components.cover import (
ATTR_POSITION,
CoverEntity,
@@ -45,7 +47,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
"""Representation of a Acmeda cover device."""
@property
def current_cover_position(self):
def current_cover_position(self) -> int | None:
"""Return the current position of the roller blind.
None is unknown, 0 is closed, 100 is fully open.
@@ -56,7 +58,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return position
@property
def current_cover_tilt_position(self):
def current_cover_tilt_position(self) -> int | None:
"""Return the current tilt of the roller blind.
None is unknown, 0 is closed, 100 is fully open.
@@ -67,7 +69,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return position
@property
def supported_features(self):
def supported_features(self) -> int:
"""Flag supported features."""
supported_features = 0
if self.current_cover_position is not None:
@@ -88,35 +90,35 @@ class AcmedaCover(AcmedaBase, CoverEntity):
return supported_features
@property
def is_closed(self):
def is_closed(self) -> bool:
"""Return if the cover is closed."""
return self.roller.closed_percent == 100
async def async_close_cover(self, **kwargs):
async def async_close_cover(self, **kwargs: Any) -> None:
"""Close the roller."""
await self.roller.move_down()
async def async_open_cover(self, **kwargs):
async def async_open_cover(self, **kwargs: Any) -> None:
"""Open the roller."""
await self.roller.move_up()
async def async_stop_cover(self, **kwargs):
async def async_stop_cover(self, **kwargs: Any) -> None:
"""Stop the roller."""
await self.roller.move_stop()
async def async_set_cover_position(self, **kwargs):
async def async_set_cover_position(self, **kwargs: Any) -> None:
"""Move the roller shutter to a specific position."""
await self.roller.move_to(100 - kwargs[ATTR_POSITION])
async def async_close_cover_tilt(self, **kwargs):
async def async_close_cover_tilt(self, **kwargs: Any) -> None:
"""Close the roller."""
await self.roller.move_down()
async def async_open_cover_tilt(self, **kwargs):
async def async_open_cover_tilt(self, **kwargs: Any) -> None:
"""Open the roller."""
await self.roller.move_up()
async def async_stop_cover_tilt(self, **kwargs):
async def async_stop_cover_tilt(self, **kwargs: Any) -> None:
"""Stop the roller."""
await self.roller.move_stop()

View File

@@ -115,14 +115,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload AdGuard Home config entry."""
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
hass.services.async_remove(DOMAIN, SERVICE_ENABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
if not hass.data[DOMAIN]:
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
hass.services.async_remove(DOMAIN, SERVICE_ENABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
del hass.data[DOMAIN]
return unload_ok

View File

@@ -1,6 +1,8 @@
"""Support for ADS covers."""
from __future__ import annotations
from typing import Any
import pyads
import voluptuous as vol
@@ -122,7 +124,7 @@ class AdsCover(AdsEntity, CoverEntity):
if ads_var_pos_set is not None:
self._attr_supported_features |= CoverEntityFeature.SET_POSITION
async def async_added_to_hass(self):
async def async_added_to_hass(self) -> None:
"""Register device notification."""
if self._ads_var is not None:
await self.async_initialize_device(self._ads_var, pyads.PLCTYPE_BOOL)
@@ -133,7 +135,7 @@ class AdsCover(AdsEntity, CoverEntity):
)
@property
def is_closed(self):
def is_closed(self) -> bool | None:
"""Return if the cover is closed."""
if self._ads_var is not None:
return self._state_dict[STATE_KEY_STATE]
@@ -142,16 +144,16 @@ class AdsCover(AdsEntity, CoverEntity):
return None
@property
def current_cover_position(self):
def current_cover_position(self) -> int:
"""Return current position of cover."""
return self._state_dict[STATE_KEY_POSITION]
def stop_cover(self, **kwargs):
def stop_cover(self, **kwargs: Any) -> None:
"""Fire the stop action."""
if self._ads_var_stop:
self._ads_hub.write_by_name(self._ads_var_stop, True, pyads.PLCTYPE_BOOL)
def set_cover_position(self, **kwargs):
def set_cover_position(self, **kwargs: Any) -> None:
"""Set cover position."""
position = kwargs[ATTR_POSITION]
if self._ads_var_pos_set is not None:
@@ -159,14 +161,14 @@ class AdsCover(AdsEntity, CoverEntity):
self._ads_var_pos_set, position, pyads.PLCTYPE_BYTE
)
def open_cover(self, **kwargs):
def open_cover(self, **kwargs: Any) -> None:
"""Move the cover up."""
if self._ads_var_open is not None:
self._ads_hub.write_by_name(self._ads_var_open, True, pyads.PLCTYPE_BOOL)
elif self._ads_var_pos_set is not None:
self.set_cover_position(position=100)
def close_cover(self, **kwargs):
def close_cover(self, **kwargs: Any) -> None:
"""Move the cover down."""
if self._ads_var_close is not None:
self._ads_hub.write_by_name(self._ads_var_close, True, pyads.PLCTYPE_BOOL)

View File

@@ -1,4 +1,6 @@
"""Cover platform for Advantage Air integration."""
from typing import Any
from homeassistant.components.cover import (
ATTR_POSITION,
CoverDeviceClass,
@@ -56,18 +58,18 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
)
@property
def is_closed(self):
def is_closed(self) -> bool:
"""Return if vent is fully closed."""
return self._zone["state"] == ADVANTAGE_AIR_STATE_CLOSE
@property
def current_cover_position(self):
def current_cover_position(self) -> int:
"""Return vents current position as a percentage."""
if self._zone["state"] == ADVANTAGE_AIR_STATE_OPEN:
return self._zone["value"]
return 0
async def async_open_cover(self, **kwargs):
async def async_open_cover(self, **kwargs: Any) -> None:
"""Fully open zone vent."""
await self.async_change(
{
@@ -79,7 +81,7 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
}
)
async def async_close_cover(self, **kwargs):
async def async_close_cover(self, **kwargs: Any) -> None:
"""Fully close zone vent."""
await self.async_change(
{
@@ -89,7 +91,7 @@ class AdvantageAirZoneVent(AdvantageAirEntity, CoverEntity):
}
)
async def async_set_cover_position(self, **kwargs):
async def async_set_cover_position(self, **kwargs: Any) -> None:
"""Change vent position."""
position = round(kwargs[ATTR_POSITION] / 5) * 5
if position == 0:

View File

@@ -1,4 +1,6 @@
"""Config flow for AEMET OpenData."""
from __future__ import annotations
from aemet_opendata import AEMET
import voluptuous as vol
@@ -50,7 +52,9 @@ class AemetConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@callback
def async_get_options_flow(config_entry):
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> OptionsFlowHandler:
"""Get the options flow for this handler."""
return OptionsFlowHandler(config_entry)

View File

@@ -17,14 +17,6 @@ from homeassistant.components.weather import (
ATTR_CONDITION_RAINY,
ATTR_CONDITION_SNOWY,
ATTR_CONDITION_SUNNY,
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
)
from homeassistant.const import (
DEGREE,
@@ -45,8 +37,16 @@ ENTRY_NAME = "name"
ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
ATTR_API_CONDITION = "condition"
ATTR_API_FORECAST_CONDITION = "condition"
ATTR_API_FORECAST_DAILY = "forecast-daily"
ATTR_API_FORECAST_HOURLY = "forecast-hourly"
ATTR_API_FORECAST_PRECIPITATION = "precipitation"
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY = "precipitation_probability"
ATTR_API_FORECAST_TEMP = "temperature"
ATTR_API_FORECAST_TEMP_LOW = "templow"
ATTR_API_FORECAST_TIME = "datetime"
ATTR_API_FORECAST_WIND_BEARING = "wind_bearing"
ATTR_API_FORECAST_WIND_SPEED = "wind_speed"
ATTR_API_HUMIDITY = "humidity"
ATTR_API_PRESSURE = "pressure"
ATTR_API_RAIN = "rain"
@@ -158,14 +158,14 @@ CONDITIONS_MAP = {
}
FORECAST_MONITORED_CONDITIONS = [
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
]
MONITORED_CONDITIONS = [
ATTR_API_CONDITION,
@@ -202,43 +202,43 @@ FORECAST_MODE_ATTR_API = {
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_FORECAST_CONDITION,
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_FORECAST_PRECIPITATION,
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
native_unit_of_measurement=PRECIPITATION_MILLIMETERS_PER_HOUR,
),
SensorEntityDescription(
key=ATTR_FORECAST_PRECIPITATION_PROBABILITY,
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TEMP,
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TEMP_LOW,
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_FORECAST_TIME,
key=ATTR_API_FORECAST_TIME,
name="Time",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_FORECAST_WIND_BEARING,
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_FORECAST_WIND_SPEED,
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
),

View File

@@ -10,7 +10,7 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
from .const import (
ATTR_FORECAST_TIME,
ATTR_API_FORECAST_TIME,
ATTRIBUTION,
DOMAIN,
ENTRY_NAME,
@@ -45,17 +45,13 @@ async def async_setup_entry(
entities.extend(
[
AemetForecastSensor(
name_prefix,
unique_id_prefix,
f"{domain_data[ENTRY_NAME]} {mode} Forecast",
f"{unique_id}-forecast-{mode}",
weather_coordinator,
mode,
description,
)
for mode in FORECAST_MODES
if (
(name_prefix := f"{domain_data[ENTRY_NAME]} {mode} Forecast")
and (unique_id_prefix := f"{unique_id}-forecast-{mode}")
)
for description in FORECAST_SENSOR_TYPES
if description.key in FORECAST_MONITORED_CONDITIONS
]
@@ -89,14 +85,14 @@ class AemetSensor(AbstractAemetSensor):
def __init__(
self,
name,
unique_id,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
):
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id}-{description.key}",
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
@@ -113,7 +109,7 @@ class AemetForecastSensor(AbstractAemetSensor):
def __init__(
self,
name,
unique_id,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
forecast_mode,
description: SensorEntityDescription,
@@ -121,7 +117,7 @@ class AemetForecastSensor(AbstractAemetSensor):
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id}-{description.key}",
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
@@ -139,6 +135,6 @@ class AemetForecastSensor(AbstractAemetSensor):
)
if forecasts:
forecast = forecasts[0].get(self.entity_description.key)
if self.entity_description.key == ATTR_FORECAST_TIME:
if self.entity_description.key == ATTR_API_FORECAST_TIME:
forecast = dt_util.parse_datetime(forecast)
return forecast

View File

@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"already_configured": "\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"error": {
"invalid_api_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447"
},

View File

@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}

View File

@@ -1,13 +1,36 @@
"""Support for the AEMET OpenData service."""
from homeassistant.components.weather import WeatherEntity
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_FORECAST_NATIVE_TEMP,
ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_FORECAST_NATIVE_WIND_SPEED,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
WeatherEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PRESSURE_HPA, SPEED_KILOMETERS_PER_HOUR, TEMP_CELSIUS
from homeassistant.const import (
LENGTH_MILLIMETERS,
PRESSURE_HPA,
SPEED_KILOMETERS_PER_HOUR,
TEMP_CELSIUS,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_TEMPERATURE,
@@ -19,10 +42,32 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
FORECAST_MODE_ATTR_API,
FORECAST_MODE_DAILY,
FORECAST_MODE_HOURLY,
FORECAST_MODES,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
FORECAST_MAP = {
FORECAST_MODE_DAILY: {
ATTR_API_FORECAST_CONDITION: ATTR_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP_LOW: ATTR_FORECAST_NATIVE_TEMP_LOW,
ATTR_API_FORECAST_TEMP: ATTR_FORECAST_NATIVE_TEMP,
ATTR_API_FORECAST_TIME: ATTR_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING: ATTR_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
},
FORECAST_MODE_HOURLY: {
ATTR_API_FORECAST_CONDITION: ATTR_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_PRECIPITATION: ATTR_FORECAST_NATIVE_PRECIPITATION,
ATTR_API_FORECAST_TEMP: ATTR_FORECAST_NATIVE_TEMP,
ATTR_API_FORECAST_TIME: ATTR_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING: ATTR_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
},
}
async def async_setup_entry(
hass: HomeAssistant,
@@ -47,9 +92,10 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
"""Implementation of an AEMET OpenData sensor."""
_attr_attribution = ATTRIBUTION
_attr_temperature_unit = TEMP_CELSIUS
_attr_pressure_unit = PRESSURE_HPA
_attr_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
_attr_native_precipitation_unit = LENGTH_MILLIMETERS
_attr_native_pressure_unit = PRESSURE_HPA
_attr_native_temperature_unit = TEMP_CELSIUS
_attr_native_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
def __init__(
self,
@@ -75,7 +121,12 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
@property
def forecast(self):
"""Return the forecast array."""
return self.coordinator.data[FORECAST_MODE_ATTR_API[self._forecast_mode]]
forecasts = self.coordinator.data[FORECAST_MODE_ATTR_API[self._forecast_mode]]
forecast_map = FORECAST_MAP[self._forecast_mode]
return [
{ha_key: forecast[api_key] for api_key, ha_key in forecast_map.items()}
for forecast in forecasts
]
@property
def humidity(self):
@@ -83,12 +134,12 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
return self.coordinator.data[ATTR_API_HUMIDITY]
@property
def pressure(self):
def native_pressure(self):
"""Return the pressure."""
return self.coordinator.data[ATTR_API_PRESSURE]
@property
def temperature(self):
def native_temperature(self):
"""Return the temperature."""
return self.coordinator.data[ATTR_API_TEMPERATURE]
@@ -98,6 +149,6 @@ class AemetWeather(CoordinatorEntity[WeatherUpdateCoordinator], WeatherEntity):
return self.coordinator.data[ATTR_API_WIND_BEARING]
@property
def wind_speed(self):
def native_wind_speed(self):
"""Return the wind speed."""
return self.coordinator.data[ATTR_API_WIND_SPEED]

View File

@@ -42,23 +42,21 @@ from aemet_opendata.helpers import (
)
import async_timeout
from homeassistant.components.weather import (
ATTR_FORECAST_CONDITION,
ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP,
ATTR_FORECAST_TEMP_LOW,
ATTR_FORECAST_TIME,
ATTR_FORECAST_WIND_BEARING,
ATTR_FORECAST_WIND_SPEED,
)
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.util import dt as dt_util
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_DAILY,
ATTR_API_FORECAST_HOURLY,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
@@ -402,15 +400,15 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
return None
return {
ATTR_FORECAST_CONDITION: condition,
ATTR_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
day
),
ATTR_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
ATTR_API_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_API_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_API_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
}
def _convert_forecast_hour(self, date, day, hour):
@@ -420,15 +418,15 @@ class WeatherUpdateCoordinator(DataUpdateCoordinator):
forecast_dt = date.replace(hour=hour, minute=0, second=0)
return {
ATTR_FORECAST_CONDITION: condition,
ATTR_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
day, hour
),
ATTR_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
ATTR_API_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_API_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
}
def _calc_precipitation(self, day, hour):

View File

@@ -1,4 +1,6 @@
"""Support for Agent DVR Alarm Control Panels."""
from __future__ import annotations
from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntity,
AlarmControlPanelEntityFeature,
@@ -58,7 +60,7 @@ class AgentBaseStation(AlarmControlPanelEntity):
sw_version=client.version,
)
async def async_update(self):
async def async_update(self) -> None:
"""Update the state of the device."""
await self._client.update()
self._attr_available = self._client.is_available
@@ -76,24 +78,24 @@ class AgentBaseStation(AlarmControlPanelEntity):
else:
self._attr_state = STATE_ALARM_DISARMED
async def async_alarm_disarm(self, code=None):
async def async_alarm_disarm(self, code: str | None = None) -> None:
"""Send disarm command."""
await self._client.disarm()
self._attr_state = STATE_ALARM_DISARMED
async def async_alarm_arm_away(self, code=None):
async def async_alarm_arm_away(self, code: str | None = None) -> None:
"""Send arm away command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_AWAY_MODE_NAME)
self._attr_state = STATE_ALARM_ARMED_AWAY
async def async_alarm_arm_home(self, code=None):
async def async_alarm_arm_home(self, code: str | None = None) -> None:
"""Send arm home command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_HOME_MODE_NAME)
self._attr_state = STATE_ALARM_ARMED_HOME
async def async_alarm_arm_night(self, code=None):
async def async_alarm_arm_night(self, code: str | None = None) -> None:
"""Send arm night command. Uses custom mode."""
await self._client.arm()
await self._client.set_active_profile(CONF_NIGHT_MODE_NAME)

View File

@@ -3,6 +3,9 @@
"abort": {
"already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"error": {
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435"
},
"step": {
"user": {
"data": {

View File

@@ -4,6 +4,7 @@
"already_configured": "Airly-integrationen f\u00f6r dessa koordinater \u00e4r redan konfigurerad."
},
"error": {
"invalid_api_key": "Ogiltig API-nyckel",
"wrong_location": "Inga Airly m\u00e4tstationer i detta omr\u00e5de."
},
"step": {

View File

@@ -0,0 +1,11 @@
{
"config": {
"step": {
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}

View File

@@ -2,6 +2,8 @@
from __future__ import annotations
import asyncio
from collections.abc import Mapping
from typing import Any
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.errors import (
@@ -70,7 +72,7 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
def __init__(self) -> None:
"""Initialize the config flow."""
self._entry_data_for_reauth: dict[str, str] = {}
self._entry_data_for_reauth: Mapping[str, Any] = {}
self._geo_id: str | None = None
@property
@@ -219,10 +221,10 @@ class AirVisualFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
data={**user_input, CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_NODE_PRO},
)
async def async_step_reauth(self, data: dict[str, str]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle configuration by re-auth."""
self._entry_data_for_reauth = data
self._geo_id = async_get_geography_id(data)
self._entry_data_for_reauth = entry_data
self._geo_id = async_get_geography_id(entry_data)
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(

View File

@@ -11,7 +11,8 @@
"step": {
"geography_by_coords": {
"data": {
"api_key": "API \u043a\u043b\u044e\u0447"
"api_key": "API \u043a\u043b\u044e\u0447",
"longitude": "\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u0434\u044a\u043b\u0436\u0438\u043d\u0430"
}
},
"geography_by_name": {

View File

@@ -1,5 +1,8 @@
{
"state": {
"airvisual__pollutant_label": {
"p1": "PM10"
},
"airvisual__pollutant_level": {
"good": "\u05d8\u05d5\u05d1",
"unhealthy": "\u05dc\u05d0 \u05d1\u05e8\u05d9\u05d0",

View File

@@ -0,0 +1,7 @@
{
"state": {
"airvisual__pollutant_label": {
"co": "Kolmonoxid"
}
}
}

View File

@@ -5,6 +5,11 @@
"invalid_api_key": "Ogiltig API-nyckel"
},
"step": {
"geography_by_name": {
"data": {
"api_key": "API-nyckel"
}
},
"node_pro": {
"data": {
"ip_address": "Enhets IP-adress / v\u00e4rdnamn",

View File

@@ -3,7 +3,7 @@
"name": "Airzone",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airzone",
"requirements": ["aioairzone==0.4.4"],
"requirements": ["aioairzone==0.4.5"],
"codeowners": ["@Noltari"],
"iot_class": "local_polling",
"loggers": ["aioairzone"]

View File

@@ -1,13 +1,16 @@
"""The aladdin_connect component."""
import asyncio
import logging
from typing import Final
from aladdin_connect import AladdinConnectClient
from AIOAladdinConnect import AladdinConnectClient
from aiohttp import ClientConnectionError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
@@ -20,9 +23,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up platform from a ConfigEntry."""
username = entry.data[CONF_USERNAME]
password = entry.data[CONF_PASSWORD]
acc = AladdinConnectClient(username, password)
if not await hass.async_add_executor_job(acc.login):
raise ConfigEntryAuthFailed("Incorrect Password")
acc = AladdinConnectClient(username, password, async_get_clientsession(hass))
try:
if not await acc.login():
raise ConfigEntryAuthFailed("Incorrect Password")
except (ClientConnectionError, asyncio.TimeoutError) as ex:
raise ConfigEntryNotReady("Can not connect to host") from ex
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = acc
hass.config_entries.async_setup_platforms(entry, PLATFORMS)

View File

@@ -1,10 +1,14 @@
"""Config flow for Aladdin Connect cover integration."""
from __future__ import annotations
import asyncio
from collections.abc import Mapping
import logging
from typing import Any
from aladdin_connect import AladdinConnectClient
from AIOAladdinConnect import AladdinConnectClient
from aiohttp import ClientError
from aiohttp.client_exceptions import ClientConnectionError
import voluptuous as vol
from homeassistant import config_entries
@@ -12,6 +16,7 @@ from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
@@ -32,8 +37,11 @@ async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> None:
Data has the keys from STEP_USER_DATA_SCHEMA with values provided by the user.
"""
acc = AladdinConnectClient(data[CONF_USERNAME], data[CONF_PASSWORD])
login = await hass.async_add_executor_job(acc.login)
acc = AladdinConnectClient(
data[CONF_USERNAME], data[CONF_PASSWORD], async_get_clientsession(hass)
)
login = await acc.login()
await acc.close()
if not login:
raise InvalidAuth
@@ -44,9 +52,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
VERSION = 1
entry: config_entries.ConfigEntry | None
async def async_step_reauth(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle re-authentication with Aladdin Connect."""
self.entry = self.hass.config_entries.async_get_entry(self.context["entry_id"])
@@ -68,8 +74,13 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
try:
await validate_input(self.hass, data)
except InvalidAuth:
errors["base"] = "invalid_auth"
except (ClientConnectionError, asyncio.TimeoutError, ClientError):
errors["base"] = "cannot_connect"
else:
self.hass.config_entries.async_update_entry(
@@ -104,6 +115,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
except InvalidAuth:
errors["base"] = "invalid_auth"
except (ClientConnectionError, asyncio.TimeoutError, ClientError):
errors["base"] = "cannot_connect"
else:
await self.async_set_unique_id(
user_input["username"].lower(), raise_on_progress=False

View File

@@ -1,10 +1,11 @@
"""Platform for the Aladdin Connect cover component."""
from __future__ import annotations
from datetime import timedelta
import logging
from typing import Any, Final
from aladdin_connect import AladdinConnectClient
from AIOAladdinConnect import AladdinConnectClient
import voluptuous as vol
from homeassistant.components.cover import (
@@ -34,6 +35,7 @@ _LOGGER: Final = logging.getLogger(__name__)
PLATFORM_SCHEMA: Final = BASE_PLATFORM_SCHEMA.extend(
{vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string}
)
SCAN_INTERVAL = timedelta(seconds=300)
async def async_setup_platform(
@@ -62,14 +64,12 @@ async def async_setup_entry(
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Aladdin Connect platform."""
acc = hass.data[DOMAIN][config_entry.entry_id]
doors = await hass.async_add_executor_job(acc.get_doors)
acc: AladdinConnectClient = hass.data[DOMAIN][config_entry.entry_id]
doors = await acc.get_doors()
if doors is None:
raise PlatformNotReady("Error from Aladdin Connect getting doors")
async_add_entities(
(AladdinDevice(acc, door) for door in doors),
update_before_add=True,
(AladdinDevice(acc, door, config_entry) for door in doors),
)
@@ -79,27 +79,63 @@ class AladdinDevice(CoverEntity):
_attr_device_class = CoverDeviceClass.GARAGE
_attr_supported_features = SUPPORTED_FEATURES
def __init__(self, acc: AladdinConnectClient, device: DoorDevice) -> None:
def __init__(
self, acc: AladdinConnectClient, device: DoorDevice, entry: ConfigEntry
) -> None:
"""Initialize the Aladdin Connect cover."""
self._acc = acc
self._device_id = device["device_id"]
self._number = device["door_number"]
self._attr_name = device["name"]
self._attr_unique_id = f"{self._device_id}-{self._number}"
def close_cover(self, **kwargs: Any) -> None:
async def async_added_to_hass(self) -> None:
"""Connect Aladdin Connect to the cloud."""
async def update_callback() -> None:
"""Schedule a state update."""
self.async_write_ha_state()
self._acc.register_callback(update_callback, self._number)
await self._acc.get_doors(self._number)
async def async_will_remove_from_hass(self) -> None:
"""Close Aladdin Connect before removing."""
await self._acc.close()
async def async_close_cover(self, **kwargs: Any) -> None:
"""Issue close command to cover."""
self._acc.close_door(self._device_id, self._number)
await self._acc.close_door(self._device_id, self._number)
def open_cover(self, **kwargs: Any) -> None:
async def async_open_cover(self, **kwargs: Any) -> None:
"""Issue open command to cover."""
self._acc.open_door(self._device_id, self._number)
await self._acc.open_door(self._device_id, self._number)
def update(self) -> None:
async def async_update(self) -> None:
"""Update status of cover."""
status = STATES_MAP.get(
self._acc.get_door_status(self._device_id, self._number)
await self._acc.get_doors(self._number)
@property
def is_closed(self) -> bool | None:
"""Update is closed attribute."""
value = STATES_MAP.get(self._acc.get_door_status(self._device_id, self._number))
if value is None:
return None
return value == STATE_CLOSED
@property
def is_closing(self) -> bool:
"""Update is closing attribute."""
return (
STATES_MAP.get(self._acc.get_door_status(self._device_id, self._number))
== STATE_CLOSING
)
@property
def is_opening(self) -> bool:
"""Update is opening attribute."""
return (
STATES_MAP.get(self._acc.get_door_status(self._device_id, self._number))
== STATE_OPENING
)
self._attr_is_opening = status == STATE_OPENING
self._attr_is_closing = status == STATE_CLOSING
self._attr_is_closed = None if status is None else status == STATE_CLOSED

View File

@@ -2,7 +2,7 @@
"domain": "aladdin_connect",
"name": "Aladdin Connect",
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
"requirements": ["aladdin_connect==0.4"],
"requirements": ["AIOAladdinConnect==0.1.21"],
"codeowners": ["@mkmer"],
"iot_class": "cloud_polling",
"loggers": ["aladdin_connect"],

View File

@@ -13,6 +13,7 @@
"data": {
"password": "Contrase\u00f1a"
},
"description": "La integraci\u00f3n de Aladdin Connect necesita volver a autenticar su cuenta",
"title": "Reautenticaci\u00f3n de la integraci\u00f3n"
},
"user": {

View File

@@ -1,11 +1,11 @@
{
"config": {
"abort": {
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado",
"already_configured": "Dispositivo j\u00e1 est\u00e1 configurado",
"reauth_successful": "A reautentica\u00e7\u00e3o foi bem-sucedida"
},
"error": {
"cannot_connect": "Falhou ao conectar",
"cannot_connect": "Falha ao conectar",
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida"
},
"step": {
@@ -19,7 +19,7 @@
"user": {
"data": {
"password": "Senha",
"username": "Nome de usu\u00e1rio"
"username": "Usu\u00e1rio"
}
}
}

View File

@@ -0,0 +1,26 @@
{
"config": {
"abort": {
"already_configured": "Enheten \u00e4r redan konfigurerad",
"reauth_successful": "\u00c5terautentisering lyckades"
},
"error": {
"cannot_connect": "Det gick inte att ansluta.",
"invalid_auth": "Ogiltig autentisering"
},
"step": {
"reauth_confirm": {
"data": {
"password": "L\u00f6senord"
},
"title": "\u00c5terautenticera integration"
},
"user": {
"data": {
"password": "L\u00f6senord",
"username": "Anv\u00e4ndarnamn"
}
}
}
}
}

View File

@@ -7,6 +7,9 @@
"disarm": "Avlarma {entity_name}",
"trigger": "Utl\u00f6sare {entity_name}"
},
"condition_type": {
"is_triggered": "har utl\u00f6sts"
},
"trigger_type": {
"armed_away": "{entity_name} larmad borta",
"armed_home": "{entity_name} larmad hemma",

View File

@@ -4,6 +4,7 @@
"arm_away": "{entity_name} \u79bb\u5bb6\u8b66\u6212",
"arm_home": "{entity_name} \u5728\u5bb6\u8b66\u6212",
"arm_night": "{entity_name} \u591c\u95f4\u8b66\u6212",
"arm_vacation": "{entity_name} \u5ea6\u5047\u8b66\u6212",
"disarm": "\u89e3\u9664 {entity_name} \u8b66\u6212",
"trigger": "\u89e6\u53d1 {entity_name}"
},
@@ -11,6 +12,7 @@
"is_armed_away": "{entity_name} \u79bb\u5bb6\u8b66\u6212",
"is_armed_home": "{entity_name} \u5728\u5bb6\u8b66\u6212",
"is_armed_night": "{entity_name} \u591c\u95f4\u8b66\u6212",
"is_armed_vacation": "{entity_name} \u5ea6\u5047\u8b66\u6212",
"is_disarmed": "{entity_name} \u8b66\u6212\u5df2\u89e3\u9664",
"is_triggered": "{entity_name} \u8b66\u62a5\u5df2\u89e6\u53d1"
},
@@ -18,6 +20,7 @@
"armed_away": "{entity_name} \u79bb\u5bb6\u8b66\u6212",
"armed_home": "{entity_name} \u5728\u5bb6\u8b66\u6212",
"armed_night": "{entity_name} \u591c\u95f4\u8b66\u6212",
"armed_vacation": "{entity_name} \u5ea6\u5047\u8b66\u6212",
"disarmed": "{entity_name} \u8b66\u6212\u89e3\u9664",
"triggered": "{entity_name} \u89e6\u53d1\u8b66\u62a5"
}

View File

@@ -1,4 +1,6 @@
"""Support for AlarmDecoder-based alarm control panels (Honeywell/DSC)."""
from __future__ import annotations
import voluptuous as vol
from homeassistant.components.alarm_control_panel import (
@@ -91,7 +93,7 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
self._attr_code_arm_required = code_arm_required
self._alt_night_mode = alt_night_mode
async def async_added_to_hass(self):
async def async_added_to_hass(self) -> None:
"""Register callbacks."""
self.async_on_remove(
async_dispatcher_connect(
@@ -126,12 +128,12 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
}
self.schedule_update_ha_state()
def alarm_disarm(self, code=None):
def alarm_disarm(self, code: str | None = None) -> None:
"""Send disarm command."""
if code:
self._client.send(f"{code!s}1")
def alarm_arm_away(self, code=None):
def alarm_arm_away(self, code: str | None = None) -> None:
"""Send arm away command."""
self._client.arm_away(
code=code,
@@ -139,7 +141,7 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
auto_bypass=self._auto_bypass,
)
def alarm_arm_home(self, code=None):
def alarm_arm_home(self, code: str | None = None) -> None:
"""Send arm home command."""
self._client.arm_home(
code=code,
@@ -147,7 +149,7 @@ class AlarmDecoderAlarmPanel(AlarmControlPanelEntity):
auto_bypass=self._auto_bypass,
)
def alarm_arm_night(self, code=None):
def alarm_arm_night(self, code: str | None = None) -> None:
"""Send arm night command."""
self._client.arm_night(
code=code,

View File

@@ -1,4 +1,6 @@
"""Config flow for AlarmDecoder."""
from __future__ import annotations
import logging
from adext import AdExt
@@ -58,7 +60,9 @@ class AlarmDecoderFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@callback
def async_get_options_flow(config_entry):
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> AlarmDecoderOptionsFlowHandler:
"""Get the options flow for AlarmDecoder."""
return AlarmDecoderOptionsFlowHandler(config_entry)

View File

@@ -4,9 +4,11 @@ from __future__ import annotations
import logging
from homeassistant.components import (
button,
cover,
fan,
image_processing,
input_button,
input_number,
light,
timer,
@@ -1044,6 +1046,8 @@ class AlexaThermostatController(AlexaCapability):
if preset in API_THERMOSTAT_PRESETS:
mode = API_THERMOSTAT_PRESETS[preset]
elif self.entity.state == STATE_UNKNOWN:
return None
else:
mode = API_THERMOSTAT_MODES.get(self.entity.state)
if mode is None:
@@ -1891,7 +1895,10 @@ class AlexaEventDetectionSensor(AlexaCapability):
if self.entity.domain == image_processing.DOMAIN:
if int(state):
human_presence = "DETECTED"
elif state == STATE_ON:
elif state == STATE_ON or self.entity.domain in [
input_button.DOMAIN,
button.DOMAIN,
]:
human_presence = "DETECTED"
return {"value": human_presence}
@@ -1903,7 +1910,8 @@ class AlexaEventDetectionSensor(AlexaCapability):
"detectionModes": {
"humanPresence": {
"featureAvailability": "ENABLED",
"supportsNotDetected": True,
"supportsNotDetected": self.entity.domain
not in [input_button.DOMAIN, button.DOMAIN],
}
},
}

View File

@@ -382,7 +382,6 @@ def async_get_entities(hass, config) -> list[AlexaEntity]:
@ENTITY_ADAPTERS.register(alert.DOMAIN)
@ENTITY_ADAPTERS.register(automation.DOMAIN)
@ENTITY_ADAPTERS.register(group.DOMAIN)
@ENTITY_ADAPTERS.register(input_boolean.DOMAIN)
class GenericCapabilities(AlexaEntity):
"""A generic, on/off device.
@@ -405,12 +404,16 @@ class GenericCapabilities(AlexaEntity):
]
@ENTITY_ADAPTERS.register(input_boolean.DOMAIN)
@ENTITY_ADAPTERS.register(switch.DOMAIN)
class SwitchCapabilities(AlexaEntity):
"""Class to represent Switch capabilities."""
def default_display_categories(self):
"""Return the display categories for this entity."""
if self.entity.domain == input_boolean.DOMAIN:
return [DisplayCategory.OTHER]
device_class = self.entity.attributes.get(ATTR_DEVICE_CLASS)
if device_class == switch.SwitchDeviceClass.OUTLET:
return [DisplayCategory.SMARTPLUG]
@@ -421,6 +424,7 @@ class SwitchCapabilities(AlexaEntity):
"""Yield the supported interfaces."""
return [
AlexaPowerController(self.entity),
AlexaContactSensor(self.hass, self.entity),
AlexaEndpointHealth(self.hass, self.entity),
Alexa(self.hass),
]
@@ -439,6 +443,8 @@ class ButtonCapabilities(AlexaEntity):
"""Yield the supported interfaces."""
return [
AlexaSceneController(self.entity, supports_deactivation=False),
AlexaEventDetectionSensor(self.hass, self.entity),
AlexaEndpointHealth(self.hass, self.entity),
Alexa(self.hass),
]

View File

@@ -127,11 +127,6 @@ async def async_handle_message(hass, message):
@HANDLERS.register("SessionEndedRequest")
async def async_handle_session_end(hass, message):
"""Handle a session end request."""
return None
@HANDLERS.register("IntentRequest")
@HANDLERS.register("LaunchRequest")
async def async_handle_intent(hass, message):
@@ -151,6 +146,11 @@ async def async_handle_intent(hass, message):
intent_name = (
message.get("session", {}).get("application", {}).get("applicationId")
)
elif req["type"] == "SessionEndedRequest":
app_id = message.get("session", {}).get("application", {}).get("applicationId")
intent_name = f"{app_id}.{req['type']}"
alexa_response.variables["reason"] = req["reason"]
alexa_response.variables["error"] = req.get("error")
else:
intent_name = alexa_intent_info["name"]

View File

@@ -64,7 +64,7 @@ class AlmondFlowHandler(
"""Handle authorize step."""
result = await super().async_step_auth(user_input)
if result["type"] == data_entry_flow.RESULT_TYPE_EXTERNAL_STEP:
if result["type"] == data_entry_flow.FlowResultType.EXTERNAL_STEP:
self.host = str(URL(result["url"]).with_path("me"))
return result

View File

@@ -1,6 +1,7 @@
"""Config flow to configure the Ambee integration."""
from __future__ import annotations
from collections.abc import Mapping
from typing import Any
from ambee import Ambee, AmbeeAuthenticationError, AmbeeError
@@ -71,7 +72,7 @@ class AmbeeFlowHandler(ConfigFlow, domain=DOMAIN):
errors=errors,
)
async def async_step_reauth(self, data: dict[str, Any]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle initiation of re-authentication with Ambee."""
self.entry = self.hass.config_entries.async_get_entry(self.context["entry_id"])
return await self.async_step_reauth_confirm()

View File

@@ -0,0 +1,16 @@
{
"config": {
"step": {
"reauth_confirm": {
"data": {
"api_key": "API-nyckel"
}
},
"user": {
"data": {
"api_key": "API-nyckel"
}
}
}
}
}

View File

@@ -5,7 +5,7 @@ set_comfort_mode:
description: >
Enable comfort mode on your AC.
fields:
Name:
name:
description: >
String with device name.
required: true
@@ -18,14 +18,14 @@ send_comfort_feedback:
description: >
Send feedback for comfort mode.
fields:
Name:
name:
description: >
String with device name.
required: true
example: Bedroom
selector:
text:
Value:
value:
description: >
Send any of the following comfort values: too_hot, too_warm, bit_warm, comfortable, bit_cold, too_cold, freezing
required: true
@@ -38,14 +38,14 @@ set_temperature_mode:
description: >
Enable temperature mode on your AC.
fields:
Name:
name:
description: >
String with device name.
required: true
example: Bedroom
selector:
text:
Value:
value:
description: >
Target value in celsius
required: true

View File

@@ -1,5 +1,8 @@
{
"config": {
"abort": {
"already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430"
},
"error": {
"invalid_key": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447 \u0438/\u0438\u043b\u0438 Application \u043a\u043b\u044e\u0447",
"no_devices": "\u041d\u0435 \u0441\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430"

View File

@@ -60,7 +60,7 @@ def get_androidtv_mac(dev_props: dict[str, Any]) -> str | None:
def _setup_androidtv(
hass: HomeAssistant, config: dict[str, Any]
hass: HomeAssistant, config: Mapping[str, Any]
) -> tuple[str, PythonRSASigner | None, str]:
"""Generate an ADB key (if needed) and load it."""
adbkey: str = config.get(

View File

@@ -102,7 +102,6 @@ class KafkaManager:
self._hass = hass
ssl_context = ssl_util.client_context()
self._producer = AIOKafkaProducer(
loop=hass.loop,
bootstrap_servers=f"{ip_address}:{port}",
compression_type="gzip",
security_protocol=security_protocol,

View File

@@ -2,7 +2,7 @@
"domain": "apache_kafka",
"name": "Apache Kafka",
"documentation": "https://www.home-assistant.io/integrations/apache_kafka",
"requirements": ["aiokafka==0.6.0"],
"requirements": ["aiokafka==0.7.2"],
"codeowners": ["@bachya"],
"iot_class": "local_push",
"loggers": ["aiokafka", "kafka_python"]

View File

@@ -1,7 +1,6 @@
"""Rest API for Home Assistant."""
import asyncio
from http import HTTPStatus
import json
import logging
from aiohttp import web
@@ -29,7 +28,7 @@ import homeassistant.core as ha
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ServiceNotFound, TemplateError, Unauthorized
from homeassistant.helpers import template
from homeassistant.helpers.json import JSONEncoder
from homeassistant.helpers.json import json_dumps, json_loads
from homeassistant.helpers.service import async_get_all_descriptions
from homeassistant.helpers.typing import ConfigType
@@ -108,7 +107,7 @@ class APIEventStream(HomeAssistantView):
if event.event_type == EVENT_HOMEASSISTANT_STOP:
data = stop_obj
else:
data = json.dumps(event, cls=JSONEncoder)
data = json_dumps(event)
await to_write.put(data)
@@ -261,7 +260,7 @@ class APIEventView(HomeAssistantView):
raise Unauthorized()
body = await request.text()
try:
event_data = json.loads(body) if body else None
event_data = json_loads(body) if body else None
except ValueError:
return self.json_message(
"Event data should be valid JSON.", HTTPStatus.BAD_REQUEST
@@ -314,7 +313,7 @@ class APIDomainServicesView(HomeAssistantView):
hass: ha.HomeAssistant = request.app["hass"]
body = await request.text()
try:
data = json.loads(body) if body else None
data = json_loads(body) if body else None
except ValueError:
return self.json_message(
"Data should be valid JSON.", HTTPStatus.BAD_REQUEST

View File

@@ -23,6 +23,7 @@ from homeassistant.const import (
Platform,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.dispatcher import (
@@ -49,6 +50,13 @@ PLATFORMS = [Platform.MEDIA_PLAYER, Platform.REMOTE]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up a config entry for Apple TV."""
manager = AppleTVManager(hass, entry)
if manager.is_on:
await manager.connect_once(raise_missing_credentials=True)
if not manager.atv:
address = entry.data[CONF_ADDRESS]
raise ConfigEntryNotReady(f"Not found at {address}, waiting for discovery")
hass.data.setdefault(DOMAIN, {})[entry.unique_id] = manager
async def on_hass_stop(event):
@@ -115,6 +123,10 @@ class AppleTVEntity(Entity):
self.atv = None
self.async_write_ha_state()
if self.manager.atv:
# ATV is already connected
_async_connected(self.manager.atv)
self.async_on_remove(
async_dispatcher_connect(
self.hass, f"{SIGNAL_CONNECTED}_{self.unique_id}", _async_connected
@@ -148,14 +160,14 @@ class AppleTVManager:
self.config_entry = config_entry
self.hass = hass
self.atv = None
self._is_on = not config_entry.options.get(CONF_START_OFF, False)
self.is_on = not config_entry.options.get(CONF_START_OFF, False)
self._connection_attempts = 0
self._connection_was_lost = False
self._task = None
async def init(self):
"""Initialize power management."""
if self._is_on:
if self.is_on:
await self.connect()
def connection_lost(self, _):
@@ -186,13 +198,13 @@ class AppleTVManager:
async def connect(self):
"""Connect to device."""
self._is_on = True
self.is_on = True
self._start_connect_loop()
async def disconnect(self):
"""Disconnect from device."""
_LOGGER.debug("Disconnecting from device")
self._is_on = False
self.is_on = False
try:
if self.atv:
self.atv.close()
@@ -205,50 +217,53 @@ class AppleTVManager:
def _start_connect_loop(self):
"""Start background connect loop to device."""
if not self._task and self.atv is None and self._is_on:
if not self._task and self.atv is None and self.is_on:
self._task = asyncio.create_task(self._connect_loop())
else:
_LOGGER.debug(
"Not starting connect loop (%s, %s)", self.atv is None, self._is_on
"Not starting connect loop (%s, %s)", self.atv is None, self.is_on
)
async def connect_once(self, raise_missing_credentials):
"""Try to connect once."""
try:
if conf := await self._scan():
await self._connect(conf, raise_missing_credentials)
except exceptions.AuthenticationError:
self.config_entry.async_start_reauth(self.hass)
asyncio.create_task(self.disconnect())
_LOGGER.exception(
"Authentication failed for %s, try reconfiguring device",
self.config_entry.data[CONF_NAME],
)
return
except asyncio.CancelledError:
pass
except Exception: # pylint: disable=broad-except
_LOGGER.exception("Failed to connect")
self.atv = None
async def _connect_loop(self):
"""Connect loop background task function."""
_LOGGER.debug("Starting connect loop")
# Try to find device and connect as long as the user has said that
# we are allowed to connect and we are not already connected.
while self._is_on and self.atv is None:
try:
conf = await self._scan()
if conf:
await self._connect(conf)
except exceptions.AuthenticationError:
self.config_entry.async_start_reauth(self.hass)
asyncio.create_task(self.disconnect())
_LOGGER.exception(
"Authentication failed for %s, try reconfiguring device",
self.config_entry.data[CONF_NAME],
)
while self.is_on and self.atv is None:
await self.connect_once(raise_missing_credentials=False)
if self.atv is not None:
break
except asyncio.CancelledError:
pass
except Exception: # pylint: disable=broad-except
_LOGGER.exception("Failed to connect")
self.atv = None
self._connection_attempts += 1
backoff = min(
max(
BACKOFF_TIME_LOWER_LIMIT,
randrange(2**self._connection_attempts),
),
BACKOFF_TIME_UPPER_LIMIT,
)
if self.atv is None:
self._connection_attempts += 1
backoff = min(
max(
BACKOFF_TIME_LOWER_LIMIT,
randrange(2**self._connection_attempts),
),
BACKOFF_TIME_UPPER_LIMIT,
)
_LOGGER.debug("Reconnecting in %d seconds", backoff)
await asyncio.sleep(backoff)
_LOGGER.debug("Reconnecting in %d seconds", backoff)
await asyncio.sleep(backoff)
_LOGGER.debug("Connect loop ended")
self._task = None
@@ -287,23 +302,33 @@ class AppleTVManager:
# it will update the address and reload the config entry when the device is found.
return None
async def _connect(self, conf):
async def _connect(self, conf, raise_missing_credentials):
"""Connect to device."""
credentials = self.config_entry.data[CONF_CREDENTIALS]
session = async_get_clientsession(self.hass)
name = self.config_entry.data[CONF_NAME]
missing_protocols = []
for protocol_int, creds in credentials.items():
protocol = Protocol(int(protocol_int))
if conf.get_service(protocol) is not None:
conf.set_credentials(protocol, creds)
else:
_LOGGER.warning(
"Protocol %s not found for %s, functionality will be reduced",
protocol.name,
self.config_entry.data[CONF_NAME],
missing_protocols.append(protocol.name)
if missing_protocols:
missing_protocols_str = ", ".join(missing_protocols)
if raise_missing_credentials:
raise ConfigEntryNotReady(
f"Protocol(s) {missing_protocols_str} not yet found for {name}, waiting for discovery."
)
_LOGGER.info(
"Protocol(s) %s not yet found for %s, trying later",
missing_protocols_str,
name,
)
return
_LOGGER.debug("Connecting to device %s", self.config_entry.data[CONF_NAME])
session = async_get_clientsession(self.hass)
self.atv = await connect(conf, self.hass.loop, session=session)
self.atv.listener = self

View File

@@ -21,8 +21,8 @@ def build_app_list(app_list):
media_content_id="apps",
media_content_type=MEDIA_TYPE_APPS,
title="Apps",
can_play=True,
can_expand=False,
can_play=False,
can_expand=True,
children=[item_payload(item) for item in app_list],
children_media_class=MEDIA_CLASS_APP,
)

View File

@@ -3,9 +3,11 @@ from __future__ import annotations
import asyncio
from collections import deque
from collections.abc import Mapping
from ipaddress import ip_address
import logging
from random import randrange
from typing import Any
from pyatv import exceptions, pair, scan
from pyatv.const import DeviceModel, PairingRequirement, Protocol
@@ -13,10 +15,11 @@ from pyatv.convert import model_str, protocol_str
from pyatv.helpers import get_unique_id
import voluptuous as vol
from homeassistant import config_entries, data_entry_flow
from homeassistant import config_entries
from homeassistant.components import zeroconf
from homeassistant.const import CONF_ADDRESS, CONF_NAME, CONF_PIN
from homeassistant.core import callback
from homeassistant.data_entry_flow import AbortFlow, FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.util.network import is_ipv6_address
@@ -71,7 +74,9 @@ class AppleTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@callback
def async_get_options_flow(config_entry):
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> AppleTVOptionsFlow:
"""Get options flow for this handler."""
return AppleTVOptionsFlow(config_entry)
@@ -116,10 +121,10 @@ class AppleTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
return entry.unique_id
return None
async def async_step_reauth(self, user_input=None):
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle initial step when updating invalid credentials."""
self.context["title_placeholders"] = {
"name": user_input[CONF_NAME],
"name": entry_data[CONF_NAME],
"type": "Apple TV",
}
self.scan_filter = self.unique_id
@@ -164,7 +169,7 @@ class AppleTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
async def async_step_zeroconf(
self, discovery_info: zeroconf.ZeroconfServiceInfo
) -> data_entry_flow.FlowResult:
) -> FlowResult:
"""Handle device found via zeroconf."""
host = discovery_info.host
if is_ipv6_address(host):
@@ -248,7 +253,7 @@ class AppleTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
):
# Add potentially new identifiers from this device to the existing flow
context["all_identifiers"].append(unique_id)
raise data_entry_flow.AbortFlow("already_in_progress")
raise AbortFlow("already_in_progress")
async def async_found_zeroconf_device(self, user_input=None):
"""Handle device found after Zeroconf discovery."""
@@ -523,7 +528,7 @@ class AppleTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
class AppleTVOptionsFlow(config_entries.OptionsFlow):
"""Handle Apple TV options."""
def __init__(self, config_entry):
def __init__(self, config_entry: config_entries.ConfigEntry) -> None:
"""Initialize Apple TV options flow."""
self.config_entry = config_entry
self.options = dict(config_entry.options)

View File

@@ -3,7 +3,7 @@
"name": "Apple TV",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/apple_tv",
"requirements": ["pyatv==0.10.0"],
"requirements": ["pyatv==0.10.2"],
"dependencies": ["zeroconf"],
"zeroconf": [
"_mediaremotetv._tcp.local.",

View File

@@ -282,22 +282,20 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
# RAOP. Otherwise try to play it with regular AirPlay.
if media_type == MEDIA_TYPE_APP:
await self.atv.apps.launch_app(media_id)
return
if media_source.is_media_source_id(media_id):
play_item = await media_source.async_resolve_media(
self.hass, media_id, self.entity_id
)
media_id = play_item.url
media_id = async_process_play_media_url(self.hass, play_item.url)
media_type = MEDIA_TYPE_MUSIC
media_id = async_process_play_media_url(self.hass, media_id)
if self._is_feature_available(FeatureName.StreamFile) and (
media_type == MEDIA_TYPE_MUSIC or await is_streamable(media_id)
):
_LOGGER.debug("Streaming %s via RAOP", media_id)
await self.atv.stream.stream_file(media_id)
elif self._is_feature_available(FeatureName.PlayUrl):
_LOGGER.debug("Playing %s via AirPlay", media_id)
await self.atv.stream.play_url(media_id)

View File

@@ -7,6 +7,7 @@
"device_did_not_pair": "No se ha intentado finalizar el proceso de emparejamiento desde el dispositivo.",
"device_not_found": "No se ha encontrado el dispositivo durante la detecci\u00f3n, por favor, intente a\u00f1adirlo de nuevo.",
"inconsistent_device": "No se encontraron los protocolos esperados durante el descubrimiento. Esto normalmente indica un problema con el DNS de multidifusi\u00f3n (Zeroconf). Por favor, intente a\u00f1adir el dispositivo de nuevo.",
"ipv6_not_supported": "IPv6 no est\u00e1 soportado.",
"no_devices_found": "No se encontraron dispositivos en la red",
"reauth_successful": "La reautenticaci\u00f3n se realiz\u00f3 correctamente",
"setup_failed": "No se ha podido configurar el dispositivo.",

View File

@@ -253,6 +253,11 @@ class ApplicationCredentialsProtocol(Protocol):
) -> config_entry_oauth2_flow.AbstractOAuth2Implementation:
"""Return a custom auth implementation."""
async def async_get_description_placeholders(
self, hass: HomeAssistant
) -> dict[str, str]:
"""Return description placeholders for the credentials dialog."""
async def _get_platform(
hass: HomeAssistant, integration_domain: str
@@ -282,6 +287,14 @@ async def _get_platform(
return platform
async def _async_integration_config(hass: HomeAssistant, domain: str) -> dict[str, Any]:
platform = await _get_platform(hass, domain)
if platform and hasattr(platform, "async_get_description_placeholders"):
placeholders = await platform.async_get_description_placeholders(hass)
return {"description_placeholders": placeholders}
return {}
@websocket_api.websocket_command(
{vol.Required("type"): "application_credentials/config"}
)
@@ -290,6 +303,11 @@ async def handle_integration_list(
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
) -> None:
"""Handle integrations command."""
connection.send_result(
msg["id"], {"domains": await async_get_application_credentials(hass)}
)
domains = await async_get_application_credentials(hass)
result = {
"domains": domains,
"integrations": {
domain: await _async_integration_config(hass, domain) for domain in domains
},
}
connection.send_result(msg["id"], result)

View File

@@ -2,7 +2,7 @@
"domain": "apprise",
"name": "Apprise",
"documentation": "https://www.home-assistant.io/integrations/apprise",
"requirements": ["apprise==0.9.8.3"],
"requirements": ["apprise==0.9.9"],
"codeowners": ["@caronc"],
"iot_class": "cloud_push",
"loggers": ["apprise"]

View File

@@ -3,5 +3,10 @@
"abort": {
"cannot_connect": "\u8fde\u63a5\u5931\u8d25"
}
},
"device_automation": {
"trigger_type": {
"turn_on": "{entity_name} \u88ab\u8981\u6c42\u6253\u5f00"
}
}
}

View File

@@ -1,11 +1,13 @@
{
"config": {
"error": {
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
"unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
},
"step": {
"user": {
"data": {
"mode": "\u0420\u0435\u0436\u0438\u043c",
"name": "\u0418\u043c\u0435",
"password": "\u041f\u0430\u0440\u043e\u043b\u0430",
"port": "\u041f\u043e\u0440\u0442",

View File

@@ -1,7 +1,8 @@
{
"config": {
"abort": {
"invalid_unique_id": "No se pudo determinar ning\u00fan identificador \u00fanico v\u00e1lido del dispositivo"
"invalid_unique_id": "No se pudo determinar ning\u00fan identificador \u00fanico v\u00e1lido del dispositivo",
"no_unique_id": "Un dispositivo sin una identificaci\u00f3n \u00fanica v\u00e1lida ya est\u00e1 configurado. La configuraci\u00f3n de una instancia m\u00faltiple no es posible"
},
"error": {
"cannot_connect": "No se pudo conectar",

View File

@@ -2,7 +2,7 @@
"config": {
"abort": {
"invalid_unique_id": "Imposs\u00edvel determinar um ID exclusivo v\u00e1lido para o dispositivo",
"no_unique_id": "[%key:component::asuswrt::config::abort::not_unique_id_exist%]"
"no_unique_id": "Um dispositivo sem um ID exclusivo v\u00e1lido j\u00e1 est\u00e1 configurado. A configura\u00e7\u00e3o de v\u00e1rias inst\u00e2ncias n\u00e3o \u00e9 poss\u00edvel"
},
"error": {
"cannot_connect": "Falha ao conectar",

View File

@@ -31,7 +31,7 @@
"step": {
"init": {
"data": {
"consider_home": "Sekunder att v\u00e4nta tills attt en enhet anses borta",
"consider_home": "Sekunder att v\u00e4nta tills att en enhet anses borta",
"dnsmasq": "Platsen i routern f\u00f6r dnsmasq.leases-filerna",
"interface": "Gr\u00e4nssnittet som du vill ha statistik fr\u00e5n (t.ex. eth0, eth1 etc)",
"require_ip": "Enheterna m\u00e5ste ha IP (f\u00f6r accesspunktsl\u00e4ge)",

View File

@@ -3,6 +3,9 @@
"abort": {
"already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e"
},
"error": {
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0445 \u043f\u0440\u0438 \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435"
},
"step": {
"user": {
"data": {

View File

@@ -21,6 +21,7 @@ from homeassistant.exceptions import (
ConfigEntryNotReady,
HomeAssistantError,
)
from homeassistant.helpers import device_registry as dr
from .activity import ActivityStream
from .const import DOMAIN, MIN_TIME_BETWEEN_DETAIL_UPDATES, PLATFORMS
@@ -283,12 +284,15 @@ class AugustData(AugustSubscriberMixin):
device.device_id,
)
def _get_device_name(self, device_id):
def get_device(self, device_id: str) -> Doorbell | Lock | None:
"""Get a device by id."""
return self._locks_by_id.get(device_id) or self._doorbells_by_id.get(device_id)
def _get_device_name(self, device_id: str) -> str | None:
"""Return doorbell or lock name as August has it stored."""
if device_id in self._locks_by_id:
return self._locks_by_id[device_id].device_name
if device_id in self._doorbells_by_id:
return self._doorbells_by_id[device_id].device_name
if device := self.get_device(device_id):
return device.device_name
return None
async def async_lock(self, device_id):
"""Lock the device."""
@@ -403,3 +407,15 @@ def _restore_live_attrs(lock_detail, attrs):
"""Restore the non-cache attributes after a cached update."""
for attr, value in attrs.items():
setattr(lock_detail, attr, value)
async def async_remove_config_entry_device(
hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry
) -> bool:
"""Remove august config entry from a device if its no longer present."""
data: AugustData = hass.data[DOMAIN][config_entry.entry_id]
return not any(
identifier
for identifier in device_entry.identifiers
if identifier[0] == DOMAIN and data.get_device(identifier[1])
)

View File

@@ -30,7 +30,7 @@ class AugustWakeLockButton(AugustEntityMixin, ButtonEntity):
self._attr_name = f"{device.device_name} Wake"
self._attr_unique_id = f"{self._device_id}_wake"
async def async_press(self, **kwargs):
async def async_press(self) -> None:
"""Wake the device."""
await self._data.async_status_async(self._device_id, self._hyper_bridge)

View File

@@ -1,11 +1,14 @@
"""Config flow for August integration."""
from collections.abc import Mapping
import logging
from typing import Any
import voluptuous as vol
from yalexs.authenticator import ValidationResult
from homeassistant import config_entries
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.data_entry_flow import FlowResult
from .const import CONF_LOGIN_METHOD, DOMAIN, LOGIN_METHODS, VERIFICATION_CODE_KEY
from .exceptions import CannotConnect, InvalidAuth, RequireValidation
@@ -109,9 +112,9 @@ class AugustConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
},
)
async def async_step_reauth(self, data):
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle configuration by re-auth."""
self._user_auth_details = dict(data)
self._user_auth_details = dict(entry_data)
self._mode = "reauth"
self._needs_reset = True
self._august_gateway = AugustGateway(self.hass)

View File

@@ -1,5 +1,6 @@
"""Support for August lock."""
import logging
from typing import Any
from aiohttp import ClientResponseError
from yalexs.activity import SOURCE_PUBNUB, ActivityType
@@ -44,14 +45,14 @@ class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity):
self._attr_unique_id = f"{self._device_id:s}_lock"
self._update_from_data()
async def async_lock(self, **kwargs):
async def async_lock(self, **kwargs: Any) -> None:
"""Lock the device."""
if self._data.activity_stream.pubnub.connected:
await self._data.async_lock_async(self._device_id, self._hyper_bridge)
return
await self._call_lock_operation(self._data.async_lock)
async def async_unlock(self, **kwargs):
async def async_unlock(self, **kwargs: Any) -> None:
"""Unlock the device."""
if self._data.activity_stream.pubnub.connected:
await self._data.async_unlock_async(self._device_id, self._hyper_bridge)
@@ -126,7 +127,7 @@ class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity):
"keypad_battery_level"
] = self._detail.keypad.battery_level
async def async_added_to_hass(self):
async def async_added_to_hass(self) -> None:
"""Restore ATTR_CHANGED_BY on startup since it is likely no longer in the activity log."""
await super().async_added_to_hass()

View File

@@ -0,0 +1,14 @@
{
"config": {
"error": {
"invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435"
},
"step": {
"user_validate": {
"data": {
"password": "\u041f\u0430\u0440\u043e\u043b\u0430"
}
}
}
}
}

View File

@@ -1,4 +1,6 @@
"""Config flow for SpaceX Launches and Starman."""
from __future__ import annotations
import logging
from aiohttp import ClientError
@@ -22,7 +24,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
@staticmethod
@callback
def async_get_options_flow(config_entry):
def async_get_options_flow(
config_entry: config_entries.ConfigEntry,
) -> OptionsFlowHandler:
"""Get the options flow for this handler."""
return OptionsFlowHandler(config_entry)
@@ -82,7 +86,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
class OptionsFlowHandler(config_entries.OptionsFlow):
"""Handle options flow changes."""
def __init__(self, config_entry):
def __init__(self, config_entry: config_entries.ConfigEntry) -> None:
"""Initialize options flow."""
self.config_entry = config_entry

View File

@@ -17,7 +17,7 @@
"step": {
"init": {
"data": {
"threshold": "\u3057\u304d\u3044\u5024(%)"
"threshold": "\u95be\u5024(%)"
}
}
}

View File

@@ -10,15 +10,13 @@
import logging
from aurorapy.client import AuroraError, AuroraSerialClient
from aurorapy.client import AuroraSerialClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_ADDRESS, CONF_PORT, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from .config_flow import validate_and_connect
from .const import ATTR_SERIAL_NUMBER, DOMAIN
from .const import DOMAIN
PLATFORMS = [Platform.SENSOR]
@@ -31,42 +29,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
comport = entry.data[CONF_PORT]
address = entry.data[CONF_ADDRESS]
ser_client = AuroraSerialClient(address, comport, parity="N", timeout=1)
# To handle yaml import attempts in darkness, (re)try connecting only if
# unique_id not yet assigned.
if entry.unique_id is None:
try:
res = await hass.async_add_executor_job(
validate_and_connect, hass, entry.data
)
except AuroraError as error:
if "No response after" in str(error):
raise ConfigEntryNotReady("No response (could be dark)") from error
_LOGGER.error("Failed to connect to inverter: %s", error)
return False
except OSError as error:
if error.errno == 19: # No such device.
_LOGGER.error("Failed to connect to inverter: no such COM port")
return False
_LOGGER.error("Failed to connect to inverter: %s", error)
return False
else:
# If we got here, the device is now communicating (maybe after
# being in darkness). But there's a small risk that the user has
# configured via the UI since we last attempted the yaml setup,
# which means we'd get a duplicate unique ID.
new_id = res[ATTR_SERIAL_NUMBER]
# Check if this unique_id has already been used
for existing_entry in hass.config_entries.async_entries(DOMAIN):
if existing_entry.unique_id == new_id:
_LOGGER.debug(
"Remove already configured config entry for id %s", new_id
)
hass.async_create_task(
hass.config_entries.async_remove(entry.entry_id)
)
return False
hass.config_entries.async_update_entry(entry, unique_id=new_id)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = ser_client
hass.config_entries.async_setup_platforms(entry, PLATFORMS)

View File

@@ -3,7 +3,7 @@
"name": "Aurora ABB PowerOne Solar PV",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/aurora_abb_powerone",
"requirements": ["aurorapy==0.2.6"],
"requirements": ["aurorapy==0.2.7"],
"codeowners": ["@davet2001"],
"iot_class": "local_polling",
"loggers": ["aurorapy"]

View File

@@ -5,7 +5,7 @@ from collections.abc import Mapping
import logging
from typing import Any
from aurorapy.client import AuroraError, AuroraSerialClient
from aurorapy.client import AuroraError, AuroraSerialClient, AuroraTimeoutError
from homeassistant.components.sensor import (
SensorDeviceClass,
@@ -102,22 +102,16 @@ class AuroraSensor(AuroraEntity, SensorEntity):
self._attr_native_value = round(energy_wh / 1000, 2)
self._attr_available = True
except AuroraTimeoutError:
self._attr_state = None
self._attr_native_value = None
self._attr_available = False
_LOGGER.debug("No response from inverter (could be dark)")
except AuroraError as error:
self._attr_state = None
self._attr_native_value = None
self._attr_available = False
# aurorapy does not have different exceptions (yet) for dealing
# with timeout vs other comms errors.
# This means the (normal) situation of no response during darkness
# raises an exception.
# aurorapy (gitlab) pull request merged 29/5/2019. When >0.2.6 is
# released, this could be modified to :
# except AuroraTimeoutError as e:
# Workaround: look at the text of the exception
if "No response after" in str(error):
_LOGGER.debug("No response from inverter (could be dark)")
else:
raise error
raise error
finally:
if self._attr_available != self.available_prev:
if self._attr_available:

View File

@@ -0,0 +1,17 @@
{
"config": {
"abort": {
"no_serial_ports": "Inga com portar funna. M\u00e5ste ha en RS485 enhet f\u00f6r att kommunicera"
},
"error": {
"cannot_open_serial_port": "Kan inte \u00f6ppna serieporten, kontrollera och f\u00f6rs\u00f6k igen."
},
"step": {
"user": {
"data": {
"port": "RS485 eller USB-RS485 adapter port"
}
}
}
}
}

View File

@@ -1,6 +1,7 @@
"""Config flow for Aussie Broadband integration."""
from __future__ import annotations
from collections.abc import Mapping
from typing import Any
from aiohttp import ClientError
@@ -76,9 +77,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
errors=errors,
)
async def async_step_reauth(self, user_input: dict[str, str]) -> FlowResult:
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle reauth on credential failure."""
self._reauth_username = user_input[CONF_USERNAME]
self._reauth_username = entry_data[CONF_USERNAME]
return await self.async_step_reauth_confirm()

View File

@@ -1,12 +1,14 @@
{
"config": {
"abort": {
"already_configured": "La cuenta ya est\u00e1 configurada",
"no_services_found": "No se han encontrado servicios para esta cuenta",
"reauth_successful": "Re-autenticaci\u00f3n realizada correctamente"
},
"error": {
"cannot_connect": "Fall\u00f3 la conexi\u00f3n",
"invalid_auth": "Autenticaci\u00f3n no v\u00e1lida"
"invalid_auth": "Autenticaci\u00f3n no v\u00e1lida",
"unknown": "Error inesperado"
},
"step": {
"reauth_confirm": {
@@ -31,8 +33,16 @@
}
},
"options": {
"abort": {
"cannot_connect": "Fallo en la conexi\u00f3n",
"invalid_auth": "Autenticaci\u00f3n no v\u00e1lida",
"unknown": "Error inesperado"
},
"step": {
"init": {
"data": {
"services": "Servicios"
},
"title": "Selecciona servicios"
}
}

View File

@@ -150,44 +150,6 @@ from homeassistant.util import dt as dt_util
from . import indieauth, login_flow, mfa_setup_flow
DOMAIN = "auth"
WS_TYPE_CURRENT_USER = "auth/current_user"
SCHEMA_WS_CURRENT_USER = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
{vol.Required("type"): WS_TYPE_CURRENT_USER}
)
WS_TYPE_LONG_LIVED_ACCESS_TOKEN = "auth/long_lived_access_token"
SCHEMA_WS_LONG_LIVED_ACCESS_TOKEN = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
{
vol.Required("type"): WS_TYPE_LONG_LIVED_ACCESS_TOKEN,
vol.Required("lifespan"): int, # days
vol.Required("client_name"): str,
vol.Optional("client_icon"): str,
}
)
WS_TYPE_REFRESH_TOKENS = "auth/refresh_tokens"
SCHEMA_WS_REFRESH_TOKENS = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
{vol.Required("type"): WS_TYPE_REFRESH_TOKENS}
)
WS_TYPE_DELETE_REFRESH_TOKEN = "auth/delete_refresh_token"
SCHEMA_WS_DELETE_REFRESH_TOKEN = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
{
vol.Required("type"): WS_TYPE_DELETE_REFRESH_TOKEN,
vol.Required("refresh_token_id"): str,
}
)
WS_TYPE_SIGN_PATH = "auth/sign_path"
SCHEMA_WS_SIGN_PATH = websocket_api.BASE_COMMAND_MESSAGE_SCHEMA.extend(
{
vol.Required("type"): WS_TYPE_SIGN_PATH,
vol.Required("path"): str,
vol.Optional("expires", default=30): int,
}
)
RESULT_TYPE_CREDENTIALS = "credentials"
@bind_hass
@@ -206,27 +168,11 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
hass.http.register_view(LinkUserView(retrieve_result))
hass.http.register_view(OAuth2AuthorizeCallbackView())
websocket_api.async_register_command(
hass, WS_TYPE_CURRENT_USER, websocket_current_user, SCHEMA_WS_CURRENT_USER
)
websocket_api.async_register_command(
hass,
WS_TYPE_LONG_LIVED_ACCESS_TOKEN,
websocket_create_long_lived_access_token,
SCHEMA_WS_LONG_LIVED_ACCESS_TOKEN,
)
websocket_api.async_register_command(
hass, WS_TYPE_REFRESH_TOKENS, websocket_refresh_tokens, SCHEMA_WS_REFRESH_TOKENS
)
websocket_api.async_register_command(
hass,
WS_TYPE_DELETE_REFRESH_TOKEN,
websocket_delete_refresh_token,
SCHEMA_WS_DELETE_REFRESH_TOKEN,
)
websocket_api.async_register_command(
hass, WS_TYPE_SIGN_PATH, websocket_sign_path, SCHEMA_WS_SIGN_PATH
)
websocket_api.async_register_command(hass, websocket_current_user)
websocket_api.async_register_command(hass, websocket_create_long_lived_access_token)
websocket_api.async_register_command(hass, websocket_refresh_tokens)
websocket_api.async_register_command(hass, websocket_delete_refresh_token)
websocket_api.async_register_command(hass, websocket_sign_path)
await login_flow.async_setup(hass, store_result)
await mfa_setup_flow.async_setup(hass)
@@ -487,6 +433,7 @@ def _create_auth_code_store():
return store_result, retrieve_result
@websocket_api.websocket_command({vol.Required("type"): "auth/current_user"})
@websocket_api.ws_require_user()
@websocket_api.async_response
async def websocket_current_user(
@@ -524,6 +471,14 @@ async def websocket_current_user(
)
@websocket_api.websocket_command(
{
vol.Required("type"): "auth/long_lived_access_token",
vol.Required("lifespan"): int, # days
vol.Required("client_name"): str,
vol.Optional("client_icon"): str,
}
)
@websocket_api.ws_require_user()
@websocket_api.async_response
async def websocket_create_long_lived_access_token(
@@ -541,13 +496,13 @@ async def websocket_create_long_lived_access_token(
try:
access_token = hass.auth.async_create_access_token(refresh_token)
except InvalidAuthError as exc:
return websocket_api.error_message(
msg["id"], websocket_api.const.ERR_UNAUTHORIZED, str(exc)
)
connection.send_error(msg["id"], websocket_api.const.ERR_UNAUTHORIZED, str(exc))
return
connection.send_message(websocket_api.result_message(msg["id"], access_token))
connection.send_result(msg["id"], access_token)
@websocket_api.websocket_command({vol.Required("type"): "auth/refresh_tokens"})
@websocket_api.ws_require_user()
@callback
def websocket_refresh_tokens(
@@ -555,27 +510,38 @@ def websocket_refresh_tokens(
):
"""Return metadata of users refresh tokens."""
current_id = connection.refresh_token_id
connection.send_message(
websocket_api.result_message(
msg["id"],
[
{
"id": refresh.id,
"client_id": refresh.client_id,
"client_name": refresh.client_name,
"client_icon": refresh.client_icon,
"type": refresh.token_type,
"created_at": refresh.created_at,
"is_current": refresh.id == current_id,
"last_used_at": refresh.last_used_at,
"last_used_ip": refresh.last_used_ip,
}
for refresh in connection.user.refresh_tokens.values()
],
tokens = []
for refresh in connection.user.refresh_tokens.values():
if refresh.credential:
auth_provider_type = refresh.credential.auth_provider_type
else:
auth_provider_type = None
tokens.append(
{
"id": refresh.id,
"client_id": refresh.client_id,
"client_name": refresh.client_name,
"client_icon": refresh.client_icon,
"type": refresh.token_type,
"created_at": refresh.created_at,
"is_current": refresh.id == current_id,
"last_used_at": refresh.last_used_at,
"last_used_ip": refresh.last_used_ip,
"auth_provider_type": auth_provider_type,
}
)
)
connection.send_result(msg["id"], tokens)
@websocket_api.websocket_command(
{
vol.Required("type"): "auth/delete_refresh_token",
vol.Required("refresh_token_id"): str,
}
)
@websocket_api.ws_require_user()
@websocket_api.async_response
async def websocket_delete_refresh_token(
@@ -585,15 +551,21 @@ async def websocket_delete_refresh_token(
refresh_token = connection.user.refresh_tokens.get(msg["refresh_token_id"])
if refresh_token is None:
return websocket_api.error_message(
msg["id"], "invalid_token_id", "Received invalid token"
)
connection.send_error(msg["id"], "invalid_token_id", "Received invalid token")
return
await hass.auth.async_remove_refresh_token(refresh_token)
connection.send_message(websocket_api.result_message(msg["id"], {}))
connection.send_result(msg["id"], {})
@websocket_api.websocket_command(
{
vol.Required("type"): "auth/sign_path",
vol.Required("path"): str,
vol.Optional("expires", default=30): int,
}
)
@websocket_api.ws_require_user()
@callback
def websocket_sign_path(

View File

@@ -52,7 +52,7 @@ flow for details.
Progress the flow. Most flows will be 1 page, but could optionally add extra
login challenges, like TFA. Once the flow has finished, the returned step will
have type RESULT_TYPE_CREATE_ENTRY and "result" key will contain an authorization code.
have type FlowResultType.CREATE_ENTRY and "result" key will contain an authorization code.
The authorization code associated with an authorized user by default, it will
associate with an credential if "type" set to "link_user" in
"/auth/login_flow"
@@ -123,13 +123,13 @@ class AuthProvidersView(HomeAssistantView):
def _prepare_result_json(result):
"""Convert result to JSON."""
if result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
if result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY:
data = result.copy()
data.pop("result")
data.pop("data")
return data
if result["type"] != data_entry_flow.RESULT_TYPE_FORM:
if result["type"] != data_entry_flow.FlowResultType.FORM:
return result
data = result.copy()
@@ -154,11 +154,11 @@ class LoginFlowBaseView(HomeAssistantView):
async def _async_flow_result_to_response(self, request, client_id, result):
"""Convert the flow result to a response."""
if result["type"] != data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
if result["type"] != data_entry_flow.FlowResultType.CREATE_ENTRY:
# @log_invalid_auth does not work here since it returns HTTP 200.
# We need to manually log failed login attempts.
if (
result["type"] == data_entry_flow.RESULT_TYPE_FORM
result["type"] == data_entry_flow.FlowResultType.FORM
and (errors := result.get("errors"))
and errors.get("base")
in (

View File

@@ -129,11 +129,11 @@ def websocket_depose_mfa(
def _prepare_result_json(result):
"""Convert result to JSON."""
if result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY:
if result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY:
data = result.copy()
return data
if result["type"] != data_entry_flow.RESULT_TYPE_FORM:
if result["type"] != data_entry_flow.FlowResultType.FORM:
return result
data = result.copy()

View File

@@ -1,12 +1,16 @@
"""Config flow for Awair."""
from __future__ import annotations
from collections.abc import Mapping
from typing import Any
from python_awair import Awair
from python_awair.exceptions import AuthError, AwairError
import voluptuous as vol
from homeassistant.config_entries import ConfigFlow
from homeassistant.const import CONF_ACCESS_TOKEN
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN, LOGGER
@@ -17,7 +21,9 @@ class AwairFlowHandler(ConfigFlow, domain=DOMAIN):
VERSION = 1
async def async_step_user(self, user_input: dict | None = None):
async def async_step_user(
self, user_input: dict[str, str] | None = None
) -> FlowResult:
"""Handle a flow initialized by the user."""
errors = {}
@@ -42,8 +48,14 @@ class AwairFlowHandler(ConfigFlow, domain=DOMAIN):
errors=errors,
)
async def async_step_reauth(self, user_input: dict | None = None):
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle re-auth if token invalid."""
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Confirm reauth dialog."""
errors = {}
if user_input is not None:
@@ -62,7 +74,7 @@ class AwairFlowHandler(ConfigFlow, domain=DOMAIN):
errors = {CONF_ACCESS_TOKEN: error}
return self.async_show_form(
step_id="reauth",
step_id="reauth_confirm",
data_schema=vol.Schema({vol.Required(CONF_ACCESS_TOKEN): str}),
errors=errors,
)

View File

@@ -8,7 +8,7 @@
"email": "[%key:common::config_flow::data::email%]"
}
},
"reauth": {
"reauth_confirm": {
"description": "Please re-enter your Awair developer access token.",
"data": {
"access_token": "[%key:common::config_flow::data::access_token%]",

View File

@@ -17,6 +17,13 @@
},
"description": "Torna a introduir el token d'acc\u00e9s de desenvolupador d'Awair."
},
"reauth_confirm": {
"data": {
"access_token": "Token d'acc\u00e9s",
"email": "Correu electr\u00f2nic"
},
"description": "Torna a introduir el 'token' d'acc\u00e9s de desenvolupador d'Awair."
},
"user": {
"data": {
"access_token": "Token d'acc\u00e9s",

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