* 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
* Fixes for VZM35-SN Attributes
* Fixes
* Update strings.json
Was missing translation keys from strings.json
* Minor Tweak to switch_type entity
Editing main switch_type entity to ensure it doesn't cause an error for the VZM35-SN
* Fix for Button Delay Entity
* zha: Add translation to binary sensors
* Add some small test for name
* Add translations for sensors
* Correct some tests
* Adjust summation key
* Add translation keys for button
* Add translation keys to climate
* Add translation keys for cover
* Add translation keys to fan
* Add translations to light
* Add translations for lock
* Add translation keys to number
* Add translationk keys to select
* Add translations for switch entities
* Add translation to alarm control panel
* Map to some more standard device classes
* Use shorter references
* Remove explicit name from identify button
* Correct tests
* Correction after rebase
* 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>
* 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
* 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
* Always use `Light` for lights, including subclasses
* Clean up other platforms
* Add a unit test to ensure all future entity classes have names
* Remove stale `_name`
* Address review feedback and rename `Open` to `Opening`
* 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
* Add Aqara c1 pet feeder support to ZHA
* clean up
* cleanup
* state classes for daily measurements
* cleanups
* cleanups
* restore the refreshing of the inverted value cache
* cleanup
* Add Hue trigger LED config switch
* Add Hue sensitivity config select
* Use existing consts for channel names
* Add friendly names to config entities
* Follow HA capitalization conventions
* Move Hue motion sensor check to a helper method
* Move helper method to a new helpers file in channels folder
* Add Particulate Matter 2.5 of ZCL concentration clusters to ZHA component
* Fixed black and flake8 test
* New sensors and manufacturer cluster to support IKEA STARKVIND (with quirk)
* Isort and codespell fixes
* Instead using the fan cluster, i've created a Ikea air purifier cluster/channel that supports all sensors and fan modes
* update sensors to support the new ikea_airpurifier channel
* Fix black, flake8, isort
* Mylint/mypy fixes + Use a TypedDict for REPORT_CONFIG in zha #73629
* Last fix for test_fan.py
* fix fan test
Co-authored-by: David F. Mulcahey <david.mulcahey@me.com>
* initial work for configurable detection interval
* update opple cluster channel
* detection interval
* motion sensitivity
* only set the init attributes for the right device
* add trigger indicator configuration entity
* 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
* Split ZHA device loading and entities adding.
Load zha devices from ZHA gateway, but add entities after integration
was setup.
* Use hass.loop.create_task()
* Split ZHA device initialization from loading.
Restore and initialize ZHA devices separately.
* Use hass.async_create_task()
Load devices prior group initialization.
* cleanup timer handle when device is removed
* separate unavailable times for mains vs battery
* better name
* remove light refresh handle when removing light
* remove unused parallel updates
* don't steal HA const for different purpose
* don't flood network every hour for lights
* update test to test both intervals
* add test for light refresh interval
* fix tests
* update test
* put parallel updates back for now...
* fix async_schedule_update_ha_state usage
* review comment
* review comment
* update test - review conversation
* review comments
* await count not call count
* flip some state
* multi attribute reads for lights
* catch specific exceptions
* get attributes
* fix mains powered update
* add guards and use get_attributes
* use debug for read failures
* cleanup
* update return value for read_attributes
* fix on with timed off
* Add ZHA core typing helper.
* Add aux_channels to ZHA rule matching.
* Add match rule claim_channels() method.
* Expose underlying zigpy device.
* Not sure we need this one.
* Move "base" channels.
* Framework for channel discovery.
* Make DEVICE_CLASS and REMOTE_DEVICE_TYPE default dicts.
* Remove attribute reporting configuration registry.
* Refactor channels.
- Refactor zha events
- Use compound IDs and unique_ids
- Refactor signal dispatching on attribute updates
* Use unique id compatible with entities unique ids.
* Refactor ZHA Entity registry.
Let match rule to check for the match.
* Refactor discovery to use new channels.
* Cleanup ZDO channel.
Remove unused zha store call.
* Handle channel configuration and initialization.
* Refactor ZHA Device to use new channels.
* Refactor ZHA Gateway to use new discovery framework.
Use hass.data for entity info intermediate store.
* Don't keep entities in hass.data.
* ZHA gateway new discovery framework.
* Refactor ZHA platform loading.
* Don't update ZHA entities, when restoring from zigpy.
* ZHA entity discover tests.
* Add AnalogInput sensor.
* Remove 0xFC02 based entity from Keen smart vents.
* Clean up IAS channels.
* Refactor entity restoration.
* Fix lumi.router entities name.
* Rename EndpointsChannel to ChannelPool.
* Make Channels.pools a list.
* Fix cover test.
* Fix FakeDevice class.
* Fix device actions.
* Fix channels typing.
* Revert update_before_add=False
* Refactor channel class matching.
* Use a helper function for adding entities.
* Make Pylint happy.
* Rebase cleanup.
* Update coverage for ZHA device type overrides.
* Use cluster_id for single output cluster registry.
* Remove ZHA typing from coverage.
* Fix tests.
* Address comments.
* Address comments.