From 50a75e89e892fc68c1c86b0a374ce31fd0c2c565 Mon Sep 17 00:00:00 2001 From: wenil Date: Wed, 22 Jul 2026 01:54:13 +0300 Subject: [PATCH] FD50 GATT fallback: const.py --- .../tuya_local_ble/tuya_ble/const.py | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 custom_components/tuya_local_ble/tuya_ble/const.py diff --git a/custom_components/tuya_local_ble/tuya_ble/const.py b/custom_components/tuya_local_ble/tuya_ble/const.py new file mode 100644 index 0000000..c73f268 --- /dev/null +++ b/custom_components/tuya_local_ble/tuya_ble/const.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from enum import Enum + +GATT_MTU = 20 + +DEFAULT_ATTEMPTS = 0xFFFF + +CHARACTERISTIC_NOTIFY = "00002b10-0000-1000-8000-00805f9b34fb" +CHARACTERISTIC_WRITE = "00002b11-0000-1000-8000-00805f9b34fb" + +# Newer TuyaOS firmware (e.g. jtmspro hc7n0urm fw 6.0) drops the legacy +# 0xA201 service and exposes the data channel via these characteristics +# of the 0xFD50 service instead. +CHARACTERISTIC_NOTIFY_FD50 = "00000002-0000-1001-8001-00805f9b07d0" +CHARACTERISTIC_WRITE_FD50 = "00000001-0000-1001-8001-00805f9b07d0" + +SERVICE_UUID = "0000a201-0000-1000-8000-00805f9b34fb" + +MANUFACTURER_DATA_ID = 0x07D0 + +RESPONSE_WAIT_TIMEOUT = 60 + + +class TuyaBLECode(Enum): + FUN_SENDER_DEVICE_INFO = 0x0000 + FUN_SENDER_PAIR = 0x0001 + FUN_SENDER_DPS = 0x0002 + FUN_SENDER_DEVICE_STATUS = 0x0003 + + FUN_SENDER_UNBIND = 0x0005 + FUN_SENDER_DEVICE_RESET = 0x0006 + + FUN_SENDER_OTA_START = 0x000C + FUN_SENDER_OTA_FILE = 0x000D + FUN_SENDER_OTA_OFFSET = 0x000E + FUN_SENDER_OTA_UPGRADE = 0x000F + FUN_SENDER_OTA_OVER = 0x0010 + + FUN_SENDER_DPS_V4 = 0x0027 + + FUN_RECEIVE_DP = 0x8001 + FUN_RECEIVE_TIME_DP = 0x8003 + FUN_RECEIVE_SIGN_DP = 0x8004 + FUN_RECEIVE_SIGN_TIME_DP = 0x8005 + + FUN_RECEIVE_DP_V4 = 0x8006 + FUN_RECEIVE_TIME_DP_V4 = 0x8007 + + FUN_RECEIVE_TIME1_REQ = 0x8011 + FUN_RECEIVE_TIME2_REQ = 0x8012 + + +class TuyaBLEDataPointType(Enum): + DT_RAW = 0 + DT_BOOL = 1 + DT_VALUE = 2 + DT_STRING = 3 + DT_ENUM = 4 + DT_BITMAP = 5