diff --git a/zigpy_deconz/api.py b/zigpy_deconz/api.py index d1d54e8..bdb7bb5 100644 --- a/zigpy_deconz/api.py +++ b/zigpy_deconz/api.py @@ -14,10 +14,12 @@ from asyncio import timeout as asyncio_timeout # pragma: no cover from zigpy.config import CONF_DEVICE_PATH +import zigpy.greenpower from zigpy.types import ( APSStatus, Bool, Channels, + GPDataFrame, KeyData, SerializableBytes, Struct, @@ -399,7 +401,7 @@ class Command(Struct): "status": Status, "frame_length": t.uint16_t, "payload_length": t.uint16_t, - "reserved": t.LongOctetString, + "gp_data_frame": GPDataFrame }, ), } @@ -690,6 +692,18 @@ async def _data_poller(self): status=rsp["status"], device_state=rsp["device_state"] ) + def _handle_zigbee_green_power( + self, + status: Status, + gp_data_frame: GPDataFrame + ) -> None: + if status == Status.SUCCESS: + asyncio.ensure_future( + self._app._greenpower.handle_received_green_power_frame(gp_data_frame), + loop=asyncio.get_running_loop() + ) + + def _handle_device_state_changed( self, status: t.Status,