"""Support for alarm kits.""" from .device import device from .exceptions import check_error class S1C(device): """Controls a Broadlink S1C.""" _SENSORS_TYPES = { 0x31: 'Door Sensor', # 49 as hex 0x91: 'Key Fob', # 145 as hex, as serial on fob corpse 0x21: 'Motion Sensor' # 33 as hex } def __init__(self, *args, **kwargs) -> None: """Initialize the controller.""" device.__init__(self, *args, **kwargs) self.type = 'S1C' def get_sensors_status(self) -> dict: """Return the state of the sensors.""" packet = bytearray(16) packet[0] = 0x06 # 0x06 - get sensors info, 0x07 - probably add sensors response = self.send_packet(0x6a, packet) check_error(response[0x22:0x24]) payload = self.decrypt(response[0x38:]) if not payload: return None count = payload[0x4] sensor_data = payload[0x6:] sensors = [ bytearray(sensor_data[i * 83:(i + 1) * 83]) for i in range(len(sensor_data) // 83) ] return { 'count': count, 'sensors': [ { 'status': sensor[0], 'name': sensor[4:26].decode().strip('\x00'), 'type': self._SENSORS_TYPES.get(sensor[3], 'Unknown'), 'order': sensor[1], 'serial': sensor[26:30].hex(), } for sensor in sensors if any(sensor[26:30]) ] }