def close_cover(self, **kwargs): """Close the cover.""" # 0x80, 0x00, 0x1f, 0xa4, 0x10, 0x44, 0x1f, 0xa4, 0x60, 0x3, 0x0, 0x2, 0x0, # 0x7, 0x0, 0x6, 0x0, 0x5, 0x1, 0x4, 0x0, 0xb4 if self._way == '1': self._closed = True mac = self._mac.split('#') BYTES_CLOSE[2], BYTES_CLOSE[3] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[6], BYTES_CLOSE[7] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[-4] = 0x1 resu_crc = checkcrc.xorcrc_hex(BYTES_CLOSE) BYTES_CLOSE[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, { "data": BYTES_CLOSE }) time.sleep(0.4) BYTES_CLOSE[2], BYTES_CLOSE[3] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[6], BYTES_CLOSE[7] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[-4] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_CLOSE) BYTES_CLOSE[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, { "data": BYTES_CLOSE }) if self._way == '2': # 0x80, 0x00, 0x1f, 0xa4, 0x10, 0x44, 0x1f, 0xa4, 0x60, 0x3, 0x0, 0x2, 0x0, # 0x7, 0x0, 0x6, 0x0, 0x5, 0x1, 0x4, 0x0, 0xb4 self._closed = True mac = self._mac.split('#') BYTES_CLOSE[2], BYTES_CLOSE[3] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[6], BYTES_CLOSE[7] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[12] = 0x1 BYTES_CLOSE[-4] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_CLOSE) BYTES_CLOSE[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, { "data": BYTES_CLOSE }) time.sleep(0.4) BYTES_CLOSE[2], BYTES_CLOSE[3] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[6], BYTES_CLOSE[7] = int(mac[0], 16), int(mac[1], 16) BYTES_CLOSE[12] = 0x0 BYTES_CLOSE[-4] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_CLOSE) BYTES_CLOSE[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, { "data": BYTES_CLOSE })
def open_cover(self, **kwargs): """Open the cover.""" # 0x80, 0x00, 0x1f, 0xa4, 0x10, 0x44, 0x1f, 0xa4, 0x60, 0x3, 0x0, 0x2, 0x0, # 0x7, 0x0, 0x6, 0x1, 0x5, 0x0, 0x4, 0x0, 0xb4 if self._way == '1': self._closed = False mac = self._mac.split('#') BYTES_OPEN[2], BYTES_OPEN[3] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[6], BYTES_OPEN[7] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[-6] = 0x1 resu_crc = checkcrc.xorcrc_hex(BYTES_OPEN) BYTES_OPEN[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_OPEN}) time.sleep(0.4) BYTES_OPEN[2], BYTES_OPEN[3] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[6], BYTES_OPEN[7] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[-6] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_OPEN) BYTES_OPEN[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_OPEN}) elif self._way == '2': # 0x80, 0x00, 0x1f, 0xa4, 0x10, 0x44, 0x1f, 0xa4, 0x60, 0x3, 0x0, 0x2, 0x0, # 0x7, 0x0, 0x6, 0x1, 0x5, 0x0, 0x4, 0x0, 0xb4 self._closed = False mac = self._mac.split('#') BYTES_OPEN[2], BYTES_OPEN[3] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[6], BYTES_OPEN[7] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[10] = 0x1 BYTES_OPEN[-6] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_OPEN) BYTES_OPEN[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_OPEN}) time.sleep(0.4) BYTES_OPEN[2], BYTES_OPEN[3] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[6], BYTES_OPEN[7] = int(mac[0], 16), int(mac[1], 16) BYTES_OPEN[10] = 0x0 BYTES_OPEN[-6] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_OPEN) BYTES_OPEN[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_OPEN})
def stop_cover(self, **kwargs): """Stop the cover.""" # 0x80, 0x00, 0x1f, 0xa4, 0x10, 0x44, 0x1f, 0xa4, 0x60, 0x3, 0x0, 0x2, 0x0, # 0x7, 0x0, 0x6, 0x0, 0x5, 0x0, 0x4, 0x1, 0xb4 if self._way == '1': self._closed = True mac = self._mac.split('#') BYTES_STOP[2], BYTES_STOP[3] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[6], BYTES_STOP[7] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[-2] = 0x1 resu_crc = checkcrc.xorcrc_hex(BYTES_STOP) BYTES_STOP[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_STOP}) time.sleep(0.4) BYTES_STOP[2], BYTES_STOP[3] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[6], BYTES_STOP[7] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[-2] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_STOP) BYTES_STOP[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_STOP}) elif self._way == '2': self._closed = True mac = self._mac.split('#') BYTES_STOP[2], BYTES_STOP[3] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[6], BYTES_STOP[7] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[-8] = 0x1 resu_crc = checkcrc.xorcrc_hex(BYTES_STOP) BYTES_STOP[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_STOP}) time.sleep(0.4) BYTES_STOP[2], BYTES_STOP[3] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[6], BYTES_STOP[7] = int(mac[0], 16), int(mac[1], 16) BYTES_STOP[-8] = 0x0 resu_crc = checkcrc.xorcrc_hex(BYTES_STOP) BYTES_STOP[-1] = resu_crc self._hass.services.call(POLY_ZIGBEE_DOMAIN, POLY_ZIGBEE_SERVICE, {"data": BYTES_STOP})