This commit is contained in:
David F. Mulcahey 2019-03-26 09:17:43 -04:00 committed by Charles Garwood
parent 77e7b63f4a
commit 3cca3c37f0
2 changed files with 17 additions and 15 deletions

View File

@ -310,11 +310,10 @@ async def websocket_read_zigbee_cluster_attributes(hass, connection, msg):
cluster_id = msg[ATTR_CLUSTER_ID] cluster_id = msg[ATTR_CLUSTER_ID]
cluster_type = msg[ATTR_CLUSTER_TYPE] cluster_type = msg[ATTR_CLUSTER_TYPE]
attribute = msg[ATTR_ATTRIBUTE] attribute = msg[ATTR_ATTRIBUTE]
manufacturer = None
# only use manufacturer code for manufacturer clusters
if cluster_id >= MFG_CLUSTER_ID_START:
manufacturer = msg.get(ATTR_MANUFACTURER) or None manufacturer = msg.get(ATTR_MANUFACTURER) or None
zha_device = zha_gateway.get_device(ieee) zha_device = zha_gateway.get_device(ieee)
if cluster_id >= MFG_CLUSTER_ID_START and manufacturer is None:
manufacturer = zha_device.manufacturer_code
success = failure = None success = failure = None
if zha_device is not None: if zha_device is not None:
cluster = zha_device.async_get_cluster( cluster = zha_device.async_get_cluster(
@ -476,11 +475,10 @@ def async_load_api(hass):
cluster_type = service.data.get(ATTR_CLUSTER_TYPE) cluster_type = service.data.get(ATTR_CLUSTER_TYPE)
attribute = service.data.get(ATTR_ATTRIBUTE) attribute = service.data.get(ATTR_ATTRIBUTE)
value = service.data.get(ATTR_VALUE) value = service.data.get(ATTR_VALUE)
manufacturer = None
# only use manufacturer code for manufacturer clusters
if cluster_id >= MFG_CLUSTER_ID_START:
manufacturer = service.data.get(ATTR_MANUFACTURER) or None manufacturer = service.data.get(ATTR_MANUFACTURER) or None
zha_device = zha_gateway.get_device(ieee) zha_device = zha_gateway.get_device(ieee)
if cluster_id >= MFG_CLUSTER_ID_START and manufacturer is None:
manufacturer = zha_device.manufacturer_code
response = None response = None
if zha_device is not None: if zha_device is not None:
response = await zha_device.write_zigbee_attribute( response = await zha_device.write_zigbee_attribute(
@ -517,11 +515,10 @@ def async_load_api(hass):
command = service.data.get(ATTR_COMMAND) command = service.data.get(ATTR_COMMAND)
command_type = service.data.get(ATTR_COMMAND_TYPE) command_type = service.data.get(ATTR_COMMAND_TYPE)
args = service.data.get(ATTR_ARGS) args = service.data.get(ATTR_ARGS)
manufacturer = None
# only use manufacturer code for manufacturer clusters
if cluster_id >= MFG_CLUSTER_ID_START:
manufacturer = service.data.get(ATTR_MANUFACTURER) or None manufacturer = service.data.get(ATTR_MANUFACTURER) or None
zha_device = zha_gateway.get_device(ieee) zha_device = zha_gateway.get_device(ieee)
if cluster_id >= MFG_CLUSTER_ID_START and manufacturer is None:
manufacturer = zha_device.manufacturer_code
response = None response = None
if zha_device is not None: if zha_device is not None:
response = await zha_device.issue_cluster_command( response = await zha_device.issue_cluster_command(

View File

@ -7,7 +7,7 @@ https://home-assistant.io/components/zha/
import logging import logging
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.helpers.dispatcher import async_dispatcher_send
from . import ZigbeeChannel, parse_and_log_command from . import ZigbeeChannel, parse_and_log_command, MAINS_POWERED
from ..helpers import get_attr_id_by_name from ..helpers import get_attr_id_by_name
from ..const import ( from ..const import (
SIGNAL_ATTR_UPDATED, SIGNAL_MOVE_LEVEL, SIGNAL_SET_LEVEL, SIGNAL_ATTR_UPDATED, SIGNAL_MOVE_LEVEL, SIGNAL_SET_LEVEL,
@ -64,9 +64,14 @@ class OnOffChannel(ZigbeeChannel):
async def async_update(self): async def async_update(self):
"""Initialize channel.""" """Initialize channel."""
_LOGGER.debug("Attempting to update onoff state") from_cache = not self.device.power_source == MAINS_POWERED
_LOGGER.debug(
"%s is attempting to update onoff state - from cache: %s",
self._unique_id,
from_cache
)
self._state = bool( self._state = bool(
await self.get_attribute_value(self.ON_OFF, from_cache=False)) await self.get_attribute_value(self.ON_OFF, from_cache=from_cache))
await super().async_update() await super().async_update()