Commit graph

457 commits

Author SHA1 Message Date
puddly
8a79870e3a
Clean up stale ZHA database listener when reconnecting to radio (#101850) 2023-10-20 08:48:33 +02:00
TheJulianJES
92e625636a
Fix ZHA power_factor attribute not initialized (#102133) 2023-10-20 08:15:37 +02:00
TheJulianJES
60c1a8d56f
Remove invalid attribute reporting for enhanced_current_hue in ZHA (#102137) 2023-10-17 16:23:11 -04:00
TheJulianJES
9dd2f37b11
Remove unused variables in ZHA lighting cluster handler (#102138)
* Remove unused `UNSUPPORTED_ATTRIBUTE`

* Remove unused `CAPABILITIES_COLOR_TEMP`

* Use zigpy `ColorCapabilities` and remove `CAPABILITIES_COLOR_XY`
2023-10-17 15:04:03 -05:00
Caius-Bonus
5290396731
ZHA Component: Correct AttributeUpdated signal in Thermostat climate entity, ThermostatClusterHandler and ThermostatHVACAction sensor entity (#101725)
* initial

* change other Thermostat climate entities

* remove AttributeUpdateRecord
2023-10-10 14:23:03 -04:00
puddly
2e4df6d2f2
Open a ZHA repair when network settings change (#99482) 2023-10-09 15:01:05 +02:00
TheJulianJES
f5d8d41ad5
Fix ZHA exception when writing cie_addr during configuration (#101087)
Fix ZHA exception when writing `cie_addr`
2023-09-28 21:56:17 -04:00
J. Nick Koston
59daceafd2
Avoid calling extract_stack in system_log since it does blocking I/O (#100455) 2023-09-21 09:48:41 +02: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
J. Nick Koston
b69cc29a78
Switch lambda to attrgetter in zha (#99660) 2023-09-05 22:45:45 +02:00
puddly
7ab1913ba4
Fix ZHA startup creating entities with non-unique IDs (#99679)
* Make the ZHAGateway initialization restartable so entities are unique

* Add a unit test
2023-09-05 20:30:28 +02:00
puddly
22c5071270
Initialize ZHA device database before connecting to the radio (#98082)
* Create ZHA entities before attempting to connect to the coordinator

* Delete the ZHA gateway object when unloading the config entry

* Only load ZHA groups if the coordinator device info is known offline

* Do not create a coordinator ZHA device until it is ready

* [WIP] begin fixing unit tests

* [WIP] Fix existing unit tests (one failure left)

* Fix remaining unit test
2023-08-31 12:09:46 -04:00
puddly
23839a7f10
Wrap most ZHA exceptions in HomeAssistantError (#98421)
* Wrap attribute writes in a helper throwing `HomeAssistantError`

* Do not check for `Exception` instances, they are now propagated

* Write `cie_addr` synchronously

* Fix unnecessary `if` in `async_set_native_value`

* Fix unit tests

* Use `HomeAssistantError` in cover commands

* Revert writing `cie_addr` synchronously

* Disallow proxying of some cluster methods to fix unit test warnings

* Unit test cover failures to increase coverage

* Unit test missing climate device

* Unit test remaining cover commands
2023-08-28 17:24:12 -04:00
Ville Skyttä
b51c0f6ddc
Remove unnnecessary pylint configs from components [s-z]* (#98925) 2023-08-24 01:25:32 +02:00
Erik Montnemery
91faa53843
Don't allow hass.config.config_dir to be None (#98442) 2023-08-16 13:00:14 +02:00
Erik Montnemery
045c327928
Move DeviceInfo from entity to device registry (#98149)
* Move DeviceInfo from entity to device registry

* Update integrations
2023-08-10 22:04:26 -04:00
puddly
84220e92ea
Wrap internal ZHA exceptions in HomeAssistantErrors (#97033) 2023-07-24 09:12:21 +02:00
Marc Mueller
77f38e33e5
Import names from typing instead of typing_extensions [3.11] (#97065) 2023-07-22 17:03:44 -05:00
Guy Martin
deafdc3005
Allow match quirk_class of custom quirks to ZHA (#93268)
* Allow matching custom quirks when self.quirk_classes might not contain the full class path but only the module and the class.

* Add test for matching custom quirk classes.
2023-07-19 16:11:05 -04:00
Erik Montnemery
a568885ad2
Add backport of cached_property from CPython 3.12 (#95292) 2023-06-26 16:23:07 -05:00
puddly
22dfa8797f
Bump ZHA dependencies (#93989)
* Make `find_entity_id` synchronous

* Remove `tries`

* Use new `attribute_updated` event signature

* Validate attributes before creating entities

* Avoid swallowing exceptions when opening covers

* Bump ZHA dependencies

* Add a matcher for Sinope water leak sensors using a non-standard ZCL attribute

* Ensure handler matching is strict, not multi

* Add type annotations for newly-updated functions
2023-06-14 21:42:31 -04:00
Franck Nijhof
c3936e6f14
Replace isort with ruff (#94302) 2023-06-08 23:43:56 +02:00
puddly
b03c429db7
Revert "Increase Zigbee command retries (#93877)" (#94123) 2023-06-06 17:44:29 +02: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
puddly
b9ec3a8af8
Increase Zigbee command retries (#93877)
* Enable retries for requests

* Update unit tests

* Account for fewer group retries in unit tests
2023-05-31 20:08:18 -04:00
puddly
5f22b0c6cc
Handle invalid ZHA cluster handlers (#92543)
* Do not crash on startup when an invalid cluster handler is encountered

* Add a unit test
2023-05-04 20:02:17 -04:00
repaxan
1d6b08e194
Add ZHA binding for window coverings (#92387) 2023-05-03 08:35:20 -04:00
David F. Mulcahey
e6438dabff
Fix ZHA device triggers (#92186)
* Fix missing endpoint data on ZHA events

* revert to flat structure

* update test
2023-04-28 11:29:24 -04:00
puddly
9d0dd0b784
Fix ZHA startup failure with the Konke button (#92144)
* Ensure devices with bad cluster subclasses do not prevent startup

* Explicitly unit test an affected SML001 device

* Do not use invalid `hue_occupancy` attribute name

* Actually remove `hue_occupancy`

* Bump ZHA dependencies
2023-04-27 18:35:07 -04:00
puddly
4f660cc5f5
Allow the ZHA default light transition time to be configured as a float (#92075) 2023-04-26 21:24:06 +02:00
puddly
72414a5864
Load quirks in ZHA unit tests (#91779) 2023-04-21 08:24:39 +02:00
epenet
55c723753e
Cleanup device handles on ZHA controller shutdown (#91591) 2023-04-19 17:13:58 +02: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
a9db39a833
Fix attribute reporting config failures in ZHA (#91403) 2023-04-15 15:48:34 +02:00
codyhackw
4f507e7f57
Update Inovelli Blue Series switch support in ZHA (#91254)
Co-authored-by: David F. Mulcahey <david.mulcahey@icloud.com>
2023-04-12 22:09:16 +02:00
David F. Mulcahey
0fee49a32e
Cleanup ZHA from Zigpy deprecated property removal (#91180) 2023-04-10 14:16:11 -04:00
David F. Mulcahey
90f857e926
Fix Smartthings acceleration sensor in ZHA (#91056) 2023-04-07 15:55:37 -10:00
puddly
84eb9c5f97
Fix ZHA definition error on received command (#90602)
* Fix use of deprecated command schema access

* Add a unit test
2023-03-31 14:53:42 -04:00
puddly
3a3c738945
Bump ZHA dependencies (#90547)
* Bump ZHA dependencies

* Ensure the network is formed on channel 15 when multi-PAN is in use
2023-03-30 20:55:01 -04:00
TheJulianJES
47a2598b66
Add Aqara smoke sensor entities to ZHA (#90159)
* Add Aqara smoke sensor entities (WIP)

* Update smoke sensor entities (WIP)

* Drop two init attributes

* Move self-test button

* Remove self-test switch, add icons

* Add smoke sensor dbm entity

* Also add SMOKE device class to linkage alarm

Note: Enable "Linkage alarm" for this
2023-03-28 21:30:56 -04:00
TheJulianJES
12f49006cf
Add Aqara E1 thermostat entities to ZHA (#90158)
* Add Aqara E1 thermostat entities (WIP)

* Remove calibrate button for now

* Add diagnostic entity category to calibrated + external sensor

* Add multiplier for ZHA config number/away preset temp

* Set default multiplier correctly

* Add and use `CONFIG_DIAGNOSTIC_MATCH` for diagnostic entities
2023-03-28 21:12:21 -04:00
MattWestb
ee2101ef38
Add binding of IKEA Matter Switch cluster in ZHA (#89623)
* Adding binding of IKEA Matter Switch cluster

IKEA Symfonisk Gen 2 is using Matter ZCL Switch command but on manufacture cluster then its not supported in ZVL R8 that need being bond for sending the commands to the coordinator.

* Update manufacturerspecific.py

* Update manufacturerspecific.py

Delete not needed function `@registries.BINDABLE_CLUSTERS.register(0xFC80)`
2023-03-28 19:33:06 -04:00
TheJulianJES
89a3c304c2
Refactor ZHA binary sensors to read from zigpy cache (#89481)
* Construct binary sensor state from zigpy cache (WIP)

* Workaround zha-quirks issue where "MotionWithReset" quirks don't update attribute cache (WIP)

zha-quirks currently has an issue where the ZONE_STATE attribute is updated (when the zone_STATUS changes).
https://github.com/zigpy/zha-device-handlers/pull/2231 is a proper fix for this.

For now, we just update the attribute cache when we get the "zone status update notification" command.

This wasn't noticed before, as the "attribute report signal" was sent from the `cluster_command()` method and the used the provided attribute (in the signal) to update the `_state` value in the binary sensor class.
As we just tell HA to write state again when we get an attribute report now, the ZONE_STATUS attribute is read now (and needs to be correct).

* Use parse() method of main class for IasZone entity (with stripped bits)

* Change wording in comment, remove explicitly sending attr signal

(This comment should be removed/changed later anyway)

* Remove note

* Get zone_status attribute id with zigpy

* Remove `security.` prefix for `IasZone` import

`AceCluster` was already directly imported and `IasZone` is too now for getting the attribute id

* Store full zone status attribute in cache

* Check that non-alarm bits are ignored in IasZone sensor test

* Re-enable occupancy binary sensor test

This test seems to work fine and I don't see any reason why it was commented out for a while

* Fix cached read mix-up for `zone_status`/`zone_state`

This allows cached reads for `zone_state` (enrolled or not), but forces a new read for `zone_status` (alarm or not).
2023-03-28 12:39:10 -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
epenet
91e389c58d
Bump ruff to 0.0.253 (#89211)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-03-06 16:16:31 +01:00
Guy Martin
7365522d1f
Add matching on quirk_classes to zha (#87653)
* Add matching on quirk_classes.

* Add and fix tests for matching on quirk_classes.

* Black fix.

* Add a unit test to validate quirk classes.
2023-03-02 19:43:11 -05:00
puddly
2a819f23c1
Disable the ZHA bellows UART thread when connecting to a TCP coordinator (#88202)
Disable the bellows UART thread when connecting to a TCP coordinator
2023-02-22 15:12:55 -05:00
TheJulianJES
5bffbafae4
Add ZHA "consumer connected" binary sensor for Xiaomi EU plugs (#88194)
* Initialize consumer_connected attribute

* Add binary sensor for consumer_connected
2023-02-22 14:47:43 +01:00
Paulus Schoutsen
3a32d2bdcb
Add background tasks to config entries (#88335)
* Use a set for config entries task tracking

* Allow adding background tasks to config entries

* Add tests for config entry add tasks

* Update docstrings on core create task

* Migrate roon and august

* Use in more places

* Guard for None
2023-02-17 13:50:05 -05:00