Compare commits

...

844 Commits

Author SHA1 Message Date
Paulus Schoutsen d9aff9d7b0 Bumped version to 2023.1.0b2 2022-12-29 20:55:27 -05:00
shbatm 46e11c2fa8 ISY994: Bump PyISY to 3.0.10 (#84821) 2022-12-29 20:54:48 -05:00
J. Nick Koston 522477d5a4 Fix thermobeacon WS08 models that identify with manufacturer_id 27 (#84812)
fixes #84706
2022-12-29 20:54:47 -05:00
Joakim Plate cc2b592221 Correct missing alarm reset button on nibe (#84809)
fixes undefined
2022-12-29 20:54:46 -05:00
Aaron Bach bd86111dd8 Fix AirVisual Pro sensors with incorrect units for their device classes (#84800) 2022-12-29 20:54:45 -05:00
Michael f0514008fa Deprecate YAML config in PI-Hole (#84797)
create an issue about deprecated yaml config
2022-12-29 20:54:44 -05:00
Aaron Bach 3c8a66abbe Don't attempt setup on migrated AirVisual Pro in the airvisual domain (#84796)
fixes undefined
2022-12-29 20:54:44 -05:00
Aaron Bach f1d509be03 Remove ozone device class from OpenUV sensor (#84791)
fixes undefined
2022-12-29 20:54:43 -05:00
Robert Svensson fbdc7d44bc Only subscribe to specific UniFi object ID (#84787) 2022-12-29 20:54:42 -05:00
Hans Oischinger cae386465e Catch vicare errors when deactivating preset fails (#84778)
vicare: catch errors when deactivating preset fails
2022-12-29 20:54:41 -05:00
Allen Porter 31847e3a69 Check google calendar API scope to determine if write access is enabled (#84749)
* Check google calendar API scope to determine if write access is enabled

* Add API scope for calendar service for creating events
2022-12-29 20:54:40 -05:00
Jc2k 5787e1506c Fix UUID normalisation for vendor extensions in homekit_controller thread transport (#84746) 2022-12-29 20:54:39 -05:00
starkillerOG 9a29f64128 Bump pynetgear to 0.10.9 (#84733) 2022-12-29 20:54:38 -05:00
Tomas Kislan 6c0e4a9e8f Fix and upgrade minio integration (#84545)
closes https://github.com/home-assistant/core/issues/79842
2022-12-29 20:54:37 -05:00
Franck Nijhof 9ce64f8990 Bumped version to 2023.1.0b1 2022-12-28 22:18:06 +01:00
Aaron Bach 6ef4086683 Fix incorrect values for AirVisual Pro sensors (#84725) 2022-12-28 22:16:22 +01:00
Aaron Bach b146f52317 Remove incorrect unit for AirVisual AQI sensor (#84723)
fixes undefined
2022-12-28 22:16:19 +01:00
Hans Oischinger 001bd78bcb water_heater: Add unsupported states (#84720) 2022-12-28 22:16:16 +01:00
Allen Porter ba4ec8f8c1 Gracefully handle caldav event with missing summary (#84719)
fixes undefined
2022-12-28 22:16:12 +01:00
Michael 8aa3a6cc15 Remove deprecated tankerkoenig YAML config (#84711)
remove yaml import
2022-12-28 22:16:09 +01:00
Hmmbob ed43e1d3a4 Update apprise to 1.2.1 (#84705) 2022-12-28 22:16:06 +01:00
Marcel van der Veldt b7654c0fce Bump python matter server to 1.0.8 (#84692)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-28 22:16:02 +01:00
Franck Nijhof 99f3cfdf8a Bumped version to 2023.1.0b0 2022-12-28 16:51:38 +01:00
Marc Mueller cb37df6a61 Improve risco generic typing (#84644) 2022-12-28 16:49:54 +01:00
Jc2k 7feb0807e2 Fix handling of CoAP 404 in homekit_controller (#84700) 2022-12-28 16:48:47 +01:00
Álvaro Fernández Rojas 5d4591a3ec airzone: update aioairzone to v0.5.2 (#84690) 2022-12-28 16:37:50 +01:00
Bram Kragten 29797b93f7 Update frontend to 20221228.0 (#84696) 2022-12-28 16:35:50 +01:00
Joakim Plate 850c082649 Switch to pytest-freezer (#84680) 2022-12-28 15:43:03 +01:00
Joakim Plate af875eec50 Add nibe heat pump alarm reset button (#79427)
* Add button platform

* Enable button platform

* Use parameters from library
2022-12-28 15:36:41 +01:00
MattWestb 0854f29b7c Fix zha RMS voltage (#84689)
Fix RMS Voltage.

class ElectricalMeasurementRMSVoltage(ElectricalMeasurement, id_suffix="rms_voltage"): is using CURRENT as unit but shall being VOLTAGE.

Fix: https://github.com/home-assistant/core/issues/84537
2022-12-28 09:27:17 -05:00
Matthias Alphart 0c7eb431e6 KNX ConfigFlow: add selection of secure tunnel endpoint (#84651) 2022-12-28 11:43:03 +01:00
Marc Mueller 8827d9e88f Improve meteo_france generic typing (#84685) 2022-12-28 11:12:20 +01:00
Marc Mueller 059ecd10a2 Improve omnilogic generic typing (#84686) 2022-12-28 11:10:49 +01:00
Jonno12345 5e04a87cc6 Fix Scrape integration for date and timestamp devices (#84480)
* Scrape integration fix for date and timestamp devices

* Changes advised by PR review. Merged test source and used walrus operator
2022-12-28 10:16:14 +01:00
dependabot[bot] 2bcf9717ed Bump actions/cache from 3.2.1 to 3.2.2 (#84683) 2022-12-28 08:17:12 +01:00
Damian Sypniewski 64cf4b2258 Fix SwitchBot Lock test (#84682) 2022-12-27 19:12:52 -10:00
Damian Sypniewski 599569bc53 Add support for SwitchBot Lock (#84673)
* Added support for SwitchBot Lock

* Updated PySwitchbot to 0.32.1

* Updated .coveragerc

* Removed unnecessary condition

* Using library method to verify encryption key

* Added config flow tests

* Remove link from config flow description

* Added one more test for config flow

* Updated CODEOWNERS
2022-12-27 18:16:00 -10:00
Joakim Plate 94a02e7613 Switch to orjson for tests (#84674) 2022-12-28 03:36:58 +01:00
J. Nick Koston 94d1375be3 Avoid creating a task in the bluetooth watchdog when everything is OK (#84669) 2022-12-27 16:00:24 -10:00
J. Nick Koston 4296f227cf Fix thundering heard in setup_again when there are many integrations (#84670) 2022-12-27 15:59:42 -10:00
GitHub Action cc27986cac [ci skip] Translation update 2022-12-28 00:22:40 +00:00
Stéphane Graber 5ebbeff42d Add IPv6 support to snmp sensor (#84607)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-28 01:12:08 +01:00
shbatm e383533ff3 ISY994: Bump pyisy to 3.0.9 (#84654)
fixes undefined
2022-12-27 23:38:34 +01:00
Marc Mueller 694fa3d014 Improve DataUpdateCoordinator typing in integrations (4) (#84658) 2022-12-27 22:50:57 +01:00
Marc Mueller e170681016 Improve DataUpdateCoordinator typing in integrations (3) (#84657) 2022-12-27 22:49:23 +01:00
Marc Mueller 06db5476e4 Improve DataUpdateCoordinator typing in integrations (2) (#84656) 2022-12-27 22:47:04 +01:00
Marc Mueller 1de41ab123 Improve DataUpdateCoordinator typing in integrations (1) (#84655) 2022-12-27 22:44:25 +01:00
Franck Nijhof 5a5f01fcd4 Update wled to 0.15.0 (#84639) 2022-12-27 22:01:47 +01:00
Marc Mueller 4d69cf1cc3 Improve steam_online generic typing (#84646) 2022-12-27 21:53:07 +01:00
Marc Mueller cf598bb5fd Improve surepetcare generic typing (#84647) 2022-12-27 21:50:33 +01:00
Marc Mueller 1624cb1046 Improve synology_dsm generic typing (#84649) 2022-12-27 21:49:47 +01:00
Marc Mueller 572af57ffe Improve totalconnect generic typing (#84650) 2022-12-27 21:47:22 +01:00
Martin Hjelmare d441fb2ec5 Use debouncer in mysensors (#84638)
* Use debouncer in mysensors

* Clean cover tests

* Fix debouncer mocking

* Follow typing
2022-12-27 21:37:10 +01:00
Allen Porter 624c93bb38 Add Local calendar edit support (#84141)
* Add update support for calendars and implement in local calendar

* Fix supported feature for update calendar

* Increase test coverage for websocket error cases

* Improve test coverage for update failure cases

* Improve test coverage by sharing code between update and create

* Update homeassistant/components/calendar/__init__.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-27 12:36:43 -08:00
Marc Mueller b01efc55a2 Improve lyric generic typing (#84637) 2022-12-27 21:24:33 +01:00
Marc Mueller 44e37a8026 Improve laundrify generic typing (#84635) 2022-12-27 21:24:09 +01:00
Marc Mueller 1cad55f721 Improve kostal_plenticore generic typing (#84634) 2022-12-27 21:23:22 +01:00
Marc Mueller b8f83074ce Improve google calendar generic typing (#84633) 2022-12-27 21:21:16 +01:00
Marc Mueller 511f3335a1 Improve rdw generic typing (#84643) 2022-12-27 21:18:15 +01:00
Marc Mueller 54ba09ec1c Improve ovo_energy generic typing (#84641) 2022-12-27 21:17:35 +01:00
Marc Mueller 24a34b1739 Improve rainbird generic typing (#84642) 2022-12-27 21:17:20 +01:00
starkillerOG a06b1eaf69 Add reolink IP NVR/Camera integration (#84081)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-27 10:15:53 -10:00
Brandon Rothweiler f5c56152d5 Add climate platform to Mazda integration (#75037)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-27 10:13:36 -10:00
PierreAronnax 7ef145d4ce Return unavailable if Govee BLE sensor is in error (#84547)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-27 10:11:41 -10:00
Matthias Alphart a752232de8 KNX ConfigFlow: Validate contents of knxkeys file (#84411) 2022-12-27 21:00:19 +01:00
Marc Mueller c99025be26 Improve gogogate2 generic typing (#84632) 2022-12-27 09:44:39 -10:00
Marc Mueller 653805584b Improve lookin generic typing (#84636) 2022-12-27 09:37:47 -10:00
Matthias Alphart acd31d4ae3 Add cooldown and respond_to_read options for KNX expose (#84613)
Add cooldown option for KNX expose
2022-12-27 20:36:02 +01:00
Martin Hjelmare 6c32337c8e Clean mysensors update callbacks (#84629) 2022-12-27 20:29:25 +01:00
Martin Hjelmare eae8154753 Add mysensors cover tests (#84626) 2022-12-27 20:04:22 +01:00
Martin Hjelmare d1489fe76f Add mysensors climate tests (#84619) 2022-12-27 17:40:59 +01:00
Martin Hjelmare 633c82d9fe Clean mysensors test fixture loading (#84618) 2022-12-27 17:17:01 +01:00
Franck Nijhof a83d577b42 Add Plugwise climate preset translations (#84617) 2022-12-27 17:16:45 +01:00
Martin Hjelmare dea513cdbd Add mysensors light tests (#84606) 2022-12-27 15:25:22 +01:00
Matthias Alphart 76f92cc985 Update xknx to 2.2.0 (#84609) 2022-12-27 15:18:14 +01:00
ollo69 5058272818 Use Object selector for AndroidTV detection rules option (#84412) 2022-12-27 15:08:23 +01:00
epenet 4c8e3aa7c4 Remove lumen from Illuminance units (#84386) 2022-12-27 14:25:47 +01:00
Matt Gerega 2215adf5cf Add support for covers in Prometheus metrics (#83763)
fixes undefined
2022-12-27 11:25:33 +01:00
Maximilian 5990bd7ca3 Add recommended actions to NINA (#83775) 2022-12-27 11:24:54 +01:00
Franck Nijhof d4f69a3652 String formatting and max line length - Part 7 (#84532)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-27 11:18:56 +01:00
Yuval Aboulafia 3149c52be1 Fix F602 key repeated (#84531) 2022-12-27 11:07:10 +01:00
Rami Mosleh 03112bbeea Add strict typing to speedtestdotnet (#84597) 2022-12-27 09:19:56 +01:00
Rami Mosleh f1466a3b86 Add strict typing to simplepush (#84598) 2022-12-27 09:19:24 +01:00
GitHub Action 16bff198de [ci skip] Translation update 2022-12-27 00:23:38 +00:00
Martin Hjelmare 941d175087 Add mysensors device tracker tests (#84589) 2022-12-26 12:58:13 -10:00
J. Nick Koston 0cebf1acb1 Bump pySwitchbot to 0.31.0 (#84586) 2022-12-26 21:45:02 +01:00
Martin Hjelmare 08586868f5 Add mysensors switch tests (#84585) 2022-12-26 09:44:10 -10:00
Christopher Bailey 3aa759fc49 Deprecate the UniFi Protect Detected Object sensor (#83480)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-26 09:32:05 -10:00
Christopher Bailey b96330df03 Deprecate set_doorbell_message UniFi Protect service (#83675) 2022-12-26 09:19:34 -10:00
Martin Hjelmare 101118a60e Add mysensors binary sensor tests (#84580) 2022-12-26 20:19:15 +01:00
Christopher Bailey cf92d8c536 Add more logging for UniFi Protect event entities (#84575)
* Add more logging for UniFi Protect event entities

* Condense logging

* Linting
2022-12-26 11:07:40 -08:00
dependabot[bot] a70163042d Bump actions/cache from 3.2.0 to 3.2.1 (#84565)
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-26 12:34:33 +01:00
GitHub Action 1baaf621be [ci skip] Translation update 2022-12-26 00:23:42 +00:00
Daniel Gangl 2b12aac24e Bump zamg from 0.2.1 to 0.2.2 (#84526) 2022-12-25 11:01:50 +01:00
GitHub Action ca457ccf3c [ci skip] Translation update 2022-12-25 00:24:53 +00:00
Franck Nijhof 8819634b61 String formatting and max line length - Part 6 (#84525) 2022-12-24 13:19:51 +01:00
Joakim Plate ac1359b3d8 Update nibe to 1.6.0 (#84449)
* Bump nibe to 1.6.0

* Only fail coordinator if all updates failed
2022-12-24 10:45:45 +01:00
Joakim Plate ffb1722ca8 Update nibe to 1.6.0 (#84449)
* Bump nibe to 1.6.0

* Only fail coordinator if all updates failed
2022-12-24 10:45:26 +01:00
J. Nick Koston 75739d8621 Bump zeroconf to 0.47.1 (#84523) 2022-12-23 18:35:44 -10:00
J. Nick Koston 79cacade5c Bump pySwitchbot to 0.30.1 to fix a deadlock when services are missing (#84521)
changelog: https://github.com/Danielhiversen/pySwitchbot/compare/0.30.0...0.30.1
2022-12-23 23:00:09 -05:00
Allen Porter 1807f44e03 Cleanup rainbird controller setup as feedback from previous PR (#84504)
Additional rainbird cleanup from last PR
2022-12-23 19:54:25 -08:00
Paulus Schoutsen 55b46bfa7a Fix flaky Nina CI test (#84522) 2022-12-23 22:36:11 -05:00
J. Nick Koston 8c70e5aaad Try the next best adapter after a BLE connection fails (#84512)
* Try the next best adapter after a BLE connection fails

* add cover

* tweak

* tweak

* Update homeassistant/components/bluetooth/wrappers.py

* bump

* small tweak

* tweak logic
2022-12-23 20:48:47 -05:00
J. Nick Koston 5872b72f80 Bump yalexs_ble to 1.12.5 (#84517)
* Bump yalexs_ble to 1.12.4

changelog: https://github.com/bdraco/yalexs-ble/compare/v1.12.3...v1.12.4

* one more failure path to fix

* bump in both
2022-12-23 20:44:24 -05:00
Fabian Affolter 5bc9ea0e47 Upgrade hole to 0.8.0 (#84516) 2022-12-23 20:43:41 -05:00
GitHub Action 31a3f1100a [ci skip] Translation update 2022-12-24 00:19:43 +00:00
Michał Huryn c737378ee1 Add blebox discovery/zeroconf (#83837)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-23 12:52:06 -10:00
J. Nick Koston e4c610af62 Fix turning off via select in harmony (#84509)
closes https://github.com/home-assistant/core/issues/84413
2022-12-23 20:12:01 +01:00
J. Nick Koston 070aa714a0 Switch to a different local Bluetooth adapter when one runs out of connection slots (#84331) 2022-12-23 08:58:33 -10:00
Franck Nijhof f39f3b612a String formatting and max line length - Part 5 (#84501)
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
2022-12-23 16:43:17 +01:00
Franck Nijhof 139dd22ce6 Replace attrs with dataclasses in hassfest (#84475) 2022-12-23 15:46:00 +01:00
Franck Nijhof 94755a5773 String formatting and max line length - Part 4 (#84445)
Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>
2022-12-23 13:27:27 +01:00
Maciej Bieniek a8f09b4063 Round illuminance value in ZHA integration (#84500) 2022-12-23 13:24:15 +01:00
dependabot[bot] e2e272aeb6 Bump actions/setup-python from 4.3.1 to 4.4.0 (#84488)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4.3.1...v4.4.0)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-23 08:49:53 +01:00
Paolo Bonzini 6cfd991e91 Make all ARMED states available for manual_mqtt (#84264)
* manual_mqtt: parametrize test_no_pending

* manual_mqtt: parametrize test_no_pending_when_code_not_req

* manual_mqtt: parametrize test_with_pending

* manual_mqtt: parametrize test_with_invalid_code

* manual_mqtt: parametrize test_with_template_code

* manual_mqtt: parametrize test_with_specific_pending

* manual_mqtt: parametrize test_arm_via_command_topic

* manual_mqtt: remove unnecessary async_block_till_done from tests

* manual_mqtt: bring over a new test from manual

* manual_mqtt: add more states

The manual alarm control panel supports ARMED_CUSTOM_BYPASS and ARMED_VACATION.
Bring them over to the MQTT version.
2022-12-23 08:20:24 +01:00
Franck Nijhof 9830cbfd5d Replace attrs with dataclasses in Core exceptions (#84473) 2022-12-22 23:28:48 -05:00
Allen Porter f9779d3e97 Bump gcal-sync to 4.1.0 (#84474)
* Bump gcal-sync to 4.1.0

* Update test with UNTIL improvements
2022-12-22 23:28:12 -05:00
Paulus Schoutsen 96533e4c8f Test conversation WS API (#84466) 2022-12-22 20:19:37 -05:00
GitHub Action 6234190cfe [ci skip] Translation update 2022-12-23 00:23:22 +00:00
Jesse Hills 1b803454ce Install all test requirements in bootstrap (#84469)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-12-22 22:21:49 +01:00
Allen Porter 490d2cfb71 Move Rainbird to async client library (#84417)
* Bump pyrainbird to 0.7.0 and move to async library

* Share updates across sensors

* Fix test version and delete dead code

* Add test coverage for yaml configuration

* Address PR feedback
2022-12-22 13:00:17 -08:00
Jesse Hills 5874b4cdcf ESPHome: do not set expected_name on APIClient (#84471) 2022-12-22 21:58:51 +01:00
Aarni Koskela e575fffd23 Mark RuuviTag devices not connectable (#84345) 2022-12-22 10:47:08 -10:00
Franck Nijhof f17a42dc27 Upgrade ciso8601 to 2.3.0 (#84465) 2022-12-22 15:01:59 -05:00
Allen Porter 24e11c6dcb Bump ical to 4.2.8 (#84455)
fixes undefined
2022-12-22 20:13:40 +01:00
Allen Porter 12e7ea3a39 Strip whitespace from application credentials (#84461)
fixes undefined
2022-12-22 20:12:17 +01:00
Michael 20b5e92656 Use first refresh method from data update coordinator in PI-Hole integration (#84453) 2022-12-22 19:33:23 +01:00
Paulus Schoutsen 2e195d848f Fix Matter param order for subscribing (#84460) 2022-12-22 19:29:53 +01:00
Nathan Spencer a2935654b9 Add firmware update entity for Litter-Robot 4 (#83590)
* Add firmware update entity for Litter-Robot 4

* Report installed version of firmware on robot when updated
2022-12-22 08:22:21 -08:00
Marcel van der Veldt cdeb91ea12 Fix title of Matter integration (#84385)
* Set title for Matter integration to integration name

* Update homeassistant/components/matter/config_flow.py

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

* Update title in tests

* one more title fix

Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-12-22 16:42:37 +01:00
Erik Montnemery 53637d486d Improve error message when a script fails to validate (#84438) 2022-12-22 16:26:57 +01:00
Fuzzy f7a6eb4f69 Add Ecobee Smart Enhanced (#83666) 2022-12-22 13:49:21 +01:00
Nyro 6ee8c8b60e Fix DHWP overkiz_to_operation_mode creation list (#83885)
* Fix dhWP overkiz_to_operation_mode creation list

* Improve operation__list too and rename var

* Improve if condition

* Improve state_modefintion test

Co-authored-by: Thibaut <thibaut@etienne.pw>

Co-authored-by: Thibaut <thibaut@etienne.pw>
2022-12-22 13:39:05 +01:00
Joakim Sørensen d9c19e6e11 Remove front matter parsing in homeassistant_alerts (#83980) 2022-12-22 13:37:53 +01:00
Franck Nijhof baef267f33 String formatting and max line length - Part 3 (#84394) 2022-12-22 13:35:47 +01:00
Robert Svensson 30df9e7706 Split out part of update sensor to a common UniFi entity class (#84262)
* Split out part of update sensor to a common entity class

* Mark methods abstract and/or raise NotImplementedError

* Resolve review comments
2022-12-22 13:17:17 +01:00
J. Nick Koston 3c07f92e72 Bump yalexs-ble to 1.12.3 (#84414) 2022-12-22 13:08:04 +01:00
jjlawren da1f9c2823 Bump plexapi to 4.13.2 (#84416) 2022-12-22 13:06:26 +01:00
Erik Montnemery 2c02abfdd4 Improve script config tests (#84433) 2022-12-22 12:16:23 +01:00
Franck Nijhof cb13418bab String formatting and max line length - Part 2 (#84393) 2022-12-22 11:38:59 +01:00
Franck Nijhof 7e682af472 Merge branch 'master' into dev 2022-12-22 11:35:03 +01:00
Franck Nijhof 4e2cebc6d6 Fix incorrect voltage device class usage in RuuviTag BLE (#84380) 2022-12-22 10:35:50 +01:00
Erik Montnemery 7b26a952bd Fix flaky automation test (#84428) 2022-12-22 10:26:37 +01:00
Jan Bouwhuis 8051e5d4f4 Additional tests to improve coverage of manual and manual_mqtt (#84424) 2022-12-22 10:14:54 +01:00
Franck Nijhof b0cee0bc46 String formatting and max line length - Part 1 (#84390)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-12-22 10:12:50 +01:00
Erik Montnemery 41341c76cf Restore speed when turning a Tasmota fan back on (#84337) 2022-12-22 09:31:14 +01:00
Franck Nijhof 2bd1a68559 Fix incorrect signal strength device class usage in Rituals Genie (#84376)
Fix incorrect signal strength device class usage in Rituals Perfume Genie
2022-12-22 08:54:51 +01:00
Jan Bouwhuis df58b5d9bd Replace async_schedule_update_ha_state for manual and manual_mqtt (#84395)
Replace deprecated async_schedule_update_ha_state
2022-12-22 08:48:33 +01:00
Allen Porter b8ce10f9a1 Add myself as a codeowner for rainbird (#84421) 2022-12-21 21:45:47 -08:00
J. Nick Koston 17d674e1cc Bump zeroconf to 0.47.0 (#84420) 2022-12-21 19:18:58 -10:00
GitHub Action 98f84c7c17 [ci skip] Translation update 2022-12-22 00:23:15 +00:00
Franck Nijhof 1f0ea73463 Add support for entity aliases to Google Assistant (#84405) 2022-12-21 23:52:01 +01:00
Marc Mueller 0d874899ea Update actions/cache to 3.2.0 + new restore action (#84408) 2022-12-21 23:51:48 +01:00
Marcel van der Veldt 10e796e9d5 Fix issues with Color temperature conversions in Hue (#83982) 2022-12-21 23:28:41 +01:00
Jelte Zeilstra 298ea3ff46 Add enum device class and translations to DSMR Active tariff sensor (#84253) 2022-12-21 23:26:56 +01:00
Erik Montnemery a6217ca9b9 Improve error message when an automation fails to validate (#83977) 2022-12-21 23:20:50 +01:00
Marc Mueller ac183b1394 Update isort to 5.11.4 (#84406) 2022-12-21 23:06:18 +01:00
ollo69 93cd73246a Use selector in AndroidTV option flow form (#83761) 2022-12-21 23:05:13 +01:00
Franck Nijhof 2e92fefc0a Fix uom/device class mismatches in tests (#84372) 2022-12-21 22:47:59 +01:00
Franck Nijhof 92beab82e2 Fix incorrect co device class usage in GIOS (#84379) 2022-12-21 22:47:39 +01:00
Franck Nijhof 370e458f2a Fix incorrect illuminance device class usage in Broadlink (#84373)
Fix incorect illuminance device class usage in Broadlink
2022-12-21 22:47:23 +01:00
Franck Nijhof 5c794234e7 Fix incorrect voc device class usage in Deconz sensors (#84371) 2022-12-21 22:44:13 +01:00
Franck Nijhof fa55ba72a4 Fix incorrect power factor device class usage in Fronius (#84374) 2022-12-21 22:43:50 +01:00
Steven Looman 682501eb47 Less tasks when receiving SSDP messages (#84186)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-21 11:35:52 -10:00
Marc Mueller 19acbf0d2a Update types packages (#84381) 2022-12-21 19:15:55 +01:00
Paulus Schoutsen 2205006d31 2022.12.8 (#84369) 2022-12-21 10:37:08 -05:00
Allen Porter d41fe01736 Don't allow google calendar create/delete for yaml/search calendars (#83604)
* Update tests/components/google/test_calendar.py

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

* Don't allow google calendar create/delete for yaml/search calendars

* Revert incorrect docstring update

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-21 07:36:37 -08:00
Allen Porter 4e1b399efd Fix google calendar recurrence rule create and view (#84330)
* Fix bug in google calendar recurrence rule handling

* Convert multiline ternary operator expressions to if block
2022-12-21 07:36:20 -08:00
Martin Hjelmare 06b4c82a37 Add matter node added subscription (#84377) 2022-12-21 16:34:55 +01:00
Franck Nijhof c832982d94 Add sensor unit of measurement validation for device classes (#84366) 2022-12-21 16:14:11 +01:00
Nyro 93fe77de8d Add external handling in Overkiz AtlanticElectricalHeaterWithAdjustableTemperatureSetPoint (#84010)
* Add external handling in AtlanticElectricalHeaterWithAdjustableTemperatureSetpoint

* Improve comparing to external

Co-authored-by: Thibaut <thibaut@etienne.pw>

* Update to pyoverkiz 1.7.3

* Fix coding style lint

* Use OverkizCommand

* Fix small issues

Co-authored-by: Thibaut <thibaut@etienne.pw>
2022-12-21 16:05:27 +01:00
Kevin Stillhammer 588211223b Bump here_transit/here_routing and Implement backoff mechanism for here_travel_time (#83976)
* Add failing test

* Add backoff mechanism for too many requests

* Increase async_fire_time_changed

* Minimize try/except block
2022-12-21 07:00:15 -08:00
Daniel Gangl b85e175812 Zamg api timestamp issue fix (#84143)
Bump zamg from 0.1.1 to 0.2.1
2022-12-21 15:56:47 +01:00
Maximilian d2ee08c6fe Add filter for duplicate NINA warnings (#84069)
Add filter for duplicate warnings
2022-12-21 15:54:49 +01:00
Tarik2142 6a1c59be2c Add ZHA Zeroconf discovery for SLZB-06 (#84111)
* Add Zeroconf discovery for SLZB-06

* update hostname

* Update homeassistant/components/zha/manifest.json

Co-authored-by: puddly <32534428+puddly@users.noreply.github.com>

* Update manifest.json

Co-authored-by: puddly <32534428+puddly@users.noreply.github.com>
2022-12-21 15:51:38 +01:00
Paulus Schoutsen 97efcab310 flake8 2022-12-21 09:37:35 -05:00
epenet d6fc2d9452 Prevent use of deprecated units (#83384)
* Prevent use of deprecated units

* Adjust obsolete util

* More units

* Add FREQUENCY

* Adjust pylint ignore

* Add ELECTRIC (current/potential)

* Add TIME

* Adjust units
2022-12-21 15:24:11 +01:00
Paulus Schoutsen 99b4c9d5f4 Isort 2022-12-21 09:20:56 -05:00
Paulus Schoutsen 115dc4fa4b Bumped version to 2022.12.8 2022-12-21 09:15:53 -05:00
Michael 7de11cfcfa Fix attribute check in prometheus exporter (#84321)
* fix attribute check

* add test
2022-12-21 09:15:34 -05:00
Daniel Hjelseth Høyer 7f0a9a5897 Improve Tibber rt Pulse streaming (#84313)
Improve rt Pulse streaming

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-21 09:14:40 -05:00
Joakim Sørensen e8e4f6a515 Skip client metadata values that are None (#84293) 2022-12-21 09:14:40 -05:00
J. Nick Koston 93cffe8631 Bump bluetooth-data-tools to 0.3.1 (#84258)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v0.3.0...v0.3.1
2022-12-21 09:14:25 -05:00
Allen Porter 39a47c939c Bump ical to 4.2.4 (#84248) 2022-12-21 09:13:57 -05:00
J. Nick Koston 3bdf80574d Fix connectable Bluetooth devices not going available after scanner recovers (#84172) 2022-12-21 09:13:38 -05:00
Nyro 756070cd81 Add missing preset for Overkiz atlantic electrical heater (#84080)
Readd missing preset for atlantic electrical heater
2022-12-21 08:52:33 -05:00
epenet 55133b3a27 Adjust units in lcn (#84365) 2022-12-21 14:38:00 +01:00
Tim Rogers 8619bdeec6 Update Blink 2FA flow description (#84362) 2022-12-21 12:40:28 +01:00
Nyro cf196c09ac Add missing preset for overkiz Atlantic APC heating zone (#84008)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
fixes undefined
2022-12-21 12:04:54 +01:00
Franck Nijhof 73a43bfd1d Update pyotp to 2.8.0 (#84339) 2022-12-21 11:53:02 +01:00
epenet fa33f27153 Adjust units in lcn (#84356) 2022-12-21 11:16:19 +01:00
epenet c7cc4bcbd5 Use unit enums in sensirion_ble (#84353) 2022-12-21 11:15:38 +01:00
epenet d58852be66 Use unit enums in ruuvitag_ble (#84352) 2022-12-21 11:15:06 +01:00
epenet 8ab945a67f Use unit enums in elkm1 (#84351) 2022-12-21 11:14:35 +01:00
epenet ecbcb9496d Use unit enums in mold indicator (#84350) 2022-12-21 11:14:07 +01:00
epenet af7a487706 Use unit enums in nexia (#84349) 2022-12-21 11:13:16 +01:00
J. Nick Koston 316f187bee Bump PySwitchbot to 0.30.0 (#84347) 2022-12-21 11:10:54 +01:00
epenet 2f45e6c2ae Use UnitOfVolumeFlowRate in integrations (#84348) 2022-12-21 11:00:24 +01:00
epenet 9a488cf250 Use unit enums in energy and sensor (#84343) 2022-12-21 10:49:51 +01:00
Erik Montnemery 255f35b979 Add support for translating custom attribute state (#83386)
* Add support for translating custom attribute state

* Address review comment

* Rename attribute to state_attributes, allow naming attributes
2022-12-21 10:43:49 +01:00
epenet fc94569a0d Use unit enums in honeywell (#84344) 2022-12-21 10:11:08 +01:00
epenet d0a389ce36 Use unit enums in airvisual_pro (#84346) 2022-12-21 10:10:45 +01:00
epenet f4fb4bc91c Use unit enums in tasmota (#84342) 2022-12-21 10:02:35 +01:00
epenet 869cdc399f Use unit enums in plaato (#84341) 2022-12-21 09:49:45 +01:00
Allen Porter de8575c890 Bump pyrainbird to 0.7.1 (#84325) 2022-12-21 09:30:49 +01:00
J. Nick Koston e900918e51 Fix reload race in shelly when device is recently offline (#84328) 2022-12-21 09:29:48 +01:00
epenet bbecf6ca37 Introduce unit enums for volume flow rate (#84310) 2022-12-21 09:28:49 +01:00
Tom Puttemans cb3ab9b51e Add quarter-hour peak consumption sensors (#84271)
fixes undefined
2022-12-21 09:27:08 +01:00
Erik Montnemery 1a42bd5c4c Add aliases to area registry items (#84294)
* Add aliases to area registry items

* Update test

* Fix WS API
2022-12-21 08:44:44 +01:00
dependabot[bot] 556c355e9c Bump actions/stale from 6.0.1 to 7.0.0 (#84333)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-21 08:25:53 +01:00
Daniel Hjelseth Høyer 61e13bf84d Improve Tibber rt Pulse streaming (#84313)
Improve rt Pulse streaming

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-21 05:59:52 +01:00
Franck Nijhof a1ed09f2cc Code quality improvements for Mastodon (#84320) 2022-12-21 02:32:29 +01:00
Kevin Stillhammer ba94485ca1 Handle not existing arrival/departure keys for here_travel_time (#83754)
* handle not existing arrival/departure keys

* Use more concise code

* Add test

* Add testcase for empty arrival/departure
2022-12-20 16:47:43 -08:00
Michael 8a3fc2e82b Fix attribute check in prometheus exporter (#84321)
* fix attribute check

* add test
2022-12-20 16:32:00 -08:00
Guido Schmitz 0265aae247 Bump devolo-plc-api to 0.9.0 (#84324) 2022-12-20 16:31:18 -08:00
GitHub Action e0bb26e964 [ci skip] Translation update 2022-12-21 00:21:15 +00:00
Erik Montnemery 057bb6ea0a Add aliases to device registry items (#84246) 2022-12-20 23:43:31 +01:00
epenet 79d3d4ceae Use UnitOfTemperature in integrations (t-z) (#84309) 2022-12-20 18:50:39 +01:00
epenet ba043c9ebb Use UnitOfTemperature in integrations (p-s) (#84308) 2022-12-20 18:47:27 +01:00
epenet d60fe7e7cd Use UnitOfTemperature in integrations (n-o) (#84306) 2022-12-20 18:39:09 +01:00
epenet a6ddac9004 Use UnitOfTemperature in integrations (i-m) (#84307) 2022-12-20 18:30:46 +01:00
epenet 9580c4f1ec Use UnitOfTemperature in integrations (e-h) (#84305) 2022-12-20 18:29:16 +01:00
epenet d89ba40010 Use UnitOfTemperature in integrations (a-d) (#84304) 2022-12-20 17:59:20 +01:00
Ernst Klamer 82efbee443 Bump bthome-ble to 2.4.0 (#84189) 2022-12-20 17:54:17 +01:00
Jonathan de Jong b67009dee3 Allow MQTT device trackers to be able to the reset the location name for auto zone inference (#83952)
* adds auto-zone to mqtt device trackers

* black formatting

* abbr

* change abbreviation

* add test

* fade to black

* Modify custom overrides

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

* add custom + abbr payload and fix test docstrings

* change auto_zone to reset

* change RST to None, address isort

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-12-20 17:38:40 +01:00
Franck Nijhof 4ef7bb9bbe Extract Forecast.Solar DataUpdateCoordinator into module (#83859) 2022-12-20 17:24:27 +01:00
Rami Mosleh 78cc547782 Remove scan_interval and manual options from speedtestdotnet (#84295) 2022-12-20 16:01:28 +01:00
Joakim Sørensen 63807e443a Skip client metadata values that are None (#84293) 2022-12-20 09:32:27 -05:00
Maciej Bieniek 1661daa911 Update gios library to version 2.3.0 (#84292) 2022-12-20 15:27:55 +01:00
Tom Puttemans 5df7cb0fb5 Revert the state class removal in dsmr_reader after bugfix (#84267) 2022-12-20 13:30:28 +01:00
Tom Puttemans bd65258905 Improve the dsmr_reader sensor names (#84269) 2022-12-20 13:28:40 +01:00
epenet 68857dc272 Use UnitOfTime in integrations (a-g) (#84288) 2022-12-20 13:22:20 +01:00
epenet 55a5e17cf2 Use UnitOfTime in integrations (h-s) (#84289) 2022-12-20 13:21:14 +01:00
Martin Hjelmare 6a8d9a91cb Fix matter websocket reconnect (#84192) 2022-12-20 13:06:24 +01:00
epenet fba13dcc90 Use UnitOfTime in integrations (t-z) (#84291) 2022-12-20 12:30:14 +01:00
Erik Montnemery 1f3da9cf1a Add aliases to entity registry items (#84239) 2022-12-20 12:10:46 +01:00
Daniel Gangl 8ca92254b6 Correct zamg config flow comments (#81369)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
fixes undefined
2022-12-20 11:47:32 +01:00
Erik Montnemery fd9124279b Add minor version to area registry store (#84280) 2022-12-20 11:41:35 +01:00
Erik Montnemery f88ed6b69e Use dict.setdefault in registry migration code (#84277) 2022-12-20 11:31:31 +01:00
Michaël Arnauts 7142b4ecac Fixes some grammar mistakes (#84283) 2022-12-20 11:10:31 +01:00
Nyro 2c238baa24 Add missing preset for Overkiz atlantic electrical heater (#84080)
Readd missing preset for atlantic electrical heater
2022-12-20 10:06:24 +01:00
Jelte Zeilstra 3fc667f55d Fix error when describing deCONZ events of removed devices (#84194)
* Fix error when describing deCONZ events of removed devices

* Apply suggestions from code review

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

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2022-12-20 10:06:01 +01:00
Erik Montnemery 3884e16b46 Add tests.common.ANY (#84240) 2022-12-20 08:20:42 +01:00
Aaron Godfrey 3405fa60ec Add more types to the todoist integration (#84210)
* Add more types to the todoist integration.

* Update tests.

* Update homeassistant/components/todoist/calendar.py

Pass f-string directly to strftime.

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

* Add back mistakenly removed local var.

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2022-12-19 20:29:57 -08:00
Laurent Martin c212e317c3 fix provider name: linky is for electricity. (#84273) 2022-12-19 21:12:27 -07:00
J. Nick Koston 074dec36ad Add foundation for passive scanning support to switchbot (#84260) 2022-12-19 16:55:18 -10:00
J. Nick Koston 53363cf7e8 Implement an active update coordinator for polling ble devices that get data from both advertisements and active connections (#84207) 2022-12-19 16:09:29 -10:00
GitHub Action 7f8c4293b4 [ci skip] Translation update 2022-12-20 00:23:39 +00:00
Aaron Bach ace20782f1 Clean up Notion config flow (and tests) (#84007)
* Clean up Notion config flow (and tests)

* Code review
2022-12-19 15:03:58 -07:00
Erik Montnemery 0d8cd2d067 Shuffle some device registry WS code (#84243)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-12-19 21:56:07 +01:00
Robert Svensson af272c6730 Fix Styrbar device trigger mapping in deCONZ (#84257) 2022-12-19 21:48:11 +01:00
J. Nick Koston 88ef8cc51a Bump bluetooth-data-tools to 0.3.1 (#84258)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v0.3.0...v0.3.1
2022-12-19 22:45:39 +02:00
Franck Nijhof 5651f4a3fe Remove Deutsche Bahn integration (#84236) 2022-12-19 21:43:28 +01:00
epenet f988a1164d Use UnitOfPressure in integrations (#84230) 2022-12-19 21:41:46 +01:00
Aaron Bach 0ccac69ce1 Remove airvisual_pro code from airvisual (#84254) 2022-12-19 12:32:33 -07:00
majuss 1a476258c7 Bump lupupy to 0.2.4 (#84252) 2022-12-19 09:24:31 -10:00
Allen Porter df23f03131 Bump ical to 4.2.4 (#84248) 2022-12-19 10:00:38 -08:00
Aaron Bach 09ae02fd56 Migrate AirVisual Pro devices to the airvisual_pro domain (#83882)
* Migration AirVisual Pro devices to the `airvisual_pro` domain

* Fix tests

* Remove airvisual_pro dependency

* Add repairs item

* Only fire repairs issue if automations exist

* Fix tests
2022-12-19 10:48:36 -07:00
J. Nick Koston 7c13e7cdfd Use a single source of data for switchbot (#84215) 2022-12-19 07:47:42 -10:00
Franck Nijhof 6e612a45ff Update watchdog to 2.2.0 (#84245) 2022-12-19 18:09:04 +01:00
epenet 418be1eeb6 Use UnitOfElectricCurrent in integrations (#84231) 2022-12-19 16:59:39 +01:00
Franck Nijhof 026f660889 Update spotipy to 2.22.0 (#84244) 2022-12-19 16:44:13 +01:00
Franck Nijhof 4ad589dcf6 Update black to 22.12.0 (#84242) 2022-12-19 16:43:53 +01:00
Franck Nijhof 952bf5497f Update coverage to 7.0.0 (#84237) 2022-12-19 16:42:34 +01:00
epenet f4c13645d2 Add support for CCF volume unit (#84029) 2022-12-19 14:57:04 +01:00
ollo69 3351846b0e Add integration-type property to Nut manifest (#84020) 2022-12-19 14:46:40 +01:00
Franck Nijhof ee10f9c4ce Update sentry-sdk to 1.12.1 (#84234) 2022-12-19 14:08:03 +01:00
Rami Mosleh 099a653bed Remove name key from transimssion services (#83974) 2022-12-19 13:38:54 +01:00
J. Nick Koston bb3feceb57 Fix connectable Bluetooth devices not going available after scanner recovers (#84172) 2022-12-19 13:37:29 +01:00
epenet 1ab6352a87 Adjust units in lcn (#84051)
* Use unit enumerators in lcn

* Don't mix lcn units with home assistant units
2022-12-19 13:24:25 +01:00
epenet b4274e4a26 Add POWER device class to goodwe number (#84232) 2022-12-19 13:17:57 +01:00
epenet 429dbd4215 Use UnitOfVolume in dsmr_reader (#84226) 2022-12-19 13:14:01 +01:00
epenet cce438951d Use new unit enumerators in tuya (#84229) 2022-12-19 13:11:48 +01:00
Martin Hjelmare 4461e0f262 Clean mysensors test type errors (#84178) 2022-12-19 12:45:17 +01:00
Aaron Godfrey fe2e357ae9 Upgrade attrs to 22.1.0 (#84205) 2022-12-19 12:40:30 +01:00
tronikos e618a8cc0c Bump gassist-text to 0.0.5 (#84161) 2022-12-19 12:24:02 +01:00
Michaël Arnauts 627a208d9f Use a global const for CONF_UUID (#84093) 2022-12-19 12:16:30 +01:00
epenet 2f19b56d5e Use UnitOfVolume in bmw_connected_drive (#84228) 2022-12-19 12:12:48 +01:00
epenet 0f40a73bb4 Use new unit enums in fronius (#84224) 2022-12-19 11:58:24 +01:00
J. Nick Koston f1fc54d29d Bump zeroconf to 0.44.0 (#84166) 2022-12-19 11:56:11 +01:00
epenet a29aaebd4c Use ENERGY device class in oru (#84225)
* Use ENERGY device class in oru

* Apply suggestions from code review

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

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-12-19 11:41:07 +01:00
epenet 1f60296415 Use ENERGY device class in landisgyr heat meter (#84223) 2022-12-19 11:26:48 +01:00
Paolo Bonzini 52594717ca Fix manual.alarm_control_panel RestoreEntity bugs (#82990)
* manual: add previous state for TRIGGERED as well

This will be useful to properly restore timers on restart.

* manual: correctly restore timers on startup
2022-12-19 11:19:24 +01:00
Maciej Bieniek 20f0abacc0 Bump nettigo air monitor library to version 1.6.0 (#84129) 2022-12-19 10:15:31 +00:00
epenet 0dd20fb309 Use UnitOfEnergy in integrations (a-n) (#84220) 2022-12-19 11:06:00 +01:00
epenet ebdf9a8658 Use UnitOfEnergy in integrations (o-z) (#84221) 2022-12-19 10:58:37 +01:00
epenet 3168b30535 Use new unit enumerators in tibber (#84222) 2022-12-19 10:54:18 +01:00
Avi Miller 292294fb96 Bump aiolifx-themes to 0.4.0 (#84216) 2022-12-19 09:11:14 +01:00
J. Nick Koston 884fbdd5ce Bump PySwitchbot to 0.29.1 (#84119)
fixes https://github.com/home-assistant/core/issues/82795
closes https://github.com/home-assistant/core/issues/78562
2022-12-18 14:54:29 -10:00
GitHub Action b96eab3e5e [ci skip] Translation update 2022-12-19 00:21:16 +00:00
epenet 14a47f5dff Use DATA_SIZE device class in folder integration (#83897) 2022-12-18 22:16:21 +01:00
hahn-th 5e5e89ea18 Add device HmIP-DRDI3 (#83337) 2022-12-18 12:44:49 -07:00
Aaron Bach d423cbf8eb Add ability to add/remove PurpleAir sensors in an existing config entry (#83440) 2022-12-18 11:30:05 -07:00
Aaron Bach 168b3b50cd Save entry earlier in PurpleAir re-auth flow (#84203) 2022-12-18 11:15:03 -07:00
Aaron Bach 4c73826baf Add re-auth flow to AirVisual Pro (#84012)
* Add re-auth flow to AirVisual Pro

* Code review
2022-12-18 11:00:08 -07:00
Ernst Klamer 47522546e6 Sensor pro fix for negative temperatures (#84181)
fixes undefined
2022-12-18 07:35:04 -10:00
Alberto Geniola ecdbddc1fa Elmax/alarm_control_panel (#75365) 2022-12-18 09:12:43 -07:00
Jelte Zeilstra f99d26231f Add state_class to Tradfri battery and air quality sensors (#84185) 2022-12-18 16:52:08 +01:00
Rami Mosleh 10a6c56fec Move speedtestdotnet coordinator to separate file (#83979) 2022-12-18 10:57:17 +01:00
Kevin Stillhammer 487d84c8f9 Enable strict typing for here_travel_time (#83814)
* Enable strict typing for here_travel_time

* Use dict[str, Any] instead of Any

* Use kwargs ctor

* Specify dicts
2022-12-18 09:34:47 +01:00
J. Nick Koston 119664b55e Bump yalexs-ble to 1.12.2 (#84118) 2022-12-17 17:14:39 -10:00
J. Nick Koston e7064bda25 Add dhcp discovery for newer august/yale bridges (#84125) 2022-12-17 16:42:47 -10:00
Paulus Schoutsen bf66f39ca4 2022.12.7 (#84162) 2022-12-17 21:01:22 -05:00
Paulus Schoutsen d95a843d93 Bumped version to 2022.12.7 2022-12-17 20:05:11 -05:00
Matthias Alphart 76d33fdaf1 Fix KNX ConfigFlow for manual secure tunnel keys (#84155) 2022-12-17 20:04:53 -05:00
Michael 0b4d1fe641 Fix check if Surveillance Station is available in Synology DSM (#84140)
start coordinator only when surveillance_station is avialble during api setup
2022-12-17 20:04:52 -05:00
Allen Porter 1e70901b9e Bump ical to 4.2.3 (#84104) 2022-12-17 20:04:51 -05:00
Joakim Plate dac8560e14 Make sure philips_hs remote entity calls parent added (#84082)
Make sure remote calls parent added
2022-12-17 20:04:51 -05:00
J. Nick Koston 5e949b062a Bump bluetooth-auto-recovery to 1.0.3 (#84075)
* Bump bluetooth-auto-recovery to 1.0.1

changelog: https://github.com/Bluetooth-Devices/bluetooth-auto-recovery/compare/v1.0.0...v1.0.1

Handles the case were the adapter gets a new hci number
after a usb reset.

* one more

* bump again
2022-12-17 20:04:31 -05:00
Daniel Hjelseth Høyer 2d2318438c Update Tibber lib, improve realtime streaming (#84065)
Update tibber lib, improve realtime streaming

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-17 20:03:55 -05:00
J. Nick Koston 6ce2bf6be5 Bump govee-ble to 0.19.3 (#84062)
* Bump govee-ble to 0.19.2

fixes #82994 fixes #81335

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.19.1...v0.19.2

* .3
2022-12-17 20:03:54 -05:00
Bram Kragten b32ba33250 Update frontend to 20221213.1 (#84058) 2022-12-17 20:03:16 -05:00
muppet3000 c97b48cf3b Re-add missing Growatt TLX values (#84040)
* Growatt - Re-adding missing TLX values (#81470)

* Growatt - Added missing files to .coveragerc

* Growatt - Correcting TLX Voltage types

* Growatt - Addressing review comments
2022-12-17 20:02:08 -05:00
J. Nick Koston 2b3123b925 Bump pySwitchbot to 0.23.2 (#84002) 2022-12-17 19:52:00 -05:00
Michael 5f160be8f6 Fix check if Surveillance Station is available in Synology DSM (#84140)
start coordinator only when surveillance_station is avialble during api setup
2022-12-17 19:43:18 -05:00
Allen Porter a3ab6a99e3 Bump ical to 4.2.3 (#84104) 2022-12-17 19:42:55 -05:00
GitHub Action 571a63f86e [ci skip] Translation update 2022-12-18 00:22:48 +00:00
Matthias Alphart 6e5d4b592d Fix KNX ConfigFlow for manual secure tunnel keys (#84155) 2022-12-18 00:06:14 +01:00
Martin Hjelmare f29024795b Clean up matter adapter (#84144) 2022-12-17 23:44:19 +01:00
tronikos d6158c0fcc Google Assistant SDK: Support non en-US language code (#84028)
* Support non en-US language code

* Get default language_code based on HA config

* Revert bumping gassist-text
Will be done in a separate PR
2022-12-17 14:40:24 -08:00
Marc Mueller ed8aa51c76 Update isort to 5.11.3 (#84147) 2022-12-17 22:10:38 +01:00
Marc Mueller 813226e331 Update pyupgrade to 3.3.1 (#84148) 2022-12-17 22:10:13 +01:00
Paolo Bonzini 02fa5656bb Make manual and manual_mqtt fully asynchronous (#83436)
* manual: make it completely async

Restoring the timers on startup cannot use track_point_in_time,
because the restoring code runs from the async_added_to_hass
method.  Rewrite everything to run in the event loop instead
of using threaded wrappers, this way the code can be reused in
async_added_to_hass.

* manual_mqtt: replace async function with @callback

* manual_mqtt: make it completely async

Restoring the timers on startup cannot use track_point_in_time,
because the restoring code runs from the async_added_to_hass
method.  Rewrite everything to run in the event loop instead
of using threaded wrappers, this way the code can be reused in
async_added_to_hass when state restore is added.

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-12-17 19:31:17 +01:00
Nyro 5c272583e7 Fix current_operation when there is no operation_mode in Overkiz DHWP (#84077)
Fix current_operation when there is no operation_mode
2022-12-17 11:12:15 -07:00
Maciej Bieniek d9903c4cf9 Bump brother and pysnmplib (#84107)
* Bump brother version

* Bump pysnmplib version

* Update sensor platform

* Update switch platform

* Update tests

* Bump brother

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-17 12:34:43 +01:00
epenet 768d147cb2 Add device classes to pool integrations (#84050)
* Add device classes to pool integrations

* Update omnilogic

* Don't use VOLTAGE device class
2022-12-17 10:06:39 +01:00
epenet 2d9095263e Add device classes in starline (#84049) 2022-12-17 09:52:59 +01:00
J. Nick Koston 9f10bd46ac Rename Bluetooth active_update_coordinator to active_update_processor (#84115) 2022-12-16 22:25:43 -10:00
Marc Mueller 089906790e Fix prettier [homewizard] (#84122) 2022-12-16 23:40:18 -05:00
GitHub Action 6b858ce8af [ci skip] Translation update 2022-12-17 00:21:18 +00:00
Daniel Hjelseth Høyer 8e3953a9d5 Update Tibber lib, improve realtime streaming (#84065)
Update tibber lib, improve realtime streaming

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-16 12:11:54 -07:00
epenet 1af72e3671 Add device class to withings (#84103) 2022-12-16 20:04:07 +01:00
Duco Sebel b41d0be952 Improve HomeWizard request issue reporting (#82366)
* Trigger reauth flow when HomeWizard API was disabled

* Add tests for reauth flow

* Fix typo in test

* Add parallel updates constant

* Improve error message when device in unreachable during config

* Set quality scale

* Remove quality scale

* Throw error instead of abort when setup fails

* Adjust test for new setup behaviour

* Trigger reauth flow when API is disabled and continue retrying

* Reload entry and raise AuthFailed during init

* Abort running config flow

* Listen for coordinator updates to trigger reload

* Use build-in backoff system

* Fix failing test

* Test reauth flow is active after disable-api init

* Test reauth flow removal
2022-12-16 10:53:54 -05:00
epenet f5a8ce4aca Split platform attributes in withings (#84099) 2022-12-16 15:35:03 +01:00
muppet3000 186e3a6d98 Re-add missing Growatt TLX values (#84040)
* Growatt - Re-adding missing TLX values (#81470)

* Growatt - Added missing files to .coveragerc

* Growatt - Correcting TLX Voltage types

* Growatt - Addressing review comments
2022-12-16 15:31:49 +01:00
J. Nick Koston e479fbed0c Bump govee-ble to 0.19.3 (#84062)
* Bump govee-ble to 0.19.2

fixes #82994 fixes #81335

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.19.1...v0.19.2

* .3
2022-12-16 09:25:49 -05:00
J. Nick Koston c70faeae96 Bump bluetooth-auto-recovery to 1.0.3 (#84075)
* Bump bluetooth-auto-recovery to 1.0.1

changelog: https://github.com/Bluetooth-Devices/bluetooth-auto-recovery/compare/v1.0.0...v1.0.1

Handles the case were the adapter gets a new hci number
after a usb reset.

* one more

* bump again
2022-12-16 09:25:23 -05:00
Joakim Plate 09a83b90ea Make sure philips_hs remote entity calls parent added (#84082)
Make sure remote calls parent added
2022-12-16 09:25:05 -05:00
Franck Nijhof 80b3572627 Rename image integration to image_upload (#84063)
* Rename image integration to image_upload

* fix test
2022-12-16 08:16:38 -05:00
epenet c51c8f7e8f Refactor withings constant (#84095)
Split withings constant
2022-12-16 12:30:56 +01:00
epenet 14ee3f1ddc Move unused function in withings (#84089)
* Remove unused function in withings

* Move to tests

* Remove reference to attribute.platform

* Move WITHINGS_MEASUREMENTS_MAP to tests

* measute_type > measure_type

* One more
2022-12-16 10:50:20 +01:00
GitHub Action 7f3f271a59 [ci skip] Translation update 2022-12-16 00:23:03 +00:00
epenet 93dd971b39 Add device classes in tesla wall connector (#84048)
Addd device classes in tesla wall connector
2022-12-15 20:00:38 +01:00
DataBitz 650d4d7faa Fix grammatical error in HomeKit strings (#84043)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-15 07:51:24 -10:00
J. Nick Koston e94da1ad0f Update ESPHome bluetooth repair issue for unique id change and 2022.12.0 (#84026)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-12-15 06:59:53 -10:00
epenet dcea8a6ced Add device classes to bloomsky (#84054) 2022-12-15 11:36:10 -05:00
Bram Kragten b0b3b36392 Update frontend to 20221213.1 (#84058) 2022-12-15 11:35:02 -05:00
ollo69 30ac390471 Use Unit enums in MELCloud sensors (#84036) 2022-12-15 14:25:51 +01:00
epenet c4a01cf8d2 Fix incorrect device class in nibe heatpump (#84047) 2022-12-15 14:23:06 +01:00
epenet 0184aadb09 Use UnitOfElectricPotential in integrations (#84044) 2022-12-15 13:59:21 +01:00
epenet d72c28a135 Use UnitOfLength in integrations (#84034) 2022-12-15 12:42:53 +01:00
Erik Montnemery bf4c399b19 Improve data entry flow typing (#84030) 2022-12-15 12:41:20 +01:00
Erik Montnemery 033a16b67e Improve data entry flow typing (#83901) 2022-12-15 08:45:54 +01:00
GitHub Action cfa08c5229 [ci skip] Translation update 2022-12-15 00:24:38 +00:00
Aaron Bach d375361072 Bump pyairvisual to 2022.12.1 (#84013)
Bump pyairvisual to 2022.12.1
2022-12-14 16:00:44 -07:00
Ville Skyttä f02b6f1119 Huawei LTE SSDP improvements (#81643)
* Recognize more SSDP friendly names as "ours"

* Trigger on SoyeaLink devices

* Pass discovered URL through context, it does not persist via user_input

* Use manufacturer from SSDP

* Actually use serial number if available, update URL for configured

* Remove heuristic friendly name filtering against non-LTE devices
2022-12-14 23:48:25 +01:00
ollo69 9a25e75947 Add integration-type property to androidTV manifest (#84018) 2022-12-14 23:41:46 +01:00
J. Nick Koston 6b751de7ad Bump pySwitchbot to 0.23.2 (#84002) 2022-12-14 23:38:26 +01:00
J. Nick Koston bf18ff9fb9 Bump yalexs_ble to 0.12.0 (#84004) 2022-12-14 12:38:17 -10:00
Philip Allgaier 3d7a3afca7 Add strings to alert integration (#83926) 2022-12-14 21:25:18 +01:00
Robert Svensson 360f36eb71 Unifi use entity description with sensors (#81930)
* Move bandwidth sensors

* Add uptime sensor

* Use bound

* Fix review comments from other PR
2022-12-14 20:54:33 +01:00
Aaron Bach 9f1c5d70bc Add re-auth flow to PurpleAir (#83445)
* Add re-auth flow to PurpleAir

* Code review

* Code review

* Code review
2022-12-14 12:29:07 -07:00
Paulus Schoutsen cc40c6d16a 2022.12.6 (#83998) 2022-12-14 13:50:07 -05:00
Paulus Schoutsen 283349f17e Bumped version to 2022.12.6 2022-12-14 12:48:04 -05:00
Erik Montnemery 59b6d56207 Ignore certain device trigger validation errors (#83972) 2022-12-14 12:47:03 -05:00
J. Nick Koston 353fb3be7d Bump aioesphomeapi to 13.0.2 to fix reconnects after bad protobuf message (#83951) 2022-12-14 12:47:02 -05:00
J. Nick Koston bedb587290 Bump aioshelly to 5.1.2 to fix state updates not firing after reconnect (#83950)
Bump aioshelly to 5.1.2

changelog: https://github.com/home-assistant-libs/aioshelly/compare/5.1.1...5.1.2
2022-12-14 12:47:01 -05:00
majuss 4ef2e91fd5 Bump lupupy dependency to v0.2.3 (#83765)
fixes undefined
2022-12-14 12:47:01 -05:00
Sergio Oller a0518295d5 Do not add a Content-Type header to ingress (#83425) 2022-12-14 12:47:00 -05:00
Erik Montnemery 774ebc760c Ignore certain device trigger validation errors (#83972) 2022-12-14 16:41:11 +01:00
epenet ae9506d0bb Use UnitOfMass in integrations (#83930) 2022-12-14 16:37:11 +01:00
Rami Mosleh c0a7934828 Move transmission to an updated library (#83932)
fixes undefined
2022-12-14 16:36:37 +01:00
ollo69 227330563a Use UnitOfTemperature enumerator in AsusWrt (#83958) 2022-12-14 16:26:19 +01:00
ollo69 4d885b71ff Add integration_type property to AsusWrt manifest (#83960) 2022-12-14 16:14:31 +01:00
majuss e16b874469 Bump lupupy dependency to v0.2.3 (#83765)
fixes undefined
2022-12-14 14:56:55 +01:00
Aaron Bach 9aaeefeb8e Ensure AirVisual Pro uses long-running Samba connection (#83869) 2022-12-13 23:31:13 -07:00
Øyvind Matheson Wergeland c7d1402320 Fix nobo_hub HVAC mode (#83947) 2022-12-13 23:21:10 -07:00
Michael Hansen 98eabd2f68 Update intent response (#83962)
* Add language to conversation and intent response

* Move language to intent response instead of speech

* Extend intent response for voice MVP

* Add tests for error conditions in conversation/process

* Move intent response type data into "data" field

* Move intent response error message back to speech

* Remove "success" from intent response

* Add id to target in intent response

* target defaults to None

* Update homeassistant/helpers/intent.py

* Fix test

* Return conversation_id and multiple targets

* Clean up git mess

* Fix linting errors

* Fix more async_handle signatures

* Separate conversation_id and IntentResponse

* Add unknown error code

* Add ConversationResult

* Don't set domain on single entity

* Language is required for intent response

* Add partial_action_done

* Default language in almond agent

* Remove partial_action_done

* Fix linting

* Rename success/fail targets

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-12-13 23:32:30 -05:00
J. Nick Koston da62528526 Bump aioshelly to 5.2.0 (#83961)
changelog: https://github.com/home-assistant-libs/aioshelly/compare/5.1.2...5.2.0
2022-12-13 21:21:31 -05:00
J. Nick Koston b7c7e7f57b Try to reconnect disconnected shelly devices as soon as they discovered by zeroconf (#83872) 2022-12-13 14:22:34 -10:00
J. Nick Koston 45a9c1ca8c Bump aioesphomeapi to 13.0.2 to fix reconnects after bad protobuf message (#83951) 2022-12-13 12:57:54 -10:00
J. Nick Koston 5a970e0a2b Adjust additional esphome bluetooth debug messages for unique id change (#83955) 2022-12-13 12:57:29 -10:00
Michael Hansen 961c8cc167 Update intent response (#83858)
* Add language to conversation and intent response

* Move language to intent response instead of speech

* Extend intent response for voice MVP

* Add tests for error conditions in conversation/process

* Move intent response type data into "data" field

* Move intent response error message back to speech

* Remove "success" from intent response

* Add id to target in intent response

* target defaults to None

* Update homeassistant/helpers/intent.py

* Fix test

* Return conversation_id and multiple targets

* Clean up git mess

* Fix linting errors

* Fix more async_handle signatures

* Separate conversation_id and IntentResponse

* Add unknown error code

* Add ConversationResult

* Don't set domain on single entity

* Language is required for intent response

* Add partial_action_done

* Default language in almond agent

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-12-13 16:46:40 -06:00
J. Nick Koston 0e2ebfe5c4 Move bluetooth watchdog into the scanner base class (#83888) 2022-12-13 11:57:40 -10:00
J. Nick Koston b97ec8125f Bump aioshelly to 5.1.2 to fix state updates not firing after reconnect (#83950)
Bump aioshelly to 5.1.2

changelog: https://github.com/home-assistant-libs/aioshelly/compare/5.1.1...5.1.2
2022-12-13 23:27:05 +02:00
epenet 62d22d7a2d Refactor fitbit descriptions to use device classes (#83936) 2022-12-13 21:49:41 +01:00
Paulus Schoutsen 47a7807cbd 2022.12.5 (#83944) 2022-12-13 14:22:09 -05:00
epenet b7b7cdcfcf Refactor Huawei LTE to use Entity Description (#83904)
* Refactor Huawei LTE to use Entity Description

* Apply suggestions from code review

Co-authored-by: Ville Skyttä <ville.skytta@iki.fi>

Co-authored-by: Ville Skyttä <ville.skytta@iki.fi>
2022-12-13 19:48:46 +01:00
Paulus Schoutsen c75bf20a3c Bumped version to 2022.12.5 2022-12-13 13:26:18 -05:00
Bram Kragten edffb794f7 Update frontend to 20221213.0 (#83940) 2022-12-13 13:25:47 -05:00
Erik Montnemery 412e9d34d9 Bump pychromecast to 13.0.4 (#83896) 2022-12-13 13:25:18 -05:00
Artem Draft 700dbcf2a4 Fix saving options with missing ignored sources in BraviaTV (#83891)
fix https://github.com/home-assistant/core/issues/83217
fixes undefined
2022-12-13 13:25:17 -05:00
Koen van Zuijlen fcbb40092a Fix Just Nimbus error codes (#83856) 2022-12-13 13:25:16 -05:00
Bram Kragten 42a9069338 Update frontend to 20221213.0 (#83940) 2022-12-13 13:24:24 -05:00
epenet 4a848e8222 Add stones to mass units (#83933) 2022-12-13 17:35:14 +01:00
Aaron Bach fed308b59d Add diagnostics support to PurpleAir (#82446)
Add diagnostics to PurpleAir
2022-12-13 09:14:19 -07:00
Marc Mueller 0e95875912 Improve ignore_variance typing (#83927) 2022-12-13 15:22:23 +01:00
epenet 9f67eb1aaa Refactor huisbaasje to use entity descriptions (#83825)
* Refactor huisbaasje to use entity descriptions

* Apply suggestions from code review

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-13 14:16:50 +01:00
epenet 85235ea5f6 Use FREQUENCY device class in integrations (#83916)
* Use FREQUENCY device class in integrations

* Adjust tesla

* Undo goodwe

* Adjust cpuspeed tests
2022-12-13 14:14:42 +01:00
epenet fc43fb17a9 Fix incorrect device class in goodwe (#83917)
Fix device class in goodwe
2022-12-13 13:45:51 +01:00
Erik Montnemery 534d343f67 Bump pychromecast to 13.0.4 (#83896) 2022-12-13 11:55:23 +01:00
epenet 946d5535b4 Use UnitOfFrequency in integrations (#83915) 2022-12-13 11:47:06 +01:00
Erik Montnemery 0f5c678708 Add explanatory comment to metoffice (#83914) 2022-12-13 11:03:18 +01:00
Koen van Zuijlen cc5d319369 Fix Just Nimbus error codes (#83856) 2022-12-13 10:59:13 +01:00
epenet b5107a3f1d Use DATA_SIZE device class in lidarr (#83907) 2022-12-13 10:19:22 +01:00
epenet 1ad4cb40df Use DATA_SIZE device class in netgear lte (#83908) 2022-12-13 10:18:35 +01:00
epenet 69bc95a715 Use DATA_SIZE device class in integrations (#83895) 2022-12-13 10:17:56 +01:00
Yuxin Wang 677f0dc335 Remove deprecated apcupsd YAML config (#83801) 2022-12-13 08:52:05 +01:00
Sergio Oller 9733d31cd0 Do not add a Content-Type header to ingress (#83425) 2022-12-13 08:50:20 +01:00
Artem Draft e32074c74e Fix saving options with missing ignored sources in BraviaTV (#83891)
fix https://github.com/home-assistant/core/issues/83217
fixes undefined
2022-12-13 08:45:04 +01:00
dependabot[bot] aa23a125bf Bump actions/checkout from 3.1.0 to 3.2.0 (#83894)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-13 08:36:15 +01:00
Paulus Schoutsen 05c429bcd7 2022.12.4 (#83870) 2022-12-12 22:36:56 -05:00
Aaron Bach e64973c7cc Add PurpleAir integration (#82110) 2022-12-12 20:32:11 -07:00
J. Nick Koston 31d0e5e316 Fix HomeKit media players when entity has duplicate sources (#83890)
fixes #83852 fixes #83698
2022-12-12 21:33:31 -05:00
J. Nick Koston 8fb400e7ca Fix bleak-retry-connector get_device hang with HAOS 9.4 and only proxies (#83879)
The bleak connection setup to dbus hangs forever instead of errors if
there are no local bluetooth adapters and we are using remote proxies.

The library now times out when this happens instead of hanging
forever.

changelog: https://github.com/Bluetooth-Devices/bleak-retry-connector/compare/v2.10.1...v2.10.2
2022-12-12 21:33:04 -05:00
Nyro a3fb8a6514 Bump pyoverkiz to 1.7.2 (#83866)
Bump pyoverkiz
2022-12-12 21:32:21 -05:00
Nyro 4c2975ad99 Fix issue on Overkiz Domestic Hot water heater entities with away mode (#83684)
* Don't call set boostMode Duration with 0 to disable boost mode

* use states.get() instead of states[]

* Revert select states
2022-12-12 21:32:20 -05:00
J. Nick Koston 7c6806e75d Fix bleak-retry-connector get_device hang with HAOS 9.4 and only proxies (#83879)
The bleak connection setup to dbus hangs forever instead of errors if
there are no local bluetooth adapters and we are using remote proxies.

The library now times out when this happens instead of hanging
forever.

changelog: https://github.com/Bluetooth-Devices/bleak-retry-connector/compare/v2.10.1...v2.10.2
2022-12-12 21:29:39 -05:00
J. Nick Koston 692a732555 Fix HomeKit media players when entity has duplicate sources (#83890)
fixes #83852 fixes #83698
2022-12-12 21:29:06 -05:00
GitHub Action b9753a9f92 [ci skip] Translation update 2022-12-13 00:27:47 +00:00
Avi Miller 812db974c7 bump aiolifx_themes to 0.3.0 (#83877) 2022-12-12 13:52:38 -10:00
J. Nick Koston 9b5c5938ce Remove get_device call in switchbot (#83881) 2022-12-12 13:51:10 -10:00
J. Nick Koston 938475d988 Remove get_device call in led-ble (#83880) 2022-12-12 13:50:47 -10:00
Nyro 1ee2959e4e Bump pyoverkiz to 1.7.2 (#83866)
Bump pyoverkiz
2022-12-13 00:17:05 +01:00
Nyro a3e62c9ecf Fix issue on Overkiz Domestic Hot water heater entities with away mode (#83684)
* Don't call set boostMode Duration with 0 to disable boost mode

* use states.get() instead of states[]

* Revert select states
2022-12-13 00:08:10 +01:00
Aaron Bach 3d4ee5906d Add integration for AirVisual Pro (#79770)
* Add integration for AirVisual Pro

* Tests

* A few more redactions

* Loggers

* Consistency

* Remove unnecessary f-string

* Use `entry.as_dict()` in diagnostics

* One call

* Integration types

* Cleanup

* Import cleanup

* Code review

* Code review

* Code review
2022-12-12 14:28:27 -07:00
Joakim Sørensen 38ab48b4fd Use the async_migrate_paypal_agreement function to get the migration URL (#83469)
* Use the async_migrate_paypal_agreement function to get the migration URL

* Update URL

* Handle timeout error
2022-12-12 16:27:11 -05:00
Paulus Schoutsen 463edd984b Bumped version to 2022.12.4 2022-12-12 16:16:41 -05:00
Michael 0a2fa9984d Move template check into fritzbox entry setup (#83863)
* move template check into entry setup

* use else in try-except block
2022-12-12 16:16:35 -05:00
Erik Montnemery 89efc455e3 Bump pychromecast to 13.0.3 (#83861) 2022-12-12 16:16:35 -05:00
David F. Mulcahey 3fe2f4f572 Bump version of ZHA quirks to 0.0.89 (#83848) 2022-12-12 16:16:34 -05:00
Bram Kragten 712cb1157f Update frontend to 20221212.0 (#83842) 2022-12-12 16:16:28 -05:00
J. Nick Koston 4452a84ee0 Bump bluetooth-auto-recovery to 1.0.0 (#83800)
fixes https://github.com/home-assistant/core/issues/83673
2022-12-12 16:15:37 -05:00
Paulus Schoutsen 753a4e9e5e SleepIQ to not retry a re-auth right away 2022-12-12 16:12:35 -05:00
Michael 41041cb673 Move template check into fritzbox entry setup (#83863)
* move template check into entry setup

* use else in try-except block
2022-12-12 16:11:57 -05:00
Erik Montnemery 22e5d86324 Bump pychromecast to 13.0.3 (#83861) 2022-12-12 15:57:12 -05:00
Bram Kragten 5ef972c5d9 Update frontend to 20221212.0 (#83842) 2022-12-12 18:52:47 +01:00
David F. Mulcahey aa27d2ec2a Bump version of ZHA quirks to 0.0.89 (#83848) 2022-12-12 10:33:50 -07:00
epenet a99a92a2e9 Refactor waterfurnace to use entity descriptions (#83824) 2022-12-12 17:14:53 +01:00
Jafar Atili 2d206e7e31 Bump pyswitchbee to 1.7.3 (#83748) 2022-12-12 16:00:30 +01:00
epenet b8a5869f76 Refactor ted5000 to use entity descriptions (#83820)
* Refactor ted5000 to use entity descriptions

* Apply suggestions from code review

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

* Refactor native_value

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-12 15:36:27 +01:00
epenet 583b4aef07 Enable automatic conversion for pressures (#83525)
* Enable automatic conversion between bar and psi

* Fix tests

* Fix mazda tests

* Fix oncue tests

* Adjust US pressures

* Adjust metric pressures

* Adjust tests

* Adjust tests
2022-12-12 12:42:35 +01:00
epenet 52d4a358a0 Use UnitOfPower in integrations [s-z] (#83826) 2022-12-12 12:20:16 +01:00
Álvaro Fernández Rojas eb6310f7bb Update aioqsw to v0.3.1 (#83784) 2022-12-12 11:58:22 +01:00
Hans Oischinger f65e18c019 Bump PyVicare to 2.21.0 (#83770) 2022-12-12 11:57:44 +01:00
Christopher Bailey b23f505130 Add new docs to Diagnostics information (#83767) 2022-12-12 11:57:24 +01:00
J. Nick Koston 876258e68a Bump bluetooth-auto-recovery to 1.0.0 (#83800)
fixes https://github.com/home-assistant/core/issues/83673
2022-12-12 11:49:57 +01:00
epenet 1667b4b19e Use POWER device class in enphase_envoy (#83811) 2022-12-12 11:49:02 +01:00
epenet 4fe025b297 Use UnitOfPower in integrations [a-g] (#83812) 2022-12-12 11:48:09 +01:00
epenet 431df618c3 Use POWER device class in eliqonline (#83810) 2022-12-12 11:46:46 +01:00
epenet 3b117998fb Use POWER device class in dte energy bridge (#83809) 2022-12-12 11:45:48 +01:00
epenet cc7ce8ec45 Use POWER device class in aqualogic (#83808) 2022-12-12 11:45:14 +01:00
epenet 2b647bcd5b Use device classes in apcupsd (#83807) 2022-12-12 11:44:37 +01:00
epenet 87d24d4cbe Use unit enums in saj (#83818) 2022-12-12 11:43:29 +01:00
epenet a48741d891 Use device classes in sense (#83817) 2022-12-12 11:42:57 +01:00
epenet 3edb0969de Use UnitOfPower in integrations [h-r] (#83815) 2022-12-12 11:41:58 +01:00
Brandon Rothweiler f24f0c2954 Fix incorrect usage of 'setup' vs 'set up' (#83774) 2022-12-12 11:40:00 +01:00
Erik Montnemery 22b4c445a0 Drop title from auth flows (#83628) 2022-12-12 10:53:28 +01:00
epenet 254d46b80f Use device classes in solaredge_local (#83821) 2022-12-12 10:45:25 +01:00
epenet fa06398721 Use POWER device class in solarlog (#83822) 2022-12-12 10:45:12 +01:00
epenet a30f14a15e Use device classes in volkszaehler (#83823) 2022-12-12 10:27:44 +01:00
epenet 9cd159ee01 Remove device class on V_FLOW in mysensors (#83806) 2022-12-12 08:35:58 +01:00
J. Nick Koston d91e44485c Do not try to reconnect shelly on disconnected if Home Assistant is stopping (#83805) 2022-12-11 21:33:58 -10:00
J. Nick Koston 80a8d5443d Improve remote bluetooth scanner diagnostics and add missing test cover (#83796) 2022-12-11 21:33:30 -10:00
Christopher Bailey ec47f7b6ff Add text platform for UniFi Protect (#83674) 2022-12-11 21:30:24 -10:00
J. Nick Koston 95641fa780 Revert "Move esphome gatt services cache to be per device" #81265 (#83793) 2022-12-11 17:50:18 -10:00
Paulus Schoutsen 0f68a57913 2022.12.3 (#83797) 2022-12-11 22:32:46 -05:00
Paulus Schoutsen 531873fb4d SleepIQ to not retry a re-auth right away (#83798) 2022-12-11 22:26:52 -05:00
Paulus Schoutsen 39fecb523d SleepIQ to not retry a re-auth right away 2022-12-11 21:43:25 -05:00
Paulus Schoutsen 87432be102 Bumped version to 2022.12.3 2022-12-11 21:19:18 -05:00
Paulus Schoutsen 858cf8ca33 Drop aiohttp to 3.8.1 (#83795) 2022-12-11 21:19:15 -05:00
Paulus Schoutsen 1c0543bcd5 Drop aiohttp to 3.8.1 (#83795) 2022-12-11 21:19:02 -05:00
GitHub Action 6745f0c56a [ci skip] Translation update 2022-12-12 00:24:56 +00:00
Paulus Schoutsen 9b4d86399e 2022.12.2 (#83778) 2022-12-11 14:58:31 -05:00
J. Nick Koston 9008006ac8 Restore remote discovered devices between remote scanner restarts (#83699) 2022-12-11 09:02:55 -10:00
Paulus Schoutsen d61be9a0eb Bumped version to 2022.12.2 2022-12-11 13:55:31 -05:00
G Johansson 3838c2ab62 Fix scan_interval in Scrape (#83758)
Scrape fix scan_interval
2022-12-11 13:55:27 -05:00
Michael c9611303d5 Fix IPv6 sensor is only loaded when Fritz!Box is in router mode (#83757)
do not check ipv6 when device is not a router
2022-12-11 13:55:26 -05:00
Avi Miller 00655ef21c lifx: bump aiolifx_effects dependency to v0.3.1 (#83730)
Fixes #83719

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

Signed-off-by: Avi Miller <me@dje.li>
2022-12-11 13:55:25 -05:00
Kostas Chatzikokolakis c169654bdf Bump androidtv dependency of androitv component (#83707)
Fixes #80555
2022-12-11 13:55:25 -05:00
Michael e1505339a5 Fix loading of Fritz!Smarthome issues on older Fritz!Box (#83688)
* check if templates are available

* add test
2022-12-11 13:55:24 -05:00
J. Nick Koston 3a2fb402a4 Fix delay setting up new Yale Access Bluetooth entries (#83683)
Entries took a while to setup because of the
async_wait_init_flow_finish call in _async_setup_component

The delay was so long that users thought the integration
was broken

We had a wait in place for advertisements to arrive
during discovery in case the lock was not
yet seen.  Since integration discovery is deferred
until after startup this wait it no longer needed
2022-12-11 13:55:23 -05:00
Shay Levy d8982116fb Bump aioshelly to 5.1.1 (#83680) 2022-12-11 13:55:00 -05:00
SukramJ 4c346697f0 Add missing CONF_SPEED to sensor device_trigger SCHEMA (#83679)
* Update device_trigger.py

* add missing CONF_IS_SPEED to device_condition
2022-12-11 13:51:01 -05:00
Christopher Bailey eb03307bce Fix event sensor for UniFi Protect (#83663)
* Fix event sensor for UniFi Protect

* Linting

* Adds no cover

* Clean up check

* Linting
2022-12-11 13:49:11 -05:00
rappenze 77336427a4 Fix fibaro climate unit (#83659) 2022-12-11 13:49:10 -05:00
Erik Montnemery 169b7c91c3 Bump pychromecast to 13.0.2 (#83625)
* Bump pychromecast to 13.0.2

* Pass hass UUID to HomeAssistantController
2022-12-11 13:49:09 -05:00
Maarten Weyns b22bcc568a Bump pyrisco to 0.5.7 (#83548) 2022-12-11 13:49:09 -05:00
Michael Chisholm fbab7413a5 Match config entries for dlna_dmr based on device MAC, in addition to UDN (#74619)
* Factor out _is_dmr_device function

* Use DMR device's MAC to match existing config entries

Some DMR devices change their every time they boot, against the DMR specs.
Try to match such devices to existing config entries by using their MAC
addresses.

* Add DMR device's MAC as a device_registry connection

* Use doc-only IPs (RFC5737) for dlna_dmr tests
2022-12-11 13:40:35 -05:00
Christopher Bailey 1f6e2511f8 Fix event sensor for UniFi Protect (#83663)
* Fix event sensor for UniFi Protect

* Linting

* Adds no cover

* Clean up check

* Linting
2022-12-11 13:32:26 -05:00
Michael 4fbaefe55a Fix IPv6 sensor is only loaded when Fritz!Box is in router mode (#83757)
do not check ipv6 when device is not a router
2022-12-11 13:22:54 -05:00
G Johansson 127eca3c35 Fix scan_interval in Scrape (#83758)
Scrape fix scan_interval
2022-12-11 13:19:04 -05:00
Hans Oischinger 5fa9da25f2 Rename "Power production this week" vicare sensor (#83771)
vicare: Rename "Power production this week" sensor

'Power' should be 'Energy' like for the other timespanns.
This one was forgotten last time this area was cleaned up.
2022-12-11 18:53:05 +01:00
Robert Svensson 188ce9bf49 Align implementation of the UniFi update platform with the UniFi switch platform (#81821)
* Use the same entity class as switches, but separately

Once all platforms are migrated I will consolidate them into one entity class

* Fix review comment

* Fix review comments

* Fix review comments
2022-12-11 16:41:58 +01:00
Maximilian 0aa4d0fb7b Bump pynina to 0.2.0 (#83726)
* Bump pynina to version 0.2.0

* Update tests with new url
2022-12-11 12:43:45 +02:00
J. Nick Koston 7178cacdc2 Adjust esphome bluetooth client logging for unique id change (#83742) 2022-12-10 17:45:59 -10:00
Paulus Schoutsen d3df4dd3c1 ESPHome: Use MAC as unique ID (#83741)
* ESPHome: Use MAC as unique ID

* Normalize incoming zeroconf/dhcp macs

* Update comment

* Test ESPHome without mac in zeroconf

* Use format_mac

* Remove unique ID index from DomainData
2022-12-10 22:26:42 -05:00
J. Nick Koston bd342ddc13 Bump HAP-python to 4.6.0 (#83729) 2022-12-10 17:25:36 -10:00
Avi Miller 5976de6b7a lifx: bump aiolifx_effects dependency to v0.3.1 (#83730)
Fixes #83719

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

Signed-off-by: Avi Miller <me@dje.li>
2022-12-10 20:03:13 -05:00
J. Nick Koston a65ce7e6c6 Correct deprecated volt units on yalexs_ble sensor (#83738) 2022-12-10 20:02:21 -05:00
GitHub Action f19a1147fe [ci skip] Translation update 2022-12-11 00:26:24 +00:00
J. Nick Koston 9094d73df1 Connect esphome ble scanner as soon as possible (#83728)
Other integration depend on it being available so connect
it first
2022-12-10 15:17:05 -05:00
J. Nick Koston 642cefb035 Add MVP humidifier support to switchbot (#83696)
* Add MVP humidifier support to switchbot

changelog: https://github.com/Danielhiversen/pySwitchbot/compare/0.22.0...0.23.0

* Update homeassistant/components/switchbot/config_flow.py

* bump

* coveragerc

* Revert "coveragerc"

This reverts commit eb642f6543.

* fix dirty branch
2022-12-10 13:56:57 -05:00
J. Nick Koston 5c79dae4c0 Add support for battery to Yale Access Bluetooth (#83691)
* Add support for battery level to Yale Access Bluetooth

* fix

* bump

* bump

* bump

* bump

* fix

* bump

* battery level is always an estimate from voltage, but than again it always is for every device

* bump

* review

* bump again to fix slow start

* other one
2022-12-10 13:55:22 -05:00
rappenze 119f2a90b7 Fix fibaro climate unit (#83659) 2022-12-10 20:23:07 +02:00
Kevin Stillhammer c467b890fe Add homeassistant.helpers.location to loggers for travel_time integrations (#83705)
Add homeassistant.helpers.location to loggers
2022-12-10 20:18:20 +02:00
Kostas Chatzikokolakis 3c704ba8da Bump androidtv dependency of androitv component (#83707)
Fixes #80555
2022-12-10 20:14:15 +02:00
Allen Porter 1ac7f5f013 Make google calendar fail louder on invalid google_calendars.yaml (#83668)
* Make google calendar fail louder on invalid google_calendars.yaml

* Update homeassistant/components/google/__init__.py

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

* Update homeassistant/components/google/__init__.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-12-10 09:26:28 -08:00
J. Nick Koston af1c326cff Try to reconnect right away when disconnected from Shelly Gen2 devices (#83701) 2022-12-10 06:15:10 -10:00
epenet 456c5515c8 Use UnitOfVolume in integrations (#83646) 2022-12-10 12:43:13 +01:00
epenet 68efa37bff Fix invalid unit in econet (#83656) 2022-12-10 12:39:53 +01:00
epenet f53145c540 Use GAS device class in smartthings (#83658) 2022-12-10 12:37:56 +01:00
Joakim Plate c196fefe31 Reduce log level for linger task/timer (#83703)
We don't need to warn that loudly for these issues.
2022-12-10 12:12:56 +01:00
Erik Montnemery d2fc3a22e2 Drop title from repairs flows (#83627) 2022-12-10 11:43:22 +01:00
epenet 535aba10ee Use DataRate unit and device class in integrations (#83610) 2022-12-10 11:41:44 +01:00
epenet 3970da0ad3 Adjust device class in xiaomi_miio (#83647) 2022-12-10 11:10:13 +01:00
epenet c947152c48 Use unit enums in vicare (#83648) 2022-12-10 11:06:46 +01:00
Sommerzeit b17391014a Add hue wall switch to deconz integration (#83700) 2022-12-10 09:51:41 +01:00
tronikos 2cfdae0c45 Google Sheets: small cleanup (#83685)
* Remove duplicate object key in strings.json

* Remove async_entry_has_scopes check

This is not needed. This was copied from google calendar integration
where it was needed to reauth when the scope changed.

* Remove unused constant in application_credentials

* Move constant to the file used

* fix warning use-implicit-booleaness-not-len

* Remove not accessed parameters

* Revert "Remove async_entry_has_scopes check"

This reverts commit 63e24f84cc.
2022-12-09 20:57:40 -08:00
SukramJ e53758c1bb Add missing CONF_SPEED to sensor device_trigger SCHEMA (#83679)
* Update device_trigger.py

* add missing CONF_IS_SPEED to device_condition
2022-12-09 21:18:47 -05:00
Kevin Stillhammer ab3f0fc63b Handle special transit errors for here_travel_time (#83649)
Handle special transit errors
2022-12-09 21:09:55 -05:00
Shay Levy 2a6162a34d Bump aioshelly to 5.1.1 (#83680) 2022-12-09 20:55:40 -05:00
J. Nick Koston df0f694b01 Bump dbus-fast to 1.82.0 (#83682)
performance improvements for HAOS 9.4 passive monitoring

changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v1.80.0...v1.82.0
2022-12-09 20:55:20 -05:00
J. Nick Koston fec887420d Fix delay setting up new Yale Access Bluetooth entries (#83683)
Entries took a while to setup because of the
async_wait_init_flow_finish call in _async_setup_component

The delay was so long that users thought the integration
was broken

We had a wait in place for advertisements to arrive
during discovery in case the lock was not
yet seen.  Since integration discovery is deferred
until after startup this wait it no longer needed
2022-12-09 20:55:06 -05:00
Michael ea95f74d6d Fix loading of Fritz!Smarthome issues on older Fritz!Box (#83688)
* check if templates are available

* add test
2022-12-09 20:54:22 -05:00
aschmitz ca5dc01207 Hide Aranet update interval by default (#83694) 2022-12-09 20:33:23 -05:00
GitHub Action 1e0345a377 [ci skip] Translation update 2022-12-10 00:21:35 +00:00
epenet 5c700916d3 Use unit enums in overkiz (#83660) 2022-12-10 00:08:03 +01:00
Maarten Weyns d5c322732f Bump pyrisco to 0.5.7 (#83548) 2022-12-09 12:16:15 -10:00
Shay Levy 376db101d6 Bump aioshelly to 5.1.1 (#83680) 2022-12-09 22:21:38 +02:00
Erik Montnemery cd487ccaed Bump pychromecast to 13.0.2 (#83625)
* Bump pychromecast to 13.0.2

* Pass hass UUID to HomeAssistantController
2022-12-09 14:33:00 -05:00
J. Nick Koston 09f9bb05dc Add bluetooth diagnostics to shelly (#83438)
* Add bluetooth diagnostics to shelly

* Add tests

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-12-09 10:55:10 -05:00
epenet b63359b186 Use UnitOfVolume in energy integration (#83641) 2022-12-09 10:39:40 -05:00
Jan Bouwhuis e15388a2a0 Improve MQTT type hints for dict get assignments (#83634)
* Improve type hints for dict get assignments

* Move _expire_after as class attr

* Remove extra check
2022-12-09 16:22:36 +01:00
epenet a1758a71d2 Use WATER device class in streamlabswater (#83654) 2022-12-09 10:20:35 -05:00
epenet 55b996f5db Use device classes in mysensors (#83653) 2022-12-09 10:20:06 -05:00
epenet b44e8673a8 Use WATER device class in rainmachine (#83651) 2022-12-09 10:19:18 -05:00
tronikos 5d31673465 Google Assistant SDK integration (#82328)
* Copy google_sheets to google_assistant_sdk

This is to improve diff of the next commit with the actual implementation.

Commands used:
cp -r homeassistant/components/google_sheets/ homeassistant/components/google_assistant_sdk/
cp -r tests/components/google_sheets/ tests/components/google_assistant_sdk/

find homeassistant/components/google_assistant_sdk/ tests/components/google_assistant_sdk/ -type f | xargs sed -i \
-e 's@google_sheets@google_assistant_sdk@g' \
-e 's@Google Sheets@Google Assistant SDK@g' \
-e 's@tkdrob@tronikos@g'

* Google Assistant SDK integration
Allows sending commands and broadcast messages to Google Assistant.

* Remove unnecessary async_entry_has_scopes check

* Bump gassist-text to fix protobuf dependency
2022-12-09 07:14:43 -08:00
epenet d63a1ab511 Use UnitOfPower.BTU_PER_HOUR in zha (#83657) 2022-12-09 15:57:57 +01:00
epenet 9ba0809852 Use WATER device class in suez water (#83650)
Adjust device class for suez water
2022-12-09 09:53:35 -05:00
Marc Mueller 9a97784168 Add types package for paho-mqtt (#83599) 2022-12-09 15:27:46 +01:00
dependabot[bot] a77d9af989 Bump actions/setup-python from 4.3.0 to 4.3.1 (#83607)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 13:56:34 +01:00
Jan Bouwhuis b4984ea255 Use native _attr_ properties for MqttEntity (#83639) 2022-12-09 13:37:26 +01:00
epenet 6b43c457ff Update device classes in ebusd (#83530)
* Move sensor definitions to sensor platform

* Use new unit enums

* Update device classes

* Adjust for config validation

* Minimize changes
2022-12-09 13:33:40 +01:00
epenet e3aca53899 Use new unit enums in zha (#83633)
* Use new unit enums in zha

* Add kPa

* Add kPa
2022-12-09 13:33:08 +01:00
epenet 01ee066163 Use DataRate unit and device class in freebox (#83612)
* Use DataRate unit and device class in freebox

* UnitOfTemperature
2022-12-09 13:32:46 +01:00
epenet 549d1151b7 Use DataRate unit and device class in pyload (#83611) 2022-12-09 13:32:31 +01:00
epenet 4192e2377c Use Frequency and Current device classes in nut (#83623)
* Use Frequency and Current device classes in nut

* One more
2022-12-09 13:31:42 +01:00
epenet 7c3ca38eb7 Use UnitOfElectricCurrent in integrations (#83622) 2022-12-09 10:51:26 +01:00
Erik Montnemery cc132bfad6 Make it optional to provide a title when finishing a FlowHandler (#83534)
* Make it optional to provide a title when finishing a FlowHandler

* Make ConfigEntry.title a str

* Revert changes in ConfigFlow

* Adjust tests
2022-12-09 10:24:08 +01:00
Franck Nijhof 4e73063ed3 2022.12.1 (#83592) 2022-12-09 08:29:14 +01:00
Erik Montnemery 8f761f44bd Add support for translating state attributes (#77028)
* Allow defining state attributes in strings.json

* Add all climate attributes

* Remove support for custom device classes

* Address review comments
2022-12-09 08:22:29 +01:00
epenet b172abaeeb Add new atmospheric pressure device class (#83455)
* Add new atmospheric pressure device class

* Translations

* Automatic conversion

* Convert all pressure units
2022-12-09 08:02:53 +01:00
epenet 061cef1a5e Use SoundPressure unit and device class in integrations (#83585)
* Use SoundPressure unit and device class in integrations

* Adjust tests
2022-12-09 07:56:09 +01:00
Paulus Schoutsen e9796547c6 Make mypy happy (#83605) 2022-12-08 23:21:45 -05:00
J. Nick Koston 558dceac42 Bump dbus-fast to 1.80.0 (#83601)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v1.79.0...v1.80.0

performance improvements
2022-12-09 05:03:09 +01:00
Paulus Schoutsen 9c7b80090a Disable multi-pan (#83603)
* Disable multi-pan

* One more test skip
2022-12-08 22:44:16 -05:00
Paulus Schoutsen ea8511bcfc Disable multi-pan (#83603)
* Disable multi-pan

* One more test skip
2022-12-08 22:43:52 -05:00
J. Nick Koston 19ddf478e2 Bump bluetooth-auto-recovery to 0.5.5 (#83597)
changelog: https://github.com/Bluetooth-Devices/bluetooth-auto-recovery/compare/v0.5.4...v0.5.5

fixes #78036
2022-12-08 21:44:15 -05:00
Jeef 5cdcbcd5fe Bump intellifire4py to 2.2.2 (#83589) 2022-12-08 21:43:54 -05:00
Franck Nijhof 803d4a9998 Bump pip_check conflicts +1 (#83536)
* Bump pip_check conflicts +1

* Update script/pip_check

Co-authored-by: Philip Allgaier <mail@spacegaier.de>

Co-authored-by: Philip Allgaier <mail@spacegaier.de>
2022-12-08 21:39:30 -05:00
Michael Hansen e71eb8dfe2 Update intent response (#83560)
* Add language to conversation and intent response

* Move language to intent response instead of speech

* Extend intent response for voice MVP

* Add tests for error conditions in conversation/process

* Move intent response type data into "data" field

* Move intent response error message back to speech

* Remove "success" from intent response

* Add id to target in intent response

* target defaults to None

* Update homeassistant/helpers/intent.py

* Fix test

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-12-08 20:30:08 -05:00
J. Nick Koston 52f754e83d Bump bluetooth-auto-recovery to 0.5.5 (#83597)
changelog: https://github.com/Bluetooth-Devices/bluetooth-auto-recovery/compare/v0.5.4...v0.5.5

fixes #78036
2022-12-08 20:29:14 -05:00
J. Nick Koston 8193ddf61a Bump dbus-fast to 1.79.0 (#83598)
HA OS 9.4 adds support for passive scanning, however
a different path is used in dbus-fast to get the passive
results which was never optimized which caused passive
scanning to use more cpu time than active scanning.

changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v1.75.0...v1.79.0
2022-12-08 20:28:52 -05:00
Masahiro Konishi b922e9331f Add power field to switchbot plug (#83495)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-08 15:26:22 -10:00
GitHub Action f25017313a [ci skip] Translation update 2022-12-09 00:24:29 +00:00
epenet 6c8823fc14 Use Irradiance device class in tomorrowio (#83574) 2022-12-08 23:52:55 +01:00
epenet 911863ebf4 Use Irradiance unit and device class in integrations (#83576) 2022-12-08 23:51:47 +01:00
epenet 7f345e7672 Add entity translations to Renault (#83392) 2022-12-08 23:48:24 +01:00
Jeef 26080fbb89 Bump intellifire4py to 2.2.2 (#83589) 2022-12-08 23:43:41 +01:00
epenet 51ea3ff400 Use UnitOfSoundPressure in demo (#83584)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-12-09 00:42:30 +02:00
Paulus Schoutsen 8ccc77eb3d Bumped version to 2022.12.1 2022-12-08 16:45:23 -05:00
Allen Porter 5994dd558b Improve local calendar input validation error handling (#83563) 2022-12-08 16:45:16 -05:00
Bram Kragten b548be35bc Update frontend to 20221208.0 (#83551) 2022-12-08 16:45:16 -05:00
Marc Mueller 2cf1235b78 Fix issue with Callable, Union, and Python 3.9 [mqtt] (#83547) 2022-12-08 16:45:15 -05:00
Allen Porter 609fc9196f Bump ical to 4.2.2 (#83520)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-12-08 16:45:14 -05:00
mezz64 b7396a736e Bump pyhik to 0.3.2 (#83517)
Increase pyHik version to fix videoloss error
2022-12-08 16:45:13 -05:00
Marcel van der Veldt a64e56c8ad Bump python-matter-server to 1.0.7 (#83507) 2022-12-08 16:45:12 -05:00
Aaron Bach 94160903a7 Bump simplisafe-python to 2022.12.0 (#83497) 2022-12-08 16:45:12 -05:00
Joakim Plate f4948e8f48 Make sure super async_added_to_hass is called (#83493)
Make sure super added to hass is called
2022-12-08 16:45:11 -05:00
Christian Kündig ec7302ef1b Set connectable as false for sensirion_ble (#83481)
This is a passive ble integration. Not setting it as false means it won't match properly when using through a passive remote scanner.
2022-12-08 16:45:10 -05:00
Allen Porter 16f94e68b3 Improve local calendar input validation error handling (#83563) 2022-12-08 16:44:45 -05:00
Guido Schmitz 4f63eab453 Fix sensor tests in devolo Home Control (#83586)
Fix sensor tests
2022-12-08 22:52:20 +02:00
epenet 0f2097595e Use new device class in netatmo (#83367) 2022-12-08 20:57:51 +01:00
epenet 0edcb26844 Use SoundPressure unit and device class in point (#83580) 2022-12-08 20:57:38 +01:00
epenet 5d71afef85 Use SoundPressure unit and device class in airq (#83581) 2022-12-08 20:56:18 +01:00
epenet ec0af2f25d Use SoundPressure unit and device class in awair (#83582) 2022-12-08 20:56:02 +01:00
epenet 248d5ff541 Use ApparentPower unit and device class in integrations (#83577) 2022-12-08 20:55:18 +01:00
epenet f5334c5aed Use new unit enums in isy994 (#83583) 2022-12-08 20:54:16 +01:00
epenet 96c442349f Introduce unit enums for sound pressure (#83450)
* Introduce unit enums for sound pressure

* Adjust based on architecture comment

* Adjust
2022-12-08 20:06:02 +01:00
epenet 38f62ae622 Add new sound pressure device class (#83453)
* Add new sound pressure device class

* Translations

* Docstring

* Adjust unit
2022-12-08 19:46:03 +01:00
Guido Schmitz 500b00bd66 Add sensor tests for devolo_home_control (#74292) 2022-12-08 20:40:45 +02:00
epenet 54fb4df3aa Update opentherm_gw sensor definitions (#83533)
* Move sensor definitions to platform

* Use new unit enums

* Update device classes

* Minimize changes
2022-12-08 20:33:02 +02:00
mezz64 de09792cdd Bump pyhik to 0.3.2 (#83517)
Increase pyHik version to fix videoloss error
2022-12-08 20:30:20 +02:00
Franck Nijhof 9864d9e0d2 Remove str from sensor device class (#83391) 2022-12-08 19:04:58 +01:00
epenet 3ba264c318 Use new device class in tellduslive (#83369) 2022-12-08 18:48:50 +01:00
epenet c4326ed1ef Add new irradiance device class (#83452) 2022-12-08 18:44:23 +01:00
epenet 90438edc17 Introduce unit enums for irradiance (#83414) 2022-12-08 18:41:38 +01:00
epenet 0eacd84ff3 Introduce unit enums for apparent power (#83451) 2022-12-08 18:23:23 +01:00
epenet 9987f7a125 Add new data rate device class (#83377) 2022-12-08 18:20:05 +01:00
Erik Montnemery c4afc33fc5 Add abc.ABC to classes with abstract methods (#83546) 2022-12-08 17:50:36 +01:00
Allen Porter 7091781692 Bump ical to 4.2.2 (#83520)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-12-08 11:45:21 -05:00
Michael Hansen ac87528bec Add language to conversation and intent response (#83486)
* Add language to conversation and intent response

* Add language parameter to conversation/process service

* Move language to intent response instead of speech

* Add language to almond conversation agent

* Fix intent test
2022-12-08 11:39:28 -05:00
Bram Kragten ee8a2d1e25 Update frontend to 20221208.0 (#83551) 2022-12-08 17:18:39 +01:00
epenet 25961d71ef Add new data size device class (#83376) 2022-12-08 16:47:36 +01:00
Marc Mueller 25feac1bc4 Fix issue with Callable, Union, and Python 3.9 [mqtt] (#83547) 2022-12-08 15:42:40 +01:00
Christian Kündig b2edf9b598 Set connectable as false for sensirion_ble (#83481)
This is a passive ble integration. Not setting it as false means it won't match properly when using through a passive remote scanner.
2022-12-08 15:23:25 +02:00
Franck Nijhof 5e81f853e6 Bump pip_check conflicts +1 (#83536)
* Bump pip_check conflicts +1

* Update script/pip_check

Co-authored-by: Philip Allgaier <mail@spacegaier.de>

Co-authored-by: Philip Allgaier <mail@spacegaier.de>
2022-12-08 12:44:33 +01:00
Nathan Spencer 997d4fbe53 Bump pylitterbot to 2022.12.0 (#83490) 2022-12-07 21:55:25 -05:00
Aaron Bach 844a9fb817 Bump simplisafe-python to 2022.12.0 (#83497) 2022-12-07 21:54:58 -05:00
Joakim Plate 2ca7d0dd97 Make sure super async_added_to_hass is called (#83493)
Make sure super added to hass is called
2022-12-08 02:21:55 +01:00
Marcel van der Veldt c2fa1bdd49 Bump python-matter-server to 1.0.7 (#83507) 2022-12-08 01:31:44 +01:00
GitHub Action 3de8185506 [ci skip] Translation update 2022-12-08 00:21:50 +00:00
Martin Hjelmare 694cec3459 Set matter team as matter codeowners (#83506) 2022-12-07 23:53:30 +01:00
Joakim Sørensen f5cfd0329c Use the async_migrate_paypal_agreement function to get the migration URL (#83469)
* Use the async_migrate_paypal_agreement function to get the migration URL

* Update URL

* Handle timeout error
2022-12-07 12:02:22 -07:00
Bram Kragten dfb0887765 Update frontend to 20221207.0 (#83479) 2022-12-07 17:46:42 +01:00
TheJulianJES fccf7fe1ca Cleanup ZHA initialization for TS011F child_lock (#83478) 2022-12-07 16:53:08 +01:00
Joakim Sørensen 8ed6fcd58e When an account exist without a subscription "provider" will not exist (#83472) 2022-12-07 16:48:34 +01:00
David F. Mulcahey f6f89b6c5a Bump the ZHA quirks lib to 0.0.88 (#83468) 2022-12-07 16:48:13 +01:00
Franck Nijhof 12a81cc9f4 Remove doubtful repairs issue from UniFi Protect (#83463) 2022-12-07 10:46:28 -05:00
John Pettitt 31725d5411 Add leak detectors support for Ambient Station (#83357) 2022-12-07 07:53:00 -07:00
Nyro 7af18ac0ad Add @nyroDev to overkiz codeowner (#83456)
* Add @nyroDev to overkiz codeowner

* Update manifest.json too
2022-12-07 13:26:36 +01:00
Joakim Sørensen 41e4f10977 Bump hass-nabucasa from 0.59.0 to 0.61.0 (#83466) 2022-12-07 13:17:45 +01:00
mbo18 b031905956 Add Child lock support to Tuya devices (#83233)
* Add Child lock support to Tuya devices

* flake/black

* Add attribute to general.py

* apply only to TS011F

* also update general.py
2022-12-07 07:13:32 -05:00
Maciej Bieniek e11917b7cb Fix restored temperature values in Shelly climate platform (#83428)
* Set last_target_temp value according the unit system

* Convert restored temperature values

* Add test

* Improve comments

* Move _last_target_temp value to constants
2022-12-07 09:11:18 +02:00
r01k fa98685b1e Refactor Fully Kiosk and add logging details (#83028)
* - Refactor fully_kiosk/services.py with a less repetitive structure. - Log exception details in config_flow.py.

* Log config_flow.py connection exception details

* Appropriate logging level including stack trace.

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

* Finish setting appropriate logging level when recording stack trace.

* Log unknown exception with stack trace

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

* test_config_flow.py now passes.

* All pytests passing.

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-07 08:07:22 +01:00
J. Nick Koston b665a060f7 Do not try to stop the shelly ble scanner if not connected (#83424)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2022-12-06 22:57:54 -05:00
Raman Gupta 41d5256533 Add via_device support to zwave_js (#83219)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-12-06 22:56:33 -05:00
GitHub Action 1f3e5fb4fc [ci skip] Translation update 2022-12-07 00:24:08 +00:00
Guido Pio Mariotti b4b136b43e Update pyvesync to 2.1.1 (#83146)
Update pyvesync to 2.1.1 to close #70420
2022-12-07 00:42:08 +01:00
Shay Levy 111a38589e Shelly code quality - use properties for status (#83421) 2022-12-07 00:00:45 +02:00
Franck Nijhof 1a9302b8f6 Upgrade google-cloud-pubsub to 2.13.11 (#83419) 2022-12-06 22:21:49 +01:00
epenet 9f7fd8956f Use new unit enums in helpers (#83387) 2022-12-06 22:20:17 +01:00
Martin Hjelmare 511fd293b6 Add matter switch platform (#83149) 2022-12-06 21:57:24 +01:00
Franck Nijhof 552a87dfcc Upgrade grpcio(-status) to 1.51.1 (#83420) 2022-12-06 21:57:06 +01:00
Martin Hjelmare 9d96a021c7 Add matter sensor platform (#83147) 2022-12-06 21:39:00 +01:00
Martin Hjelmare e7a06046a7 Add matter binary sensor platform (#83144) 2022-12-06 14:28:06 -05:00
Joakim Plate 46669a1704 Add update of model and version for nibe (#83347) 2022-12-06 12:20:55 -07:00
Raman Gupta 8d1a70391e Improve zwave_js test coverage (#83372)
* Improve zwave_js test coverage

* review comments and clean up test
2022-12-06 12:18:21 -07:00
Daniel Hjelseth Høyer dc3401c94e Update tibber lib to 0.26.4, improve logging (#83418) 2022-12-06 20:08:27 +01:00
epenet 65b391e651 Use new device class in arwn (#83406) 2022-12-06 14:05:27 -05:00
Bram Kragten 75c5137e77 Update frontend to 20221206.0 (#83415) 2022-12-06 13:21:28 -05:00
Allen Porter 4819576b62 Tighten validation on calendar create event websocket (#83413) 2022-12-06 13:04:32 -05:00
Shay Levy e1923bc13b Add Shelly support for Plus WallDimmer US (#83385) 2022-12-06 19:44:17 +02:00
Martin Hjelmare 874315c3fc Bypass zwave_js config validation if driver not ready (#83410) 2022-12-06 12:41:09 -05:00
Marcel van der Veldt 4c8f7bbf50 Replace fixtures for Matter tests (#83328)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-06 12:38:13 -05:00
epenet 91d6d620c2 Use new unit enums in alexa (#83409)
* Use new unit enums in alexa

* Adjust for mypy
2022-12-06 17:31:40 +01:00
Franck Nijhof d715aa6867 Modernize Image Processing typing (#83405)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-12-06 16:35:40 +01:00
Franck Nijhof c507ad86d1 Remove str from cover device class (#83396)
* Remove str from cover device class

* Fix tests
2022-12-06 16:13:29 +01:00
Franck Nijhof ba0d6fe611 Enforce NumberDeviceClass in number entities (#83402) 2022-12-06 14:58:22 +01:00
Franck Nijhof 647469f472 Remove str from media player device class (#83398)
* Remove str from media player device class

* Adjust pylint plugin
2022-12-06 14:57:34 +01:00
Franck Nijhof cb69364ad2 Remove str from binary sensor device class (#83393) 2022-12-06 14:52:26 +01:00
Franck Nijhof 46caefca7b Remove str from humidifier device class (#83397) 2022-12-06 14:51:23 +01:00
Franck Nijhof 8cdadd1552 Remove str from switch device class (#83400) 2022-12-06 14:50:44 +01:00
Franck Nijhof 91cf2e2792 Remove str from update device class (#83399) 2022-12-06 14:50:19 +01:00
Michał Huryn 923fa473e1 Blebox add thermoBox to climate (#81090)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-06 14:43:35 +01:00
Franck Nijhof 9f36412076 Use CoverDeviceClass in Dynalite (#83394) 2022-12-06 13:30:22 +01:00
Franck Nijhof 04793978d3 Use CoverDeviceClass in ESPHome (#83395) 2022-12-06 13:29:58 +01:00
Sean Chen 985c1b31e1 Use new device class in nws (#83172)
* Replace unit consts with enums

* Remove default entries in NWSSensorEntityDescription

* Replace wind icon property with setting device_class in Wind Speed and Wind Gust sensors
2022-12-06 13:27:58 +01:00
Franck Nijhof 96e9bf13fe Fix icon in meteoclimatic wind bearing (#83390) 2022-12-06 12:27:05 +01:00
Franck Nijhof de352c520c Fix Goalzero time to empty sensor device class (#83389)
* Fix Goalzero time to empty sensor device class

* Fix tests
2022-12-06 12:14:15 +01:00
epenet 72fd57a685 Use new device class in accuweather (#83318) 2022-12-06 11:54:59 +01:00
Franck Nijhof 10db0d8bb1 Remove invalid device class from Hue connectivity sensor (#83388) 2022-12-06 11:28:14 +01:00
Franck Nijhof 6c74809400 Remove unused device class from Renault select (#83330)
* Remove unused device class from Renault select

* Fix tests

* More
2022-12-06 11:27:07 +01:00
Franck Nijhof c25ba19ffd Use enum sensor device class in Litter-Robot (#83290) 2022-12-06 11:08:05 +01:00
Jevgeni Kiski d62bdbb9ff Add vallox fan speed control (#82548)
* fan.set_percentage + tests

* let's see what is not yet covered

* Apply suggestions from code review

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

* tests fix

* vallox_websocket_api 3.0.0

* more coverage

* test coverage

* Update tests/components/vallox/test_fan.py

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

* raise exceptions on user input

* Supported features are different per preset mode.

* Test fixes

* Static supported features is back.

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-06 11:00:59 +01:00
epenet a3c4996291 Use new device class in zamg (#83361) 2022-12-06 10:56:23 +01:00
epenet 8a1a341b3a Use new device class in darksky (#83362) 2022-12-06 10:55:12 +01:00
epenet b8613ec09d Allow cm in precipitation units (#83360)
* Use new device class in zamg

* Adjust docstring

* Undo component changes
2022-12-06 10:34:58 +01:00
epenet 55d1474e4a Fix sensor schema for device classes (#83378) 2022-12-06 10:29:23 +01:00
Raman Gupta 87e2bbbfab Fix zwave_js_value_updated event (#83358)
* Fix zwave_js_value_updated event

* Fix zwave_js_value_updated event
2022-12-06 10:25:37 +01:00
epenet 4f94ad475f Use new device class in lacrosse view (#83365) 2022-12-06 10:22:52 +01:00
epenet 9856a811ae Use new device class in trafikverket weatherstation (#83370) 2022-12-06 10:16:49 +01:00
epenet 11609a63e3 Use new device class in metoffice (#83366) 2022-12-06 10:15:53 +01:00
epenet a14e465246 Use new device class in ecowitt (#83364) 2022-12-06 10:15:01 +01:00
epenet d915fd3052 Use new device class in rfxtrx (#83368) 2022-12-06 10:09:03 +01:00
epenet 0c9a78fb8e Use tuple in test parametrization (#83379) 2022-12-06 09:46:10 +01:00
Jan Bouwhuis 7ed1d4988b Add QoS parameter to MQTT websocket_subscribe (#83241) 2022-12-06 09:31:19 +01:00
epenet 3de7b439b8 Use new enums in rflink (#83371) 2022-12-06 09:11:53 +01:00
epenet d1bbd241aa Use new device class in buienradar (#83363) 2022-12-06 09:11:12 +01:00
Franck Nijhof c2da664bcc Migrate Sensibo translations (#83310) 2022-12-06 08:59:48 +01:00
puddly 5121952a85 Bump ZHA dependencies (#83350) 2022-12-05 22:34:39 -05:00
J. Nick Koston 1ee9c0cb8d Fix bluetooth device connection failure when device is seen by dbus but not bleak (#83281) 2022-12-05 22:34:21 -05:00
Erik Montnemery 587381440f Fix repairing datetime precision for PostgreSQL (#83351) 2022-12-05 22:33:06 -05:00
GitHub Action 3ab9a14ce7 [ci skip] Translation update 2022-12-06 00:21:31 +00:00
Franck Nijhof 30db947d99 Use enum sensor device class in Overkiz (#83342) 2022-12-06 00:36:57 +01:00
Franck Nijhof 3f891ef4ee Migrate Wolf SmartSet Service translations (#83323) 2022-12-06 00:14:07 +01:00
Joakim Plate aa37f6c934 Adjust error message and add callback in nibe heatpump climate (#83027)
* Adjust error message and add callback

* Line break value error string
2022-12-06 00:12:14 +01:00
Franck Nijhof bc9f86f342 Remove unused device class from Kostal Plenticore select (#83329) 2022-12-06 00:09:51 +01:00
Franck Nijhof 762eb57636 Validate state class and unit of measurement for non-numeric sensors (#83344)
* Validate state class and unit of measurement for non-numeric sensors

* Remove duration

* Fix rest tests
2022-12-06 00:07:02 +01:00
Bram Kragten 91cdf0ecf7 Update frontend to 20221205.0 (#83349) 2022-12-05 23:59:54 +01:00
epenet 67192d4ea7 Introduce unit enums for information and data rate (#83291)
* Introduce UnitOfData enum

* Introduce UnitOfDataRate enum

* UnitOfData > UnitOfInformation
2022-12-05 23:32:00 +01:00
epenet 7eda67be11 Introduce unit enums for electric current and potential (#83287)
* Introduce UnitOfElectricCurrent enum

* Introduce UnitOfElectricalPotential enum

* UnitOfElectricalPotential > UnitOfElectricPotential
2022-12-05 23:31:43 +01:00
epenet f1ce8a9004 Use new device class in ambient_station (#83322)
* Use new device class in ambient_station

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/sensor.py
2022-12-05 22:02:04 +01:00
Bouwe Westerdijk 2c4f9ca037 Update plugwise to v0.25.14, improve number detection (#83345)
fixes undefined
2022-12-05 20:17:19 +01:00
Franck Nijhof 171bed7637 Migrate UniFi Protect translations (#83338)
* Migrate UniFi Protect translations

* Move key
2022-12-05 20:10:36 +01:00
Franck Nijhof e918adb25d Clean up Zodiac (#83334) 2022-12-05 20:08:05 +01:00
epenet 8fdf35b80a Introduce UnitOfFrequency enum (#83289) 2022-12-05 20:03:47 +01:00
epenet 6295cf3dc4 Introduce UnitOfTime enum (#83288) 2022-12-05 20:03:27 +01:00
J. Nick Koston d97bcfdca9 Bump aiohomekit to 2.4.1 (#83341) 2022-12-05 19:54:27 +01:00
epenet 106a405733 Use new device class in meteo_france (#83325) 2022-12-05 19:09:40 +01:00
Franck Nijhof 399f0ea161 Migrate Overkiz select translations (#83324) 2022-12-05 17:24:59 +01:00
Franck Nijhof 150e49f4c2 Use enum sensor device class in AirVisual (#83316) 2022-12-05 17:24:47 +01:00
Alice b97f95efc4 Update litterrobot integration to support long-term statistics (#83269) 2022-12-05 17:12:58 +01:00
Maikel Punie 1011c30cc5 Small fix for the velbus clear-cache service (#83279) 2022-12-05 17:12:27 +01:00
epenet 4f4d60c105 Use attributes in homematicip_cloud (#83295) 2022-12-05 17:10:38 +01:00
epenet 9682249830 Use new device class in environment canada (#83297) 2022-12-05 17:08:00 +01:00
epenet 6053b6f94a Use new device class in aemet (#83315) 2022-12-05 17:07:01 +01:00
epenet 7b98656bcd Use new device class in openweathermap (#83331) 2022-12-05 17:04:02 +01:00
epenet 069c1f35ca Use new device class in meteoclimatic (#83327) 2022-12-05 16:59:04 +01:00
epenet eb13f2b724 Use UnitOfVolume in unit conversion (#83292) 2022-12-05 16:56:05 +01:00
Michał Ajduk ff7a70d31b Fix Tuya number native value raw return (#83333)
fixes undefined
2022-12-05 16:55:21 +01:00
Martin Hjelmare bd04c1d9f9 Deprecate the Xbox Live integration (#83339) 2022-12-05 16:54:36 +01:00
Franck Nijhof f125fd5772 Migrate Tractive translations (#83321) 2022-12-05 16:45:57 +01:00
Erik Montnemery 67875b99a3 Refactor support for integrations to drop custom unit conversion (#83228)
* Refactor support for integrations to drop custom unit conversion

* Fix lying comment

* Address review comment
2022-12-05 16:12:37 +01:00
Franck Nijhof 1f7a7d5cb5 Use enum sensor device class in Nettigo Air Monitor (#83314) 2022-12-05 16:05:03 +01:00
Marc Mueller 1ca9824191 Update pylint to 2.15.8 (#83311) 2022-12-05 10:01:27 -05:00
Franck Nijhof f801fe307e Migrate Demo translations (#83294) 2022-12-05 08:44:26 -05:00
Franck Nijhof aa4a0df194 Migrate Logitech Harmony Hub translations (#83308) 2022-12-05 13:57:13 +01:00
Franck Nijhof 73162e6fb5 Migrate TOLO Sauna translations (#83306)
* Migrate TOLO Sauna translations

* Fix capa
2022-12-05 13:55:07 +01:00
Franck Nijhof 03dc527a85 Migrate MusicCast translations (#83305) 2022-12-05 13:54:10 +01:00
Franck Nijhof 06c8b838b5 Use enum sensor device class in Season (#83301) 2022-12-05 13:48:32 +01:00
Franck Nijhof 303f203c2a Migrate Xiaomi Miio translations (#83300) 2022-12-05 13:47:18 +01:00
Franck Nijhof e015f8bf8f Migrate LaMetric translations (#83298) 2022-12-05 13:46:08 +01:00
epenet b75eb71764 Use new device class in homematic (#83303) 2022-12-05 13:45:30 +01:00
Franck Nijhof 42c6920a91 Migrate WLED translations (#83296) 2022-12-05 13:45:14 +01:00
Franck Nijhof 32dfc59d9e Migrate HomeKit Controller translations (#83304) 2022-12-05 13:44:59 +01:00
Franck Nijhof 226a880645 Use enum sensor device class in Tomorrow.io (#83293) 2022-12-05 13:17:49 +01:00
Klaas Schoute 2602b45ec8 Bump package for Garage Amsterdam (#83167)
* Bump to new package version

* Change the class name used in the new package

* Fix failing test with using old package name
2022-12-05 13:12:46 +01:00
Franck Nijhof f0f4e4595c Migrate Plugwise translations (#83286) 2022-12-05 12:18:20 +01:00
epenet 63e8dd58ef Use UnitOfTemperature in water_heater entities (#83132) 2022-12-05 11:42:15 +01:00
G Johansson 1c86a543b7 Failback to v4 resolver for AAAA records in DNSIP integration (#82740) 2022-12-05 11:02:38 +01:00
Sean Chen c8fbdde3b8 Add @kamiyo to nws codeowners (#83171) 2022-12-05 10:59:25 +01:00
Garrett efc637cb2b Bump subarulink to v0.7.0 (#83213)
fixes undefined
2022-12-05 10:53:05 +01:00
epenet 68e454712d Use UnitOfTemperature in climate entities [g-l] (#83127)
* Use UnitOfTemperature in climate entities [g-l]

* Adjust gree

* Adjust honeywell
2022-12-05 10:42:24 +01:00
Franck Nijhof 40d337479e Use enum sensor device class in UptimeRobot (#83111) 2022-12-05 10:36:16 +01:00
epenet c7a6b5983f Use UnitOfTemperature in climate entities [t-z] (#83129) 2022-12-05 10:18:57 +01:00
dependabot[bot] ee5de654ab Bump dessant/lock-threads from 3 to 4 (#83273)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-12-05 10:11:24 +01:00
Marc Mueller 1f30d761a6 Code style improvements [alexa] (#83258) 2022-12-05 09:36:03 +01:00
Erik Montnemery 7e2960a973 Enable strict typing of hardware (#83120)
* Enable strict typing of hardware

* Address review comment
2022-12-05 09:32:52 +01:00
Christopher Bailey ee7022dc67 Update UniFi Protect ring entity to use event entity (#83270) 2022-12-04 17:06:55 -10:00
Anton Malko ec24b93c17 Bump aiolookin to 1.0.0 (#83198)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-04 16:31:35 -10:00
Avi Miller 88c8eef4eb Populate suggested_area using the LIFX group name for each device (#83259)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-12-04 16:31:08 -10:00
jjlawren c70388869b Do not discard zero positions for Sonos media players (#83249)
fixes undefined
2022-12-04 21:11:30 -05:00
Joris Pelgröm 34fd64addf Fix mobile_app returning cloud URL when not subscribed (#83257)
fixes undefined
2022-12-04 21:10:26 -05:00
J. Nick Koston 3044e78d43 Avoid regex overhead in processing esphome bluetooth advertisements (#83246) 2022-12-04 21:09:45 -05:00
J. Nick Koston 1efc71624a Bump aioesphomeapi to 13.0.1 (#83223)
fixes https://github.com/home-assistant/core/issues/83212
2022-12-04 21:09:10 -05:00
GitHub Action 5f9290e572 [ci skip] Translation update 2022-12-05 00:23:07 +00:00
Stephan Singer 64a72daa27 Add IPv6 sensor to fritz component (#75708)
* Add IPv6 sensor to fritz component

* Cast return type to string

* Make ipv6 sensor suitable

* simplify cast to str

* use extisting property

Co-authored-by: chemelli74 <simone.chemelli@gmail.com>
Co-authored-by: mib1185 <mail@mib85.de>
2022-12-05 00:48:41 +01:00
Allen Porter 0f83db82d9 Bump gcal_sync to 4.0.4 (#83245) 2022-12-04 17:16:51 -05:00
Ville Skyttä 8f9baafac1 Tweak black config (#83230)
* Remove `--safe` from pre-commit args, it's the default

* Extend exclusions instead of overriding, improve regex
2022-12-04 17:12:37 -05:00
Allen Porter 6c896adcff Bump ical to 4.2.1 (#83254) 2022-12-04 23:05:35 +01:00
Joe Rogers f1ee920463 Handle numeric versions in mqtt update (#83218)
* Handle numeric versions in mqtt update

* Remove need for type:ignore

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

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2022-12-04 21:52:48 +01:00
J. Nick Koston c617e7da31 Raise an exception when an esp proxy gets empty services during connection so callers know to retry (#83211) 2022-12-04 09:05:46 -10:00
Allen Porter 6499f5460a Bump ical to 4.2.0 (#83244) 2022-12-04 10:18:27 -08:00
Simone Chemelli e436f6a7b2 Fix missing title placeholders in Synology DSM reauth flow (#83238)
* Fix missing title placeholders in reauth flow

* fix tests

Co-authored-by: mib1185 <mail@mib85.de>
2022-12-04 10:11:24 -08:00
J. Nick Koston db0dfe875a Bump pySwitchbot to 0.22.0 (#83243)
fixes https://github.com/home-assistant/core/issues/82961
2022-12-04 08:08:21 -10:00
Michael Chisholm 7378277212 Update async-upnp-client to 0.32.3 (#83215) 2022-12-04 10:05:53 -08:00
Matthias Alphart 4ca6db825c Address late KNX flow tests review (#83208)
* Address late KNX flow tests review

* Update tests/components/knx/test_config_flow.py

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

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-04 18:39:27 +01:00
Milan Meulemans cefdce5002 Remove deprecated GCM API from html5 (#83229)
* Remove deprecated GCM API

* Cleanup code after removing GCM

* Make vapid required

* Use dict[key] instead of dict.get(key) for vapid config
2022-12-04 18:34:54 +01:00
J. Nick Koston 1577f6ea50 Restore HomeKit Controller BLE GSN at startup (#83206) 2022-12-04 07:01:37 -10:00
Jan Bouwhuis de77132a5a Add the QoS in the MQTT debug log (#83195)
Logging the MQTT QoS in the debug log
2022-12-04 15:03:41 +01:00
epenet 44d3f2192c Use UnitOfTemperature in climate entities [a-f] (#83125) 2022-12-04 11:53:56 +02:00
epenet aace084931 Use unit enums in demo (#83130) 2022-12-04 11:21:44 +02:00
Joakim Plate 90f2a54165 Bump nibe to 1.5.0 (#83185) 2022-12-04 11:17:13 +02:00
J. Nick Koston e139470c56 Bump yalexs-ble to 1.10.3 (#83216)
changelog: https://github.com/bdraco/yalexs-ble/compare/v1.10.2...v1.10.3
2022-12-04 11:10:53 +02:00
GitHub Action a1eab7f842 [ci skip] Translation update 2022-12-04 00:23:06 +00:00
Olen 0d1506c3cf Switch Twinkly to awesomeversion (#83205)
Switch to awesomeversion
2022-12-03 22:43:10 +01:00
Aaron Bach cd0037a780 Fix OpenUV coverage (#83203) 2022-12-03 14:40:42 -07:00
Aidan Timson 766c2f8bb4 Update aiolyric to 1.0.9 (#83190) 2022-12-03 14:26:21 -07:00
Glenn Waters ffbde4ac90 Bump elkm1 lib to 2.2.1 (#83026) 2022-12-03 10:47:38 -10:00
J. Nick Koston 0cacfef325 Bump yalexs-ble to 1.10.2 (#83199) 2022-12-03 14:55:53 -05:00
J. Nick Koston 9321c2191e Bump aiohomekit to 2.3.6 (#83196) 2022-12-03 14:34:11 -05:00
J. Nick Koston 237a1d50d9 Bump pySwitchbot to 0.20.8 (#83197)
fixes https://github.com/home-assistant/core/issues/80491
2022-12-03 14:21:19 -05:00
Aaron Bach c6ad48e236 Fix SimpliSafe service calls that require a device selector (#83200)
fixes undefined
2022-12-03 14:20:53 -05:00
Allen Porter b735e66d2f Bump ical to 4.1.2 to fix emoji in local calendar (#83193)
Bump ical to 4.1.2
2022-12-03 12:02:25 -07:00
J. Nick Koston 955d4abf13 Fix missing services with esp32 proxies (#83192) 2022-12-03 13:50:59 -05:00
Lars 5422a17a35 Add integration_type to AVM FRITZ!SmartHome (#81096) 2022-12-03 13:24:06 -05:00
Olen 2a0496a3a9 Support older twinkly devices without effects (#83145)
fixes undefined
2022-12-03 13:23:29 -05:00
Kevin Stillhammer f88d22b833 Raise UpdateFailed when here_travel_time cannot find_location (#83157)
Fixes https://github.com/home-assistant/core/issues/83100
fixes undefined
2022-12-03 13:06:10 -05:00
Joakim Sørensen 0dfc0af08c Add CLOSED as an expected type (#83180) 2022-12-03 10:19:16 -05:00
Matthias Alphart 6cef37641c KNX Config/OptionsFlow: Test connection to manually configured tunnel (#82872) 2022-12-03 12:53:12 +01:00
Daniel Hjelseth Høyer 949ebeeb97 Update pyTibber to 0.26.3 (#83175)
Update Tibber lib 0.26.3

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-03 12:30:03 +01:00
Franck Nijhof 58f2fc8610 Use enum sensor device class in Moon (#83108)
* Use enum sensor device class in Moon

* Adjust tests
2022-12-03 11:25:04 +01:00
Franck Nijhof b40923a4cd Use enum sensor device class in PrusaLink (#83107) 2022-12-03 11:22:36 +01:00
J. Nick Koston a63dd811dd Bump pySwitchbot to 0.20.7 (#83170)
changelog: https://github.com/Danielhiversen/pySwitchbot/compare/0.20.5...0.20.7
2022-12-03 11:14:39 +01:00
J. Nick Koston 4a23216e1e Bump aiohomekit to 2.3.5 (#83168) 2022-12-02 21:00:49 -05:00
Alex Yao 652fedf4d1 Fix html5 Firefox Notifications (#82556)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
fixes undefined
2022-12-02 20:51:16 -05:00
Aaron Bach ee0fbae2ca Return empty data when OpenUV API call fails (#83089)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
fixes undefined
2022-12-02 20:27:33 -05:00
J. Nick Koston 4a56461d3c Fix reauth with esphome when adding noise encryption (#83164)
* Fix reauth with esphome when adding noise encryption

fixes #80813

* fix with unique id
2022-12-02 19:49:13 -05:00
J. Nick Koston 6651dfaf9b Bump bluetooth-auto-recovery to 0.5.4 (#83155)
changelog: https://github.com/Bluetooth-Devices/bluetooth-auto-recovery/compare/v0.5.3...v0.5.4
2022-12-02 19:48:06 -05:00
J. Nick Koston de1e97a81f Fix esphome ble client leaking notify on disconnect (#83106)
* Fix esphome ble client leaking notify on disconnect

needs: https://github.com/esphome/aioesphomeapi/pull/329

* leak

* more cleanup

* more cleanup

* bump
2022-12-02 19:45:49 -05:00
GitHub Action 03154e1d83 [ci skip] Translation update 2022-12-03 00:21:50 +00:00
J. Nick Koston cc105e5c27 Fix race setting up homekit controller triggers (#83166)
fixes https://github.com/home-assistant/core/issues/83165
2022-12-02 13:49:14 -10:00
J. Nick Koston 144f1b918b Fix logging the wrong bluetooth adapter while connecting and out of slots (#83158) 2022-12-02 13:24:12 -10:00
Michaël Arnauts 5a8cf38552 Update pycomfoconnect to 0.5.1 (#83124) 2022-12-02 10:38:29 -10:00
Martin Hjelmare aab0c4eb71 Remove matter services available in websocket api (#83151) 2022-12-02 13:59:18 -05:00
epenet 8b867d612f Use UnitOfTemperature in climate entities [m-s] (#83131) 2022-12-02 19:56:18 +01:00
Philip Allgaier d3b35ca2a7 Address review comments for shopping list websockets (#83143) 2022-12-02 19:33:25 +01:00
majuss 832bc15daa Bump lupupy to 0.2.1 (#83071) 2022-12-02 17:30:25 +01:00
Erik Montnemery ef588a556a Enable strict typing of homeassistant hardware integrations (#83121) 2022-12-02 15:59:03 +01:00
Erik Montnemery bd97f59395 Enable strict typing of hardkernel (#83122) 2022-12-02 15:56:48 +01:00
Erik Montnemery e325ec26d0 Enable strict typing of raspberry_pi (#83123) 2022-12-02 15:56:13 +01:00
Erik Montnemery 155db2f2e1 Simplify diagnostics.DownloadDiagnosticsView (#83116)
* Refactor diagnostics.DownloadDiagnosticsView

* Simplify
2022-12-02 15:33:55 +01:00
J. Nick Koston 8eeba490d1 Update aiobafi6 to 0.7.3 (#83073) 2022-12-02 14:56:02 +01:00
Franck Nijhof a4a80f367b Use enum sensor device class in HomeKit Controller (#83109) 2022-12-02 14:50:01 +01:00
Erik Montnemery 46500beefc Enable strict typing of analytics (#83119) 2022-12-02 14:05:08 +01:00
Philip Allgaier 80debae96d Add support for item removal to shopping list (#82992) 2022-12-02 12:40:59 +01:00
Nyro 21c051935f Fix small coding style in recent overkiz code (#82966)
* Fix small coding style

* Use kwargs[ATTR_TEMPERATURE] in overkiz water_heater

* Fix grammar

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-02 11:22:35 +01:00
ollo69 5789790d32 Review AsusWRT sensors tests (#71307)
* Review AsusWRT sensors tests

* Fix grammar

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-02 11:22:16 +01:00
Erik Montnemery bf7e50eb32 Enable strict typing of diagnostics (#83053)
* Enable strict typing of diagnostics

* Reformat to avoid line break
2022-12-02 11:21:02 +01:00
Franck Nijhof fc93521e02 Migrate Tuya translations (#83105)
* Migrate Tuya translations

* Don't use DPCode as translation key
2022-12-02 11:20:17 +01:00
Erik Montnemery 4edebacba5 Add type annotations to some hassio API (#83103)
* Add type annotations to some hassio API

* Adjust callers
2022-12-02 11:18:49 +01:00
Olen faea29a268 Fix twinkly effects (#83104)
Adding additional checks
2022-12-02 09:58:29 +01:00
Marc Mueller c6796494b4 Fix glob patterns for partial CI runs (#83086) 2022-12-02 09:16:20 +01:00
Christopher Bailey 484756c834 Bump pyunifiprotect to 4.5.2 (#83090) 2022-12-02 09:15:24 +01:00
Franck Nijhof ce00f093d6 Add enum device_class and state options property to sensor entities (#82489) 2022-12-02 09:11:15 +01:00
J. Nick Koston 3feea879dd Bump aiohomekit to 2.3.4 (#83094) 2022-12-02 09:07:31 +01:00
J. Nick Koston ccb5910db0 Bump bleak-retry-connector to 2.8.7 (#83095)
changelog: https://github.com/Bluetooth-Devices/bleak-retry-connector/compare/v2.8.6...v2.8.7
2022-12-02 08:08:56 +01:00
J. Nick Koston 56c0eacb08 Fix wrong ble device being logged (#83091)
This code can be simplified a bit now that we
have the fast bleak lookup. We do connect
via the correct path, but we logged the wrong one
2022-12-02 08:08:35 +01:00
Raman Gupta 3e71436267 Bump zwave-js-server-python to 0.43.1 (#83093) 2022-12-02 07:56:29 +01:00
GitHub Action c9c2886b26 [ci skip] Translation update 2022-12-02 00:23:57 +00:00
Marc Mueller 6e4551f73f Fix prettier [ci] (#83077) 2022-12-01 23:54:12 +01:00
Christopher Bailey 6fb9bdec93 Assorted fixes for UniFi Protect (#83032) 2022-12-01 16:37:44 -05:00
J. Nick Koston e23007322d Defer xiaomi ble polling until after startup (#83074)
fixes https://github.com/home-assistant/core/issues/77178
2022-12-01 16:37:22 -05:00
Bram Kragten 18e4c065eb Update frontend to 20221201.1 (#83062) 2022-12-01 16:35:53 -05:00
Allen Porter 5d1ca73a34 Add create and delete for Google Calendar events (#83034)
* Add Google Calendar create/delete support

Includes editing for recurring events

* Fix default calendar access role

* Formatting improvements

* Address other details that have changed due to local sync

* Update tests/components/google/test_calendar.py

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

* Update tests/components/google/test_calendar.py

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

* Update tests/components/google/test_calendar.py

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

* Increase test coverage

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-01 21:39:58 +01:00
Marcel van der Veldt e2308fd15c Add matter integration BETA (#83064)
* Add matter base (#79372)

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>

* Add matter server add-on flow (#82698)

* Add matter server add-on flow

* Fix stale error argument

* Clean docstrings

* Use localhost as default address

* Add matter websocket api foundation (#82848)

* Add matter config entry add-on management (#82865)

* Use matter refactored server/client library (#83003)

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

* Bump python-matter-server to 1.0.6 (#83059)

* Extend matter websocket api (#82948)

* Extend matter websocket api

* Finish docstring

* Fix pin type

* Adjust api after new client

* Adjust api to frontend for now

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-01 20:44:56 +01:00
Daniel Hjelseth Høyer 845ce5c6ea Tibber, fix date parsing (#83067)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-01 20:36:46 +02:00
Joakim Sørensen 1d1b59b800 Fix hassfest serializer injecting commas in empty lists (#83052)
* No trailing comma for empty lists

* Update script/hassfest/serializer.py

Co-authored-by: Aarni Koskela <akx@iki.fi>

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Aarni Koskela <akx@iki.fi>
2022-12-01 20:26:30 +02:00
Daniel Hjelseth Høyer 87b6bb45d0 Remove home id from Tibber diagnostics (#83066)
Tibber diagnostic

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2022-12-01 20:24:17 +02:00
Franck Nijhof fa31192448 Update debugpy to 1.6.4 (#83042) 2022-12-01 14:07:49 +01:00
Todd Johnson 5533368171 Add dialect support to google_translate (#81768)
* Add TLD option support to google_translate

* Fix tests for added TLD option in google_translate

* Add Language to TLD mapping, Make tld configurable in google_translate

* Move const to dedicated file in google_translate
2022-12-01 13:31:19 +01:00
Keilin Bickar f4a58c7dc7 Bump sense_api to 0.11.0 and add refresh token support (#83030)
fixes undefined
2022-12-01 10:53:48 +01:00
r01k 8e357faa4d Bump python-fullykiosk to 0.0.12 (#83029) 2022-12-01 10:38:04 +01:00
Erik Montnemery 8e617bbc1d Add translation_key property to entites (#82701)
* Add translation_key attribute to entity state

* Update accuweather test

* Index entity translation keys by platform

* Store translation key in entity registry
2022-12-01 09:34:09 +01:00
Jc2k 843f537109 Fix getting updated thread IP at startup in homekit_controller (#83037) 2022-12-01 08:14:42 +00:00
Joakim Sørensen 817bbfe6aa Bump hass-nabucasa from 0.56.0 to 0.59.0 (#82987)
* Bump hass-nabucasa from 0.56.0 to 0.58.0

* 0.59.0
2022-12-01 09:08:39 +01:00
J. Nick Koston 38b9d896b2 Fix incorrect mapping of sensitive mode on oralb 4000 series (#83031) 2022-11-30 23:11:01 -05:00
J. Nick Koston c91417e71f Fix yale access bluetooth locks delaying startup when key changes (#83024)
If the keys changed for the yale locks, the locks would be
slow to setup. Because august had yalexs_ble as an
after dep, it would be waiting with the new keys but not
able to setup because it was waiting for the locks to setup
which would be trying over and over until they failed because
the key had changed out from under it.

This change moves some more code into the lib to avoid
the dep and allows both to startup at the same time so
the cloud service can feed the new keys in if needed without
waiting for the lock to fail to setup

changelog: https://github.com/bdraco/yalexs-ble/compare/v1.9.8...v1.10.0
2022-12-01 03:36:02 +01:00
Franck Nijhof 4bef6ac191 Bump version to 2023.1.0dev0 (#83025) 2022-11-30 21:12:57 -05:00
J. Nick Koston f0d8168db7 Bump aiohomekit to 2.3.2 (#83019) 2022-12-01 02:07:22 +01:00
Joakim Plate 9f236c4ca5 Add nibe heat pump climate entities (#78952)
* Add climate platform

* Enable climate plarform

* Some adjustments after review

* fixup! Add climate platform

* Rename description to avoid confusion

* No need to pass None

* Rename with nibe prefix

* Handle possible translations of values

* Make sure we prune None contexts

* Switch to constants from library
2022-12-01 01:58:59 +01:00
GitHub Action 0d1f476bee [ci skip] Translation update 2022-12-01 00:33:36 +00:00
4172 changed files with 75356 additions and 18996 deletions
+19 -13
View File
@@ -46,6 +46,8 @@ omit =
homeassistant/components/airtouch4/const.py
homeassistant/components/airvisual/__init__.py
homeassistant/components/airvisual/sensor.py
homeassistant/components/airvisual_pro/__init__.py
homeassistant/components/airvisual_pro/sensor.py
homeassistant/components/alarmdecoder/__init__.py
homeassistant/components/alarmdecoder/alarm_control_panel.py
homeassistant/components/alarmdecoder/binary_sensor.py
@@ -224,8 +226,6 @@ omit =
homeassistant/components/denonavr/__init__.py
homeassistant/components/denonavr/media_player.py
homeassistant/components/denonavr/receiver.py
homeassistant/components/deutsche_bahn/sensor.py
homeassistant/components/devolo_home_control/sensor.py
homeassistant/components/devolo_home_control/switch.py
homeassistant/components/digital_ocean/*
homeassistant/components/discogs/sensor.py
@@ -294,9 +294,11 @@ omit =
homeassistant/components/elkm1/sensor.py
homeassistant/components/elkm1/switch.py
homeassistant/components/elmax/__init__.py
homeassistant/components/elmax/alarm_control_panel.py
homeassistant/components/elmax/binary_sensor.py
homeassistant/components/elmax/common.py
homeassistant/components/elmax/const.py
homeassistant/components/elmax/binary_sensor.py
homeassistant/components/elmax/switch.py
homeassistant/components/elv/*
homeassistant/components/emby/media_player.py
@@ -471,7 +473,9 @@ omit =
homeassistant/components/greenwave/light.py
homeassistant/components/group/notify.py
homeassistant/components/growatt_server/__init__.py
homeassistant/components/growatt_server/const.py
homeassistant/components/growatt_server/sensor.py
homeassistant/components/growatt_server/sensor_types/*
homeassistant/components/gstreamer/media_player.py
homeassistant/components/gtfs/sensor.py
homeassistant/components/guardian/__init__.py
@@ -725,8 +729,6 @@ omit =
homeassistant/components/mastodon/notify.py
homeassistant/components/matrix/*
homeassistant/components/matter/__init__.py
homeassistant/components/matter/adapter.py
homeassistant/components/matter/entity.py
homeassistant/components/meater/__init__.py
homeassistant/components/meater/const.py
homeassistant/components/meater/sensor.py
@@ -795,12 +797,9 @@ omit =
homeassistant/components/myq/cover.py
homeassistant/components/myq/light.py
homeassistant/components/mysensors/__init__.py
homeassistant/components/mysensors/binary_sensor.py
homeassistant/components/mysensors/climate.py
homeassistant/components/mysensors/const.py
homeassistant/components/mysensors/cover.py
homeassistant/components/mysensors/device.py
homeassistant/components/mysensors/device_tracker.py
homeassistant/components/mysensors/gateway.py
homeassistant/components/mysensors/handler.py
homeassistant/components/mysensors/helpers.py
@@ -844,7 +843,9 @@ omit =
homeassistant/components/nfandroidtv/__init__.py
homeassistant/components/nfandroidtv/notify.py
homeassistant/components/nibe_heatpump/__init__.py
homeassistant/components/nibe_heatpump/climate.py
homeassistant/components/nibe_heatpump/binary_sensor.py
homeassistant/components/nibe_heatpump/button.py
homeassistant/components/nibe_heatpump/number.py
homeassistant/components/nibe_heatpump/select.py
homeassistant/components/nibe_heatpump/sensor.py
@@ -919,6 +920,7 @@ omit =
homeassistant/components/opentherm_gw/sensor.py
homeassistant/components/openuv/__init__.py
homeassistant/components/openuv/binary_sensor.py
homeassistant/components/openuv/coordinator.py
homeassistant/components/openuv/sensor.py
homeassistant/components/openweathermap/sensor.py
homeassistant/components/openweathermap/weather.py
@@ -1000,6 +1002,9 @@ omit =
homeassistant/components/proxmoxve/*
homeassistant/components/proxy/camera.py
homeassistant/components/pulseaudio_loopback/switch.py
homeassistant/components/purpleair/__init__.py
homeassistant/components/purpleair/coordinator.py
homeassistant/components/purpleair/sensor.py
homeassistant/components/pushbullet/api.py
homeassistant/components/pushbullet/notify.py
homeassistant/components/pushbullet/sensor.py
@@ -1026,7 +1031,6 @@ omit =
homeassistant/components/radiotherm/entity.py
homeassistant/components/radiotherm/switch.py
homeassistant/components/radiotherm/util.py
homeassistant/components/rainbird/*
homeassistant/components/raincloud/*
homeassistant/components/rainmachine/__init__.py
homeassistant/components/rainmachine/binary_sensor.py
@@ -1046,6 +1050,11 @@ omit =
homeassistant/components/rejseplanen/sensor.py
homeassistant/components/remember_the_milk/__init__.py
homeassistant/components/remote_rpi_gpio/*
homeassistant/components/reolink/__init__.py
homeassistant/components/reolink/camera.py
homeassistant/components/reolink/const.py
homeassistant/components/reolink/entity.py
homeassistant/components/reolink/host.py
homeassistant/components/repetier/__init__.py
homeassistant/components/repetier/sensor.py
homeassistant/components/rest/notify.py
@@ -1244,9 +1253,11 @@ omit =
homeassistant/components/switchbot/coordinator.py
homeassistant/components/switchbot/cover.py
homeassistant/components/switchbot/entity.py
homeassistant/components/switchbot/humidifier.py
homeassistant/components/switchbot/light.py
homeassistant/components/switchbot/sensor.py
homeassistant/components/switchbot/switch.py
homeassistant/components/switchbot/lock.py
homeassistant/components/switchmate/switch.py
homeassistant/components/syncthing/__init__.py
homeassistant/components/syncthing/sensor.py
@@ -1414,9 +1425,6 @@ omit =
homeassistant/components/upnp/__init__.py
homeassistant/components/upnp/device.py
homeassistant/components/upnp/sensor.py
homeassistant/components/vallox/__init__.py
homeassistant/components/vallox/fan.py
homeassistant/components/vallox/sensor.py
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/velbus/__init__.py
homeassistant/components/velbus/binary_sensor.py
@@ -1579,8 +1587,6 @@ omit =
homeassistant/components/youless/const.py
homeassistant/components/youless/sensor.py
homeassistant/components/zabbix/*
homeassistant/components/zamg/__init__.py
homeassistant/components/zamg/const.py
homeassistant/components/zamg/coordinator.py
homeassistant/components/zamg/sensor.py
homeassistant/components/zamg/weather.py
+1 -2
View File
@@ -80,8 +80,7 @@ body:
label: Diagnostics information
placeholder: "drag-and-drop the diagnostics data file here (do not copy-and-paste the content)"
description: >-
Many integrations provide the ability to download diagnostic data
on the device page (and on the integration dashboard).
Many integrations provide the ability to [download diagnostic data](https://www.home-assistant.io/docs/configuration/troubleshooting/#debug-logs-and-diagnostics).
**It would really help if you could download the diagnostics data for the device you are having issues with,
and <ins>drag-and-drop that file into the textbox below.</ins>**
+9 -9
View File
@@ -24,12 +24,12 @@ jobs:
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
with:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -67,10 +67,10 @@ jobs:
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -100,7 +100,7 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
@@ -115,7 +115,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -198,7 +198,7 @@ jobs:
- yellow
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set build additional args
run: |
@@ -241,7 +241,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
@@ -280,7 +280,7 @@ jobs:
- "homeassistant"
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Login to DockerHub
if: matrix.registry == 'homeassistant'
+53 -53
View File
@@ -22,7 +22,7 @@ on:
env:
CACHE_VERSION: 3
PIP_CACHE_VERSION: 3
HA_SHORT_VERSION: 2022.12
HA_SHORT_VERSION: 2023.1
DEFAULT_PYTHON: 3.9
ALL_PYTHON_VERSIONS: "['3.9', '3.10']"
PRE_COMMIT_CACHE: ~/.cache/pre-commit
@@ -56,7 +56,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Generate partial Python venv restore key
id: generate_python_cache_key
run: >-
@@ -167,16 +167,16 @@ jobs:
- info
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache@v3.2.2
with:
path: venv
key: >-
@@ -191,7 +191,7 @@ jobs:
pip install "$(cat requirements_test.txt | grep pre-commit)"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.11
uses: actions/cache@v3.2.2
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -211,16 +211,16 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -233,7 +233,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -255,7 +255,7 @@ jobs:
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
lint-flake8:
name: Check flake8
@@ -265,16 +265,16 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -287,7 +287,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -312,7 +312,7 @@ jobs:
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*}
lint-isort:
name: Check isort
@@ -322,16 +322,16 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -344,7 +344,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -368,16 +368,16 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -390,7 +390,7 @@ jobs:
exit 1
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
@@ -413,7 +413,7 @@ jobs:
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
- name: Register yamllint problem matcher
run: |
@@ -442,7 +442,7 @@ jobs:
shell: bash
run: |
. venv/bin/activate
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*}
- name: Register check executables problem matcher
run: |
@@ -483,7 +483,7 @@ jobs:
run: |
. venv/bin/activate
shopt -s globstar
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
base:
name: Prepare dependencies
@@ -495,10 +495,10 @@ jobs:
python-version: ${{ fromJSON(needs.info.outputs.python_versions) }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -509,7 +509,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache@v3.2.2
with:
path: venv
key: >-
@@ -517,7 +517,7 @@ jobs:
needs.info.outputs.python_cache_key }}
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.0.11
uses: actions/cache@v3.2.2
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -559,16 +559,16 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -592,16 +592,16 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -626,16 +626,16 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -671,16 +671,16 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -720,16 +720,16 @@ jobs:
name: Run pip check ${{ matrix.python-version }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: >-
@@ -775,16 +775,16 @@ jobs:
bluez \
ffmpeg
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -898,16 +898,16 @@ jobs:
ffmpeg \
libmariadb-dev-compat
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache@v3.0.11
uses: actions/cache/restore@v3.2.2
with:
path: venv
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
@@ -970,7 +970,7 @@ jobs:
- pytest
steps:
- name: Check out code from GitHub
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Download all coverage artifacts
uses: actions/download-artifact@v3
- name: Upload coverage to Codecov (full coverage)
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
if: github.repository_owner == 'home-assistant'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v3
- uses: dessant/lock-threads@v4.0.0
with:
github-token: ${{ github.token }}
issue-inactive-days: "30"
+3 -3
View File
@@ -17,7 +17,7 @@ jobs:
# - No PRs marked as no-stale
# - No issues marked as no-stale or help-wanted
- name: 90 days stale issues & PRs policy
uses: actions/stale@v6.0.1
uses: actions/stale@v7.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 90
@@ -54,7 +54,7 @@ jobs:
# - No PRs marked as no-stale or new-integrations
# - No issues (-1)
- name: 30 days stale PRs policy
uses: actions/stale@v6.0.1
uses: actions/stale@v7.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 30
@@ -79,7 +79,7 @@ jobs:
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Needs more information stale issues policy
uses: actions/stale@v6.0.1
uses: actions/stale@v7.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
only-labels: "needs-more-information"
+4 -4
View File
@@ -21,10 +21,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -40,10 +40,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.4.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
+3 -3
View File
@@ -22,7 +22,7 @@ jobs:
architectures: ${{ steps.info.outputs.architectures }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Get information
id: info
@@ -79,7 +79,7 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Download env_file
uses: actions/download-artifact@v3
@@ -116,7 +116,7 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v3.1.0
uses: actions/checkout@v3.2.0
- name: Download env_file
uses: actions/download-artifact@v3
+4 -5
View File
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/asottile/pyupgrade
rev: v3.2.2
rev: v3.3.1
hooks:
- id: pyupgrade
args: [--py39-plus]
@@ -12,11 +12,10 @@ repos:
- --in-place
- --remove-all-unused-imports
- repo: https://github.com/psf/black
rev: 22.10.0
rev: 22.12.0
hooks:
- id: black
args:
- --safe
- --quiet
files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.py$
- repo: https://github.com/codespell-project/codespell
@@ -24,7 +23,7 @@ repos:
hooks:
- id: codespell
args:
- --ignore-words-list=additionals,alot,ba,bre,bund,datas,dof,dur,ether,farenheit,falsy,fo,haa,hass,hist,iam,iff,iif,incomfort,ines,ist,lightsensor,mut,nam,nd,pres,pullrequests,referer,resset,rime,ser,serie,sur,te,technik,ue,uint,unsecure,visability,wan,wanna,withing,zar
- --ignore-words-list=additionals,alle,alot,ba,bre,bund,datas,dof,dur,ether,farenheit,falsy,fo,haa,hass,hist,iam,iff,iif,incomfort,ines,ist,lightsensor,mut,nam,nd,pres,pullrequests,referer,resset,rime,ser,serie,sur,te,technik,ue,uint,unsecure,visability,wan,wanna,withing,zar
- --skip="./.*,*.csv,*.json"
- --quiet-level=2
exclude_types: [csv, json]
@@ -52,7 +51,7 @@ repos:
- --configfile=tests/bandit.yaml
files: ^(homeassistant|script|tests)/.+\.py$
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
rev: 5.11.4
hooks:
- id: isort
- repo: https://github.com/pre-commit/pre-commit-hooks
+14 -1
View File
@@ -56,6 +56,7 @@ homeassistant.components.amazon_polly.*
homeassistant.components.ambient_station.*
homeassistant.components.amcrest.*
homeassistant.components.ampio.*
homeassistant.components.analytics.*
homeassistant.components.anthemav.*
homeassistant.components.aqualogic.*
homeassistant.components.aseko_pool_live.*
@@ -92,6 +93,7 @@ homeassistant.components.device_tracker.*
homeassistant.components.devolo_home_control.*
homeassistant.components.devolo_home_network.*
homeassistant.components.dhcp.*
homeassistant.components.diagnostics.*
homeassistant.components.dlna_dmr.*
homeassistant.components.dnsip.*
homeassistant.components.dsmr.*
@@ -126,9 +128,15 @@ homeassistant.components.google_sheets.*
homeassistant.components.greeneye_monitor.*
homeassistant.components.group.*
homeassistant.components.guardian.*
homeassistant.components.hardkernel.*
homeassistant.components.hardware.*
homeassistant.components.here_travel_time.*
homeassistant.components.history.*
homeassistant.components.homeassistant.triggers.event
homeassistant.components.homeassistant_alerts.*
homeassistant.components.homeassistant_hardware.*
homeassistant.components.homeassistant_sky_connect.*
homeassistant.components.homeassistant_yellow.*
homeassistant.components.homekit
homeassistant.components.homekit.accessories
homeassistant.components.homekit.aidmanager
@@ -152,8 +160,8 @@ homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.hyperion.*
homeassistant.components.ibeacon.*
homeassistant.components.image.*
homeassistant.components.image_processing.*
homeassistant.components.image_upload.*
homeassistant.components.input_button.*
homeassistant.components.input_select.*
homeassistant.components.integration.*
@@ -179,6 +187,7 @@ homeassistant.components.logger.*
homeassistant.components.lookin.*
homeassistant.components.luftdaten.*
homeassistant.components.mailbox.*
homeassistant.components.mastodon.*
homeassistant.components.matter.*
homeassistant.components.media_player.*
homeassistant.components.media_source.*
@@ -218,10 +227,12 @@ homeassistant.components.powerwall.*
homeassistant.components.proximity.*
homeassistant.components.prusalink.*
homeassistant.components.pure_energie.*
homeassistant.components.purpleair.*
homeassistant.components.pvoutput.*
homeassistant.components.qnap_qsw.*
homeassistant.components.radarr.*
homeassistant.components.rainmachine.*
homeassistant.components.raspberry_pi.*
homeassistant.components.rdw.*
homeassistant.components.recollect_waste.*
homeassistant.components.recorder.*
@@ -246,6 +257,7 @@ homeassistant.components.sensirion_ble.*
homeassistant.components.sensor.*
homeassistant.components.senz.*
homeassistant.components.shelly.*
homeassistant.components.simplepush.*
homeassistant.components.simplisafe.*
homeassistant.components.skybell.*
homeassistant.components.slack.*
@@ -253,6 +265,7 @@ homeassistant.components.sleepiq.*
homeassistant.components.smhi.*
homeassistant.components.snooz.*
homeassistant.components.sonarr.*
homeassistant.components.speedtestdotnet.*
homeassistant.components.ssdp.*
homeassistant.components.statistics.*
homeassistant.components.steamist.*
+22 -13
View File
@@ -55,6 +55,8 @@ build.json @home-assistant/supervisor
/tests/components/airtouch4/ @LonePurpleWolf
/homeassistant/components/airvisual/ @bachya
/tests/components/airvisual/ @bachya
/homeassistant/components/airvisual_pro/ @bachya
/tests/components/airvisual_pro/ @bachya
/homeassistant/components/airzone/ @Noltari
/tests/components/airzone/ @Noltari
/homeassistant/components/aladdin_connect/ @mkmer
@@ -428,13 +430,15 @@ build.json @home-assistant/supervisor
/tests/components/google/ @allenporter
/homeassistant/components/google_assistant/ @home-assistant/cloud
/tests/components/google_assistant/ @home-assistant/cloud
/homeassistant/components/google_assistant_sdk/ @tronikos
/tests/components/google_assistant_sdk/ @tronikos
/homeassistant/components/google_cloud/ @lufton
/homeassistant/components/google_sheets/ @tkdrob
/tests/components/google_sheets/ @tkdrob
/homeassistant/components/google_travel_time/ @eifinger
/tests/components/google_travel_time/ @eifinger
/homeassistant/components/govee_ble/ @bdraco
/tests/components/govee_ble/ @bdraco
/homeassistant/components/govee_ble/ @bdraco @PierreAronnax
/tests/components/govee_ble/ @bdraco @PierreAronnax
/homeassistant/components/gpsd/ @fabaff
/homeassistant/components/gree/ @cmroche
/tests/components/gree/ @cmroche
@@ -525,10 +529,10 @@ build.json @home-assistant/supervisor
/tests/components/icloud/ @Quentame @nzapponi
/homeassistant/components/ign_sismologia/ @exxamalte
/tests/components/ign_sismologia/ @exxamalte
/homeassistant/components/image/ @home-assistant/core
/tests/components/image/ @home-assistant/core
/homeassistant/components/image_processing/ @home-assistant/core
/tests/components/image_processing/ @home-assistant/core
/homeassistant/components/image_upload/ @home-assistant/core
/tests/components/image_upload/ @home-assistant/core
/homeassistant/components/incomfort/ @zxdavb
/homeassistant/components/influxdb/ @mdegat01
/tests/components/influxdb/ @mdegat01
@@ -666,8 +670,8 @@ build.json @home-assistant/supervisor
/tests/components/lyric/ @timmo001
/homeassistant/components/mastodon/ @fabaff
/homeassistant/components/matrix/ @tinloaf
/homeassistant/components/matter/ @MartinHjelmare @marcelveldt
/tests/components/matter/ @MartinHjelmare @marcelveldt
/homeassistant/components/matter/ @home-assistant/matter
/tests/components/matter/ @home-assistant/matter
/homeassistant/components/mazda/ @bdr99
/tests/components/mazda/ @bdr99
/homeassistant/components/meater/ @Sotolotl @emontnemery
@@ -798,8 +802,8 @@ build.json @home-assistant/supervisor
/tests/components/number/ @home-assistant/core @Shulyaka
/homeassistant/components/nut/ @bdraco @ollo69
/tests/components/nut/ @bdraco @ollo69
/homeassistant/components/nws/ @MatthewFlamm
/tests/components/nws/ @MatthewFlamm
/homeassistant/components/nws/ @MatthewFlamm @kamiyo
/tests/components/nws/ @MatthewFlamm @kamiyo
/homeassistant/components/nzbget/ @chriscla
/tests/components/nzbget/ @chriscla
/homeassistant/components/obihai/ @dshokouhi
@@ -839,8 +843,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/oralb/ @bdraco
/tests/components/oralb/ @bdraco
/homeassistant/components/oru/ @bvlaicu
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne
/tests/components/overkiz/ @imicknl @vlebourl @tetienne
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
/tests/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
/homeassistant/components/ovo_energy/ @timmo001
/tests/components/ovo_energy/ @timmo001
/homeassistant/components/p1_monitor/ @klaasnicolaas
@@ -890,6 +894,8 @@ build.json @home-assistant/supervisor
/tests/components/ps4/ @ktnrg45
/homeassistant/components/pure_energie/ @klaasnicolaas
/tests/components/pure_energie/ @klaasnicolaas
/homeassistant/components/purpleair/ @bachya
/tests/components/purpleair/ @bachya
/homeassistant/components/push/ @dgomes
/tests/components/push/ @dgomes
/homeassistant/components/pushbullet/ @engrbm87
@@ -919,7 +925,8 @@ build.json @home-assistant/supervisor
/tests/components/radio_browser/ @frenck
/homeassistant/components/radiotherm/ @bdraco @vinnyfuria
/tests/components/radiotherm/ @bdraco @vinnyfuria
/homeassistant/components/rainbird/ @konikvranik
/homeassistant/components/rainbird/ @konikvranik @allenporter
/tests/components/rainbird/ @konikvranik @allenporter
/homeassistant/components/raincloud/ @vanstinator
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
/tests/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
@@ -940,6 +947,8 @@ build.json @home-assistant/supervisor
/tests/components/remote/ @home-assistant/core
/homeassistant/components/renault/ @epenet
/tests/components/renault/ @epenet
/homeassistant/components/reolink/ @starkillerOG @JimStar
/tests/components/reolink/ @starkillerOG @JimStar
/homeassistant/components/repairs/ @home-assistant/core
/tests/components/repairs/ @home-assistant/core
/homeassistant/components/repetier/ @MTrab @ShadowBr0ther
@@ -1127,8 +1136,8 @@ build.json @home-assistant/supervisor
/tests/components/switch_as_x/ @home-assistant/core
/homeassistant/components/switchbee/ @jafar-atili
/tests/components/switchbee/ @jafar-atili
/homeassistant/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
/tests/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
/homeassistant/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/tests/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/homeassistant/components/switcher_kis/ @tomerfi @thecode
/tests/components/switcher_kis/ @tomerfi @thecode
/homeassistant/components/switchmate/ @danielhiversen @qiz-li
+3 -2
View File
@@ -87,7 +87,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
async def async_create_flow(
self,
handler_key: Any,
handler_key: str,
*,
context: dict[str, Any] | None = None,
data: dict[str, Any] | None = None,
@@ -534,7 +534,8 @@ class AuthManager:
)
if provider is None:
raise InvalidProvider(
f"Auth provider {refresh_token.credential.auth_provider_type}, {refresh_token.credential.auth_provider_id} not available"
f"Auth provider {refresh_token.credential.auth_provider_type},"
f" {refresh_token.credential.auth_provider_id} not available"
)
return provider
+4 -2
View File
@@ -449,8 +449,10 @@ class AuthStore:
created_at = dt_util.parse_datetime(rt_dict["created_at"])
if created_at is None:
getLogger(__name__).error(
"Ignoring refresh token %(id)s with invalid created_at "
"%(created_at)s for user_id %(user_id)s",
(
"Ignoring refresh token %(id)s with invalid created_at "
"%(created_at)s for user_id %(user_id)s"
),
rt_dict,
)
continue
+1 -3
View File
@@ -116,9 +116,7 @@ class SetupFlow(data_entry_flow.FlowHandler):
if user_input:
result = await self._auth_module.async_setup_user(self._user_id, user_input)
return self.async_create_entry(
title=self._auth_module.name, data={"result": result}
)
return self.async_create_entry(data={"result": result})
return self.async_show_form(
step_id="init", data_schema=self._setup_schema, errors=errors
+2 -2
View File
@@ -26,7 +26,7 @@ from . import (
SetupFlow,
)
REQUIREMENTS = ["pyotp==2.7.0"]
REQUIREMENTS = ["pyotp==2.8.0"]
CONF_MESSAGE = "message"
@@ -330,7 +330,7 @@ class NotifySetupFlow(SetupFlow):
self._user_id,
{"notify_service": self._notify_service, "target": self._target},
)
return self.async_create_entry(title=self._auth_module.name, data={})
return self.async_create_entry(data={})
errors["base"] = "invalid_code"
+6 -6
View File
@@ -19,7 +19,7 @@ from . import (
SetupFlow,
)
REQUIREMENTS = ["pyotp==2.7.0", "PyQRCode==1.2.1"]
REQUIREMENTS = ["pyotp==2.8.0", "PyQRCode==1.2.1"]
CONFIG_SCHEMA = MULTI_FACTOR_AUTH_MODULE_SCHEMA.extend({}, extra=vol.PREVENT_EXTRA)
@@ -47,8 +47,10 @@ def _generate_qr_code(data: str) -> str:
.decode("ascii")
.replace("\n", "")
.replace(
'<?xml version="1.0" encoding="UTF-8"?>'
'<svg xmlns="http://www.w3.org/2000/svg"',
(
'<?xml version="1.0" encoding="UTF-8"?>'
'<svg xmlns="http://www.w3.org/2000/svg"'
),
"<svg",
)
)
@@ -206,9 +208,7 @@ class TotpSetupFlow(SetupFlow):
result = await self._auth_module.async_setup_user(
self._user_id, {"secret": self._ota_secret}
)
return self.async_create_entry(
title=self._auth_module.name, data={"result": result}
)
return self.async_create_entry(data={"result": result})
errors["base"] = "invalid_code"
+1 -1
View File
@@ -284,4 +284,4 @@ class LoginFlow(data_entry_flow.FlowHandler):
async def async_finish(self, flow_result: Any) -> FlowResult:
"""Handle the pass of login flow."""
return self.async_create_entry(title=self._auth_provider.name, data=flow_result)
return self.async_create_entry(data=flow_result)
+10 -6
View File
@@ -93,9 +93,11 @@ class Data:
self.is_legacy = True
logging.getLogger(__name__).warning(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that are case-insensitive"
"equivalent. Please change the username: '%s'.",
(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that are case-insensitive"
"equivalent. Please change the username: '%s'."
),
username,
)
@@ -108,9 +110,11 @@ class Data:
self.is_legacy = True
logging.getLogger(__name__).warning(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that start or end in a "
"space. Please change the username: '%s'.",
(
"Home Assistant auth provider is running in legacy mode "
"because we detected usernames that start or end in a "
"space. Please change the username: '%s'."
),
username,
)
+1 -2
View File
@@ -284,8 +284,7 @@ async def async_from_config_dict(
return None
except HomeAssistantError:
_LOGGER.error(
"Home Assistant core failed to initialize. "
"Further initialization aborted"
"Home Assistant core failed to initialize. Further initialization aborted"
)
return None
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "airvisual",
"name": "AirVisual",
"integrations": ["airvisual", "airvisual_pro"]
}
+1
View File
@@ -3,6 +3,7 @@
"name": "Google",
"integrations": [
"google_assistant",
"google_assistant_sdk",
"google_cloud",
"google_domains",
"google_maps",
@@ -28,7 +28,7 @@
"password": "Passwort",
"username": "E-Mail"
},
"title": "Gib deine Abode-Anmeldeinformationen ein"
"title": "Gib deine Abode Anmeldeinformationen ein"
}
}
}
@@ -5,7 +5,7 @@
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
"invalid_mfa_code": "C\u00f3digo MFA inv\u00e1lido"
},
@@ -19,14 +19,14 @@
"reauth_confirm": {
"data": {
"password": "Palavra-passe",
"username": "Email"
"username": ""
},
"title": "Preencha as informa\u00e7\u00f5es de login de Abode"
},
"user": {
"data": {
"password": "Palavra-passe",
"username": "Email"
"username": ""
},
"title": "Preencha as informa\u00e7\u00f5es de login de Abode"
}
+62 -63
View File
@@ -14,17 +14,13 @@ from homeassistant.components.sensor import (
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONCENTRATION_PARTS_PER_CUBIC_METER,
LENGTH_FEET,
LENGTH_INCHES,
LENGTH_METERS,
LENGTH_MILLIMETERS,
PERCENTAGE,
SPEED_KILOMETERS_PER_HOUR,
SPEED_MILES_PER_HOUR,
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
TIME_HOURS,
UV_INDEX,
UnitOfLength,
UnitOfPrecipitationDepth,
UnitOfSpeed,
UnitOfTemperature,
UnitOfTime,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -65,7 +61,8 @@ class AccuWeatherSensorDescription(
"""Class describing AccuWeather sensor entities."""
attr_fn: Callable[[dict[str, Any]], dict[str, StateType]] = lambda _: {}
unit_fn: Callable[[bool], str | None] = lambda _: None
metric_unit: str | None = None
us_customary_unit: str | None = None
FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
@@ -74,7 +71,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:weather-cloudy",
name="Cloud cover day",
entity_registry_enabled_default=False,
unit_fn=lambda _: PERCENTAGE,
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda data, _: cast(int, data),
),
AccuWeatherSensorDescription(
@@ -82,7 +79,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:weather-cloudy",
name="Cloud cover night",
entity_registry_enabled_default=False,
unit_fn=lambda _: PERCENTAGE,
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda data, _: cast(int, data),
),
AccuWeatherSensorDescription(
@@ -90,7 +87,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:grass",
name="Grass pollen",
entity_registry_enabled_default=False,
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
),
@@ -98,7 +95,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
key="HoursOfSun",
icon="mdi:weather-partly-cloudy",
name="Hours of sun",
unit_fn=lambda _: TIME_HOURS,
native_unit_of_measurement=UnitOfTime.HOURS,
value_fn=lambda data, _: cast(float, data),
),
AccuWeatherSensorDescription(
@@ -106,7 +103,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:blur",
name="Mold pollen",
entity_registry_enabled_default=False,
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
),
@@ -122,7 +119,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
key="Ragweed",
icon="mdi:sprout",
name="Ragweed pollen",
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
@@ -131,14 +128,16 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
key="RealFeelTemperatureMax",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature max",
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
),
AccuWeatherSensorDescription(
key="RealFeelTemperatureMin",
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature min",
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -146,7 +145,8 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature shade max",
entity_registry_enabled_default=False,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -154,28 +154,29 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature shade min",
entity_registry_enabled_default=False,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityDay",
icon="mdi:weather-lightning",
name="Thunderstorm probability day",
unit_fn=lambda _: PERCENTAGE,
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda data, _: cast(int, data),
),
AccuWeatherSensorDescription(
key="ThunderstormProbabilityNight",
icon="mdi:weather-lightning",
name="Thunderstorm probability night",
unit_fn=lambda _: PERCENTAGE,
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda data, _: cast(int, data),
),
AccuWeatherSensorDescription(
key="Tree",
icon="mdi:tree-outline",
name="Tree pollen",
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
entity_registry_enabled_default=False,
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
@@ -184,53 +185,45 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
key="UVIndex",
icon="mdi:weather-sunny",
name="UV index",
unit_fn=lambda _: UV_INDEX,
native_unit_of_measurement=UV_INDEX,
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
),
AccuWeatherSensorDescription(
key="WindGustDay",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind gust day",
entity_registry_enabled_default=False,
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
),
AccuWeatherSensorDescription(
key="WindGustNight",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind gust night",
entity_registry_enabled_default=False,
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
),
AccuWeatherSensorDescription(
key="WindDay",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind day",
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
),
AccuWeatherSensorDescription(
key="WindNight",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind night",
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
),
@@ -243,7 +236,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="Apparent temperature",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -252,7 +246,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:weather-fog",
name="Cloud ceiling",
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: LENGTH_METERS if metric else LENGTH_FEET,
metric_unit=UnitOfLength.METERS,
us_customary_unit=UnitOfLength.FEET,
value_fn=lambda data, unit: round(cast(float, data[unit][ATTR_VALUE])),
),
AccuWeatherSensorDescription(
@@ -261,7 +256,7 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="Cloud cover",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda _: PERCENTAGE,
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda data, _: cast(int, data),
),
AccuWeatherSensorDescription(
@@ -270,7 +265,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="Dew point",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -278,7 +274,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
device_class=SensorDeviceClass.TEMPERATURE,
name="RealFeel temperature",
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -287,23 +284,25 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="RealFeel temperature shade",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
key="Precipitation",
icon="mdi:weather-rainy",
device_class=SensorDeviceClass.PRECIPITATION,
name="Precipitation",
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: LENGTH_MILLIMETERS if metric else LENGTH_INCHES,
metric_unit=UnitOfPrecipitationDepth.MILLIMETERS,
us_customary_unit=UnitOfPrecipitationDepth.INCHES,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
attr_fn=lambda data: {"type": data["PrecipitationType"]},
),
AccuWeatherSensorDescription(
key="PressureTendency",
device_class="accuweather__pressure_tendency",
icon="mdi:gauge",
name="Pressure tendency",
translation_key="pressure_tendency",
value_fn=lambda data, _: cast(str, data["LocalizedText"]).lower(),
),
AccuWeatherSensorDescription(
@@ -311,7 +310,7 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
icon="mdi:weather-sunny",
name="UV index",
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda _: UV_INDEX,
native_unit_of_measurement=UV_INDEX,
value_fn=lambda data, _: cast(int, data),
attr_fn=lambda data: {ATTR_LEVEL: data["UVIndexText"]},
),
@@ -321,7 +320,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="Wet bulb temperature",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
@@ -330,30 +330,27 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
name="Wind chill temperature",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
metric_unit=UnitOfTemperature.CELSIUS,
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
key="Wind",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind",
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, unit: cast(float, data[ATTR_SPEED][unit][ATTR_VALUE]),
),
AccuWeatherSensorDescription(
key="WindGust",
device_class=SensorDeviceClass.WIND_SPEED,
icon="mdi:weather-windy",
name="Wind gust",
entity_registry_enabled_default=False,
state_class=SensorStateClass.MEASUREMENT,
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
if metric
else SPEED_MILES_PER_HOUR,
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
value_fn=lambda data, unit: cast(float, data[ATTR_SPEED][unit][ATTR_VALUE]),
),
)
@@ -413,13 +410,15 @@ class AccuWeatherSensor(
self._attr_unique_id = (
f"{coordinator.location_key}-{description.key}".lower()
)
self._attr_native_unit_of_measurement = description.native_unit_of_measurement
if self.coordinator.hass.config.units is METRIC_SYSTEM:
self._unit_system = API_METRIC
if metric_unit := description.metric_unit:
self._attr_native_unit_of_measurement = metric_unit
else:
self._unit_system = API_IMPERIAL
self._attr_native_unit_of_measurement = self.entity_description.unit_fn(
self.coordinator.hass.config.units is METRIC_SYSTEM
)
if us_customary_unit := description.us_customary_unit:
self._attr_native_unit_of_measurement = us_customary_unit
self._attr_device_info = coordinator.device_info
if forecast_day is not None:
self.forecast_day = forecast_day
@@ -22,6 +22,17 @@
"single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]"
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"steady": "Steady",
"rising": "Rising",
"falling": "Falling"
}
}
}
},
"options": {
"step": {
"init": {
@@ -1,9 +0,0 @@
{
"state": {
"accuweather__pressure_tendency": {
"steady": "Steady",
"rising": "Rising",
"falling": "Falling"
}
}
}
@@ -4,16 +4,6 @@
"requests_exceeded": "\u062a\u0645 \u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647 \u0645\u0646 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0625\u0644\u0649 Accuweather API. \u0639\u0644\u064a\u0643 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 \u0623\u0648 \u062a\u063a\u064a\u064a\u0631 \u0645\u0641\u062a\u0627\u062d API."
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "\u0627\u0644\u0646\u0634\u0631\u0629 \u0627\u0644\u062c\u0648\u064a\u0629"
},
"description": "\u0646\u0638\u0631\u064b\u0627 \u0644\u0642\u064a\u0648\u062f \u0627\u0644\u0625\u0635\u062f\u0627\u0631 \u0627\u0644\u0645\u062c\u0627\u0646\u064a \u0645\u0646 \u0645\u0641\u062a\u0627\u062d AccuWeather API \u060c \u0639\u0646\u062f \u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u0646\u0628\u0624 \u0628\u0627\u0644\u0637\u0642\u0633 \u060c \u0633\u064a\u062a\u0645 \u0625\u062c\u0631\u0627\u0621 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0643\u0644 80 \u062f\u0642\u064a\u0642\u0629 \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0643\u0644 40 \u062f\u0642\u064a\u0642\u0629."
}
}
},
"system_health": {
"info": {
"can_reach_server": "\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u062e\u0627\u062f\u0645 AccuWeather",
@@ -18,6 +18,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\u041f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435",
"rising": "\u041f\u043e\u0432\u0438\u0448\u0435\u043d\u0438\u0435",
"steady": "\u0421\u0442\u0430\u0431\u0438\u043b\u043d\u043e"
}
}
}
},
"options": {
"step": {
"init": {
@@ -25,11 +36,6 @@
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u0442\u043e"
},
"description": "\u041f\u043e\u0440\u0430\u0434\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0442\u0430 \u043d\u0430 \u0431\u0435\u0437\u043f\u043b\u0430\u0442\u043d\u0430\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 API \u043a\u043b\u044e\u0447\u0430 \u043d\u0430 AccuWeather, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0442\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u0442\u043e, \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u0438 \u0449\u0435 \u0441\u0435 \u0438\u0437\u0432\u044a\u0440\u0448\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 80 \u043c\u0438\u043d\u0443\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 40 \u043c\u0438\u043d\u0443\u0442\u0438."
},
"user": {
"data": {
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u0442\u043e"
}
}
}
}
@@ -22,18 +22,24 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Disminuint",
"rising": "Augmentant",
"steady": "Estable"
}
}
}
},
"options": {
"step": {
"init": {
"data": {
"forecast": "Previsi\u00f3 meteorol\u00f2gica"
}
},
"user": {
"data": {
"forecast": "Previsi\u00f3 meteorol\u00f2gica"
},
"description": "Per culpa de les limitacions de la versi\u00f3 gratu\u00efta l'API d'AccuWeather, quan habilitis la previsi\u00f3 meteorol\u00f2gica, les actualitzacions de dades es faran cada 80 minuts en comptes de cada 40."
"description": "Per culpa de les limitacions de la versi\u00f3 gratu\u00efta de l'API d'AccuWeather, quan activis la previsi\u00f3 meteorol\u00f2gica, les actualitzacions de dades es faran cada 80 minuts en comptes de cada 40."
}
}
},
@@ -19,6 +19,15 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"steady": "Stabiln\u00ed"
}
}
}
},
"options": {
"step": {
"init": {
@@ -26,12 +35,6 @@
"forecast": "P\u0159edpov\u011b\u010f po\u010das\u00ed"
},
"description": "Vzhledem k omezen\u00edm bezplatn\u00e9 verze kl\u00ed\u010de AccuWeather API, kdy\u017e povol\u00edte p\u0159edpov\u011b\u010f po\u010das\u00ed, aktualizace dat se budou prov\u00e1d\u011bt ka\u017ed\u00fdch 80 minut m\u00edsto ka\u017ed\u00fdch 40 minut."
},
"user": {
"data": {
"forecast": "P\u0159edpov\u011b\u010f po\u010das\u00ed"
},
"description": "Kdy\u017e povol\u00edte p\u0159edpov\u011b\u010f po\u010das\u00ed, budou aktualizace dat prov\u00e1d\u011bny ka\u017ed\u00fdch 80 minut nam\u00edsto 40 minut z d\u016fvodu omezen\u00ed bezplatn\u00e9 verze AccuWeather."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Fallend",
"rising": "Steigend",
"steady": "Stetig"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Wettervorhersage"
},
"description": "Aufgrund der Einschr\u00e4nkungen der kostenlosen Version des AccuWeather API-Schl\u00fcssels werden bei aktivierter Wettervorhersage Datenaktualisierungen alle 80 Minuten statt alle 40 Minuten durchgef\u00fchrt."
},
"user": {
"data": {
"forecast": "Wettervorhersage"
},
"description": "Aufgrund der Einschr\u00e4nkungen der kostenlosen Version des AccuWeather-API-Schl\u00fcssels werden bei aktivierter Wettervorhersage Datenaktualisierungen alle 80 Minuten statt alle 40 Minuten durchgef\u00fchrt."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\u03a0\u03c4\u03ce\u03c3\u03b7",
"rising": "\u0391\u03c5\u03be\u03b1\u03bd\u03cc\u03bc\u03b5\u03bd\u03b7",
"steady": "\u03a3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "\u03a0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd"
},
"description": "\u039b\u03cc\u03b3\u03c9 \u03c4\u03c9\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b4\u03c9\u03c1\u03b5\u03ac\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd AccuWeather API, \u03cc\u03c4\u03b1\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd, \u03bf\u03b9 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03b8\u03b1 \u03b5\u03ba\u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03ba\u03ac\u03b8\u03b5 80 \u03bb\u03b5\u03c0\u03c4\u03ac \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 40 \u03bb\u03b5\u03c0\u03c4\u03ac."
},
"user": {
"data": {
"forecast": "\u03a0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd"
},
"description": "\u039b\u03cc\u03b3\u03c9 \u03c4\u03c9\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b4\u03c9\u03c1\u03b5\u03ac\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd API \u03c4\u03bf\u03c5 AccuWeather, \u03cc\u03c4\u03b1\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd, \u03bf\u03b9 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03b8\u03b1 \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03ba\u03ac\u03b8\u03b5 80 \u03bb\u03b5\u03c0\u03c4\u03ac \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 40 \u03bb\u03b5\u03c0\u03c4\u03ac."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Falling",
"rising": "Rising",
"steady": "Steady"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Weather forecast"
},
"description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes."
},
"user": {
"data": {
"forecast": "Weather forecast"
},
"description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes."
}
}
},
@@ -12,16 +12,6 @@
"requests_exceeded": "Se super\u00f3 el n\u00famero permitido de solicitudes a la API de Accuweather. Tiene que esperar o cambiar la clave de API."
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Pron\u00f3stico del tiempo"
},
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilita el pron\u00f3stico del tiempo, las actualizaciones de datos se realizar\u00e1n cada 64 minutos en lugar de cada 32 minutos."
}
}
},
"system_health": {
"info": {
"can_reach_server": "Llegar al servidor de AccuWeather",
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Descendente",
"rising": "Creciente",
"steady": "Estable"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Previsi\u00f3n meteorol\u00f3gica"
},
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilitas la previsi\u00f3n meteorol\u00f3gica, las actualizaciones de datos se realizar\u00e1n cada 80 minutos en lugar de cada 40 minutos."
},
"user": {
"data": {
"forecast": "Previsi\u00f3n meteorol\u00f3gica"
},
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilitas la previsi\u00f3n meteorol\u00f3gica, las actualizaciones de datos se realizar\u00e1n cada 80 minutos en lugar de cada 40 minutos."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Langev",
"rising": "T\u00f5usev",
"steady": "\u00dchtlane"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Ilmateade"
},
"description": "AccuWeather API tasuta versioonis toimub ilmaennustuse lubamisel andmete v\u00e4rskendamine iga 80 minuti j\u00e4rel (muidu 40 minutit)."
},
"user": {
"data": {
"forecast": "Ilmateade"
},
"description": "AccuWeather API tasuta versioonis toimub ilmaennustuse lubamisel andmete v\u00e4rskendamine iga 80 minuti j\u00e4rel (muidu 40 minutit)."
}
}
},
@@ -28,12 +28,6 @@
"data": {
"forecast": "Pr\u00e9visions m\u00e9t\u00e9orologiques"
}
},
"user": {
"data": {
"forecast": "Pr\u00e9visions m\u00e9t\u00e9orologiques"
},
"description": "En raison des limitations de la version gratuite de la cl\u00e9 API AccuWeather, lorsque vous activez les pr\u00e9visions m\u00e9t\u00e9orologiques, les mises \u00e0 jour des donn\u00e9es seront effectu\u00e9es toutes les 64 minutes au lieu de toutes les 32 minutes."
}
}
},
@@ -22,9 +22,20 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\u05e9\u05d5\u05e7\u05e2\u05ea",
"rising": "\u05d6\u05d5\u05e8\u05d7\u05ea",
"steady": "\u05d9\u05e6\u05d9\u05d1"
}
}
}
},
"options": {
"step": {
"user": {
"init": {
"data": {
"forecast": "\u05ea\u05d7\u05d6\u05d9\u05ea \u05de\u05d6\u05d2 \u05d4\u05d0\u05d5\u05d5\u05d9\u05e8"
},
@@ -22,13 +22,24 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Cs\u00f6kken\u0151",
"rising": "Emelked\u0151",
"steady": "\u00c1lland\u00f3"
}
}
}
},
"options": {
"step": {
"user": {
"init": {
"data": {
"forecast": "Id\u0151j\u00e1r\u00e1s el\u0151rejelz\u00e9s"
},
"description": "Az AccuWeather API kulcs ingyenes verzi\u00f3j\u00e1nak korl\u00e1tai miatt, amikor enged\u00e9lyezi az id\u0151j\u00e1r\u00e1s -el\u0151rejelz\u00e9st, az adatfriss\u00edt\u00e9seket 40 percenk\u00e9nt 80 percenk\u00e9nt hajtj\u00e1k v\u00e9gre."
"description": "Az AccuWeather API-kulcs ingyenes verzi\u00f3j\u00e1nak korl\u00e1tai miatt az id\u0151j\u00e1r\u00e1s-el\u0151rejelz\u00e9s enged\u00e9lyez\u00e9sekor az adatok friss\u00edt\u00e9se 40 perc helyett 80 percenk\u00e9nt t\u00f6rt\u00e9nik."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Turun",
"rising": "Naik",
"steady": "Tetap"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Prakiraan cuaca"
},
"description": "Karena keterbatasan versi gratis kunci API AccuWeather, ketika Anda mengaktifkan prakiraan cuaca, pembaruan data akan dilakukan setiap 80 menit, bukan setiap 40 menit."
},
"user": {
"data": {
"forecast": "Prakiraan cuaca"
},
"description": "Karena keterbatasan versi gratis kunci API AccuWeather, ketika Anda mengaktifkan prakiraan cuaca, pembaruan data akan dilakukan setiap 80 menit, bukan setiap 40 menit."
}
}
},
@@ -22,13 +22,24 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "In diminuzione",
"rising": "In aumento",
"steady": "Stabile"
}
}
}
},
"options": {
"step": {
"user": {
"init": {
"data": {
"forecast": "Previsioni meteo"
"forecast": "Previsioni del tempo"
},
"description": "A causa delle limitazioni della versione gratuita della chiave API AccuWeather, quando si abilitano le previsioni del tempo, gli aggiornamenti dei dati verranno eseguiti ogni 80 minuti invece che ogni 40."
"description": "A causa delle limitazioni della versione gratuita della chiave API AccuWeather, quando abiliti le previsioni del tempo, gli aggiornamenti dei dati verranno eseguiti ogni 80 minuti anzich\u00e9 ogni 40 minuti."
}
}
},
@@ -22,16 +22,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "\u5929\u6c17\u4e88\u5831"
},
"description": "\u7121\u6599\u7248\u306eAccuWeather API\u30ad\u30fc\u306e\u5236\u9650\u306b\u3088\u308a\u3001\u5929\u6c17\u4e88\u5831\u3092\u6709\u52b9\u306b\u3057\u305f\u5834\u5408\u3001\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306f40\u5206\u6bce\u3067\u306f\u306a\u304f80\u5206\u6bce\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002"
}
}
},
"system_health": {
"info": {
"can_reach_server": "AccuWeather\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b9",
@@ -19,13 +19,24 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\ud558\uac15",
"rising": "\uc0c1\uc2b9",
"steady": "\uc548\uc815\ub428"
}
}
}
},
"options": {
"step": {
"user": {
"init": {
"data": {
"forecast": "\ub0a0\uc528 \uc608\ubcf4"
},
"description": "\ubb34\ub8cc \ubc84\uc804\uc758 AccuWeather API \ud0a4\ub85c \uc77c\uae30\uc608\ubcf4\ub97c \ud65c\uc131\ud654\ud55c \uacbd\uc6b0 \uc81c\ud55c\uc0ac\ud56d\uc73c\ub85c \uc778\ud574 \uc5c5\ub370\uc774\ud2b8\ub294 40 \ubd84\uc774 \uc544\ub2cc 80 \ubd84\ub9c8\ub2e4 \uc218\ud589\ub429\ub2c8\ub2e4."
"description": "\ubb34\ub8cc \ubc84\uc804 AccuWeather API \ud0a4\uc758 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ub0a0\uc528 \uc608\ubcf4\ub97c \ud65c\uc131\ud654\ud558\uba74 \ub370\uc774\ud130 \uc5c5\ub370\uc774\ud2b8\uac00 40\ubd84\uc774 \uc544\ub2cc 80\ubd84\ub9c8\ub2e4 \uc218\ud589\ub429\ub2c8\ub2e4."
}
}
},
@@ -19,16 +19,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Wieder Pr\u00e9visioun"
},
"description": "Duerch d'Limite vun der Gratis Versioun vun der AccuWeather API, wann d'Wieder Pr\u00e9visoune aktiv\u00e9iert sinn, ginn d'Aktualis\u00e9ierungen all 64 Minutten gemaach, am plaatz vun all 32 Minutten."
}
}
},
"system_health": {
"info": {
"can_reach_server": "AccuWeather Server ereechbar",
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Dalende",
"rising": "Stijgende",
"steady": "Stabiel"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Weersverwachting"
},
"description": "Wanneer je de weersverwachting ingeschakeld zullen updates elke 80 minuten plaatsvinden i.p.v. elke 40 minuten, dit komt door de beperkingen van de gratis versie van de AccuWeather API sleutel."
},
"user": {
"data": {
"forecast": "Weervoorspelling"
},
"description": "Vanwege de beperkingen van de gratis versie van de AccuWeather API-sleutel, worden gegevensupdates elke 64 minuten in plaats van elke 32 minuten uitgevoerd wanneer u weersvoorspelling inschakelt."
}
}
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Fallende",
"rising": "Stiger",
"steady": "Jevn"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "V\u00e6rmelding"
},
"description": "P\u00e5 grunn av begrensningene til gratisversjonen av AccuWeather API-n\u00f8kkelen, n\u00e5r du aktiverer v\u00e6rmelding, vil dataoppdateringer utf\u00f8res hvert 80. minutt i stedet for hvert 40. minutt."
},
"user": {
"data": {
"forecast": "V\u00e6rmelding"
},
"description": "P\u00e5 grunn av begrensningene i den gratis versjonen av AccuWeather API-n\u00f8kkelen, vil dataoppdateringer utf\u00f8res hvert 80. minutt i stedet for hvert 40. minutt n\u00e5r du aktiverer v\u00e6rmelding."
}
}
},
@@ -22,9 +22,20 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "malej\u0105ce",
"rising": "rosn\u0105ce",
"steady": "sta\u0142e"
}
}
}
},
"options": {
"step": {
"user": {
"init": {
"data": {
"forecast": "Prognoza pogody"
},
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Caindo",
"rising": "Ascendente",
"steady": "Est\u00e1vel"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "Previs\u00e3o do tempo"
},
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave API AccuWeather, quando voc\u00ea ativa a previs\u00e3o do tempo, as atualiza\u00e7\u00f5es de dados s\u00e3o realizadas a cada 80 minutos em vez de 40 minutos."
},
"user": {
"data": {
"forecast": "Previs\u00e3o do Tempo"
},
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave da API AccuWeather, quando voc\u00ea habilita a previs\u00e3o do tempo, as atualiza\u00e7\u00f5es de dados ser\u00e3o realizadas a cada 64 minutos em vez de a cada 32 minutos."
}
}
},
@@ -7,7 +7,7 @@
"default": "Alguns sensores n\u00e3o s\u00e3o ativados por defeito. Podem ser ativados no registo da entidade ap\u00f3s a configura\u00e7\u00e3o da integra\u00e7\u00e3o.\nA previs\u00e3o do tempo n\u00e3o est\u00e1 ativada por defeito. Pode ativ\u00e1-la nas op\u00e7\u00f5es de integra\u00e7\u00e3o."
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"invalid_api_key": "Chave de API inv\u00e1lida",
"requests_exceeded": "O n\u00famero permitido de pedidos \u00e0 API do Accuweather foi excedido. \u00c9 necess\u00e1rio aguardar ou alterar a chave API."
},
@@ -22,16 +22,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Previs\u00e3o meteorol\u00f3gica"
},
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave AccuWeather API, quando se activa a previs\u00e3o do tempo, as actualiza\u00e7\u00f5es de dados ser\u00e3o realizadas a cada 80 minutos em vez de a cada 40 minutos."
}
}
},
"system_health": {
"info": {
"can_reach_server": "Alcance o servidor AccuWeather",
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\u041f\u043e\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f",
"rising": "\u041f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f",
"steady": "\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b"
},
"description": "\u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 API AccuWeather, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u043f\u043e\u0433\u043e\u0434\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 80 \u043c\u0438\u043d\u0443\u0442, \u0430 \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 40 \u043c\u0438\u043d\u0443\u0442."
},
"user": {
"data": {
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b"
},
"description": "\u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 API AccuWeather, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u043f\u043e\u0433\u043e\u0434\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 80 \u043c\u0438\u043d\u0443\u0442, \u0430 \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 40 \u043c\u0438\u043d\u0443\u0442."
}
}
},
@@ -2,7 +2,8 @@
"state": {
"accuweather__pressure_tendency": {
"falling": "Klesaj\u00faci",
"rising": "Padaj\u00faci"
"rising": "Padaj\u00faci",
"steady": "Stabiln\u00fd"
}
}
}
@@ -3,6 +3,9 @@
"abort": {
"single_instance_allowed": "U\u017e je nakonfigurovan\u00fd. Mo\u017en\u00e1 len jedna konfigur\u00e1cia."
},
"create_entry": {
"default": "Niektor\u00e9 sn\u00edma\u010de nie s\u00fa predvolene povolen\u00e9. M\u00f4\u017eete ich povoli\u0165 v registri ent\u00edt po konfigur\u00e1cii integr\u00e1cie.\n Predpove\u010f po\u010dasia nie je predvolene zapnut\u00e1. M\u00f4\u017eete to povoli\u0165 v mo\u017enostiach integr\u00e1cie."
},
"error": {
"cannot_connect": "Nepodarilo sa pripoji\u0165",
"invalid_api_key": "Neplatn\u00fd API k\u013e\u00fa\u010d",
@@ -19,17 +22,24 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "Klesaj\u00faci",
"rising": "St\u00fapaj\u00faci",
"steady": "Stabiln\u00fd"
}
}
}
},
"options": {
"step": {
"init": {
"data": {
"forecast": "Predpove\u010f po\u010dasia"
}
},
"user": {
"data": {
"forecast": "Predpove\u010f po\u010dasia"
}
},
"description": "Z d\u00f4vodu obmedzen\u00ed bezplatnej verzie k\u013e\u00fa\u010da AccuWeather API, ke\u010f povol\u00edte predpove\u010f po\u010dasia, aktualiz\u00e1cie \u00fadajov sa bud\u00fa vykon\u00e1va\u0165 ka\u017ed\u00fdch 80 min\u00fat namiesto ka\u017ed\u00fdch 40 min\u00fat."
}
}
},
@@ -22,16 +22,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "V\u00e4derprognos"
},
"description": "P\u00e5 grund av begr\u00e4nsningarna f\u00f6r den kostnadsfria versionen av AccuWeather API-nyckeln, n\u00e4r du aktiverar v\u00e4derprognos, kommer datauppdateringar att utf\u00f6ras var 80:e minut ist\u00e4llet f\u00f6r var 40:e minut."
}
}
},
"system_health": {
"info": {
"can_reach_server": "N\u00e5 AccuWeather-servern",
@@ -22,16 +22,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "Hava Durumu tahmini"
},
"description": "AccuWeather API anahtar\u0131n\u0131n \u00fccretsiz s\u00fcr\u00fcm\u00fcn\u00fcn s\u0131n\u0131rlamalar\u0131 nedeniyle, hava tahminini etkinle\u015ftirdi\u011finizde, veri g\u00fcncellemeleri her 40 dakikada bir yerine 80 dakikada bir ger\u00e7ekle\u015ftirilir."
}
}
},
"system_health": {
"info": {
"can_reach_server": "AccuWeather sunucusuna ula\u015f\u0131n",
@@ -19,16 +19,6 @@
}
}
},
"options": {
"step": {
"user": {
"data": {
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u0438"
},
"description": "\u0423 \u0437\u0432'\u044f\u0437\u043a\u0443 \u0437 \u043e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f\u043c\u0438 \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e\u0457 \u0432\u0435\u0440\u0441\u0456\u0457 \u043a\u043b\u044e\u0447\u0430 API AccuWeather, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0456 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0443 \u043f\u043e\u0433\u043e\u0434\u0438 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0434\u0430\u043d\u0438\u0445 \u0431\u0443\u0434\u0435 \u0432\u0456\u0434\u0431\u0443\u0432\u0430\u0442\u0438\u0441\u044f \u043a\u043e\u0436\u043d\u0456 64 \u0445\u0432\u0438\u043b\u0438\u043d\u0438, \u0430 \u043d\u0435 \u043a\u043e\u0436\u043d\u0456 32 \u0445\u0432\u0438\u043b\u0438\u043d\u0438."
}
}
},
"system_health": {
"info": {
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 AccuWeather",
@@ -22,6 +22,17 @@
}
}
},
"entity": {
"sensor": {
"pressure_tendency": {
"state": {
"falling": "\u4e0b\u964d",
"rising": "\u4e0a\u5347",
"steady": "\u7a69\u5b9a"
}
}
}
},
"options": {
"step": {
"init": {
@@ -29,12 +40,6 @@
"forecast": "\u5929\u6c23\u9810\u5831"
},
"description": "\u7531\u65bc AccuWeather API \u91d1\u9470\u514d\u8cbb\u7248\u672c\u9650\u5236\uff0c\u7576\u958b\u555f\u5929\u6c23\u9810\u5831\u6642\u3001\u6578\u64da\u6703\u6bcf 80 \u5206\u9418\u66f4\u65b0\u4e00\u6b21\uff0c\u800c\u975e 40 \u5206\u9418\u3002"
},
"user": {
"data": {
"forecast": "\u5929\u6c23\u9810\u5831"
},
"description": "\u7531\u65bc AccuWeather API \u91d1\u9470\u514d\u8cbb\u7248\u672c\u9650\u5236\uff0c\u7576\u958b\u555f\u5929\u6c23\u9810\u5831\u6642\u3001\u6578\u64da\u6703\u6bcf 80 \u5206\u9418\u66f4\u65b0\u4e00\u6b21\uff0c\u800c\u975e 40 \u5206\u9418\u3002"
}
}
},
@@ -7,7 +7,8 @@
"user": {
"data": {
"id": "ID hostite\u013ea"
}
},
"title": "Vyberte hub, ktor\u00fd chcete prida\u0165"
}
}
}
+3 -3
View File
@@ -19,7 +19,7 @@ from homeassistant.const import (
CONF_TOKEN,
CONF_UNIQUE_ID,
PRECISION_WHOLE,
TEMP_CELSIUS,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
@@ -69,7 +69,7 @@ class AdaxDevice(ClimateEntity):
_attr_min_temp = 5
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) -> None:
"""Initialize the heater."""
@@ -132,7 +132,7 @@ class LocalAdaxDevice(ClimateEntity):
_attr_min_temp = 5
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, adax_data_handler, unique_id):
"""Initialize the heater."""
@@ -0,0 +1,18 @@
{
"config": {
"abort": {
"already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4"
},
"step": {
"cloud": {
"data": {
"password": "\ube44\ubc00\ubc88\ud638"
}
}
}
}
}
@@ -7,7 +7,7 @@
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
"cannot_connect": "A liga\u00e7\u00e3o falhou"
},
"step": {
"cloud": {
@@ -20,7 +20,8 @@
"data": {
"wifi_pswd": "Heslo Wi-Fi",
"wifi_ssid": "Wi-Fi SSID"
}
},
"description": "Resetujte ohrieva\u010d stla\u010den\u00edm + a OK, dokia\u013e se nezobraz\u00ed \"Reset\". Potom stla\u010dte a podr\u017ete tla\u010didlo OK na ohrieva\u010di, dokia\u013e modr\u00e1 led di\u00f3da neza\u010dne blika\u0165, k\u00fdm stla\u010d\u00edte tla\u010didlo Odosla\u0165. Konfigur\u00e1cia ohrieva\u010da m\u00f4\u017ee trva\u0165 nieko\u013eko min\u00fat."
},
"user": {
"data": {
+2 -2
View File
@@ -10,7 +10,7 @@ from adguardhome import AdGuardHome, AdGuardHomeConnectionError
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, TIME_MILLISECONDS
from homeassistant.const import PERCENTAGE, UnitOfTime
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -83,7 +83,7 @@ SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
key="average_speed",
name="Average processing speed",
icon="mdi:speedometer",
native_unit_of_measurement=TIME_MILLISECONDS,
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
value_fn=lambda adguard: adguard.stats.avg_processing_time(),
),
AdGuardHomeEntityDescription(
@@ -4,7 +4,7 @@
"already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
"cannot_connect": "A liga\u00e7\u00e3o falhou"
},
"step": {
"hassio_confirm": {
@@ -13,7 +13,7 @@
},
"user": {
"data": {
"host": "Servidor",
"host": "Endere\u00e7o",
"password": "Palavra-passe",
"port": "Porta",
"ssl": "Utiliza um certificado SSL",
@@ -20,7 +20,8 @@
"ssl": "Pou\u017e\u00edva SSL certifik\u00e1t",
"username": "Pou\u017e\u00edvate\u013esk\u00e9 meno",
"verify_ssl": "Overi\u0165 SSL certifik\u00e1t"
}
},
"description": "Nastavte svoju in\u0161tanciu AdGuard Home pre monitorovanie a riadenie."
}
}
}
@@ -14,7 +14,7 @@ from homeassistant.components.climate import (
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -83,7 +83,7 @@ async def async_setup_entry(
class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
"""AdvantageAir AC unit."""
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
@@ -149,7 +149,7 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
class AdvantageAirZone(AdvantageAirZoneEntity, ClimateEntity):
"""AdvantageAir Zone control."""
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
@@ -12,7 +12,7 @@ from homeassistant.components.sensor import (
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, TEMP_CELSIUS
from homeassistant.const import PERCENTAGE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, entity_platform
from homeassistant.helpers.entity import EntityCategory
@@ -155,7 +155,7 @@ class AdvantageAirZoneSignal(AdvantageAirZoneEntity, SensorEntity):
class AdvantageAirZoneTemp(AdvantageAirZoneEntity, SensorEntity):
"""Representation of Advantage Air Zone temperature sensor."""
_attr_native_unit_of_measurement = TEMP_CELSIUS
_attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
_attr_device_class = SensorDeviceClass.TEMPERATURE
_attr_state_class = SensorStateClass.MEASUREMENT
_attr_entity_registry_enabled_default = False
@@ -4,7 +4,7 @@
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o"
"cannot_connect": "A liga\u00e7\u00e3o falhou"
},
"step": {
"user": {
@@ -12,6 +12,7 @@
"ip_address": "IP adresa",
"port": "Port"
},
"description": "Pripojte sa k API v\u00e1\u0161ho n\u00e1stenn\u00e9ho tabletu Advantage Air.",
"title": "Pripoji\u0165"
}
}
+1 -165
View File
@@ -1,11 +1,6 @@
"""Constant values for the AEMET OpenData component."""
from __future__ import annotations
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.components.weather import (
ATTR_CONDITION_CLEAR_NIGHT,
ATTR_CONDITION_CLOUDY,
@@ -18,15 +13,7 @@ from homeassistant.components.weather import (
ATTR_CONDITION_SNOWY,
ATTR_CONDITION_SUNNY,
)
from homeassistant.const import (
DEGREE,
PERCENTAGE,
PRESSURE_HPA,
SPEED_KILOMETERS_PER_HOUR,
TEMP_CELSIUS,
Platform,
UnitOfVolumetricFlux,
)
from homeassistant.const import Platform
ATTRIBUTION = "Powered by AEMET OpenData"
CONF_STATION_UPDATES = "station_updates"
@@ -200,157 +187,6 @@ FORECAST_MODE_ATTR_API = {
FORECAST_MODE_HOURLY: ATTR_API_FORECAST_HOURLY,
}
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TIME,
name="Time",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
),
)
WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_API_HUMIDITY,
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.HUMIDITY,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_PRESSURE,
name="Pressure",
native_unit_of_measurement=PRESSURE_HPA,
device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_RAIN,
name="Rain",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_RAIN_PROB,
name="Rain probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_SNOW,
name="Snow",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_SNOW_PROB,
name="Snow probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_STATION_ID,
name="Station ID",
),
SensorEntityDescription(
key=ATTR_API_STATION_NAME,
name="Station name",
),
SensorEntityDescription(
key=ATTR_API_STATION_TIMESTAMP,
name="Station timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_STORM_PROB,
name="Storm probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TEMPERATURE,
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TEMPERATURE_FEELING,
name="Temperature feeling",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TOWN_ID,
name="Town ID",
),
SensorEntityDescription(
key=ATTR_API_TOWN_NAME,
name="Town name",
),
SensorEntityDescription(
key=ATTR_API_TOWN_TIMESTAMP,
name="Town timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_WIND_MAX_SPEED,
name="Wind max speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
),
SensorEntityDescription(
key=ATTR_API_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
state_class=SensorStateClass.MEASUREMENT,
),
)
WIND_BEARING_MAP = {
"C": None,
+195 -3
View File
@@ -1,15 +1,54 @@
"""Support for the AEMET OpenData service."""
from __future__ import annotations
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
DEGREE,
PERCENTAGE,
UnitOfPressure,
UnitOfSpeed,
UnitOfTemperature,
UnitOfVolumetricFlux,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
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_RAIN,
ATTR_API_RAIN_PROB,
ATTR_API_SNOW,
ATTR_API_SNOW_PROB,
ATTR_API_STATION_ID,
ATTR_API_STATION_NAME,
ATTR_API_STATION_TIMESTAMP,
ATTR_API_STORM_PROB,
ATTR_API_TEMPERATURE,
ATTR_API_TEMPERATURE_FEELING,
ATTR_API_TOWN_ID,
ATTR_API_TOWN_NAME,
ATTR_API_TOWN_TIMESTAMP,
ATTR_API_WIND_BEARING,
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
ATTRIBUTION,
DOMAIN,
ENTRY_NAME,
@@ -18,12 +57,165 @@ from .const import (
FORECAST_MODE_DAILY,
FORECAST_MODES,
FORECAST_MONITORED_CONDITIONS,
FORECAST_SENSOR_TYPES,
MONITORED_CONDITIONS,
WEATHER_SENSOR_TYPES,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TIME,
name="Time",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
)
WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_CONDITION,
name="Condition",
),
SensorEntityDescription(
key=ATTR_API_HUMIDITY,
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.HUMIDITY,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_PRESSURE,
name="Pressure",
native_unit_of_measurement=UnitOfPressure.HPA,
device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_RAIN,
name="Rain",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_RAIN_PROB,
name="Rain probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_SNOW,
name="Snow",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_SNOW_PROB,
name="Snow probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_STATION_ID,
name="Station ID",
),
SensorEntityDescription(
key=ATTR_API_STATION_NAME,
name="Station name",
),
SensorEntityDescription(
key=ATTR_API_STATION_TIMESTAMP,
name="Station timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_STORM_PROB,
name="Storm probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TEMPERATURE,
name="Temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TEMPERATURE_FEELING,
name="Temperature feeling",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_TOWN_ID,
name="Town ID",
),
SensorEntityDescription(
key=ATTR_API_TOWN_NAME,
name="Town name",
),
SensorEntityDescription(
key=ATTR_API_TOWN_TIMESTAMP,
name="Town timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
),
SensorEntityDescription(
key=ATTR_API_WIND_BEARING,
name="Wind bearing",
native_unit_of_measurement=DEGREE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
key=ATTR_API_WIND_MAX_SPEED,
name="Wind max speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
SensorEntityDescription(
key=ATTR_API_WIND_SPEED,
name="Wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.WIND_SPEED,
),
)
async def async_setup_entry(
hass: HomeAssistant,
@@ -22,7 +22,7 @@
"step": {
"init": {
"data": {
"station_updates": "Sammeln von Daten von AEMET-Wetterstationen"
"station_updates": "Sammeln von Daten von AEMET Wetterstationen"
}
}
}
@@ -5,12 +5,12 @@
},
"error": {
"already_in_progress": "O processo de configura\u00e7\u00e3o j\u00e1 est\u00e1 a decorrer",
"cannot_connect": "Falha na liga\u00e7\u00e3o"
"cannot_connect": "A liga\u00e7\u00e3o falhou"
},
"step": {
"user": {
"data": {
"host": "Servidor",
"host": "Endere\u00e7o",
"port": "Porta"
}
}
@@ -12,7 +12,8 @@
"data": {
"host": "Hostite\u013e",
"port": "Port"
}
},
"title": "Nastavenie agenta DVR"
}
}
}
+4 -4
View File
@@ -16,8 +16,8 @@ from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONF_NAME,
PERCENTAGE,
PRESSURE_HPA,
TEMP_CELSIUS,
UnitOfPressure,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType
@@ -105,14 +105,14 @@ SENSOR_TYPES: tuple[AirlySensorEntityDescription, ...] = (
key=ATTR_API_PRESSURE,
device_class=SensorDeviceClass.PRESSURE,
name=ATTR_API_PRESSURE.capitalize(),
native_unit_of_measurement=PRESSURE_HPA,
native_unit_of_measurement=UnitOfPressure.HPA,
state_class=SensorStateClass.MEASUREMENT,
),
AirlySensorEntityDescription(
key=ATTR_API_TEMPERATURE,
device_class=SensorDeviceClass.TEMPERATURE,
name=ATTR_API_TEMPERATURE.capitalize(),
native_unit_of_measurement=TEMP_CELSIUS,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
state_class=SensorStateClass.MEASUREMENT,
value=lambda value: round(value, 1),
),
@@ -21,7 +21,7 @@
},
"system_health": {
"info": {
"can_reach_server": "Airly-Server erreichen",
"can_reach_server": "Airly Server erreichen",
"requests_per_day": "Erlaubte Anfragen pro Tag",
"requests_remaining": "Verbleibende erlaubte Anfragen"
}
@@ -75,7 +75,10 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
else:
# Create Entry
return self.async_create_entry(
title=f"AirNow Sensor at {user_input[CONF_LATITUDE]}, {user_input[CONF_LONGITUDE]}",
title=(
f"AirNow Sensor at {user_input[CONF_LATITUDE]},"
f" {user_input[CONF_LONGITUDE]}"
),
data=user_input,
)
@@ -4,7 +4,7 @@
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
"unknown": "Erro inesperado"
},
+5 -2
View File
@@ -55,8 +55,11 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
await airq.validate()
except ClientConnectionError:
_LOGGER.debug(
"Failed to connect to device %s. Check the IP address / device ID "
"as well as whether the device is connected to power and the WiFi",
(
"Failed to connect to device %s. Check the IP address / device"
" ID as well as whether the device is connected to power and"
" the WiFi"
),
user_input[CONF_IP_ADDRESS],
)
errors["base"] = "cannot_connect"
+13 -13
View File
@@ -19,9 +19,9 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
PERCENTAGE,
PRESSURE_HPA,
SOUND_PRESSURE_WEIGHTED_DBA,
TEMP_CELSIUS,
UnitOfPressure,
UnitOfSoundPressure,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -84,10 +84,10 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
AirQEntityDescription(
key="dewpt",
name="Dew point",
native_unit_of_measurement=TEMP_CELSIUS,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("dewpt"),
icon="mdi:water-thermometer",
device_class=SensorDeviceClass.TEMPERATURE,
),
AirQEntityDescription(
key="ethanol",
@@ -227,17 +227,17 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
key="pressure",
name="Pressure",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_HPA,
native_unit_of_measurement=UnitOfPressure.HPA,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pressure"),
),
AirQEntityDescription(
key="pressure_rel",
name="Relative pressure",
native_unit_of_measurement=PRESSURE_HPA,
native_unit_of_measurement=UnitOfPressure.HPA,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pressure_rel"),
icon="mdi:gauge",
device_class=SensorDeviceClass.PRESSURE,
),
AirQEntityDescription(
key="c3h8_MIPEX",
@@ -257,18 +257,18 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
AirQEntityDescription(
key="sound",
name="Noise",
native_unit_of_measurement=SOUND_PRESSURE_WEIGHTED_DBA,
native_unit_of_measurement=UnitOfSoundPressure.WEIGHTED_DECIBEL_A,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("sound"),
icon="mdi:ear-hearing",
device_class=SensorDeviceClass.SOUND_PRESSURE,
),
AirQEntityDescription(
key="sound_max",
name="Noise (Maximum)",
native_unit_of_measurement=SOUND_PRESSURE_WEIGHTED_DBA,
native_unit_of_measurement=UnitOfSoundPressure.WEIGHTED_DECIBEL_A,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("sound_max"),
icon="mdi:ear-hearing",
device_class=SensorDeviceClass.SOUND_PRESSURE,
),
AirQEntityDescription(
key="radon",
@@ -282,7 +282,7 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
key="temperature",
name="Temperature",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=TEMP_CELSIUS,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("temperature"),
),
@@ -0,0 +1,21 @@
{
"config": {
"abort": {
"already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"invalid_input": "\ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"step": {
"user": {
"data": {
"ip_address": "IP \uc8fc\uc18c",
"password": "\ube44\ubc00\ubc88\ud638"
},
"description": "\uae30\uae30\uc758 IP \uc8fc\uc18c \ub610\ub294 mDNS\uc640 \uc554\ud638\ub97c \uc785\ub825\ud558\uc2ed\uc2dc\uc624."
}
}
}
}
@@ -0,0 +1,20 @@
{
"config": {
"abort": {
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
},
"error": {
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
"invalid_input": "Endere\u00e7o IP ou hostname inv\u00e1lido."
},
"step": {
"user": {
"data": {
"ip_address": "Endere\u00e7o IP",
"password": "Palavra-passe"
}
}
}
}
}
@@ -37,7 +37,9 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
step_id="user",
data_schema=STEP_USER_DATA_SCHEMA,
description_placeholders={
"url": "https://dashboard.airthings.com/integrations/api-integration",
"url": (
"https://dashboard.airthings.com/integrations/api-integration"
),
},
)
+4 -4
View File
@@ -15,9 +15,9 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
PERCENTAGE,
PRESSURE_MBAR,
SIGNAL_STRENGTH_DECIBELS,
TEMP_CELSIUS,
UnitOfPressure,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo, EntityCategory
@@ -39,7 +39,7 @@ SENSORS: dict[str, SensorEntityDescription] = {
"temp": SensorEntityDescription(
key="temp",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=TEMP_CELSIUS,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
name="Temperature",
),
"humidity": SensorEntityDescription(
@@ -51,7 +51,7 @@ SENSORS: dict[str, SensorEntityDescription] = {
"pressure": SensorEntityDescription(
key="pressure",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_MBAR,
native_unit_of_measurement=UnitOfPressure.MBAR,
name="Pressure",
),
"battery": SensorEntityDescription(
@@ -1,5 +1,13 @@
{
"config": {
"abort": {
"already_configured": "\uacc4\uc815\uc774 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"
},
"step": {
"user": {
"data": {
@@ -4,7 +4,7 @@
"already_configured": "Conta j\u00e1 configurada"
},
"error": {
"cannot_connect": "Falha na liga\u00e7\u00e3o",
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
"unknown": "Erro inesperado"
},
@@ -17,8 +17,8 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX,
PERCENTAGE,
PRESSURE_MBAR,
TEMP_CELSIUS,
UnitOfPressure,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import CONNECTION_BLUETOOTH
@@ -63,7 +63,7 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
"temperature": SensorEntityDescription(
key="temperature",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=TEMP_CELSIUS,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
name="Temperature",
),
"humidity": SensorEntityDescription(
@@ -75,7 +75,7 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
"pressure": SensorEntityDescription(
key="pressure",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_MBAR,
native_unit_of_measurement=UnitOfPressure.MBAR,
name="Pressure",
),
"battery": SensorEntityDescription(
@@ -10,13 +10,13 @@
"flow_title": "{name}",
"step": {
"bluetooth_confirm": {
"description": "Do you want to setup {name}?"
"description": "Do you want to set up {name}?"
},
"user": {
"data": {
"address": "Device"
},
"description": "Choose a device to setup"
"description": "Choose a device to set up"
}
}
}
@@ -16,7 +16,7 @@
"data": {
"address": "Dispositivo"
},
"description": "Seleziona un dispositivo da configurare"
"description": "Scegli un dispositivo da configurare"
}
}
}
@@ -0,0 +1,11 @@
{
"config": {
"abort": {
"already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"already_in_progress": "\uae30\uae30 \uad6c\uc131\uc774 \uc774\ubbf8 \uc9c4\ud589 \uc911\uc785\ub2c8\ub2e4",
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",
"no_devices_found": "\ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \uae30\uae30\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",
"unknown": "\uc608\uc0c1\uce58 \ubabb\ud55c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"
}
}
}
@@ -10,7 +10,7 @@
"flow_title": "{name}",
"step": {
"bluetooth_confirm": {
"description": "Vil du konfigurere {name}?"
"description": "Vil du sette opp {name} ?"
},
"user": {
"data": {
@@ -0,0 +1,11 @@
{
"config": {
"abort": {
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado",
"already_in_progress": "O processo de configura\u00e7\u00e3o j\u00e1 est\u00e1 a decorrer",
"cannot_connect": "A liga\u00e7\u00e3o falhou",
"no_devices_found": "Nenhum dispositivo encontrado na rede",
"unknown": "Erro inesperado"
}
}
}
@@ -16,7 +16,7 @@ from homeassistant.components.climate import (
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@@ -87,7 +87,7 @@ class AirtouchAC(CoordinatorEntity, ClimateEntity):
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
)
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, coordinator, ac_number, info):
"""Initialize the climate device."""
@@ -201,7 +201,7 @@ class AirtouchGroup(CoordinatorEntity, ClimateEntity):
"""Representation of an AirTouch 4 group."""
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_temperature_unit = TEMP_CELSIUS
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_hvac_modes = AT_GROUP_MODES
def __init__(self, coordinator, group_number, info):
@@ -9,7 +9,7 @@
},
"step": {
"user": {
"title": "Setup your AirTouch 4 connection details.",
"title": "Set up your AirTouch 4 connection details.",
"data": {
"host": "[%key:common::config_flow::data::host%]"
}
@@ -12,7 +12,7 @@
"data": {
"host": "Amfitri\u00f3"
},
"title": "Configura els detalls de connexi\u00f3 d'AirTouch 4."
"title": "Configuraci\u00f3 dels detalls de connexi\u00f3 d'AirTouch 4."
}
}
}
@@ -12,7 +12,7 @@
"data": {
"host": "Host"
},
"title": "Setup your AirTouch 4 connection details."
"title": "Set up your AirTouch 4 connection details."
}
}
}
@@ -12,7 +12,7 @@
"data": {
"host": "Host"
},
"title": "Imposta i dettagli della connessione AirTouch 4."
"title": "Configura i dettagli della connessione di AirTouch 4."
}
}
}
@@ -0,0 +1,17 @@
{
"config": {
"abort": {
"already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
},
"error": {
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4"
},
"step": {
"user": {
"data": {
"host": "\ud638\uc2a4\ud2b8"
}
}
}
}
}
@@ -12,7 +12,7 @@
"data": {
"host": "Vert"
},
"title": "Konfigurer AirTouch 4 -tilkoblingsdetaljer."
"title": "Konfigurer AirTouch 4-tilkoblingsdetaljer."
}
}
}
@@ -12,7 +12,7 @@
"data": {
"host": "Nazwa hosta lub adres IP"
},
"title": "Konfiguracja po\u0142\u0105czenia AirTouch 4."
"title": "Skonfiguruj szczeg\u00f3\u0142y po\u0142\u0105czenia AirTouch 4."
}
}
}
+156 -110
View File
@@ -1,23 +1,27 @@
"""The airvisual component."""
"""The AirVisual component."""
from __future__ import annotations
import asyncio
from collections.abc import Mapping
from datetime import timedelta
from math import ceil
from typing import Any
from pyairvisual import CloudAPI, NodeSamba
from pyairvisual.cloud_api import InvalidKeyError, KeyExpiredError, UnauthorizedError
from pyairvisual.cloud_api import (
CloudAPI,
InvalidKeyError,
KeyExpiredError,
UnauthorizedError,
)
from pyairvisual.errors import AirVisualError
from pyairvisual.node import NodeProError
from homeassistant.config_entries import ConfigEntry
from homeassistant.components import automation
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
from homeassistant.const import (
CONF_API_KEY,
CONF_IP_ADDRESS,
CONF_LATITUDE,
CONF_LONGITUDE,
CONF_PASSWORD,
CONF_SHOW_ON_MAP,
CONF_STATE,
Platform,
@@ -27,9 +31,10 @@ from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers import (
aiohttp_client,
config_validation as cv,
entity_registry,
device_registry as dr,
)
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
@@ -48,6 +53,10 @@ from .const import (
LOGGER,
)
# We use a raw string for the airvisual_pro domain (instead of importing the actual
# constant) so that we can avoid listing it as a dependency:
DOMAIN_AIRVISUAL_PRO = "airvisual_pro"
PLATFORMS = [Platform.SENSOR]
DEFAULT_ATTRIBUTION = "Data provided by AirVisual"
@@ -56,22 +65,6 @@ DEFAULT_NODE_PRO_UPDATE_INTERVAL = timedelta(minutes=1)
CONFIG_SCHEMA = cv.removed(DOMAIN, raise_if_present=False)
@callback
def async_get_geography_id(geography_dict: Mapping[str, Any]) -> str:
"""Generate a unique ID from a geography dict."""
if CONF_CITY in geography_dict:
return ", ".join(
(
geography_dict[CONF_CITY],
geography_dict[CONF_STATE],
geography_dict[CONF_COUNTRY],
)
)
return ", ".join(
(str(geography_dict[CONF_LATITUDE]), str(geography_dict[CONF_LONGITUDE]))
)
@callback
def async_get_cloud_api_update_interval(
hass: HomeAssistant, api_key: str, num_consumers: int
@@ -108,6 +101,52 @@ def async_get_cloud_coordinators_by_api_key(
]
@callback
def async_get_geography_id(geography_dict: Mapping[str, Any]) -> str:
"""Generate a unique ID from a geography dict."""
if CONF_CITY in geography_dict:
return ", ".join(
(
geography_dict[CONF_CITY],
geography_dict[CONF_STATE],
geography_dict[CONF_COUNTRY],
)
)
return ", ".join(
(str(geography_dict[CONF_LATITUDE]), str(geography_dict[CONF_LONGITUDE]))
)
@callback
def async_get_pro_config_entry_by_ip_address(
hass: HomeAssistant, ip_address: str
) -> ConfigEntry:
"""Get the Pro config entry related to an IP address."""
[config_entry] = [
entry
for entry in hass.config_entries.async_entries(DOMAIN_AIRVISUAL_PRO)
if entry.data[CONF_IP_ADDRESS] == ip_address
]
return config_entry
@callback
def async_get_pro_device_by_config_entry(
hass: HomeAssistant, config_entry: ConfigEntry
) -> dr.DeviceEntry:
"""Get the Pro device entry related to a config entry.
Note that a Pro config entry can only contain a single device.
"""
device_registry = dr.async_get(hass)
[device_entry] = [
device_entry
for device_entry in device_registry.devices.values()
if config_entry.entry_id in device_entry.config_entries
]
return device_entry
@callback
def async_sync_geo_coordinator_update_intervals(
hass: HomeAssistant, api_key: str
@@ -166,108 +205,59 @@ def _standardize_geography_config_entry(
hass.config_entries.async_update_entry(entry, **entry_updates)
@callback
def _standardize_node_pro_config_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Ensure that Node/Pro config entries have appropriate properties."""
entry_updates: dict[str, Any] = {}
if CONF_INTEGRATION_TYPE not in entry.data:
# If the config entry data doesn't contain the integration type, add it:
entry_updates["data"] = {
**entry.data,
CONF_INTEGRATION_TYPE: INTEGRATION_TYPE_NODE_PRO,
}
if not entry_updates:
return
hass.config_entries.async_update_entry(entry, **entry_updates)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up AirVisual as config entry."""
if CONF_API_KEY in entry.data:
_standardize_geography_config_entry(hass, entry)
if CONF_API_KEY not in entry.data:
# If this is a migrated AirVisual Pro entry, there's no actual setup to do;
# that will be handled by the `airvisual_pro` domain:
return False
websession = aiohttp_client.async_get_clientsession(hass)
cloud_api = CloudAPI(entry.data[CONF_API_KEY], session=websession)
_standardize_geography_config_entry(hass, entry)
async def async_update_data() -> dict[str, Any]:
"""Get new data from the API."""
if CONF_CITY in entry.data:
api_coro = cloud_api.air_quality.city(
entry.data[CONF_CITY],
entry.data[CONF_STATE],
entry.data[CONF_COUNTRY],
)
else:
api_coro = cloud_api.air_quality.nearest_city(
entry.data[CONF_LATITUDE],
entry.data[CONF_LONGITUDE],
)
websession = aiohttp_client.async_get_clientsession(hass)
cloud_api = CloudAPI(entry.data[CONF_API_KEY], session=websession)
try:
return await api_coro
except (InvalidKeyError, KeyExpiredError, UnauthorizedError) as ex:
raise ConfigEntryAuthFailed from ex
except AirVisualError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
coordinator = DataUpdateCoordinator(
hass,
LOGGER,
name=async_get_geography_id(entry.data),
# We give a placeholder update interval in order to create the coordinator;
# then, below, we use the coordinator's presence (along with any other
# coordinators using the same API key) to calculate an actual, leveled
# update interval:
update_interval=timedelta(minutes=5),
update_method=async_update_data,
)
# Only geography-based entries have options:
entry.async_on_unload(entry.add_update_listener(async_reload_entry))
else:
# Remove outdated air_quality entities from the entity registry if they exist:
ent_reg = entity_registry.async_get(hass)
for entity_entry in [
e
for e in ent_reg.entities.values()
if e.config_entry_id == entry.entry_id
and e.entity_id.startswith("air_quality")
]:
LOGGER.debug(
'Removing deprecated air_quality entity: "%s"', entity_entry.entity_id
async def async_update_data() -> dict[str, Any]:
"""Get new data from the API."""
if CONF_CITY in entry.data:
api_coro = cloud_api.air_quality.city(
entry.data[CONF_CITY],
entry.data[CONF_STATE],
entry.data[CONF_COUNTRY],
)
else:
api_coro = cloud_api.air_quality.nearest_city(
entry.data[CONF_LATITUDE],
entry.data[CONF_LONGITUDE],
)
ent_reg.async_remove(entity_entry.entity_id)
_standardize_node_pro_config_entry(hass, entry)
try:
return await api_coro
except (InvalidKeyError, KeyExpiredError, UnauthorizedError) as ex:
raise ConfigEntryAuthFailed from ex
except AirVisualError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
async def async_update_data() -> dict[str, Any]:
"""Get new data from the API."""
try:
async with NodeSamba(
entry.data[CONF_IP_ADDRESS], entry.data[CONF_PASSWORD]
) as node:
return await node.async_get_latest_measurements()
except NodeProError as err:
raise UpdateFailed(f"Error while retrieving data: {err}") from err
coordinator = DataUpdateCoordinator(
hass,
LOGGER,
name=async_get_geography_id(entry.data),
# We give a placeholder update interval in order to create the coordinator;
# then, below, we use the coordinator's presence (along with any other
# coordinators using the same API key) to calculate an actual, leveled
# update interval:
update_interval=timedelta(minutes=5),
update_method=async_update_data,
)
coordinator = DataUpdateCoordinator(
hass,
LOGGER,
name="Node/Pro data",
update_interval=DEFAULT_NODE_PRO_UPDATE_INTERVAL,
update_method=async_update_data,
)
entry.async_on_unload(entry.add_update_listener(async_reload_entry))
await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator
# Reassess the interval between 2 server requests
if CONF_API_KEY in entry.data:
async_sync_geo_coordinator_update_intervals(hass, entry.data[CONF_API_KEY])
async_sync_geo_coordinator_update_intervals(hass, entry.data[CONF_API_KEY])
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@@ -311,6 +301,62 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
)
)
# 2 -> 3: Moving AirVisual Pro to its own domain
elif version == 2:
version = 3
if entry.data[CONF_INTEGRATION_TYPE] == INTEGRATION_TYPE_NODE_PRO:
ip_address = entry.data[CONF_IP_ADDRESS]
# Get the existing Pro device entry before it is removed by the migration:
old_device_entry = async_get_pro_device_by_config_entry(hass, entry)
new_entry_data = {**entry.data}
new_entry_data.pop(CONF_INTEGRATION_TYPE)
tasks = [
hass.config_entries.async_remove(entry.entry_id),
hass.config_entries.flow.async_init(
DOMAIN_AIRVISUAL_PRO,
context={"source": SOURCE_IMPORT},
data=new_entry_data,
),
]
await asyncio.gather(*tasks)
# If any automations are using the old device ID, create a Repairs issues
# with instructions on how to update it:
if device_automations := automation.automations_with_device(
hass, old_device_entry.id
):
new_config_entry = async_get_pro_config_entry_by_ip_address(
hass, ip_address
)
new_device_entry = async_get_pro_device_by_config_entry(
hass, new_config_entry
)
async_create_issue(
hass,
DOMAIN,
f"airvisual_pro_migration_{entry.entry_id}",
is_fixable=False,
is_persistent=True,
severity=IssueSeverity.WARNING,
translation_key="airvisual_pro_migration",
translation_placeholders={
"ip_address": ip_address,
"old_device_id": old_device_entry.id,
"new_device_id": new_device_entry.id,
"device_automations_string": ", ".join(
f"`{automation}`" for automation in device_automations
),
},
)
else:
entry.version = version
hass.config_entries.async_update_entry(entry)
LOGGER.info("Migration to version %s successful", version)
return True

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