Add configure_reporting() method to zha component (#16487)
* Add zha.configure_reporting() method. Binds a cluster and configures reporting for the specified attribute. * git add homeassistant/components/binary_sensor/zha.py * Refactor sensor.zha to use new 'configure_reporting() method. * Zha configure reporting - switch (#1) * use configure_reporting for zha switch * lint fixes * Rename variables/classes to properly reflect the content
This commit is contained in:
parent
1586d3000c
commit
f2203e52ef
4 changed files with 66 additions and 24 deletions
|
@ -65,28 +65,25 @@ async def _async_setup_iaszone(hass, config, async_add_entities,
|
|||
async def _async_setup_remote(hass, config, async_add_entities,
|
||||
discovery_info):
|
||||
|
||||
async def safe(coro):
|
||||
"""Run coro, catching ZigBee delivery errors, and ignoring them."""
|
||||
import zigpy.exceptions
|
||||
try:
|
||||
await coro
|
||||
except zigpy.exceptions.DeliveryError as exc:
|
||||
_LOGGER.warning("Ignoring error during setup: %s", exc)
|
||||
remote = Remote(**discovery_info)
|
||||
|
||||
if discovery_info['new_join']:
|
||||
from zigpy.zcl.clusters.general import OnOff, LevelControl
|
||||
out_clusters = discovery_info['out_clusters']
|
||||
if OnOff.cluster_id in out_clusters:
|
||||
cluster = out_clusters[OnOff.cluster_id]
|
||||
await safe(cluster.bind())
|
||||
await safe(cluster.configure_reporting(0, 0, 600, 1))
|
||||
await zha.configure_reporting(
|
||||
remote.entity_id, cluster, 0, min_report=0, max_report=600,
|
||||
reportable_change=1
|
||||
)
|
||||
if LevelControl.cluster_id in out_clusters:
|
||||
cluster = out_clusters[LevelControl.cluster_id]
|
||||
await safe(cluster.bind())
|
||||
await safe(cluster.configure_reporting(0, 1, 600, 1))
|
||||
await zha.configure_reporting(
|
||||
remote.entity_id, cluster, 0, min_report=1, max_report=600,
|
||||
reportable_change=1
|
||||
)
|
||||
|
||||
sensor = Switch(**discovery_info)
|
||||
async_add_entities([sensor], update_before_add=True)
|
||||
async_add_entities([remote], update_before_add=True)
|
||||
|
||||
|
||||
class BinarySensor(zha.Entity, BinarySensorDevice):
|
||||
|
@ -131,7 +128,7 @@ class BinarySensor(zha.Entity, BinarySensorDevice):
|
|||
|
||||
async def async_update(self):
|
||||
"""Retrieve latest state."""
|
||||
from bellows.types.basic import uint16_t
|
||||
from zigpy.types.basic import uint16_t
|
||||
|
||||
result = await zha.safe_read(self._endpoint.ias_zone,
|
||||
['zone_status'],
|
||||
|
@ -141,7 +138,7 @@ class BinarySensor(zha.Entity, BinarySensorDevice):
|
|||
self._state = result.get('zone_status', self._state) & 3
|
||||
|
||||
|
||||
class Switch(zha.Entity, BinarySensorDevice):
|
||||
class Remote(zha.Entity, BinarySensorDevice):
|
||||
"""ZHA switch/remote controller/button."""
|
||||
|
||||
_domain = DOMAIN
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue