Commit graph

111 commits

Author SHA1 Message Date
puddly
304b950f1a
Speed up ZHA initialization and improve startup responsiveness (#108103)
* Limit concurrency of startup traffic to allow for interactive usage

* Drop `retryable_req`, we already have request retrying

* Oops, `min` -> `max`

* Add a comment describing why `async_initialize` is not concurrent

* Fix existing unit tests

* Break out fetching mains state into its own function to unit test
2024-01-19 15:41:45 +01:00
David F. Mulcahey
817c71747f
Delay all ZHA polling until initialization of entities has completed (#105814)
* Don't update entities until they are initialized

* fix hass reference

* only establish polling once

* fix log level and small cleanup

* start device availability checks after full initialization of network

* add logging

* clean up sensor polling and class hierarchy

* don't attempt restore sensor cleanup in this PR

* put check back

* fix race condition and remove parallel updates

* add sensor polling test

* cleanup switch polling and add a test

* clean up and actually fix race condition

* update light forced refresh

* only use flag

* unused flag

* reduce diff size

* collapse
2023-12-27 10:25:41 -05:00
puddly
bd8f01bd35
Bump ZHA dependencies (#104335) 2023-11-29 11:30:15 +01:00
TheJulianJES
fd8fdba7e8
Replace ZHA quirk class matching with quirk ID matching (#102482)
* Use fixed quirk IDs for matching instead of quirk class

* Change tests for quirk id (WIP)

* Do not default `quirk_id` to `quirk_class`

* Implement test for checking if quirk ID exists

* Change `quirk_id` for test slightly (underscore instead of dot)
2023-10-24 17:18:10 -04:00
puddly
cbb28b6943
Migrate internal ZHA data to a dataclasses (#100127)
* Cache device triggers on startup

* reorg zha init

* don't reuse gateway

* don't nuke yaml configuration

* review comments

* Add unit tests

* Do not cache device and entity registries

* [WIP] Wrap ZHA data in a dataclass

* [WIP] Get unit tests passing

* Use a helper function for getting the gateway object to fix annotations

* Remove `bridge_id`

* Fix typing issues with entity references in group websocket info

* Use `Platform` instead of `str` for entity platform matching

* Use `get_zha_gateway` in a few more places

* Fix flaky unit test

* Use `slots` for ZHA data

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

---------

Co-authored-by: David F. Mulcahey <david.mulcahey@icloud.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-09-11 21:39:33 +02:00
puddly
a6f325d05a
Cache device trigger info during ZHA startup (#99764)
* Do not connect to the radio hardware within `_connect_zigpy_app`

* Make `connect_zigpy_app` public

* Create radio manager instances from config entries

* Cache device triggers on startup

* reorg zha init

* don't reuse gateway

* don't nuke yaml configuration

* review comments

* Fix existing unit tests

* Ensure `app.shutdown` is called, not just `app.disconnect`

* Revert creating group entities and device registry entries early

* Add unit tests

---------

Co-authored-by: David F. Mulcahey <david.mulcahey@icloud.com>
2023-09-11 14:36:01 +02:00
Marc Mueller
77f38e33e5
Import names from typing instead of typing_extensions [3.11] (#97065) 2023-07-22 17:03:44 -05:00
Erik Montnemery
a568885ad2
Add backport of cached_property from CPython 3.12 (#95292) 2023-06-26 16:23:07 -05:00
Joakim Plate
9aed5a47ae
Raise exception instead of hide in logs on zha write (#93571)
Raise exception instead of hide in logs

Write request that failed parsing of data would fail,
yet display as successful in the gui.
2023-06-01 10:18:49 -04:00
David F. Mulcahey
9c784ac622
Refactor ZHA (#91476)
* rename channel -> cluster handler

* remove refs to channels and create endpoint class

* remove remaining references to channels

* fix filter

* take in latest changes from #91403

* missed one

* missed a reference
2023-04-19 10:47:07 -04:00
puddly
c581116c82
ZHA network settings API (#88564)
* Rename `zha.api` to `zha.websocket_api`

* Implement a ZHA network settings API

* Use the enum name as the radio type

* Don't filter out ignored config entries

* [WIP] Start unit tests

* Add unit tests

* Rename ZHA websocket API module in `.coveragerc`

* Rename `api` to `websocket_api`

* Increase test coverage to 100%
2023-03-22 11:15:46 -04:00
Marc Mueller
a5d376069a
Add Self typing (2) [mypy 1.0] (#87599) 2023-02-06 23:23:52 -05:00
Franck Nijhof
5e81d28116
Update black to 23.1.0 (#87188) 2023-02-02 18:35:24 +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
puddly
7f96fbb035
Bump ZHA dependencies (#82999) 2022-11-30 20:56:07 +01:00
David F. Mulcahey
d75e449c52
Add ability to convert ZCL schemas to vol schemas to ZHA (#79908)
* try serializing cluster command schemas

* use min and max value from zigpy type

* different type assignments

* initial command execution changes

* cleanup

* cleanup and typing

* typing

* typing

* add tests

* mypy

* handle raw values too

* check for None responses

* make backwards compatible

* update yaml for svc change
2022-10-14 08:15:10 -04:00
puddly
73e26b71b1
Migrate ZHA lighting to use newer zigpy ZCL request syntax (#77676)
* Migrate unit test to use more command definition constants

* Use keyword argument syntax for sending ZCL requests

* Ensure all ZHA unit tests pass
2022-09-01 15:32:32 -04:00
Marc Mueller
a3b2b5c328
Add zha typing [classmethods] (#75472) 2022-07-20 12:03:30 +02:00
puddly
2986a2f01b
Identify the active ZHA coordinator device in API responses (#74739)
* Remove deprecated zigpy properties

* Create a `ZHADevice.is_active_coordinator` property

* Add `@puddly` to the ZHA code owners

* Create a `ZHAGateway.coordinator_ieee` shortcut property
2022-07-11 14:19:30 -04:00
David F. Mulcahey
edaafadde0
Remove ZHA device storage (#74837)
* Remove ZHA device storage

* remove storage file if it exists
2022-07-10 13:46:22 -04:00
epenet
fb10853358
Fix mypy issues in zha core modules (#74028)
* Fix mypy issues in zha gateway, group and helpers

* Cleanup device

* Apply suggestion

* Raise ValueError

* Use hass.config.path
2022-06-28 08:50:16 +02:00
epenet
2de4b193e3
Remove unnecessary type definitions in zha (#73735)
* Cleanup ZigpyClusterType

* Cleanup ZigpyDeviceType

* Cleanup ZigpyEndpointType

* Cleanup ZigpyGroupType

* Cleanup ZigpyZdoType
2022-06-20 12:49:40 +02:00
epenet
06e45893aa
Remove invalid type definitions in zha (#73596) 2022-06-20 11:28:53 +02:00
David F. Mulcahey
a5dc7c5f28
Add logbook describe event support to ZHA (#73077) 2022-06-07 06:49:40 -10:00
David F. Mulcahey
7aca007a9a
Don't discover entities or initialize cluster channels for the coordinator in ZHA (#72442)
don't discover coord entities or init channels
2022-05-24 19:44:33 -04:00
David F. Mulcahey
361119d5c1
Improve ZHA startup performance (#70111)
* Remove semaphores and background mains init

* additional logging

* correct cache usage and update tests
2022-04-27 08:24:26 -07:00
puddly
74bec58bfa
Fix ZHA group creation (#69629) 2022-04-07 15:02:14 -07:00
puddly
0f6296e4b5
Bump zigpy to 0.44.1 and zha-quirks to 0.0.69 (#68921)
* Make unit tests pass

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

* Bump zigpy and quirks versions to ZCLR8 releases

* Fix renamed zigpy cluster attributes

* Handle the default response for ZLL `get_group_identifiers`

* Add more error context to `stage failed` errors

* Fix unit test returning lists as ZCL request responses

* Always load quirks when testing ZHA

* Bump zha-quirks to 0.0.69
2022-03-31 11:26:27 -04:00
Marc Mueller
006fa9b700
Improve zha typing [api] (5) (#68684) 2022-03-30 15:54:31 +02:00
Marc Mueller
38a7c7438e
Add zha typing [core.device] (1) (#68686) 2022-03-28 23:58:33 +02:00
David F. Mulcahey
5e90e178aa
Prevent ZHA coordinator from showing unavailable (#61068) 2021-12-05 18:24:20 -05:00
Alexei Chetroi
c6888e4faf
Refactor ZHA tests (#55844)
* Replace ZHA tests FakeDevice

* Refactor ZHA tests to use zigpy devices and endpoints

* Use common consts for zigpy device mocks

Use the same dict key names for device signature mocks as zha quirks.

* Use const for test device list

* Update tests/components/zha/common.py
2021-09-06 19:00:06 -04:00
Samuel Tardieu
0f78004ede
Add missing string interpolation (#53422) 2021-07-24 12:13:21 +02:00
puddly
987c7a289a
Update ZHA to support zigpy 0.34.0 device initialization (#52610)
* Handle `None` node descriptors

* Skip loading uninitialized devices

* Fix unit test incorrectly handling unset cluster `ep_attribute`

* Revert filtering devices by status during startup
2021-07-13 19:31:17 +02:00
astronaut
ceadb0cba0
Add gui config option consider device unavailable (#51218)
* Add gui config option consider device unavailable

* Update tests
2021-05-29 19:13:09 -04:00
Michael
9eecd90afc
Add constructor return type in integrations T-Z (#50899) 2021-05-20 17:00:19 +02:00
David F. Mulcahey
a644c2e8ba
Add alarm control panel support to ZHA (#49080)
* start implementation of IAS ACE

* starting alarm control panel

* enums

* use new enums from zigpy

* fix import

* write state

* fix registries after rebase

* remove extra line

* cleanup

* fix deprecation warning

* updates to catch up with codebase evolution

* minor updates

* cleanup

* implement more ias ace functionality

* cleanup

* make config helper work for supplied section

* connect to configuration

* use ha async_create_task

* add some tests

* remove unused restore method

* update tests

* add tests from panel POV

* dynamically include alarm control panel config

* fix import

Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
2021-04-27 10:58:59 -04:00
jan iversen
9879b7becf
Rename HomeAssistantType to HomeAssistant, integrations w* - z* (#49543)
* Integration zha: HomeAssistantType -> HomeAssistant.

* Integration zerproc: HomeAssistantType -> HomeAssistant.

* Integration xbox: HomeAssistantType -> HomeAssistant.

* Integration wunderground: HomeAssistantType -> HomeAssistant.

* Integration wled: HomeAssistantType -> HomeAssistant.

* Integration water_heater: HomeAssistantType -> HomeAssistant.

* Integration websocket_api: HomeAssistantType -> HomeAssistant.

* Integration wilight: HomeAssistantType -> HomeAssistant.
2021-04-22 11:04:28 -04:00
David F. Mulcahey
fe80afdb86
Add support for custom configurations in ZHA (#48423)
* initial configuration options

* first crack at saving the data

* constants

* implement initial options

* make more dynamic

* fix unload and reload of the config entry

* update unload
2021-04-12 07:08:42 -04:00
Marc Mueller
dcca29ef68
Update typing 14 (#48078) 2021-03-18 15:08:35 +01:00
tkdrob
3baeed3684
Clean up constants (#47323) 2021-03-05 19:08:04 +01:00
Paulus Schoutsen
594e905742
Remove invalidation_version from deprecated (#44156)
* Remove invalidation_version from deprecated. We don't follow up and just hurts releases

* Revert change to ZHA
2020-12-12 22:24:16 +01:00
Paulus Schoutsen
3af1771616
Include device_id in ZHA event (#43037) 2020-11-10 12:43:15 +01:00
Abílio Costa
28fb761b01
Use skip_configuration flag to skip requests in ZHA (#41554)
* Remove duplicated attribute request from ZHA

The on_off attribute is on the REPORT_CONFIG, so
super().async_initialize already requests it from the device.
No need to request it twice.

* Use skip_configuration flag to skip requests in ZHA

* Fix loading from cache

* Fix loading from cache condition
2020-10-16 20:03:35 -04:00
Alexei Chetroi
f1f23c0453
Better parsing of the ZHA device profile id (#41024) 2020-10-01 21:47:33 -04:00
Samantha
a8b68dc4f9
Add Neighbors & Endpoint Names to zha/devices reply (#40748)
* Add Neighbors & Endpoint Names to zha/devices reply.

* Remove unused const

* Add tests & correct const name.

* Change tests to use corresponding enum device_type
2020-09-29 15:25:05 -04:00
David F. Mulcahey
4e56339ba1
add event and device action for when devices drop (#38701) 2020-08-09 20:37:07 -04:00
Alexei Chetroi
21acdbbbfd
Refactor ZHA Entity availability tracking (#36645)
* Refactor ZHA entity availability

ZHA entity availability tracks on underlying ZHA device availability.

* Update device status without signal.

* Update tests.

* Fix tests.

* Tests for restored devices availability.

* Guard against empty last_seen entry

Refactor device loading a bit.
2020-06-11 17:21:08 -04:00
Alexei Chetroi
1bdbe90d2a
Prevent double ZHA channel initialization (#36554)
* Preven double channel initialization.

* Use a setter for setting ZHA device availability.
2020-06-08 08:54:52 -04:00
David F. Mulcahey
8279efc164
Group by endpoints and not by devices for ZHA Zigbee groups (#34583)
* start implementation
* handle members correctly
* fix group member info
* align groupable devices with group members
* handle group endpoint adding and removing
* update add group
* update group and group member
* update create group
* remove domain check
* update test
* remove temporary 2nd groupable device api
* update test
* rename validator - review comment
* fix test that was never running
* additional testing
* fix coordinator descriptors
* remove check that was done twice
* update test
* Use AsyncMock()
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
2020-05-04 15:19:53 -04:00