From 18f376b0d68bf79124da933a3739b84c59b8a12c Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Wed, 22 Dec 2021 14:24:48 +0100 Subject: [PATCH] Restored parsing of lockStatus field (i.e. FFF3 characteristic) --- custom_components/airbnk_mqtt/custom_device.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/custom_components/airbnk_mqtt/custom_device.py b/custom_components/airbnk_mqtt/custom_device.py index a2d7ad1..c482379 100644 --- a/custom_components/airbnk_mqtt/custom_device.py +++ b/custom_components/airbnk_mqtt/custom_device.py @@ -235,6 +235,8 @@ def parse_operation_message(self, msg): if msg_sign == self.cmd["sign"]: self.cmdSent = True + self.parse_new_lockStatus(payload["lockStatus"]) + for callback_func in self._callbacks: callback_func() @@ -260,6 +262,18 @@ def send_mqtt_command(self): json.dumps(self.cmd), ) + def parse_new_lockStatus(self, lockStatus): + _LOGGER.debug("Parsing new lockStatus: %s", lockStatus) + bArr = bytearray.fromhex(lockStatus) + if bArr[0] != 0xAA or bArr[3] != 0x02 or bArr[4] != 0x04: + _LOGGER.error("Wrong lockStatus msg: %s", lockStatus) + return + + lockEvents = (bArr[10] << 24) | (bArr[11] << 16) | (bArr[12] << 8) | bArr[13] + self.lockEvents = lockEvents + self.voltage = ((float)((bArr[14] << 8) | bArr[15])) * 0.01 + self.curr_state = (bArr[16] >> 4) & 3 + def parse_MQTT_advert(self, mqtt_advert): _LOGGER.debug("Parsing advert msg: %s", mqtt_advert) bArr = bytearray.fromhex(mqtt_advert)