From 4a5bf8386786b8fbb70f8de7c5b2a2e1dfbcf3a5 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:42:11 +0100 Subject: [PATCH 01/33] Introduced pytuya with support for 3.4 protocol --- .../localtuya/pytuya/__init__.py | 713 ++++++++++++++---- 1 file changed, 546 insertions(+), 167 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index d36cd5e..a417534 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -3,11 +3,8 @@ """ Python module to interface with Tuya WiFi smart devices. -Mostly derived from Shenzhen Xenon ESP8266MOD WiFi smart devices -E.g. https://wikidevi.com/wiki/Xenon_SM-PW701U - -Author: clach04 -Maintained by: postlund +Author: clach04, postlund +Maintained by: rospogrigio For more information see https://github.com/clach04/python-tuya @@ -19,7 +16,7 @@ Classes Functions json = status() # returns json payload - set_version(version) # 3.1 [default] or 3.3 + set_version(version) # 3.1 [default], 3.2, 3.3 or 3.4 detect_available_dps() # returns a list of available dps provided by the device update_dps(dps) # sends update dps command add_dps_to_request(dp_index) # adds dp_index to the list of dps used by the @@ -27,18 +24,21 @@ Functions set_dp(on, dp_index) # Set value of any dps index. -Credits - * TuyaAPI https://github.com/codetheweb/tuyapi by codetheweb and blackrozes - For protocol reverse engineering - * PyTuya https://github.com/clach04/python-tuya by clach04 - The origin of this python module (now abandoned) - * LocalTuya https://github.com/rospogrigio/localtuya-homeassistant by rospogrigio - Updated pytuya to support devices with Device IDs of 22 characters + Credits + * TuyaAPI https://github.com/codetheweb/tuyapi by codetheweb and blackrozes + For protocol reverse engineering + * PyTuya https://github.com/clach04/python-tuya by clach04 + The origin of this python module (now abandoned) + * Tuya Protocol 3.4 Support by uzlonewolf + Enhancement to TuyaMessage logic for multi-payload messages and Tuya Protocol 3.4 support + * TinyTuya https://github.com/jasonacox/tinytuya by jasonacox + Several CLI tools and code for Tuya devices """ import asyncio import base64 import binascii +import hmac import json import logging import struct @@ -46,18 +46,58 @@ import time import weakref from abc import ABC, abstractmethod from collections import namedtuple -from hashlib import md5 +from hashlib import md5,sha256 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -version_tuple = (9, 0, 0) +version_tuple = (10, 0, 0) version = version_string = __version__ = "%d.%d.%d" % version_tuple -__author__ = "postlund" +__author__ = "rospogrigio" _LOGGER = logging.getLogger(__name__) -TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc") +# Tuya Packet Format +TuyaHeader = namedtuple('TuyaHeader', 'prefix seqno cmd length') +MessagePayload = namedtuple("MessagePayload", "cmd payload") +try: + TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,)) +except: + TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good") + +# TinyTuya Error Response Codes +ERR_JSON = 900 +ERR_CONNECT = 901 +ERR_TIMEOUT = 902 +ERR_RANGE = 903 +ERR_PAYLOAD = 904 +ERR_OFFLINE = 905 +ERR_STATE = 906 +ERR_FUNCTION = 907 +ERR_DEVTYPE = 908 +ERR_CLOUDKEY = 909 +ERR_CLOUDRESP = 910 +ERR_CLOUDTOKEN = 911 +ERR_PARAMS = 912 +ERR_CLOUD = 913 + +error_codes = { + ERR_JSON: "Invalid JSON Response from Device", + ERR_CONNECT: "Network Error: Unable to Connect", + ERR_TIMEOUT: "Timeout Waiting for Device", + ERR_RANGE: "Specified Value Out of Range", + ERR_PAYLOAD: "Unexpected Payload from Device", + ERR_OFFLINE: "Network Error: Device Unreachable", + ERR_STATE: "Device in Unknown State", + ERR_FUNCTION: "Function Not Supported by Device", + ERR_DEVTYPE: "Device22 Detected: Retry Command", + ERR_CLOUDKEY: "Missing Tuya Cloud Key and Secret", + ERR_CLOUDRESP: "Invalid JSON Response from Cloud", + ERR_CLOUDTOKEN: "Unable to Get Cloud Token", + ERR_PARAMS: "Missing Function Parameters", + ERR_CLOUD: "Error Response from Tuya Cloud", + None: "Unknown Error", +} SET = "set" STATUS = "status" @@ -65,58 +105,109 @@ HEARTBEAT = "heartbeat" RESET = "reset" UPDATEDPS = "updatedps" # Request refresh of DPS +# Tuya Command Types +# Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h +AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config +ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD +SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key +SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response +SESS_KEY_NEG_FINISH = 0x05 # FRM_SECURITY_TYPE5 # finalize session key negotiation +UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command +CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD +STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD +HEART_BEAT = 0x09 # FRM_TP_HB +DP_QUERY = 0x0a # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points +QUERY_WIFI = 0x0b # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD +TOKEN_BIND = 0x0c # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) +CONTROL_NEW = 0x0d # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD +ENABLE_WIFI = 0x0e # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD +WIFI_INFO = 0x0f # 15 # FRM_CFG_WIFI_INFO +DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW +SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC +UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS +UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION +AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 +BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 +LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM + + PROTOCOL_VERSION_BYTES_31 = b"3.1" PROTOCOL_VERSION_BYTES_33 = b"3.3" +PROTOCOL_VERSION_BYTES_34 = b"3.4" -PROTOCOL_33_HEADER = PROTOCOL_VERSION_BYTES_33 + 12 * b"\x00" - -MESSAGE_HEADER_FMT = ">4I" # 4*uint32: prefix, seqno, cmd, length +PROTOCOL_3x_HEADER = 12 * b"\x00" +PROTOCOL_33_HEADER = PROTOCOL_VERSION_BYTES_33 + PROTOCOL_3x_HEADER +PROTOCOL_34_HEADER = PROTOCOL_VERSION_BYTES_34 + PROTOCOL_3x_HEADER +MESSAGE_HEADER_FMT = ">4I" # 4*uint32: prefix, seqno, cmd, length [, retcode] MESSAGE_RECV_HEADER_FMT = ">5I" # 4*uint32: prefix, seqno, cmd, length, retcode +MESSAGE_RETCODE_FMT = ">I" # retcode for received messages MESSAGE_END_FMT = ">2I" # 2*uint32: crc, suffix - +MESSAGE_END_FMT_HMAC = ">32sI" # 32s:hmac, uint32:suffix PREFIX_VALUE = 0x000055AA +PREFIX_BIN = b"\x00\x00U\xaa" SUFFIX_VALUE = 0x0000AA55 +SUFFIX_BIN = b"\x00\x00\xaaU" +NO_PROTOCOL_HEADER_CMDS = [DP_QUERY, DP_QUERY_NEW, UPDATEDPS, HEART_BEAT, SESS_KEY_NEG_START, SESS_KEY_NEG_RESP, SESS_KEY_NEG_FINISH ] HEARTBEAT_INTERVAL = 10 # DPS that are known to be safe to use with update_dps (0x12) command UPDATE_DPS_WHITELIST = [18, 19, 20] # Socket (Wi-Fi) +# Tuya Device Dictionary - Command and Payload Overrides # This is intended to match requests.json payload at # https://github.com/codetheweb/tuyapi : -# type_0a devices require the 0a command as the status request -# type_0d devices require the 0d command as the status request, and the list of -# dps used set to null in the request payload (see generate_payload method) - +# 'type_0a' devices require the 0a command for the DP_QUERY request +# 'type_0d' devices require the 0d command for the DP_QUERY request and a list of +# dps used set to Null in the request payload # prefix: # Next byte is command byte ("hexByte") some zero padding, then length # of remaining payload, i.e. command + suffix (unclear if multiple bytes used for # length, zero padding implies could be more than one byte) -PAYLOAD_DICT = { + +# Any command not defined in payload_dict will be sent as-is with a +# payload of {"gwId": "", "devId": "", "uid": "", "t": ""} + +payload_dict = { + # Default Device "type_0a": { - STATUS: {"hexByte": 0x0A, "command": {"gwId": "", "devId": ""}}, - SET: {"hexByte": 0x07, "command": {"devId": "", "uid": "", "t": ""}}, - HEARTBEAT: {"hexByte": 0x09, "command": {}}, - UPDATEDPS: {"hexByte": 0x12, "command": {"dpId": [18, 19, 20]}}, - RESET: { - "hexByte": 0x12, - "command": { - "gwId": "", - "devId": "", - "uid": "", - "t": "", - "dpId": [18, 19, 20], - }, + AP_CONFIG: { # [BETA] Set Control Values on Device + "command": {"gwId": "", "devId": "", "uid": "", "t": ""}, + }, + CONTROL: { # Set Control Values on Device + "command": {"devId": "", "uid": "", "t": ""}, + }, + STATUS: { # Get Status from Device + "command": {"gwId": "", "devId": ""}, + }, + HEART_BEAT: {"command": {"gwId": "", "devId": ""}}, + DP_QUERY: { # Get Data Points from Device + "command": {"gwId": "", "devId": "", "uid": "", "t": ""}, + }, + CONTROL_NEW: {"command": {"devId": "", "uid": "", "t": ""}}, + DP_QUERY_NEW: {"command": {"devId": "", "uid": "", "t": ""}}, + UPDATEDPS: {"command": {"dpId": [18, 19, 20]}}, + }, + # Special Case Device "0d" - Some of these devices + # Require the 0d command as the DP_QUERY status request and the list of + # dps requested payload + "type_0d": { + DP_QUERY: { # Get Data Points from Device + "command_override": CONTROL_NEW, # Uses CONTROL_NEW command for some reason + "command": {"devId": "", "uid": "", "t": ""}, }, }, - "type_0d": { - STATUS: {"hexByte": 0x0D, "command": {"devId": "", "uid": "", "t": ""}}, - SET: {"hexByte": 0x07, "command": {"devId": "", "uid": "", "t": ""}}, - HEARTBEAT: {"hexByte": 0x09, "command": {}}, - UPDATEDPS: {"hexByte": 0x12, "command": {"dpId": [18, 19, 20]}}, - }, + "v3.4": { + CONTROL: { + "command_override": CONTROL_NEW, # Uses CONTROL_NEW command + "command": {"protocol":5, "t": "int", "data": ""} + }, + DP_QUERY: { "command_override": DP_QUERY_NEW }, + } } + + class TuyaLoggingAdapter(logging.LoggerAdapter): """Adapter that adds device id to all log points.""" @@ -158,8 +249,9 @@ class ContextualLogger: return self._logger.exception(msg, *args) -def pack_message(msg): +def pack_message(msg,hmac_key=None): """Pack a TuyaMessage into bytes.""" + end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT # Create full message excluding CRC and suffix buffer = ( struct.pack( @@ -167,28 +259,81 @@ def pack_message(msg): PREFIX_VALUE, msg.seqno, msg.cmd, - len(msg.payload) + struct.calcsize(MESSAGE_END_FMT), + len(msg.payload) + struct.calcsize(end_fmt), ) + msg.payload ) - + if hmac_key: + crc = hmac.new(hmac_key, buffer, sha256).digest() + else: + crc = binascii.crc32(buffer) & 0xFFFFFFFF # Calculate CRC, add it together with suffix - buffer += struct.pack(MESSAGE_END_FMT, binascii.crc32(buffer), SUFFIX_VALUE) - + buffer += struct.pack( + end_fmt, crc, SUFFIX_VALUE + ) return buffer -def unpack_message(data): +def unpack_message(data, hmac_key=None, header=None, no_retcode=False, logger=None): """Unpack bytes into a TuyaMessage.""" - header_len = struct.calcsize(MESSAGE_RECV_HEADER_FMT) - end_len = struct.calcsize(MESSAGE_END_FMT) + end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT + # 4-word header plus return code + header_len = struct.calcsize(MESSAGE_HEADER_FMT) + retcode_len = 0 if no_retcode else struct.calcsize(MESSAGE_RETCODE_FMT) + end_len = struct.calcsize(end_fmt) + headret_len = header_len + retcode_len - _, seqno, cmd, _, retcode = struct.unpack( - MESSAGE_RECV_HEADER_FMT, data[:header_len] + if len(data) < headret_len+end_len: + logger.debug('unpack_message(): not enough data to unpack header! need %d but only have %d', headret_len+end_len, len(data)) + raise DecodeError('Not enough data to unpack header') + + if header is None: + header = parse_header(data) + + if len(data) < header_len+header.length: + logger.debug('unpack_message(): not enough data to unpack payload! need %d but only have %d', header_len+header.length, len(data)) + raise DecodeError('Not enough data to unpack payload') + + retcode = 0 if no_retcode else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + # the retcode is technically part of the payload, but strip it as we do not want it here + payload = data[header_len+retcode_len:header_len+header.length] + crc, suffix = struct.unpack(end_fmt, payload[-end_len:]) + + if hmac_key: + have_crc = hmac.new(hmac_key, data[:(header_len+header.length)-end_len], sha256).digest() + else: + have_crc = binascii.crc32(data[:(header_len+header.length)-end_len]) & 0xFFFFFFFF + + if suffix != SUFFIX_VALUE: + logger.debug('Suffix prefix wrong! %08X != %08X', suffix, SUFFIX_VALUE) + + if crc != have_crc: + if hmac_key: + logger.debug('HMAC checksum wrong! %r != %r', binascii.hexlify(have_crc), binascii.hexlify(crc)) + else: + logger.debug('CRC wrong! %08X != %08X', have_crc, crc) + + return TuyaMessage(header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc) + +def parse_header(data): + header_len = struct.calcsize(MESSAGE_HEADER_FMT) + + if len(data) < header_len: + raise DecodeError('Not enough data to unpack header') + + prefix, seqno, cmd, payload_len = struct.unpack( + MESSAGE_HEADER_FMT, data[:header_len] ) - payload = data[header_len:-end_len] - crc, _ = struct.unpack(MESSAGE_END_FMT, data[-end_len:]) - return TuyaMessage(seqno, cmd, retcode, payload, crc) + + if prefix != PREFIX_VALUE: + #self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) + raise DecodeError('Header prefix wrong! %08X != %08X' % (prefix, PREFIX_VALUE)) + + # sanity check. currently the max payload length is somewhere around 300 bytes + if payload_len > 1000: + raise DecodeError('Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes' % payload_len) + + return TuyaHeader(prefix, seqno, cmd, payload_len) class AESCipher: @@ -199,19 +344,21 @@ class AESCipher: self.block_size = 16 self.cipher = Cipher(algorithms.AES(key), modes.ECB(), default_backend()) - def encrypt(self, raw, use_base64=True): + def encrypt(self, raw, use_base64=True, pad=True): """Encrypt data to be sent to device.""" encryptor = self.cipher.encryptor() - crypted_text = encryptor.update(self._pad(raw)) + encryptor.finalize() + if pad: raw = self._pad(raw) + crypted_text = encryptor.update(raw) + encryptor.finalize() return base64.b64encode(crypted_text) if use_base64 else crypted_text - def decrypt(self, enc, use_base64=True): + def decrypt(self, enc, use_base64=True, decode_text=True): """Decrypt data from device.""" if use_base64: enc = base64.b64decode(enc) decryptor = self.cipher.decryptor() - return self._unpad(decryptor.update(enc) + decryptor.finalize()).decode() + raw = self._unpad(decryptor.update(enc) + decryptor.finalize()) + return raw.decode("utf-8") if decode_text else raw def _pad(self, data): padnum = self.block_size - len(data) % self.block_size @@ -229,13 +376,16 @@ class MessageDispatcher(ContextualLogger): # other messages. This is a hack to allow waiting for heartbeats. HEARTBEAT_SEQNO = -100 RESET_SEQNO = -101 + SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener): + def __init__(self, dev_id, listener, version, local_key): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" self.listeners = {} self.listener = listener + self.version = version + self.local_key = local_key self.set_logger(_LOGGER, dev_id) def abort(self): @@ -248,12 +398,12 @@ class MessageDispatcher(ContextualLogger): if isinstance(sem, asyncio.Semaphore): sem.release() - async def wait_for(self, seqno, timeout=5): + async def wait_for(self, seqno, cmd, timeout=5): """Wait for response to a sequence number to be received and return it.""" if seqno in self.listeners: raise Exception(f"listener exists for {seqno}") - self.debug("Waiting for sequence number %d", seqno) + self.debug("Command %d waiting for sequence number %d", cmd, seqno) self.listeners[seqno] = asyncio.Semaphore(0) try: await asyncio.wait_for(self.listeners[seqno].acquire(), timeout=timeout) @@ -273,51 +423,39 @@ class MessageDispatcher(ContextualLogger): if len(self.buffer) < header_len: break - # Parse header and check if enough data according to length in header - _, seqno, cmd, length, retcode = struct.unpack_from( - MESSAGE_RECV_HEADER_FMT, self.buffer - ) - if len(self.buffer[header_len - 4 :]) < length: - break - - # length includes payload length, retcode, crc and suffix - if (retcode & 0xFFFFFF00) != 0: - payload_start = header_len - 4 - payload_length = length - struct.calcsize(MESSAGE_END_FMT) - else: - payload_start = header_len - payload_length = length - 4 - struct.calcsize(MESSAGE_END_FMT) - payload = self.buffer[payload_start : payload_start + payload_length] - - crc, _ = struct.unpack_from( - MESSAGE_END_FMT, - self.buffer[payload_start + payload_length : payload_start + length], - ) - - self.buffer = self.buffer[header_len - 4 + length :] - self._dispatch(TuyaMessage(seqno, cmd, retcode, payload, crc)) + header = parse_header(self.buffer) + hmac_key = self.local_key if self.version == '3.4' else None + msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); + self.buffer = self.buffer[header_len - 4 + header.length :] + self._dispatch(msg) def _dispatch(self, msg): """Dispatch a message to someone that is listening.""" - self.debug("Dispatching message %s", msg) + self.debug("Dispatching message CMD %r %s", msg.cmd, msg) if msg.seqno in self.listeners: - self.debug("Dispatching sequence number %d", msg.seqno) + # self.debug("Dispatching sequence number %d", msg.seqno) sem = self.listeners[msg.seqno] self.listeners[msg.seqno] = msg sem.release() - elif msg.cmd == 0x09: + elif msg.cmd == HEART_BEAT: self.debug("Got heartbeat response") if self.HEARTBEAT_SEQNO in self.listeners: sem = self.listeners[self.HEARTBEAT_SEQNO] self.listeners[self.HEARTBEAT_SEQNO] = msg sem.release() - elif msg.cmd == 0x12: + elif msg.cmd == UPDATEDPS: self.debug("Got normal updatedps response") if self.RESET_SEQNO in self.listeners: sem = self.listeners[self.RESET_SEQNO] self.listeners[self.RESET_SEQNO] = msg sem.release() - elif msg.cmd == 0x08: + elif msg.cmd == SESS_KEY_NEG_RESP: + self.debug("Got key negotiation response") + if self.SESS_KEY_SEQNO in self.listeners: + sem = self.listeners[self.SESS_KEY_SEQNO] + self.listeners[self.SESS_KEY_SEQNO] = msg + sem.release() + elif msg.cmd == STATUS: if self.RESET_SEQNO in self.listeners: self.debug("Got reset status update") sem = self.listeners[self.RESET_SEQNO] @@ -327,12 +465,15 @@ class MessageDispatcher(ContextualLogger): self.debug("Got status update") self.listener(msg) else: - self.debug( - "Got message type %d for unknown listener %d: %s", - msg.cmd, - msg.seqno, - msg, - ) + if msg.cmd == CONTROL_NEW: + self.debug("Got ACK message for command %d: will ignore it", msg.cmd) + else: + self.error( + "Got message type %d for unknown listener %d: %s", + msg.cmd, + msg.seqno, + msg, + ) class TuyaListener(ABC): @@ -377,11 +518,12 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.set_logger(_LOGGER, dev_id) self.id = dev_id self.local_key = local_key.encode("latin1") + self.real_local_key = self.local_key self.version = protocol_version self.dev_type = "type_0a" self.dps_to_request = {} self.cipher = AESCipher(self.local_key) - self.seqno = 0 + self.seqno = 1 self.transport = None self.listener = weakref.ref(listener) self.dispatcher = self._setup_dispatcher() @@ -389,6 +531,40 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.heartbeater = None self.dps_cache = {} + if protocol_version: + self.set_version(float(protocol_version)) + else: + # make sure we call our set_version() and not a subclass since some of + # them (such as BulbDevice) make connections when called + TuyaProtocol.set_version(self, 3.1) + + def set_version(self, version): + self.version = version + self.version_bytes = str(version).encode('latin1') + self.version_header = self.version_bytes + PROTOCOL_3x_HEADER + if version == 3.2: # 3.2 behaves like 3.3 with type_0d + #self.version = 3.3 + self.dev_type="type_0d" + if self.dps_to_request == {}: + self.detect_available_dps() + elif version == 3.4: + self.dev_type = "v3.4" + elif self.dev_type == "v3.4": + self.dev_type = "default" + + def error_json(self, number=None, payload=None): + """Return error details in JSON""" + try: + spayload = json.dumps(payload) + # spayload = payload.replace('\"','').replace('\'','') + except: + spayload = '""' + + vals = (error_codes[number], str(number), spayload) + self.debug("ERROR %s - %s - payload: %s", *vals) + + return json.loads('{ "Error":"%s", "Err":"%s", "Payload":%s }' % vals) + def _setup_dispatcher(self): def _status_update(msg): decoded_message = self._decode_payload(msg.payload) @@ -399,7 +575,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if listener is not None: listener.status_updated(self.dps_cache) - return MessageDispatcher(self.id, _status_update) + return MessageDispatcher(self.id, _status_update, self.version, self.local_key) def connection_made(self, transport): """Did connect to the device.""" @@ -434,11 +610,13 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def data_received(self, data): """Received data from device.""" + # self.debug("received data=%r", binascii.hexlify(data)) self.dispatcher.add_data(data) def connection_lost(self, exc): """Disconnected from device.""" self.debug("Connection lost: %s", exc) + self.real_local_key = self.local_key try: listener = self.listener and self.listener() if listener is not None: @@ -449,6 +627,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def close(self): """Close connection and abort all outstanding listeners.""" self.debug("Closing connection") + self.real_local_key = self.local_key if self.heartbeater is not None: self.heartbeater.cancel() try: @@ -464,31 +643,78 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.transport = None transport.close() + # similar to exchange() but never retries sending and does not decode the response + async def exchange_quick(self, payload, recv_retries): + + if not self.transport: + self.debug("[" + self.id + "] send quick failed, could not get socket: %s", payload) + return None + enc_payload = self._encode_message(payload) if type(payload) == MessagePayload else payload + # self.debug("Quick-dispatching message %s, seqno %s", binascii.hexlify(enc_payload), self.seqno) + + try: + self.transport.write(enc_payload) + except: + # self._check_socket_close(True) + self.close() + return None + while recv_retries: + try: + #msg = await self._receive() + seqno = MessageDispatcher.SESS_KEY_SEQNO + # seqno = self.seqno - 1 + msg = await self.dispatcher.wait_for(seqno, payload.cmd) + # for 3.4 devices, we get the starting seqno with the SESS_KEY_NEG_RESP message + self.seqno = msg.seqno + except: + msg = None + if msg and len(msg.payload) != 0: + return msg + recv_retries -= 1 + if recv_retries == 0: + self.debug("received null payload (%r) but out of recv retries, giving up", msg) + else: + self.debug("received null payload (%r), fetch new one - %s retries remaining", msg, recv_retries) + return None + async def exchange(self, command, dps=None): """Send and receive a message, returning response from device.""" + + if self.version == 3.4 and self.real_local_key == self.local_key: + self.debug("3.4 device: negotiating a new session key") + await self._negotiate_session_key() + self.debug( "Sending command %s (device type: %s)", command, self.dev_type, ) payload = self._generate_payload(command, dps) + real_cmd = payload.cmd dev_type = self.dev_type + # self.debug("Exchange: payload %r %r", payload.cmd, payload.payload) # Wait for special sequence number if heartbeat or reset - seqno = self.seqno - 1 + seqno = self.seqno - if command == HEARTBEAT: + if payload.cmd == HEARTBEAT: seqno = MessageDispatcher.HEARTBEAT_SEQNO - elif command == RESET: + elif payload.cmd == RESET: seqno = MessageDispatcher.RESET_SEQNO - self.transport.write(payload) - msg = await self.dispatcher.wait_for(seqno) + enc_payload = self._encode_message(payload) + self.transport.write(enc_payload) + msg = await self.dispatcher.wait_for(seqno, payload.cmd ) if msg is None: self.debug("Wait was aborted for seqno %d", seqno) return None # TODO: Verify stuff, e.g. CRC sequence number? + if real_cmd == CONTROL_NEW and len(msg.payload) == 0: + # device may send one or two messages with empty payload in response + # to a CONTROL_NEW command, consider it an ACK + self.debug("ACK received for command %d: ignoring it", real_cmd) + return None payload = self._decode_payload(msg.payload) # Perform a new exchange (once) if we switched device type @@ -504,7 +730,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def status(self): """Return device status.""" - status = await self.exchange(STATUS) + status = await self.exchange(DP_QUERY) if status and "dps" in status: self.dps_cache.update(status["dps"]) return self.dps_cache @@ -539,7 +765,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): dps = list(set(dps).intersection(set(UPDATE_DPS_WHITELIST))) self.debug("updatedps() entry (dps %s, dps_cache %s)", dps, self.dps_cache) payload = self._generate_payload(UPDATEDPS, dps) - self.transport.write(payload) + enc_payload = self._encode_message(payload) + self.transport.write(enc_payload) return True async def set_dp(self, value, dp_index): @@ -550,11 +777,11 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): dp_index(int): dps index to set value: new value for the dps index """ - return await self.exchange(SET, {str(dp_index): value}) + return await self.exchange(CONTROL, {str(dp_index): value}) async def set_dps(self, dps): """Set values for a set of datapoints.""" - return await self.exchange(SET, dps) + return await self.exchange(CONTROL, dps) async def detect_available_dps(self): """Return which datapoints are supported by the device.""" @@ -591,38 +818,175 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.dps_to_request.update({str(index): None for index in dp_indicies}) def _decode_payload(self, payload): - if not payload: - payload = "{}" - elif payload.startswith(b"{"): - pass - elif payload.startswith(PROTOCOL_VERSION_BYTES_31): - payload = payload[len(PROTOCOL_VERSION_BYTES_31) :] # remove version header - # remove (what I'm guessing, but not confirmed is) 16-bytes of MD5 - # hexdigest of payload - payload = self.cipher.decrypt(payload[16:]) - elif self.version == 3.3: - if self.dev_type != "type_0a" or payload.startswith( - PROTOCOL_VERSION_BYTES_33 - ): - payload = payload[len(PROTOCOL_33_HEADER) :] - payload = self.cipher.decrypt(payload, False) + cipher = AESCipher(self.local_key) + if self.version == 3.4: + # 3.4 devices encrypt the version header in addition to the payload + try: + # self.debug("decrypting=%r", payload) + payload = cipher.decrypt(payload, False, decode_text=False) + except: + self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) + return self.error_json(ERR_PAYLOAD) + + # self.debug("decrypted 3.x payload=%r", payload) + + if payload.startswith(PROTOCOL_VERSION_BYTES_31): + # Received an encrypted payload + # Remove version header + payload = payload[len(PROTOCOL_VERSION_BYTES_31) :] + # Decrypt payload + # Remove 16-bytes of MD5 hexdigest of payload + payload = cipher.decrypt(payload[16:]) + elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 + # Trim header for non-default device type + if payload.startswith( self.version_bytes ): + payload = payload[len(self.version_header) :] + # self.debug("removing 3.x=%r", payload) + elif self.dev_type == "type_0d" and (len(payload) & 0x0F) != 0: + payload = payload[len(self.version_header) :] + # self.debug("removing type_0d 3.x header=%r", payload) + + if self.version != 3.4: + try: + # self.debug("decrypting=%r", payload) + payload = cipher.decrypt(payload, False) + except: + self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) + return self.error_json(ERR_PAYLOAD) + + # self.debug("decrypted 3.x payload=%r", payload) + # Try to detect if type_0d found + + if not isinstance(payload, str): + try: + payload = payload.decode() + except: + self.debug("payload was not string type and decoding failed") + return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: self.dev_type = "type_0d" + # set at least one DPS + self.dps_to_request = {"1": None} self.debug( - "switching to dev_type %s", + "'data unvalid' error detected: switching to dev_type %r", self.dev_type, ) return None - else: - raise Exception(f"Unexpected payload={payload}") + elif not payload.startswith(b"{"): + self.debug("Unexpected payload=%r", payload) + return self.error_json(ERR_PAYLOAD, payload) if not isinstance(payload, str): payload = payload.decode() - self.debug("Decrypted payload: %s", payload) - return json.loads(payload) + self.debug("Deciphered data = %r", payload) + try: + json_payload = json.loads(payload) + except: + json_payload = self.error_json(ERR_JSON, payload) - def _generate_payload(self, command, data=None): + # v3.4 stuffs it into {"data":{"dps":{"1":true}}, ...} + if "dps" not in json_payload and "data" in json_payload and "dps" in json_payload['data']: + json_payload['dps'] = json_payload['data']['dps'] + + return json_payload + + async def _negotiate_session_key(self): + self.local_nonce = b'0123456789abcdef' # not-so-random random key + self.remote_nonce = b'' + self.local_key = self.real_local_key + + rkey = await self.exchange_quick( MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 ) + if not rkey or type(rkey) != TuyaMessage or len(rkey.payload) < 48: + # error + self.debug("session key negotiation failed on step 1") + return False + + if rkey.cmd != SESS_KEY_NEG_RESP: + self.debug("session key negotiation step 2 returned wrong command: %d", rkey.cmd) + return False + + payload = rkey.payload + try: + # self.debug("decrypting %r using %r", payload, self.real_local_key) + cipher = AESCipher(self.real_local_key) + payload = cipher.decrypt(payload, False, decode_text=False) + except: + self.debug("session key step 2 decrypt failed, payload=%r (len:%d)", payload, len(payload)) + return False + + self.debug("decrypted session key negotiation step 2: payload=%r", payload) + + if len(payload) < 48: + self.debug("session key negotiation step 2 failed, too short response") + return False + + self.remote_nonce = payload[:16] + hmac_check = hmac.new(self.local_key, self.local_nonce, sha256).digest() + + if hmac_check != payload[16:48]: + self.debug("session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", binascii.hexlify(hmac_check), binascii.hexlify(payload[16:48])) + + # self.debug("session local nonce: %r remote nonce: %r", self.local_nonce, self.remote_nonce) + + rkey_hmac = hmac.new(self.local_key, self.remote_nonce, sha256).digest() + await self.exchange_quick( MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None ) + + self.local_key = bytes( [ a^b for (a,b) in zip(self.local_nonce,self.remote_nonce) ] ) + # self.debug("Session nonce XOR'd: %r" % self.local_key) + + cipher = AESCipher(self.real_local_key) + self.local_key = self.dispatcher.local_key = cipher.encrypt(self.local_key, False, pad=False) + self.debug("Session key negotiate success! session key: %r", self.local_key) + return True + + # adds protocol header (if needed) and encrypts + def _encode_message( self, msg ): + hmac_key = None + payload = msg.payload + self.cipher = AESCipher(self.local_key) + if self.version == 3.4: + hmac_key = self.local_key + if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: + # add the 3.x header + payload = self.version_header + payload + self.debug('final payload for cmd %r: %r', msg.cmd, payload) + payload = self.cipher.encrypt(payload, False) + elif self.version >= 3.2: + # expect to connect and then disconnect to set new + payload = self.cipher.encrypt(payload, False) + if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: + # add the 3.x header + payload = self.version_header + payload + elif msg.cmd == CONTROL: + # need to encrypt + payload = self.cipher.encrypt(payload) + preMd5String = ( + b"data=" + + payload + + b"||lpv=" + + PROTOCOL_VERSION_BYTES_31 + + b"||" + + self.local_key + ) + m = md5() + m.update(preMd5String) + hexdigest = m.hexdigest() + # some tuya libraries strip 8: to :24 + payload = ( + PROTOCOL_VERSION_BYTES_31 + + hexdigest[8:][:16].encode("latin1") + + payload + ) + + self.cipher = None + msg = TuyaMessage(self.seqno, msg.cmd, 0, payload, 0, True) + self.seqno += 1 # increase message sequence number + buffer = pack_message(msg,hmac_key=hmac_key) + # self.debug("payload encrypted with key %r => %r", self.local_key, binascii.hexlify(buffer)) + return buffer + + def _generate_payload(self, command, data=None, gwId=None, devId=None, uid=None): """ Generate the payload to send. @@ -631,58 +995,73 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): This is one of the entries from payload_dict data(dict, optional): The data to be send. This is what will be passed via the 'dps' entry + gwId(str, optional): Will be used for gwId + devId(str, optional): Will be used for devId + uid(str, optional): Will be used for uid """ - cmd_data = PAYLOAD_DICT[self.dev_type][command] - json_data = cmd_data["command"] - command_hb = cmd_data["hexByte"] + json_data = command_override = None + + if command in payload_dict[self.dev_type]: + if 'command' in payload_dict[self.dev_type][command]: + json_data = payload_dict[self.dev_type][command]['command'] + if 'command_override' in payload_dict[self.dev_type][command]: + command_override = payload_dict[self.dev_type][command]['command_override'] + + if self.dev_type != 'type_0a': + if json_data is None and command in payload_dict['type_0a'] and 'command' in payload_dict['type_0a'][command]: + json_data = payload_dict['type_0a'][command]['command'] + if command_override is None and command in payload_dict['type_0a'] and 'command_override' in payload_dict['type_0a'][command]: + command_override = payload_dict['type_0a'][command]['command_override'] + + if command_override is None: + command_override = command + if json_data is None: + # I have yet to see a device complain about included but unneeded attribs, but they *will* + # complain about missing attribs, so just include them all unless otherwise specified + json_data = {"gwId": "", "devId": "", "uid": "", "t": ""} + cmd_data = "" if "gwId" in json_data: - json_data["gwId"] = self.id + if gwId is not None: + json_data["gwId"] = gwId + else: + json_data["gwId"] = self.id if "devId" in json_data: - json_data["devId"] = self.id + if devId is not None: + json_data["devId"] = devId + else: + json_data["devId"] = self.id if "uid" in json_data: - json_data["uid"] = self.id # still use id, no separate uid + if uid is not None: + json_data["uid"] = uid + else: + json_data["uid"] = self.id if "t" in json_data: - json_data["t"] = str(int(time.time())) + if json_data['t'] == "int": + json_data["t"] = int(time.time()) + else: + json_data["t"] = str(int(time.time())) if data is not None: if "dpId" in json_data: json_data["dpId"] = data + elif "data" in json_data: + json_data["data"] = {"dps": data} else: json_data["dps"] = data - elif command_hb == 0x0D: + elif self.dev_type == "type_0d" and command == DP_QUERY: json_data["dps"] = self.dps_to_request - payload = json.dumps(json_data).replace(" ", "").encode("utf-8") - self.debug("Send payload: %s", payload) + if json_data == "": + payload = "" + else: + payload = json.dumps(json_data) + # if spaces are not removed device does not respond! + payload = payload.replace(" ", "").encode("utf-8") + # self.debug("Sending payload: %s", payload) - if self.version == 3.3: - payload = self.cipher.encrypt(payload, False) - if command_hb not in [0x0A, 0x12]: - # add the 3.3 header - payload = PROTOCOL_33_HEADER + payload - elif command == SET: - payload = self.cipher.encrypt(payload) - to_hash = ( - b"data=" - + payload - + b"||lpv=" - + PROTOCOL_VERSION_BYTES_31 - + b"||" - + self.local_key - ) - hasher = md5() - hasher.update(to_hash) - hexdigest = hasher.hexdigest() - payload = ( - PROTOCOL_VERSION_BYTES_31 - + hexdigest[8:][:16].encode("latin1") - + payload - ) + return MessagePayload(command_override, payload) - msg = TuyaMessage(self.seqno, command_hb, 0, payload, 0) - self.seqno += 1 - return pack_message(msg) def __repr__(self): """Return internal string representation of object.""" From 5fbf5b39b453ad5900922bd8f04f72c780e3cdd8 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:44:27 +0100 Subject: [PATCH 02/33] Introduced 3.4 protocol option in config flow --- custom_components/localtuya/config_flow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 1eeb3b5..cea8314 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -88,7 +88,7 @@ CONFIGURE_DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_LOCAL_KEY): str, vol.Required(CONF_HOST): str, vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, @@ -101,7 +101,7 @@ DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_FRIENDLY_NAME): cv.string, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -144,7 +144,7 @@ def options_schema(entities): vol.Required(CONF_FRIENDLY_NAME): str, vol.Required(CONF_HOST): str, vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, From 24853b5de7ba121951697a7198d75ea42e851db4 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:59:08 +0100 Subject: [PATCH 03/33] Fixed HEARTBEAT command --- custom_components/localtuya/pytuya/__init__.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index a417534..06fc170 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -99,12 +99,6 @@ error_codes = { None: "Unknown Error", } -SET = "set" -STATUS = "status" -HEARTBEAT = "heartbeat" -RESET = "reset" -UPDATEDPS = "updatedps" # Request refresh of DPS - # Tuya Command Types # Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config @@ -697,9 +691,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # Wait for special sequence number if heartbeat or reset seqno = self.seqno - if payload.cmd == HEARTBEAT: + if payload.cmd == HEART_BEAT: seqno = MessageDispatcher.HEARTBEAT_SEQNO - elif payload.cmd == RESET: + elif payload.cmd == UPDATEDPS: seqno = MessageDispatcher.RESET_SEQNO enc_payload = self._encode_message(payload) @@ -737,14 +731,14 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def heartbeat(self): """Send a heartbeat message.""" - return await self.exchange(HEARTBEAT) + return await self.exchange(HEART_BEAT) async def reset(self, dpIds=None): """Send a reset message (3.3 only).""" if self.version == 3.3: self.dev_type = "type_0a" self.debug("reset switching to dev_type %s", self.dev_type) - return await self.exchange(RESET, dpIds) + return await self.exchange(UPDATEDPS, dpIds) return True From 9d94f1665d4ecb9e77f059dc9b7ebd94684a1525 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 23:24:02 +0100 Subject: [PATCH 04/33] Added debugging --- custom_components/localtuya/pytuya/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 06fc170..1241e02 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -1052,7 +1052,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): payload = json.dumps(json_data) # if spaces are not removed device does not respond! payload = payload.replace(" ", "").encode("utf-8") - # self.debug("Sending payload: %s", payload) + self.debug("Sending payload: %s", payload) return MessagePayload(command_override, payload) From 9efbcce0e4762112dc634d4d6e0a3d337db2e8f1 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sun, 8 Jan 2023 07:42:53 +0100 Subject: [PATCH 05/33] Fixed requested DPs for type_0d devices --- custom_components/localtuya/pytuya/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 1241e02..32dc744 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -704,7 +704,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return None # TODO: Verify stuff, e.g. CRC sequence number? - if real_cmd == CONTROL_NEW and len(msg.payload) == 0: + if real_cmd in [HEART_BEAT, CONTROL_NEW] and len(msg.payload) == 0: # device may send one or two messages with empty payload in response # to a CONTROL_NEW command, consider it an ACK self.debug("ACK received for command %d: ignoring it", real_cmd) @@ -860,8 +860,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: self.dev_type = "type_0d" - # set at least one DPS - self.dps_to_request = {"1": None} self.debug( "'data unvalid' error detected: switching to dev_type %r", self.dev_type, From f23a945f5edb1a801bc6d9f14e02272292a558eb Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 01:31:28 +0100 Subject: [PATCH 06/33] Fixed negotiation and sequence numbers for protocol 3.4 --- custom_components/localtuya/pytuya/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 32dc744..3f24d50 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -366,8 +366,9 @@ class AESCipher: class MessageDispatcher(ContextualLogger): """Buffer and dispatcher for Tuya messages.""" - # Heartbeats always respond with sequence number 0, so they can't be waited for like - # other messages. This is a hack to allow waiting for heartbeats. + # Heartbeats on protocols < 3.3 respond with sequence number 0, + # so they can't be waited for like other messages. + # This is a hack to allow waiting for heartbeats. HEARTBEAT_SEQNO = -100 RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 @@ -418,7 +419,7 @@ class MessageDispatcher(ContextualLogger): break header = parse_header(self.buffer) - hmac_key = self.local_key if self.version == '3.4' else None + hmac_key = self.local_key if self.version == 3.4 else None msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); self.buffer = self.buffer[header_len - 4 + header.length :] self._dispatch(msg) @@ -561,6 +562,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def _setup_dispatcher(self): def _status_update(msg): + if self.seqno > 0: + self.seqno = msg.seqno + 1 decoded_message = self._decode_payload(msg.payload) if "dps" in decoded_message: self.dps_cache.update(decoded_message["dps"]) From ecf66f76e624aa5888b34862b385f15688748ac5 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 01:49:51 +0100 Subject: [PATCH 07/33] Fixed sequence numbering on status update --- custom_components/localtuya/pytuya/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 3f24d50..259ed57 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -562,7 +562,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def _setup_dispatcher(self): def _status_update(msg): - if self.seqno > 0: + if msg.seqno > 0: self.seqno = msg.seqno + 1 decoded_message = self._decode_payload(msg.payload) if "dps" in decoded_message: @@ -707,9 +707,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return None # TODO: Verify stuff, e.g. CRC sequence number? - if real_cmd in [HEART_BEAT, CONTROL_NEW] and len(msg.payload) == 0: - # device may send one or two messages with empty payload in response - # to a CONTROL_NEW command, consider it an ACK + if real_cmd in [HEART_BEAT, CONTROL, CONTROL_NEW] and len(msg.payload) == 0: + # device may send messages with empty payload in response + # to a HEART_BEAT or CONTROL or CONTROL_NEW command: consider them an ACK self.debug("ACK received for command %d: ignoring it", real_cmd) return None payload = self._decode_payload(msg.payload) From 966c3ec536a144c2072926959f66838375dd16d9 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:45:06 +0100 Subject: [PATCH 08/33] Fixed tox issues --- custom_components/localtuya/config_flow.py | 12 +- .../localtuya/pytuya/__init__.py | 314 +++++++++++------- pylint.rc | 10 +- setup.cfg | 4 +- 4 files changed, 214 insertions(+), 126 deletions(-) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index cea8314..761a241 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -88,7 +88,9 @@ CONFIGURE_DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_LOCAL_KEY): str, vol.Required(CONF_HOST): str, vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, @@ -101,7 +103,9 @@ DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_FRIENDLY_NAME): cv.string, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -144,7 +148,9 @@ def options_schema(entities): vol.Required(CONF_FRIENDLY_NAME): str, vol.Required(CONF_HOST): str, vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 259ed57..55a97e1 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -46,7 +46,7 @@ import time import weakref from abc import ABC, abstractmethod from collections import namedtuple -from hashlib import md5,sha256 +from hashlib import md5, sha256 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes @@ -58,11 +58,13 @@ __author__ = "rospogrigio" _LOGGER = logging.getLogger(__name__) # Tuya Packet Format -TuyaHeader = namedtuple('TuyaHeader', 'prefix seqno cmd length') +TuyaHeader = namedtuple("TuyaHeader", "prefix seqno cmd length") MessagePayload = namedtuple("MessagePayload", "cmd payload") try: - TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,)) -except: + TuyaMessage = namedtuple( + "TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,) + ) +except Exception: TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good") # TinyTuya Error Response Codes @@ -99,30 +101,38 @@ error_codes = { None: "Unknown Error", } + +class DecodeError(Exception): + """Specific Exception caused by decoding error.""" + + pass + + # Tuya Command Types -# Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h -AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config -ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD -SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key -SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response +# Reference: +# https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h +AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config +ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD +SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key +SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response SESS_KEY_NEG_FINISH = 0x05 # FRM_SECURITY_TYPE5 # finalize session key negotiation -UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command -CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD -STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD -HEART_BEAT = 0x09 # FRM_TP_HB -DP_QUERY = 0x0a # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points -QUERY_WIFI = 0x0b # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD -TOKEN_BIND = 0x0c # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) -CONTROL_NEW = 0x0d # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD -ENABLE_WIFI = 0x0e # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD -WIFI_INFO = 0x0f # 15 # FRM_CFG_WIFI_INFO -DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW -SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC -UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS -UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION -AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 -BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 -LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM +UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command +CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD +STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD +HEART_BEAT = 0x09 # FRM_TP_HB +DP_QUERY = 0x0A # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points +QUERY_WIFI = 0x0B # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD +TOKEN_BIND = 0x0C # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) +CONTROL_NEW = 0x0D # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD +ENABLE_WIFI = 0x0E # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD +WIFI_INFO = 0x0F # 15 # FRM_CFG_WIFI_INFO +DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW +SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC +UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS +UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION +AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 +BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 +LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM PROTOCOL_VERSION_BYTES_31 = b"3.1" @@ -141,7 +151,15 @@ PREFIX_VALUE = 0x000055AA PREFIX_BIN = b"\x00\x00U\xaa" SUFFIX_VALUE = 0x0000AA55 SUFFIX_BIN = b"\x00\x00\xaaU" -NO_PROTOCOL_HEADER_CMDS = [DP_QUERY, DP_QUERY_NEW, UPDATEDPS, HEART_BEAT, SESS_KEY_NEG_START, SESS_KEY_NEG_RESP, SESS_KEY_NEG_FINISH ] +NO_PROTOCOL_HEADER_CMDS = [ + DP_QUERY, + DP_QUERY_NEW, + UPDATEDPS, + HEART_BEAT, + SESS_KEY_NEG_START, + SESS_KEY_NEG_RESP, + SESS_KEY_NEG_FINISH, +] HEARTBEAT_INTERVAL = 10 @@ -193,15 +211,13 @@ payload_dict = { "v3.4": { CONTROL: { "command_override": CONTROL_NEW, # Uses CONTROL_NEW command - "command": {"protocol":5, "t": "int", "data": ""} - }, - DP_QUERY: { "command_override": DP_QUERY_NEW }, - } + "command": {"protocol": 5, "t": "int", "data": ""}, + }, + DP_QUERY: {"command_override": DP_QUERY_NEW}, + }, } - - class TuyaLoggingAdapter(logging.LoggerAdapter): """Adapter that adds device id to all log points.""" @@ -243,7 +259,7 @@ class ContextualLogger: return self._logger.exception(msg, *args) -def pack_message(msg,hmac_key=None): +def pack_message(msg, hmac_key=None): """Pack a TuyaMessage into bytes.""" end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT # Create full message excluding CRC and suffix @@ -262,9 +278,7 @@ def pack_message(msg,hmac_key=None): else: crc = binascii.crc32(buffer) & 0xFFFFFFFF # Calculate CRC, add it together with suffix - buffer += struct.pack( - end_fmt, crc, SUFFIX_VALUE - ) + buffer += struct.pack(end_fmt, crc, SUFFIX_VALUE) return buffer @@ -277,55 +291,82 @@ def unpack_message(data, hmac_key=None, header=None, no_retcode=False, logger=No end_len = struct.calcsize(end_fmt) headret_len = header_len + retcode_len - if len(data) < headret_len+end_len: - logger.debug('unpack_message(): not enough data to unpack header! need %d but only have %d', headret_len+end_len, len(data)) - raise DecodeError('Not enough data to unpack header') + if len(data) < headret_len + end_len: + logger.debug( + "unpack_message(): not enough data to unpack header! need %d but only have %d", + headret_len + end_len, + len(data), + ) + raise DecodeError("Not enough data to unpack header") if header is None: header = parse_header(data) - if len(data) < header_len+header.length: - logger.debug('unpack_message(): not enough data to unpack payload! need %d but only have %d', header_len+header.length, len(data)) - raise DecodeError('Not enough data to unpack payload') + if len(data) < header_len + header.length: + logger.debug( + "unpack_message(): not enough data to unpack payload! need %d but only have %d", + header_len + header.length, + len(data), + ) + raise DecodeError("Not enough data to unpack payload") - retcode = 0 if no_retcode else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + retcode = ( + 0 + if no_retcode + else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + ) # the retcode is technically part of the payload, but strip it as we do not want it here - payload = data[header_len+retcode_len:header_len+header.length] + payload = data[header_len + retcode_len : header_len + header.length] crc, suffix = struct.unpack(end_fmt, payload[-end_len:]) if hmac_key: - have_crc = hmac.new(hmac_key, data[:(header_len+header.length)-end_len], sha256).digest() + have_crc = hmac.new( + hmac_key, data[: (header_len + header.length) - end_len], sha256 + ).digest() else: - have_crc = binascii.crc32(data[:(header_len+header.length)-end_len]) & 0xFFFFFFFF + have_crc = ( + binascii.crc32(data[: (header_len + header.length) - end_len]) & 0xFFFFFFFF + ) if suffix != SUFFIX_VALUE: - logger.debug('Suffix prefix wrong! %08X != %08X', suffix, SUFFIX_VALUE) + logger.debug("Suffix prefix wrong! %08X != %08X", suffix, SUFFIX_VALUE) if crc != have_crc: if hmac_key: - logger.debug('HMAC checksum wrong! %r != %r', binascii.hexlify(have_crc), binascii.hexlify(crc)) + logger.debug( + "HMAC checksum wrong! %r != %r", + binascii.hexlify(have_crc), + binascii.hexlify(crc), + ) else: - logger.debug('CRC wrong! %08X != %08X', have_crc, crc) + logger.debug("CRC wrong! %08X != %08X", have_crc, crc) + + return TuyaMessage( + header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc + ) - return TuyaMessage(header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc) def parse_header(data): + """Unpack bytes into a TuyaHeader.""" header_len = struct.calcsize(MESSAGE_HEADER_FMT) if len(data) < header_len: - raise DecodeError('Not enough data to unpack header') + raise DecodeError("Not enough data to unpack header") prefix, seqno, cmd, payload_len = struct.unpack( MESSAGE_HEADER_FMT, data[:header_len] ) if prefix != PREFIX_VALUE: - #self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) - raise DecodeError('Header prefix wrong! %08X != %08X' % (prefix, PREFIX_VALUE)) + # self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) + raise DecodeError("Header prefix wrong! %08X != %08X" % (prefix, PREFIX_VALUE)) # sanity check. currently the max payload length is somewhere around 300 bytes if payload_len > 1000: - raise DecodeError('Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes' % payload_len) + raise DecodeError( + "Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes" + % payload_len + ) return TuyaHeader(prefix, seqno, cmd, payload_len) @@ -341,7 +382,8 @@ class AESCipher: def encrypt(self, raw, use_base64=True, pad=True): """Encrypt data to be sent to device.""" encryptor = self.cipher.encryptor() - if pad: raw = self._pad(raw) + if pad: + raw = self._pad(raw) crypted_text = encryptor.update(raw) + encryptor.finalize() return base64.b64encode(crypted_text) if use_base64 else crypted_text @@ -373,13 +415,13 @@ class MessageDispatcher(ContextualLogger): RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener, version, local_key): + def __init__(self, dev_id, listener, protocol_version, local_key): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" self.listeners = {} self.listener = listener - self.version = version + self.version = protocol_version self.local_key = local_key self.set_logger(_LOGGER, dev_id) @@ -420,7 +462,9 @@ class MessageDispatcher(ContextualLogger): header = parse_header(self.buffer) hmac_key = self.local_key if self.version == 3.4 else None - msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); + msg = unpack_message( + self.buffer, header=header, hmac_key=hmac_key, logger=self + ) self.buffer = self.buffer[header_len - 4 + header.length :] self._dispatch(msg) @@ -514,7 +558,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.id = dev_id self.local_key = local_key.encode("latin1") self.real_local_key = self.local_key - self.version = protocol_version self.dev_type = "type_0a" self.dps_to_request = {} self.cipher = AESCipher(self.local_key) @@ -525,6 +568,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.on_connected = on_connected self.heartbeater = None self.dps_cache = {} + self.local_nonce = b"0123456789abcdef" # not-so-random random key + self.remote_nonce = b"" if protocol_version: self.set_version(float(protocol_version)) @@ -533,26 +578,27 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # them (such as BulbDevice) make connections when called TuyaProtocol.set_version(self, 3.1) - def set_version(self, version): - self.version = version - self.version_bytes = str(version).encode('latin1') + def set_version(self, protocol_version): + """Set the device version and eventually start available DPs detection.""" + self.version = protocol_version + self.version_bytes = str(protocol_version).encode("latin1") self.version_header = self.version_bytes + PROTOCOL_3x_HEADER - if version == 3.2: # 3.2 behaves like 3.3 with type_0d - #self.version = 3.3 - self.dev_type="type_0d" - if self.dps_to_request == {}: - self.detect_available_dps() - elif version == 3.4: + if protocol_version == 3.2: # 3.2 behaves like 3.3 with type_0d + # self.version = 3.3 + self.dev_type = "type_0d" + if self.dps_to_request == {}: + self.detect_available_dps() + elif protocol_version == 3.4: self.dev_type = "v3.4" elif self.dev_type == "v3.4": self.dev_type = "default" def error_json(self, number=None, payload=None): - """Return error details in JSON""" + """Return error details in JSON.""" try: spayload = json.dumps(payload) # spayload = payload.replace('\"','').replace('\'','') - except: + except Exception: spayload = '""' vals = (error_codes[number], str(number), spayload) @@ -640,43 +686,51 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.transport = None transport.close() - # similar to exchange() but never retries sending and does not decode the response async def exchange_quick(self, payload, recv_retries): - + """Similar to exchange() but never retries sending and does not decode the response.""" if not self.transport: - self.debug("[" + self.id + "] send quick failed, could not get socket: %s", payload) + self.debug( + "[" + self.id + "] send quick failed, could not get socket: %s", payload + ) return None - enc_payload = self._encode_message(payload) if type(payload) == MessagePayload else payload + enc_payload = ( + self._encode_message(payload) + if isinstance(payload, MessagePayload) + else payload + ) # self.debug("Quick-dispatching message %s, seqno %s", binascii.hexlify(enc_payload), self.seqno) try: self.transport.write(enc_payload) - except: + except Exception: # self._check_socket_close(True) self.close() return None while recv_retries: try: - #msg = await self._receive() seqno = MessageDispatcher.SESS_KEY_SEQNO - # seqno = self.seqno - 1 msg = await self.dispatcher.wait_for(seqno, payload.cmd) # for 3.4 devices, we get the starting seqno with the SESS_KEY_NEG_RESP message self.seqno = msg.seqno - except: + except Exception: msg = None if msg and len(msg.payload) != 0: return msg recv_retries -= 1 if recv_retries == 0: - self.debug("received null payload (%r) but out of recv retries, giving up", msg) + self.debug( + "received null payload (%r) but out of recv retries, giving up", msg + ) else: - self.debug("received null payload (%r), fetch new one - %s retries remaining", msg, recv_retries) + self.debug( + "received null payload (%r), fetch new one - %s retries remaining", + msg, + recv_retries, + ) return None async def exchange(self, command, dps=None): """Send and receive a message, returning response from device.""" - if self.version == 3.4 and self.real_local_key == self.local_key: self.debug("3.4 device: negotiating a new session key") await self._negotiate_session_key() @@ -701,7 +755,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): enc_payload = self._encode_message(payload) self.transport.write(enc_payload) - msg = await self.dispatcher.wait_for(seqno, payload.cmd ) + msg = await self.dispatcher.wait_for(seqno, payload.cmd) if msg is None: self.debug("Wait was aborted for seqno %d", seqno) return None @@ -822,7 +876,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False, decode_text=False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -835,9 +889,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # Decrypt payload # Remove 16-bytes of MD5 hexdigest of payload payload = cipher.decrypt(payload[16:]) - elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 + elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 # Trim header for non-default device type - if payload.startswith( self.version_bytes ): + if payload.startswith(self.version_bytes): payload = payload[len(self.version_header) :] # self.debug("removing 3.x=%r", payload) elif self.dev_type == "type_0d" and (len(payload) & 0x0F) != 0: @@ -848,7 +902,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -858,7 +912,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if not isinstance(payload, str): try: payload = payload.decode() - except: + except Exception: self.debug("payload was not string type and decoding failed") return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: @@ -877,28 +931,34 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.debug("Deciphered data = %r", payload) try: json_payload = json.loads(payload) - except: + except Exception: json_payload = self.error_json(ERR_JSON, payload) # v3.4 stuffs it into {"data":{"dps":{"1":true}}, ...} - if "dps" not in json_payload and "data" in json_payload and "dps" in json_payload['data']: - json_payload['dps'] = json_payload['data']['dps'] + if ( + "dps" not in json_payload + and "data" in json_payload + and "dps" in json_payload["data"] + ): + json_payload["dps"] = json_payload["data"]["dps"] return json_payload async def _negotiate_session_key(self): - self.local_nonce = b'0123456789abcdef' # not-so-random random key - self.remote_nonce = b'' self.local_key = self.real_local_key - rkey = await self.exchange_quick( MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 ) - if not rkey or type(rkey) != TuyaMessage or len(rkey.payload) < 48: + rkey = await self.exchange_quick( + MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 + ) + if not rkey or not isinstance(rkey, TuyaMessage) or len(rkey.payload) < 48: # error self.debug("session key negotiation failed on step 1") return False if rkey.cmd != SESS_KEY_NEG_RESP: - self.debug("session key negotiation step 2 returned wrong command: %d", rkey.cmd) + self.debug( + "session key negotiation step 2 returned wrong command: %d", rkey.cmd + ) return False payload = rkey.payload @@ -906,8 +966,12 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # self.debug("decrypting %r using %r", payload, self.real_local_key) cipher = AESCipher(self.real_local_key) payload = cipher.decrypt(payload, False, decode_text=False) - except: - self.debug("session key step 2 decrypt failed, payload=%r (len:%d)", payload, len(payload)) + except Exception: + self.debug( + "session key step 2 decrypt failed, payload=%r (len:%d)", + payload, + len(payload), + ) return False self.debug("decrypted session key negotiation step 2: payload=%r", payload) @@ -920,23 +984,31 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): hmac_check = hmac.new(self.local_key, self.local_nonce, sha256).digest() if hmac_check != payload[16:48]: - self.debug("session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", binascii.hexlify(hmac_check), binascii.hexlify(payload[16:48])) + self.debug( + "session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", + binascii.hexlify(hmac_check), + binascii.hexlify(payload[16:48]), + ) # self.debug("session local nonce: %r remote nonce: %r", self.local_nonce, self.remote_nonce) rkey_hmac = hmac.new(self.local_key, self.remote_nonce, sha256).digest() - await self.exchange_quick( MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None ) + await self.exchange_quick(MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None) - self.local_key = bytes( [ a^b for (a,b) in zip(self.local_nonce,self.remote_nonce) ] ) + self.local_key = bytes( + [a ^ b for (a, b) in zip(self.local_nonce, self.remote_nonce)] + ) # self.debug("Session nonce XOR'd: %r" % self.local_key) cipher = AESCipher(self.real_local_key) - self.local_key = self.dispatcher.local_key = cipher.encrypt(self.local_key, False, pad=False) + self.local_key = self.dispatcher.local_key = cipher.encrypt( + self.local_key, False, pad=False + ) self.debug("Session key negotiate success! session key: %r", self.local_key) return True # adds protocol header (if needed) and encrypts - def _encode_message( self, msg ): + def _encode_message(self, msg): hmac_key = None payload = msg.payload self.cipher = AESCipher(self.local_key) @@ -945,7 +1017,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: # add the 3.x header payload = self.version_header + payload - self.debug('final payload for cmd %r: %r', msg.cmd, payload) + self.debug("final payload for cmd %r: %r", msg.cmd, payload) payload = self.cipher.encrypt(payload, False) elif self.version >= 3.2: # expect to connect and then disconnect to set new @@ -977,7 +1049,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.cipher = None msg = TuyaMessage(self.seqno, msg.cmd, 0, payload, 0, True) self.seqno += 1 # increase message sequence number - buffer = pack_message(msg,hmac_key=hmac_key) + buffer = pack_message(msg, hmac_key=hmac_key) # self.debug("payload encrypted with key %r => %r", self.local_key, binascii.hexlify(buffer)) return buffer @@ -997,16 +1069,26 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): json_data = command_override = None if command in payload_dict[self.dev_type]: - if 'command' in payload_dict[self.dev_type][command]: - json_data = payload_dict[self.dev_type][command]['command'] - if 'command_override' in payload_dict[self.dev_type][command]: - command_override = payload_dict[self.dev_type][command]['command_override'] + if "command" in payload_dict[self.dev_type][command]: + json_data = payload_dict[self.dev_type][command]["command"] + if "command_override" in payload_dict[self.dev_type][command]: + command_override = payload_dict[self.dev_type][command][ + "command_override" + ] - if self.dev_type != 'type_0a': - if json_data is None and command in payload_dict['type_0a'] and 'command' in payload_dict['type_0a'][command]: - json_data = payload_dict['type_0a'][command]['command'] - if command_override is None and command in payload_dict['type_0a'] and 'command_override' in payload_dict['type_0a'][command]: - command_override = payload_dict['type_0a'][command]['command_override'] + if self.dev_type != "type_0a": + if ( + json_data is None + and command in payload_dict["type_0a"] + and "command" in payload_dict["type_0a"][command] + ): + json_data = payload_dict["type_0a"][command]["command"] + if ( + command_override is None + and command in payload_dict["type_0a"] + and "command_override" in payload_dict["type_0a"][command] + ): + command_override = payload_dict["type_0a"][command]["command_override"] if command_override is None: command_override = command @@ -1014,7 +1096,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # I have yet to see a device complain about included but unneeded attribs, but they *will* # complain about missing attribs, so just include them all unless otherwise specified json_data = {"gwId": "", "devId": "", "uid": "", "t": ""} - cmd_data = "" if "gwId" in json_data: if gwId is not None: @@ -1032,7 +1113,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): else: json_data["uid"] = self.id if "t" in json_data: - if json_data['t'] == "int": + if json_data["t"] == "int": json_data["t"] = int(time.time()) else: json_data["t"] = str(int(time.time())) @@ -1057,7 +1138,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return MessagePayload(command_override, payload) - def __repr__(self): """Return internal string representation of object.""" return self.id diff --git a/pylint.rc b/pylint.rc index 4ec670e..223e881 100644 --- a/pylint.rc +++ b/pylint.rc @@ -171,10 +171,12 @@ disable=line-too-long, deprecated-sys-function, exception-escape, comprehension-escape, - unused-variable, - invalid-name, - dangerous-default-value, - unreachable + unused-variable, + invalid-name, + dangerous-default-value, + unreachable, + unnecessary-pass, + broad-except # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/setup.cfg b/setup.cfg index 562dc77..c4dd99f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,10 +1,10 @@ [flake8] exclude = .git,.tox -max-line-length = 88 +max-line-length = 120 ignore = E203, W503 [mypy] -python_version = 3.7 +python_version = 3.9 ignore_errors = true follow_imports = silent ignore_missing_imports = true From f990e848a5ade1bd44a98b1c80129dd278c94fd0 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:45:06 +0100 Subject: [PATCH 09/33] Fixed tox issues --- custom_components/localtuya/common.py | 10 +- custom_components/localtuya/config_flow.py | 14 +- custom_components/localtuya/fan.py | 2 +- custom_components/localtuya/number.py | 7 +- .../localtuya/pytuya/__init__.py | 314 +++++++++++------- custom_components/localtuya/select.py | 10 +- custom_components/localtuya/switch.py | 6 +- pylint.rc | 10 +- setup.cfg | 4 +- 9 files changed, 230 insertions(+), 147 deletions(-) diff --git a/custom_components/localtuya/common.py b/custom_components/localtuya/common.py index aa8992f..76521eb 100644 --- a/custom_components/localtuya/common.py +++ b/custom_components/localtuya/common.py @@ -25,18 +25,18 @@ from homeassistant.helpers.restore_state import RestoreEntity from . import pytuya from .const import ( + ATTR_STATE, ATTR_UPDATED_AT, + CONF_DEFAULT_VALUE, CONF_LOCAL_KEY, CONF_MODEL, + CONF_PASSIVE_ENTITY, CONF_PROTOCOL_VERSION, + CONF_RESET_DPIDS, + CONF_RESTORE_ON_RECONNECT, DATA_CLOUD, DOMAIN, TUYA_DEVICES, - CONF_DEFAULT_VALUE, - ATTR_STATE, - CONF_RESTORE_ON_RECONNECT, - CONF_RESET_DPIDS, - CONF_PASSIVE_ENTITY, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index cea8314..0258a72 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -34,6 +34,7 @@ from .const import ( CONF_DPS_STRINGS, CONF_EDIT_DEVICE, CONF_LOCAL_KEY, + CONF_MANUAL_DPS, CONF_MODEL, CONF_NO_CLOUD, CONF_PRODUCT_NAME, @@ -45,7 +46,6 @@ from .const import ( DATA_DISCOVERY, DOMAIN, PLATFORMS, - CONF_MANUAL_DPS, ) from .discovery import discover @@ -88,7 +88,9 @@ CONFIGURE_DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_LOCAL_KEY): str, vol.Required(CONF_HOST): str, vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, @@ -101,7 +103,9 @@ DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_FRIENDLY_NAME): cv.string, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -144,7 +148,9 @@ def options_schema(entities): vol.Required(CONF_FRIENDLY_NAME): str, vol.Required(CONF_HOST): str, vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, diff --git a/custom_components/localtuya/fan.py b/custom_components/localtuya/fan.py index 584ea84..32c3289 100644 --- a/custom_components/localtuya/fan.py +++ b/custom_components/localtuya/fan.py @@ -27,12 +27,12 @@ from .const import ( CONF_FAN_DIRECTION, CONF_FAN_DIRECTION_FWD, CONF_FAN_DIRECTION_REV, + CONF_FAN_DPS_TYPE, CONF_FAN_ORDERED_LIST, CONF_FAN_OSCILLATING_CONTROL, CONF_FAN_SPEED_CONTROL, CONF_FAN_SPEED_MAX, CONF_FAN_SPEED_MIN, - CONF_FAN_DPS_TYPE, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/number.py b/custom_components/localtuya/number.py index 23d7ea9..917d3d0 100644 --- a/custom_components/localtuya/number.py +++ b/custom_components/localtuya/number.py @@ -7,14 +7,13 @@ from homeassistant.components.number import DOMAIN, NumberEntity from homeassistant.const import CONF_DEVICE_CLASS, STATE_UNKNOWN from .common import LocalTuyaEntity, async_setup_entry - from .const import ( - CONF_MIN_VALUE, - CONF_MAX_VALUE, CONF_DEFAULT_VALUE, + CONF_MAX_VALUE, + CONF_MIN_VALUE, + CONF_PASSIVE_ENTITY, CONF_RESTORE_ON_RECONNECT, CONF_STEPSIZE_VALUE, - CONF_PASSIVE_ENTITY, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 259ed57..55a97e1 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -46,7 +46,7 @@ import time import weakref from abc import ABC, abstractmethod from collections import namedtuple -from hashlib import md5,sha256 +from hashlib import md5, sha256 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes @@ -58,11 +58,13 @@ __author__ = "rospogrigio" _LOGGER = logging.getLogger(__name__) # Tuya Packet Format -TuyaHeader = namedtuple('TuyaHeader', 'prefix seqno cmd length') +TuyaHeader = namedtuple("TuyaHeader", "prefix seqno cmd length") MessagePayload = namedtuple("MessagePayload", "cmd payload") try: - TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,)) -except: + TuyaMessage = namedtuple( + "TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,) + ) +except Exception: TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good") # TinyTuya Error Response Codes @@ -99,30 +101,38 @@ error_codes = { None: "Unknown Error", } + +class DecodeError(Exception): + """Specific Exception caused by decoding error.""" + + pass + + # Tuya Command Types -# Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h -AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config -ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD -SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key -SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response +# Reference: +# https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h +AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config +ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD +SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key +SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response SESS_KEY_NEG_FINISH = 0x05 # FRM_SECURITY_TYPE5 # finalize session key negotiation -UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command -CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD -STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD -HEART_BEAT = 0x09 # FRM_TP_HB -DP_QUERY = 0x0a # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points -QUERY_WIFI = 0x0b # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD -TOKEN_BIND = 0x0c # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) -CONTROL_NEW = 0x0d # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD -ENABLE_WIFI = 0x0e # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD -WIFI_INFO = 0x0f # 15 # FRM_CFG_WIFI_INFO -DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW -SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC -UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS -UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION -AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 -BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 -LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM +UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command +CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD +STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD +HEART_BEAT = 0x09 # FRM_TP_HB +DP_QUERY = 0x0A # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points +QUERY_WIFI = 0x0B # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD +TOKEN_BIND = 0x0C # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) +CONTROL_NEW = 0x0D # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD +ENABLE_WIFI = 0x0E # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD +WIFI_INFO = 0x0F # 15 # FRM_CFG_WIFI_INFO +DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW +SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC +UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS +UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION +AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 +BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 +LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM PROTOCOL_VERSION_BYTES_31 = b"3.1" @@ -141,7 +151,15 @@ PREFIX_VALUE = 0x000055AA PREFIX_BIN = b"\x00\x00U\xaa" SUFFIX_VALUE = 0x0000AA55 SUFFIX_BIN = b"\x00\x00\xaaU" -NO_PROTOCOL_HEADER_CMDS = [DP_QUERY, DP_QUERY_NEW, UPDATEDPS, HEART_BEAT, SESS_KEY_NEG_START, SESS_KEY_NEG_RESP, SESS_KEY_NEG_FINISH ] +NO_PROTOCOL_HEADER_CMDS = [ + DP_QUERY, + DP_QUERY_NEW, + UPDATEDPS, + HEART_BEAT, + SESS_KEY_NEG_START, + SESS_KEY_NEG_RESP, + SESS_KEY_NEG_FINISH, +] HEARTBEAT_INTERVAL = 10 @@ -193,15 +211,13 @@ payload_dict = { "v3.4": { CONTROL: { "command_override": CONTROL_NEW, # Uses CONTROL_NEW command - "command": {"protocol":5, "t": "int", "data": ""} - }, - DP_QUERY: { "command_override": DP_QUERY_NEW }, - } + "command": {"protocol": 5, "t": "int", "data": ""}, + }, + DP_QUERY: {"command_override": DP_QUERY_NEW}, + }, } - - class TuyaLoggingAdapter(logging.LoggerAdapter): """Adapter that adds device id to all log points.""" @@ -243,7 +259,7 @@ class ContextualLogger: return self._logger.exception(msg, *args) -def pack_message(msg,hmac_key=None): +def pack_message(msg, hmac_key=None): """Pack a TuyaMessage into bytes.""" end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT # Create full message excluding CRC and suffix @@ -262,9 +278,7 @@ def pack_message(msg,hmac_key=None): else: crc = binascii.crc32(buffer) & 0xFFFFFFFF # Calculate CRC, add it together with suffix - buffer += struct.pack( - end_fmt, crc, SUFFIX_VALUE - ) + buffer += struct.pack(end_fmt, crc, SUFFIX_VALUE) return buffer @@ -277,55 +291,82 @@ def unpack_message(data, hmac_key=None, header=None, no_retcode=False, logger=No end_len = struct.calcsize(end_fmt) headret_len = header_len + retcode_len - if len(data) < headret_len+end_len: - logger.debug('unpack_message(): not enough data to unpack header! need %d but only have %d', headret_len+end_len, len(data)) - raise DecodeError('Not enough data to unpack header') + if len(data) < headret_len + end_len: + logger.debug( + "unpack_message(): not enough data to unpack header! need %d but only have %d", + headret_len + end_len, + len(data), + ) + raise DecodeError("Not enough data to unpack header") if header is None: header = parse_header(data) - if len(data) < header_len+header.length: - logger.debug('unpack_message(): not enough data to unpack payload! need %d but only have %d', header_len+header.length, len(data)) - raise DecodeError('Not enough data to unpack payload') + if len(data) < header_len + header.length: + logger.debug( + "unpack_message(): not enough data to unpack payload! need %d but only have %d", + header_len + header.length, + len(data), + ) + raise DecodeError("Not enough data to unpack payload") - retcode = 0 if no_retcode else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + retcode = ( + 0 + if no_retcode + else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + ) # the retcode is technically part of the payload, but strip it as we do not want it here - payload = data[header_len+retcode_len:header_len+header.length] + payload = data[header_len + retcode_len : header_len + header.length] crc, suffix = struct.unpack(end_fmt, payload[-end_len:]) if hmac_key: - have_crc = hmac.new(hmac_key, data[:(header_len+header.length)-end_len], sha256).digest() + have_crc = hmac.new( + hmac_key, data[: (header_len + header.length) - end_len], sha256 + ).digest() else: - have_crc = binascii.crc32(data[:(header_len+header.length)-end_len]) & 0xFFFFFFFF + have_crc = ( + binascii.crc32(data[: (header_len + header.length) - end_len]) & 0xFFFFFFFF + ) if suffix != SUFFIX_VALUE: - logger.debug('Suffix prefix wrong! %08X != %08X', suffix, SUFFIX_VALUE) + logger.debug("Suffix prefix wrong! %08X != %08X", suffix, SUFFIX_VALUE) if crc != have_crc: if hmac_key: - logger.debug('HMAC checksum wrong! %r != %r', binascii.hexlify(have_crc), binascii.hexlify(crc)) + logger.debug( + "HMAC checksum wrong! %r != %r", + binascii.hexlify(have_crc), + binascii.hexlify(crc), + ) else: - logger.debug('CRC wrong! %08X != %08X', have_crc, crc) + logger.debug("CRC wrong! %08X != %08X", have_crc, crc) + + return TuyaMessage( + header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc + ) - return TuyaMessage(header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc) def parse_header(data): + """Unpack bytes into a TuyaHeader.""" header_len = struct.calcsize(MESSAGE_HEADER_FMT) if len(data) < header_len: - raise DecodeError('Not enough data to unpack header') + raise DecodeError("Not enough data to unpack header") prefix, seqno, cmd, payload_len = struct.unpack( MESSAGE_HEADER_FMT, data[:header_len] ) if prefix != PREFIX_VALUE: - #self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) - raise DecodeError('Header prefix wrong! %08X != %08X' % (prefix, PREFIX_VALUE)) + # self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) + raise DecodeError("Header prefix wrong! %08X != %08X" % (prefix, PREFIX_VALUE)) # sanity check. currently the max payload length is somewhere around 300 bytes if payload_len > 1000: - raise DecodeError('Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes' % payload_len) + raise DecodeError( + "Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes" + % payload_len + ) return TuyaHeader(prefix, seqno, cmd, payload_len) @@ -341,7 +382,8 @@ class AESCipher: def encrypt(self, raw, use_base64=True, pad=True): """Encrypt data to be sent to device.""" encryptor = self.cipher.encryptor() - if pad: raw = self._pad(raw) + if pad: + raw = self._pad(raw) crypted_text = encryptor.update(raw) + encryptor.finalize() return base64.b64encode(crypted_text) if use_base64 else crypted_text @@ -373,13 +415,13 @@ class MessageDispatcher(ContextualLogger): RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener, version, local_key): + def __init__(self, dev_id, listener, protocol_version, local_key): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" self.listeners = {} self.listener = listener - self.version = version + self.version = protocol_version self.local_key = local_key self.set_logger(_LOGGER, dev_id) @@ -420,7 +462,9 @@ class MessageDispatcher(ContextualLogger): header = parse_header(self.buffer) hmac_key = self.local_key if self.version == 3.4 else None - msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); + msg = unpack_message( + self.buffer, header=header, hmac_key=hmac_key, logger=self + ) self.buffer = self.buffer[header_len - 4 + header.length :] self._dispatch(msg) @@ -514,7 +558,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.id = dev_id self.local_key = local_key.encode("latin1") self.real_local_key = self.local_key - self.version = protocol_version self.dev_type = "type_0a" self.dps_to_request = {} self.cipher = AESCipher(self.local_key) @@ -525,6 +568,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.on_connected = on_connected self.heartbeater = None self.dps_cache = {} + self.local_nonce = b"0123456789abcdef" # not-so-random random key + self.remote_nonce = b"" if protocol_version: self.set_version(float(protocol_version)) @@ -533,26 +578,27 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # them (such as BulbDevice) make connections when called TuyaProtocol.set_version(self, 3.1) - def set_version(self, version): - self.version = version - self.version_bytes = str(version).encode('latin1') + def set_version(self, protocol_version): + """Set the device version and eventually start available DPs detection.""" + self.version = protocol_version + self.version_bytes = str(protocol_version).encode("latin1") self.version_header = self.version_bytes + PROTOCOL_3x_HEADER - if version == 3.2: # 3.2 behaves like 3.3 with type_0d - #self.version = 3.3 - self.dev_type="type_0d" - if self.dps_to_request == {}: - self.detect_available_dps() - elif version == 3.4: + if protocol_version == 3.2: # 3.2 behaves like 3.3 with type_0d + # self.version = 3.3 + self.dev_type = "type_0d" + if self.dps_to_request == {}: + self.detect_available_dps() + elif protocol_version == 3.4: self.dev_type = "v3.4" elif self.dev_type == "v3.4": self.dev_type = "default" def error_json(self, number=None, payload=None): - """Return error details in JSON""" + """Return error details in JSON.""" try: spayload = json.dumps(payload) # spayload = payload.replace('\"','').replace('\'','') - except: + except Exception: spayload = '""' vals = (error_codes[number], str(number), spayload) @@ -640,43 +686,51 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.transport = None transport.close() - # similar to exchange() but never retries sending and does not decode the response async def exchange_quick(self, payload, recv_retries): - + """Similar to exchange() but never retries sending and does not decode the response.""" if not self.transport: - self.debug("[" + self.id + "] send quick failed, could not get socket: %s", payload) + self.debug( + "[" + self.id + "] send quick failed, could not get socket: %s", payload + ) return None - enc_payload = self._encode_message(payload) if type(payload) == MessagePayload else payload + enc_payload = ( + self._encode_message(payload) + if isinstance(payload, MessagePayload) + else payload + ) # self.debug("Quick-dispatching message %s, seqno %s", binascii.hexlify(enc_payload), self.seqno) try: self.transport.write(enc_payload) - except: + except Exception: # self._check_socket_close(True) self.close() return None while recv_retries: try: - #msg = await self._receive() seqno = MessageDispatcher.SESS_KEY_SEQNO - # seqno = self.seqno - 1 msg = await self.dispatcher.wait_for(seqno, payload.cmd) # for 3.4 devices, we get the starting seqno with the SESS_KEY_NEG_RESP message self.seqno = msg.seqno - except: + except Exception: msg = None if msg and len(msg.payload) != 0: return msg recv_retries -= 1 if recv_retries == 0: - self.debug("received null payload (%r) but out of recv retries, giving up", msg) + self.debug( + "received null payload (%r) but out of recv retries, giving up", msg + ) else: - self.debug("received null payload (%r), fetch new one - %s retries remaining", msg, recv_retries) + self.debug( + "received null payload (%r), fetch new one - %s retries remaining", + msg, + recv_retries, + ) return None async def exchange(self, command, dps=None): """Send and receive a message, returning response from device.""" - if self.version == 3.4 and self.real_local_key == self.local_key: self.debug("3.4 device: negotiating a new session key") await self._negotiate_session_key() @@ -701,7 +755,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): enc_payload = self._encode_message(payload) self.transport.write(enc_payload) - msg = await self.dispatcher.wait_for(seqno, payload.cmd ) + msg = await self.dispatcher.wait_for(seqno, payload.cmd) if msg is None: self.debug("Wait was aborted for seqno %d", seqno) return None @@ -822,7 +876,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False, decode_text=False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -835,9 +889,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # Decrypt payload # Remove 16-bytes of MD5 hexdigest of payload payload = cipher.decrypt(payload[16:]) - elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 + elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 # Trim header for non-default device type - if payload.startswith( self.version_bytes ): + if payload.startswith(self.version_bytes): payload = payload[len(self.version_header) :] # self.debug("removing 3.x=%r", payload) elif self.dev_type == "type_0d" and (len(payload) & 0x0F) != 0: @@ -848,7 +902,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -858,7 +912,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if not isinstance(payload, str): try: payload = payload.decode() - except: + except Exception: self.debug("payload was not string type and decoding failed") return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: @@ -877,28 +931,34 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.debug("Deciphered data = %r", payload) try: json_payload = json.loads(payload) - except: + except Exception: json_payload = self.error_json(ERR_JSON, payload) # v3.4 stuffs it into {"data":{"dps":{"1":true}}, ...} - if "dps" not in json_payload and "data" in json_payload and "dps" in json_payload['data']: - json_payload['dps'] = json_payload['data']['dps'] + if ( + "dps" not in json_payload + and "data" in json_payload + and "dps" in json_payload["data"] + ): + json_payload["dps"] = json_payload["data"]["dps"] return json_payload async def _negotiate_session_key(self): - self.local_nonce = b'0123456789abcdef' # not-so-random random key - self.remote_nonce = b'' self.local_key = self.real_local_key - rkey = await self.exchange_quick( MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 ) - if not rkey or type(rkey) != TuyaMessage or len(rkey.payload) < 48: + rkey = await self.exchange_quick( + MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 + ) + if not rkey or not isinstance(rkey, TuyaMessage) or len(rkey.payload) < 48: # error self.debug("session key negotiation failed on step 1") return False if rkey.cmd != SESS_KEY_NEG_RESP: - self.debug("session key negotiation step 2 returned wrong command: %d", rkey.cmd) + self.debug( + "session key negotiation step 2 returned wrong command: %d", rkey.cmd + ) return False payload = rkey.payload @@ -906,8 +966,12 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # self.debug("decrypting %r using %r", payload, self.real_local_key) cipher = AESCipher(self.real_local_key) payload = cipher.decrypt(payload, False, decode_text=False) - except: - self.debug("session key step 2 decrypt failed, payload=%r (len:%d)", payload, len(payload)) + except Exception: + self.debug( + "session key step 2 decrypt failed, payload=%r (len:%d)", + payload, + len(payload), + ) return False self.debug("decrypted session key negotiation step 2: payload=%r", payload) @@ -920,23 +984,31 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): hmac_check = hmac.new(self.local_key, self.local_nonce, sha256).digest() if hmac_check != payload[16:48]: - self.debug("session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", binascii.hexlify(hmac_check), binascii.hexlify(payload[16:48])) + self.debug( + "session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", + binascii.hexlify(hmac_check), + binascii.hexlify(payload[16:48]), + ) # self.debug("session local nonce: %r remote nonce: %r", self.local_nonce, self.remote_nonce) rkey_hmac = hmac.new(self.local_key, self.remote_nonce, sha256).digest() - await self.exchange_quick( MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None ) + await self.exchange_quick(MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None) - self.local_key = bytes( [ a^b for (a,b) in zip(self.local_nonce,self.remote_nonce) ] ) + self.local_key = bytes( + [a ^ b for (a, b) in zip(self.local_nonce, self.remote_nonce)] + ) # self.debug("Session nonce XOR'd: %r" % self.local_key) cipher = AESCipher(self.real_local_key) - self.local_key = self.dispatcher.local_key = cipher.encrypt(self.local_key, False, pad=False) + self.local_key = self.dispatcher.local_key = cipher.encrypt( + self.local_key, False, pad=False + ) self.debug("Session key negotiate success! session key: %r", self.local_key) return True # adds protocol header (if needed) and encrypts - def _encode_message( self, msg ): + def _encode_message(self, msg): hmac_key = None payload = msg.payload self.cipher = AESCipher(self.local_key) @@ -945,7 +1017,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: # add the 3.x header payload = self.version_header + payload - self.debug('final payload for cmd %r: %r', msg.cmd, payload) + self.debug("final payload for cmd %r: %r", msg.cmd, payload) payload = self.cipher.encrypt(payload, False) elif self.version >= 3.2: # expect to connect and then disconnect to set new @@ -977,7 +1049,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.cipher = None msg = TuyaMessage(self.seqno, msg.cmd, 0, payload, 0, True) self.seqno += 1 # increase message sequence number - buffer = pack_message(msg,hmac_key=hmac_key) + buffer = pack_message(msg, hmac_key=hmac_key) # self.debug("payload encrypted with key %r => %r", self.local_key, binascii.hexlify(buffer)) return buffer @@ -997,16 +1069,26 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): json_data = command_override = None if command in payload_dict[self.dev_type]: - if 'command' in payload_dict[self.dev_type][command]: - json_data = payload_dict[self.dev_type][command]['command'] - if 'command_override' in payload_dict[self.dev_type][command]: - command_override = payload_dict[self.dev_type][command]['command_override'] + if "command" in payload_dict[self.dev_type][command]: + json_data = payload_dict[self.dev_type][command]["command"] + if "command_override" in payload_dict[self.dev_type][command]: + command_override = payload_dict[self.dev_type][command][ + "command_override" + ] - if self.dev_type != 'type_0a': - if json_data is None and command in payload_dict['type_0a'] and 'command' in payload_dict['type_0a'][command]: - json_data = payload_dict['type_0a'][command]['command'] - if command_override is None and command in payload_dict['type_0a'] and 'command_override' in payload_dict['type_0a'][command]: - command_override = payload_dict['type_0a'][command]['command_override'] + if self.dev_type != "type_0a": + if ( + json_data is None + and command in payload_dict["type_0a"] + and "command" in payload_dict["type_0a"][command] + ): + json_data = payload_dict["type_0a"][command]["command"] + if ( + command_override is None + and command in payload_dict["type_0a"] + and "command_override" in payload_dict["type_0a"][command] + ): + command_override = payload_dict["type_0a"][command]["command_override"] if command_override is None: command_override = command @@ -1014,7 +1096,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # I have yet to see a device complain about included but unneeded attribs, but they *will* # complain about missing attribs, so just include them all unless otherwise specified json_data = {"gwId": "", "devId": "", "uid": "", "t": ""} - cmd_data = "" if "gwId" in json_data: if gwId is not None: @@ -1032,7 +1113,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): else: json_data["uid"] = self.id if "t" in json_data: - if json_data['t'] == "int": + if json_data["t"] == "int": json_data["t"] = int(time.time()) else: json_data["t"] = str(int(time.time())) @@ -1057,7 +1138,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return MessagePayload(command_override, payload) - def __repr__(self): """Return internal string representation of object.""" return self.id diff --git a/custom_components/localtuya/select.py b/custom_components/localtuya/select.py index f643e08..c9b1d1c 100644 --- a/custom_components/localtuya/select.py +++ b/custom_components/localtuya/select.py @@ -4,19 +4,15 @@ from functools import partial import voluptuous as vol from homeassistant.components.select import DOMAIN, SelectEntity -from homeassistant.const import ( - CONF_DEVICE_CLASS, - STATE_UNKNOWN, -) +from homeassistant.const import CONF_DEVICE_CLASS, STATE_UNKNOWN from .common import LocalTuyaEntity, async_setup_entry - from .const import ( + CONF_DEFAULT_VALUE, CONF_OPTIONS, CONF_OPTIONS_FRIENDLY, - CONF_DEFAULT_VALUE, - CONF_RESTORE_ON_RECONNECT, CONF_PASSIVE_ENTITY, + CONF_RESTORE_ON_RECONNECT, ) diff --git a/custom_components/localtuya/switch.py b/custom_components/localtuya/switch.py index bc664bf..3776836 100644 --- a/custom_components/localtuya/switch.py +++ b/custom_components/localtuya/switch.py @@ -9,14 +9,14 @@ from .common import LocalTuyaEntity, async_setup_entry from .const import ( ATTR_CURRENT, ATTR_CURRENT_CONSUMPTION, - ATTR_VOLTAGE, ATTR_STATE, + ATTR_VOLTAGE, CONF_CURRENT, CONF_CURRENT_CONSUMPTION, - CONF_VOLTAGE, CONF_DEFAULT_VALUE, - CONF_RESTORE_ON_RECONNECT, CONF_PASSIVE_ENTITY, + CONF_RESTORE_ON_RECONNECT, + CONF_VOLTAGE, ) _LOGGER = logging.getLogger(__name__) diff --git a/pylint.rc b/pylint.rc index 4ec670e..223e881 100644 --- a/pylint.rc +++ b/pylint.rc @@ -171,10 +171,12 @@ disable=line-too-long, deprecated-sys-function, exception-escape, comprehension-escape, - unused-variable, - invalid-name, - dangerous-default-value, - unreachable + unused-variable, + invalid-name, + dangerous-default-value, + unreachable, + unnecessary-pass, + broad-except # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/setup.cfg b/setup.cfg index 562dc77..c4dd99f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,10 +1,10 @@ [flake8] exclude = .git,.tox -max-line-length = 88 +max-line-length = 120 ignore = E203, W503 [mypy] -python_version = 3.7 +python_version = 3.9 ignore_errors = true follow_imports = silent ignore_missing_imports = true From 33c92dc28ccbf622a9f6f8c1f16a674c2f5a4f3a Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:49:22 +0100 Subject: [PATCH 10/33] Updated README.md and info.md --- README.md | 6 +++--- info.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a14e3a1..26d9f27 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The following Tuya device types are currently supported: Energy monitoring (voltage, current, watts, etc.) is supported for compatible devices. -> **Currently, only Tuya protocols 3.1 and 3.3 are supported (3.4 is not).** +> **Currently, Tuya protocols from 3.1 to 3.4 are supported.** This repository's development began as code from [@NameLessJedi](https://github.com/NameLessJedi), [@mileperhour](https://github.com/mileperhour) and [@TradeFace](https://github.com/TradeFace). Their code was then deeply refactored to provide proper integration with Home Assistant environment, adding config flow and other features. Refer to the "Thanks to" section below. @@ -177,8 +177,6 @@ logger: * Everything listed in https://github.com/rospogrigio/localtuya-homeassistant/issues/15 -* Support devices that use Tuya protocol v.3.4 - # Thanks to: NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant and mileperhour https://github.com/mileperhour/localtuya-homeassistant being the major sources of inspiration, and whose code for switches is substantially unchanged. @@ -187,6 +185,8 @@ TradeFace, for being the only one to provide the correct code for communication sean6541, for the working (standard) Python Handler for Tuya devices. +jasonacox, for the TinyTuya project from where I could import the code to communicate with devices using protocol 3.4. + postlund, for the ideas, for coding 95% of the refactoring and boosting the quality of this repo to levels hard to imagine (by me, at least) and teaching me A LOT of how things work in Home Assistant. Buy Me A Coffee diff --git a/info.md b/info.md index c346691..1527c8d 100644 --- a/info.md +++ b/info.md @@ -23,7 +23,7 @@ The following Tuya device types are currently supported: Energy monitoring (voltage, current, watts, etc.) is supported for compatible devices. -> **Currently, only Tuya protocols 3.1 and 3.3 are supported (3.4 is not).** +> **Currently, Tuya protocols from 3.1 to 3.4 are supported.** This repository's development began as code from [@NameLessJedi](https://github.com/NameLessJedi), [@mileperhour](https://github.com/mileperhour) and [@TradeFace](https://github.com/TradeFace). Their code was then deeply refactored to provide proper integration with Home Assistant environment, adding config flow and other features. Refer to the "Thanks to" section below. @@ -177,16 +177,16 @@ logger: * Everything listed in https://github.com/rospogrigio/localtuya-homeassistant/issues/15 -* Support devices that use Tuya protocol v.3.4 - # Thanks to: NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant and mileperhour https://github.com/mileperhour/localtuya-homeassistant being the major sources of inspiration, and whose code for switches is substantially unchanged. -TradeFace, for being the only one to provide the correct code for communication with the cover (in particular, the 0x0d command for the status instead of the 0x0a, and related needs such as double reply to be received): https://github.com/TradeFace/tuya/ +TradeFace, for being the only one to provide the correct code for communication with the type_0d devices (in particular, the 0x0d command for the status instead of the 0x0a, and related needs such as double reply to be received): https://github.com/TradeFace/tuya/ sean6541, for the working (standard) Python Handler for Tuya devices. +jasonacox, for the TinyTuya project from where I could import the code to communicate with devices using protocol 3.4. + postlund, for the ideas, for coding 95% of the refactoring and boosting the quality of this repo to levels hard to imagine (by me, at least) and teaching me A LOT of how things work in Home Assistant. Buy Me A Coffee From cdcfd1d08cab72b5c42fec6c4560cb3aa0ebd578 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:55:37 +0100 Subject: [PATCH 11/33] Fixed tox issues --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index f965d9f..2602e5e 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ python = 3.9: clean, py39, lint, typing [testenv] -passenv = TOXENV CI +passenv = TOXENV,CI whitelist_externals = true setenv = From d8acf6007694671f563ac0cc39ddb30ee4cbff2c Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 11:31:37 +0100 Subject: [PATCH 12/33] Fix for version not being set yet when calling _setup_dispatcher --- .../localtuya/pytuya/__init__.py | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 55a97e1..e6dbe27 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -560,6 +560,14 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.real_local_key = self.local_key self.dev_type = "type_0a" self.dps_to_request = {} + + if protocol_version: + self.set_version(float(protocol_version)) + else: + # make sure we call our set_version() and not a subclass since some of + # them (such as BulbDevice) make connections when called + TuyaProtocol.set_version(self, 3.1) + self.cipher = AESCipher(self.local_key) self.seqno = 1 self.transport = None @@ -571,13 +579,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.local_nonce = b"0123456789abcdef" # not-so-random random key self.remote_nonce = b"" - if protocol_version: - self.set_version(float(protocol_version)) - else: - # make sure we call our set_version() and not a subclass since some of - # them (such as BulbDevice) make connections when called - TuyaProtocol.set_version(self, 3.1) - def set_version(self, protocol_version): """Set the device version and eventually start available DPs detection.""" self.version = protocol_version @@ -586,12 +587,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if protocol_version == 3.2: # 3.2 behaves like 3.3 with type_0d # self.version = 3.3 self.dev_type = "type_0d" - if self.dps_to_request == {}: - self.detect_available_dps() elif protocol_version == 3.4: self.dev_type = "v3.4" - elif self.dev_type == "v3.4": - self.dev_type = "default" def error_json(self, number=None, payload=None): """Return error details in JSON.""" @@ -806,7 +803,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): Args: dps([int]): list of dps to update, default=detected&whitelisted """ - if self.version == 3.3: + if self.version in [3.2, 3.3]: # 3.2 behaves like 3.3 with type_0d if dps is None: if not self.dps_cache: await self.detect_available_dps() From 33e0033b0a95003252779262e58a719a902c4d1e Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 18:18:35 +0100 Subject: [PATCH 13/33] Introduced the possibility to select which devices should have the pytuya debug enabled --- custom_components/localtuya/common.py | 2 + custom_components/localtuya/config_flow.py | 40 ++++++++----------- custom_components/localtuya/const.py | 1 + .../localtuya/pytuya/__init__.py | 26 ++++++++---- .../localtuya/translations/en.json | 1 + .../localtuya/translations/it.json | 1 + .../localtuya/translations/pt-BR.json | 1 + 7 files changed, 41 insertions(+), 31 deletions(-) diff --git a/custom_components/localtuya/common.py b/custom_components/localtuya/common.py index 76521eb..85ed21c 100644 --- a/custom_components/localtuya/common.py +++ b/custom_components/localtuya/common.py @@ -28,6 +28,7 @@ from .const import ( ATTR_STATE, ATTR_UPDATED_AT, CONF_DEFAULT_VALUE, + CONF_ENABLE_DEBUG, CONF_LOCAL_KEY, CONF_MODEL, CONF_PASSIVE_ENTITY, @@ -188,6 +189,7 @@ class TuyaDevice(pytuya.TuyaListener, pytuya.ContextualLogger): self._dev_config_entry[CONF_DEVICE_ID], self._local_key, float(self._dev_config_entry[CONF_PROTOCOL_VERSION]), + self._dev_config_entry.get(CONF_ENABLE_DEBUG, False), self, ) self._interface.add_dps_to_request(self.dps_to_request) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 0258a72..8f37be9 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -33,6 +33,7 @@ from .const import ( CONF_ADD_DEVICE, CONF_DPS_STRINGS, CONF_EDIT_DEVICE, + CONF_ENABLE_DEBUG, CONF_LOCAL_KEY, CONF_MANUAL_DPS, CONF_MODEL, @@ -82,30 +83,16 @@ CLOUD_SETUP_SCHEMA = vol.Schema( } ) -CONFIGURE_DEVICE_SCHEMA = vol.Schema( - { - vol.Required(CONF_FRIENDLY_NAME): str, - vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_HOST): str, - vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( - ["3.1", "3.2", "3.3", "3.4"] - ), - vol.Optional(CONF_SCAN_INTERVAL): int, - vol.Optional(CONF_MANUAL_DPS): str, - vol.Optional(CONF_RESET_DPIDS): str, - } -) - DEVICE_SCHEMA = vol.Schema( { + vol.Required(CONF_FRIENDLY_NAME): cv.string, vol.Required(CONF_HOST): cv.string, vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, - vol.Required(CONF_FRIENDLY_NAME): cv.string, vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( ["3.1", "3.2", "3.3", "3.4"] ), + vol.Required(CONF_ENABLE_DEBUG, default=False): bool, vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -145,15 +132,16 @@ def options_schema(entities): ] return vol.Schema( { - vol.Required(CONF_FRIENDLY_NAME): str, - vol.Required(CONF_HOST): str, - vol.Required(CONF_LOCAL_KEY): str, + vol.Required(CONF_FRIENDLY_NAME): cv.string, + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( ["3.1", "3.2", "3.3", "3.4"] ), - vol.Optional(CONF_SCAN_INTERVAL): int, - vol.Optional(CONF_MANUAL_DPS): str, - vol.Optional(CONF_RESET_DPIDS): str, + vol.Required(CONF_ENABLE_DEBUG, default=False): bool, + vol.Optional(CONF_SCAN_INTERVAL): cv.string, + vol.Optional(CONF_MANUAL_DPS): cv.string, + vol.Optional(CONF_RESET_DPIDS): cv.string, vol.Required( CONF_ENTITIES, description={"suggested_value": entity_names} ): cv.multi_select(entity_names), @@ -253,6 +241,7 @@ async def validate_input(hass: core.HomeAssistant, data): data[CONF_DEVICE_ID], data[CONF_LOCAL_KEY], float(data[CONF_PROTOCOL_VERSION]), + data[CONF_ENABLE_DEBUG], ) if CONF_RESET_DPIDS in data: reset_ids_str = data[CONF_RESET_DPIDS].split(",") @@ -570,6 +559,11 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow): CONF_ENTITIES: [], } ) + if len(user_input[CONF_ENTITIES]) == 0: + return self.async_abort( + reason="no_entities", + description_placeholders={}, + ) if user_input[CONF_ENTITIES]: entity_ids = [ int(entity.split(":")[0]) @@ -617,7 +611,7 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow): if dev_id in cloud_devs: defaults[CONF_LOCAL_KEY] = cloud_devs[dev_id].get(CONF_LOCAL_KEY) defaults[CONF_FRIENDLY_NAME] = cloud_devs[dev_id].get(CONF_NAME) - schema = schema_defaults(CONFIGURE_DEVICE_SCHEMA, **defaults) + schema = schema_defaults(DEVICE_SCHEMA, **defaults) placeholders = {"for_device": ""} diff --git a/custom_components/localtuya/const.py b/custom_components/localtuya/const.py index 8010d18..3a6c252 100644 --- a/custom_components/localtuya/const.py +++ b/custom_components/localtuya/const.py @@ -28,6 +28,7 @@ ATTR_UPDATED_AT = "updated_at" # config flow CONF_LOCAL_KEY = "local_key" +CONF_ENABLE_DEBUG = "enable_debug" CONF_PROTOCOL_VERSION = "protocol_version" CONF_DPS_STRINGS = "dps_strings" CONF_MODEL = "model" diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index e6dbe27..df34c93 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -233,13 +233,17 @@ class ContextualLogger: def __init__(self): """Initialize a new ContextualLogger.""" self._logger = None + self._enable_debug = False - def set_logger(self, logger, device_id): + def set_logger(self, logger, device_id, enable_debug=False): """Set base logger to use.""" + self._enable_debug = enable_debug self._logger = TuyaLoggingAdapter(logger, {"device_id": device_id}) def debug(self, msg, *args): """Debug level log.""" + if not self._enable_debug: + return return self._logger.log(logging.DEBUG, msg, *args) def info(self, msg, *args): @@ -415,7 +419,7 @@ class MessageDispatcher(ContextualLogger): RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener, protocol_version, local_key): + def __init__(self, dev_id, listener, protocol_version, local_key, enable_debug): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" @@ -423,7 +427,7 @@ class MessageDispatcher(ContextualLogger): self.listener = listener self.version = protocol_version self.local_key = local_key - self.set_logger(_LOGGER, dev_id) + self.set_logger(_LOGGER, dev_id, enable_debug) def abort(self): """Abort all waiting clients.""" @@ -540,7 +544,9 @@ class EmptyListener(TuyaListener): class TuyaProtocol(asyncio.Protocol, ContextualLogger): """Implementation of the Tuya protocol.""" - def __init__(self, dev_id, local_key, protocol_version, on_connected, listener): + def __init__( + self, dev_id, local_key, protocol_version, enable_debug, on_connected, listener + ): """ Initialize a new TuyaInterface. @@ -554,7 +560,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): """ super().__init__() self.loop = asyncio.get_running_loop() - self.set_logger(_LOGGER, dev_id) + self.set_logger(_LOGGER, dev_id, enable_debug) self.id = dev_id self.local_key = local_key.encode("latin1") self.real_local_key = self.local_key @@ -572,7 +578,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.seqno = 1 self.transport = None self.listener = weakref.ref(listener) - self.dispatcher = self._setup_dispatcher() + self.dispatcher = self._setup_dispatcher(enable_debug) self.on_connected = on_connected self.heartbeater = None self.dps_cache = {} @@ -603,7 +609,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return json.loads('{ "Error":"%s", "Err":"%s", "Payload":%s }' % vals) - def _setup_dispatcher(self): + def _setup_dispatcher(self, enable_debug): def _status_update(msg): if msg.seqno > 0: self.seqno = msg.seqno + 1 @@ -615,7 +621,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if listener is not None: listener.status_updated(self.dps_cache) - return MessageDispatcher(self.id, _status_update, self.version, self.local_key) + return MessageDispatcher( + self.id, _status_update, self.version, self.local_key, enable_debug + ) def connection_made(self, transport): """Did connect to the device.""" @@ -1145,6 +1153,7 @@ async def connect( device_id, local_key, protocol_version, + enable_debug, listener=None, port=6668, timeout=5, @@ -1157,6 +1166,7 @@ async def connect( device_id, local_key, protocol_version, + enable_debug, on_connected, listener or EmptyListener(), ), diff --git a/custom_components/localtuya/translations/en.json b/custom_components/localtuya/translations/en.json index 4b3ddb0..157fdf9 100644 --- a/custom_components/localtuya/translations/en.json +++ b/custom_components/localtuya/translations/en.json @@ -95,6 +95,7 @@ "device_id": "Device ID", "local_key": "Local key", "protocol_version": "Protocol Version", + "enable_debug": "Enable debugging for this device (debug must be enabled also in configuration.yaml)", "scan_interval": "Scan interval (seconds, only when not updating automatically)", "entities": "Entities (uncheck an entity to remove it)", "manual_dps_strings": "Manual DPS to add (separated by commas ',') - used when detection is not working (optional)", diff --git a/custom_components/localtuya/translations/it.json b/custom_components/localtuya/translations/it.json index faf4afa..1cbd4c0 100644 --- a/custom_components/localtuya/translations/it.json +++ b/custom_components/localtuya/translations/it.json @@ -95,6 +95,7 @@ "device_id": "ID del dispositivo", "local_key": "Chiave locale", "protocol_version": "Versione del protocollo", + "enable_debug": "Abilita il debugging per questo device (il debug va abilitato anche in configuration.yaml)", "scan_interval": "Intervallo di scansione (secondi, solo quando non si aggiorna automaticamente)", "entities": "Entities (deseleziona un'entity per rimuoverla)" } diff --git a/custom_components/localtuya/translations/pt-BR.json b/custom_components/localtuya/translations/pt-BR.json index a2feed4..26f01ac 100644 --- a/custom_components/localtuya/translations/pt-BR.json +++ b/custom_components/localtuya/translations/pt-BR.json @@ -95,6 +95,7 @@ "device_id": "ID do dispositivo", "local_key": "Local key", "protocol_version": "Versão do protocolo", + "enable_debug": "Ative a depuração para este dispositivo (a depuração também deve ser ativada em configuration.yaml)", "scan_interval": "Intervalo de escaneamento (segundos, somente quando não estiver atualizando automaticamente)", "entities": "Entidades (desmarque uma entidade para removê-la)" } From bc8910549cd94a864bcec51b98a0c67184aa8056 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 18:23:45 +0100 Subject: [PATCH 14/33] Introduced device debugging option in README.md and info.md --- README.md | 3 +++ info.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 26d9f27..7f1c25f 100644 --- a/README.md +++ b/README.md @@ -164,8 +164,11 @@ logger: default: warning logs: custom_components.localtuya: debug + custom_components.localtuya.pytuya: debug ``` +Then, edit the device that is showing problems and check the "Enable debugging for this device" button. + # Notes: * Do not declare anything as "tuya", such as by initiating a "switch.tuya". Using "tuya" launches Home Assistant's built-in, cloud-based Tuya integration in lieu of localtuya. diff --git a/info.md b/info.md index 1527c8d..eba3286 100644 --- a/info.md +++ b/info.md @@ -164,8 +164,11 @@ logger: default: warning logs: custom_components.localtuya: debug + custom_components.localtuya.pytuya: debug ``` +Then, edit the device that is showing problems and check the "Enable debugging for this device" button. + # Notes: * Do not declare anything as "tuya", such as by initiating a "switch.tuya". Using "tuya" launches Home Assistant's built-in, cloud-based Tuya integration in lieu of localtuya. From 957cf25dd0af995c496a5644c7a773b46a426b04 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:42:11 +0100 Subject: [PATCH 15/33] Introduced pytuya with support for 3.4 protocol --- .../localtuya/pytuya/__init__.py | 713 ++++++++++++++---- 1 file changed, 546 insertions(+), 167 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index d36cd5e..a417534 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -3,11 +3,8 @@ """ Python module to interface with Tuya WiFi smart devices. -Mostly derived from Shenzhen Xenon ESP8266MOD WiFi smart devices -E.g. https://wikidevi.com/wiki/Xenon_SM-PW701U - -Author: clach04 -Maintained by: postlund +Author: clach04, postlund +Maintained by: rospogrigio For more information see https://github.com/clach04/python-tuya @@ -19,7 +16,7 @@ Classes Functions json = status() # returns json payload - set_version(version) # 3.1 [default] or 3.3 + set_version(version) # 3.1 [default], 3.2, 3.3 or 3.4 detect_available_dps() # returns a list of available dps provided by the device update_dps(dps) # sends update dps command add_dps_to_request(dp_index) # adds dp_index to the list of dps used by the @@ -27,18 +24,21 @@ Functions set_dp(on, dp_index) # Set value of any dps index. -Credits - * TuyaAPI https://github.com/codetheweb/tuyapi by codetheweb and blackrozes - For protocol reverse engineering - * PyTuya https://github.com/clach04/python-tuya by clach04 - The origin of this python module (now abandoned) - * LocalTuya https://github.com/rospogrigio/localtuya-homeassistant by rospogrigio - Updated pytuya to support devices with Device IDs of 22 characters + Credits + * TuyaAPI https://github.com/codetheweb/tuyapi by codetheweb and blackrozes + For protocol reverse engineering + * PyTuya https://github.com/clach04/python-tuya by clach04 + The origin of this python module (now abandoned) + * Tuya Protocol 3.4 Support by uzlonewolf + Enhancement to TuyaMessage logic for multi-payload messages and Tuya Protocol 3.4 support + * TinyTuya https://github.com/jasonacox/tinytuya by jasonacox + Several CLI tools and code for Tuya devices """ import asyncio import base64 import binascii +import hmac import json import logging import struct @@ -46,18 +46,58 @@ import time import weakref from abc import ABC, abstractmethod from collections import namedtuple -from hashlib import md5 +from hashlib import md5,sha256 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -version_tuple = (9, 0, 0) +version_tuple = (10, 0, 0) version = version_string = __version__ = "%d.%d.%d" % version_tuple -__author__ = "postlund" +__author__ = "rospogrigio" _LOGGER = logging.getLogger(__name__) -TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc") +# Tuya Packet Format +TuyaHeader = namedtuple('TuyaHeader', 'prefix seqno cmd length') +MessagePayload = namedtuple("MessagePayload", "cmd payload") +try: + TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,)) +except: + TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good") + +# TinyTuya Error Response Codes +ERR_JSON = 900 +ERR_CONNECT = 901 +ERR_TIMEOUT = 902 +ERR_RANGE = 903 +ERR_PAYLOAD = 904 +ERR_OFFLINE = 905 +ERR_STATE = 906 +ERR_FUNCTION = 907 +ERR_DEVTYPE = 908 +ERR_CLOUDKEY = 909 +ERR_CLOUDRESP = 910 +ERR_CLOUDTOKEN = 911 +ERR_PARAMS = 912 +ERR_CLOUD = 913 + +error_codes = { + ERR_JSON: "Invalid JSON Response from Device", + ERR_CONNECT: "Network Error: Unable to Connect", + ERR_TIMEOUT: "Timeout Waiting for Device", + ERR_RANGE: "Specified Value Out of Range", + ERR_PAYLOAD: "Unexpected Payload from Device", + ERR_OFFLINE: "Network Error: Device Unreachable", + ERR_STATE: "Device in Unknown State", + ERR_FUNCTION: "Function Not Supported by Device", + ERR_DEVTYPE: "Device22 Detected: Retry Command", + ERR_CLOUDKEY: "Missing Tuya Cloud Key and Secret", + ERR_CLOUDRESP: "Invalid JSON Response from Cloud", + ERR_CLOUDTOKEN: "Unable to Get Cloud Token", + ERR_PARAMS: "Missing Function Parameters", + ERR_CLOUD: "Error Response from Tuya Cloud", + None: "Unknown Error", +} SET = "set" STATUS = "status" @@ -65,58 +105,109 @@ HEARTBEAT = "heartbeat" RESET = "reset" UPDATEDPS = "updatedps" # Request refresh of DPS +# Tuya Command Types +# Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h +AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config +ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD +SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key +SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response +SESS_KEY_NEG_FINISH = 0x05 # FRM_SECURITY_TYPE5 # finalize session key negotiation +UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command +CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD +STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD +HEART_BEAT = 0x09 # FRM_TP_HB +DP_QUERY = 0x0a # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points +QUERY_WIFI = 0x0b # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD +TOKEN_BIND = 0x0c # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) +CONTROL_NEW = 0x0d # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD +ENABLE_WIFI = 0x0e # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD +WIFI_INFO = 0x0f # 15 # FRM_CFG_WIFI_INFO +DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW +SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC +UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS +UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION +AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 +BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 +LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM + + PROTOCOL_VERSION_BYTES_31 = b"3.1" PROTOCOL_VERSION_BYTES_33 = b"3.3" +PROTOCOL_VERSION_BYTES_34 = b"3.4" -PROTOCOL_33_HEADER = PROTOCOL_VERSION_BYTES_33 + 12 * b"\x00" - -MESSAGE_HEADER_FMT = ">4I" # 4*uint32: prefix, seqno, cmd, length +PROTOCOL_3x_HEADER = 12 * b"\x00" +PROTOCOL_33_HEADER = PROTOCOL_VERSION_BYTES_33 + PROTOCOL_3x_HEADER +PROTOCOL_34_HEADER = PROTOCOL_VERSION_BYTES_34 + PROTOCOL_3x_HEADER +MESSAGE_HEADER_FMT = ">4I" # 4*uint32: prefix, seqno, cmd, length [, retcode] MESSAGE_RECV_HEADER_FMT = ">5I" # 4*uint32: prefix, seqno, cmd, length, retcode +MESSAGE_RETCODE_FMT = ">I" # retcode for received messages MESSAGE_END_FMT = ">2I" # 2*uint32: crc, suffix - +MESSAGE_END_FMT_HMAC = ">32sI" # 32s:hmac, uint32:suffix PREFIX_VALUE = 0x000055AA +PREFIX_BIN = b"\x00\x00U\xaa" SUFFIX_VALUE = 0x0000AA55 +SUFFIX_BIN = b"\x00\x00\xaaU" +NO_PROTOCOL_HEADER_CMDS = [DP_QUERY, DP_QUERY_NEW, UPDATEDPS, HEART_BEAT, SESS_KEY_NEG_START, SESS_KEY_NEG_RESP, SESS_KEY_NEG_FINISH ] HEARTBEAT_INTERVAL = 10 # DPS that are known to be safe to use with update_dps (0x12) command UPDATE_DPS_WHITELIST = [18, 19, 20] # Socket (Wi-Fi) +# Tuya Device Dictionary - Command and Payload Overrides # This is intended to match requests.json payload at # https://github.com/codetheweb/tuyapi : -# type_0a devices require the 0a command as the status request -# type_0d devices require the 0d command as the status request, and the list of -# dps used set to null in the request payload (see generate_payload method) - +# 'type_0a' devices require the 0a command for the DP_QUERY request +# 'type_0d' devices require the 0d command for the DP_QUERY request and a list of +# dps used set to Null in the request payload # prefix: # Next byte is command byte ("hexByte") some zero padding, then length # of remaining payload, i.e. command + suffix (unclear if multiple bytes used for # length, zero padding implies could be more than one byte) -PAYLOAD_DICT = { + +# Any command not defined in payload_dict will be sent as-is with a +# payload of {"gwId": "", "devId": "", "uid": "", "t": ""} + +payload_dict = { + # Default Device "type_0a": { - STATUS: {"hexByte": 0x0A, "command": {"gwId": "", "devId": ""}}, - SET: {"hexByte": 0x07, "command": {"devId": "", "uid": "", "t": ""}}, - HEARTBEAT: {"hexByte": 0x09, "command": {}}, - UPDATEDPS: {"hexByte": 0x12, "command": {"dpId": [18, 19, 20]}}, - RESET: { - "hexByte": 0x12, - "command": { - "gwId": "", - "devId": "", - "uid": "", - "t": "", - "dpId": [18, 19, 20], - }, + AP_CONFIG: { # [BETA] Set Control Values on Device + "command": {"gwId": "", "devId": "", "uid": "", "t": ""}, + }, + CONTROL: { # Set Control Values on Device + "command": {"devId": "", "uid": "", "t": ""}, + }, + STATUS: { # Get Status from Device + "command": {"gwId": "", "devId": ""}, + }, + HEART_BEAT: {"command": {"gwId": "", "devId": ""}}, + DP_QUERY: { # Get Data Points from Device + "command": {"gwId": "", "devId": "", "uid": "", "t": ""}, + }, + CONTROL_NEW: {"command": {"devId": "", "uid": "", "t": ""}}, + DP_QUERY_NEW: {"command": {"devId": "", "uid": "", "t": ""}}, + UPDATEDPS: {"command": {"dpId": [18, 19, 20]}}, + }, + # Special Case Device "0d" - Some of these devices + # Require the 0d command as the DP_QUERY status request and the list of + # dps requested payload + "type_0d": { + DP_QUERY: { # Get Data Points from Device + "command_override": CONTROL_NEW, # Uses CONTROL_NEW command for some reason + "command": {"devId": "", "uid": "", "t": ""}, }, }, - "type_0d": { - STATUS: {"hexByte": 0x0D, "command": {"devId": "", "uid": "", "t": ""}}, - SET: {"hexByte": 0x07, "command": {"devId": "", "uid": "", "t": ""}}, - HEARTBEAT: {"hexByte": 0x09, "command": {}}, - UPDATEDPS: {"hexByte": 0x12, "command": {"dpId": [18, 19, 20]}}, - }, + "v3.4": { + CONTROL: { + "command_override": CONTROL_NEW, # Uses CONTROL_NEW command + "command": {"protocol":5, "t": "int", "data": ""} + }, + DP_QUERY: { "command_override": DP_QUERY_NEW }, + } } + + class TuyaLoggingAdapter(logging.LoggerAdapter): """Adapter that adds device id to all log points.""" @@ -158,8 +249,9 @@ class ContextualLogger: return self._logger.exception(msg, *args) -def pack_message(msg): +def pack_message(msg,hmac_key=None): """Pack a TuyaMessage into bytes.""" + end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT # Create full message excluding CRC and suffix buffer = ( struct.pack( @@ -167,28 +259,81 @@ def pack_message(msg): PREFIX_VALUE, msg.seqno, msg.cmd, - len(msg.payload) + struct.calcsize(MESSAGE_END_FMT), + len(msg.payload) + struct.calcsize(end_fmt), ) + msg.payload ) - + if hmac_key: + crc = hmac.new(hmac_key, buffer, sha256).digest() + else: + crc = binascii.crc32(buffer) & 0xFFFFFFFF # Calculate CRC, add it together with suffix - buffer += struct.pack(MESSAGE_END_FMT, binascii.crc32(buffer), SUFFIX_VALUE) - + buffer += struct.pack( + end_fmt, crc, SUFFIX_VALUE + ) return buffer -def unpack_message(data): +def unpack_message(data, hmac_key=None, header=None, no_retcode=False, logger=None): """Unpack bytes into a TuyaMessage.""" - header_len = struct.calcsize(MESSAGE_RECV_HEADER_FMT) - end_len = struct.calcsize(MESSAGE_END_FMT) + end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT + # 4-word header plus return code + header_len = struct.calcsize(MESSAGE_HEADER_FMT) + retcode_len = 0 if no_retcode else struct.calcsize(MESSAGE_RETCODE_FMT) + end_len = struct.calcsize(end_fmt) + headret_len = header_len + retcode_len - _, seqno, cmd, _, retcode = struct.unpack( - MESSAGE_RECV_HEADER_FMT, data[:header_len] + if len(data) < headret_len+end_len: + logger.debug('unpack_message(): not enough data to unpack header! need %d but only have %d', headret_len+end_len, len(data)) + raise DecodeError('Not enough data to unpack header') + + if header is None: + header = parse_header(data) + + if len(data) < header_len+header.length: + logger.debug('unpack_message(): not enough data to unpack payload! need %d but only have %d', header_len+header.length, len(data)) + raise DecodeError('Not enough data to unpack payload') + + retcode = 0 if no_retcode else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + # the retcode is technically part of the payload, but strip it as we do not want it here + payload = data[header_len+retcode_len:header_len+header.length] + crc, suffix = struct.unpack(end_fmt, payload[-end_len:]) + + if hmac_key: + have_crc = hmac.new(hmac_key, data[:(header_len+header.length)-end_len], sha256).digest() + else: + have_crc = binascii.crc32(data[:(header_len+header.length)-end_len]) & 0xFFFFFFFF + + if suffix != SUFFIX_VALUE: + logger.debug('Suffix prefix wrong! %08X != %08X', suffix, SUFFIX_VALUE) + + if crc != have_crc: + if hmac_key: + logger.debug('HMAC checksum wrong! %r != %r', binascii.hexlify(have_crc), binascii.hexlify(crc)) + else: + logger.debug('CRC wrong! %08X != %08X', have_crc, crc) + + return TuyaMessage(header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc) + +def parse_header(data): + header_len = struct.calcsize(MESSAGE_HEADER_FMT) + + if len(data) < header_len: + raise DecodeError('Not enough data to unpack header') + + prefix, seqno, cmd, payload_len = struct.unpack( + MESSAGE_HEADER_FMT, data[:header_len] ) - payload = data[header_len:-end_len] - crc, _ = struct.unpack(MESSAGE_END_FMT, data[-end_len:]) - return TuyaMessage(seqno, cmd, retcode, payload, crc) + + if prefix != PREFIX_VALUE: + #self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) + raise DecodeError('Header prefix wrong! %08X != %08X' % (prefix, PREFIX_VALUE)) + + # sanity check. currently the max payload length is somewhere around 300 bytes + if payload_len > 1000: + raise DecodeError('Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes' % payload_len) + + return TuyaHeader(prefix, seqno, cmd, payload_len) class AESCipher: @@ -199,19 +344,21 @@ class AESCipher: self.block_size = 16 self.cipher = Cipher(algorithms.AES(key), modes.ECB(), default_backend()) - def encrypt(self, raw, use_base64=True): + def encrypt(self, raw, use_base64=True, pad=True): """Encrypt data to be sent to device.""" encryptor = self.cipher.encryptor() - crypted_text = encryptor.update(self._pad(raw)) + encryptor.finalize() + if pad: raw = self._pad(raw) + crypted_text = encryptor.update(raw) + encryptor.finalize() return base64.b64encode(crypted_text) if use_base64 else crypted_text - def decrypt(self, enc, use_base64=True): + def decrypt(self, enc, use_base64=True, decode_text=True): """Decrypt data from device.""" if use_base64: enc = base64.b64decode(enc) decryptor = self.cipher.decryptor() - return self._unpad(decryptor.update(enc) + decryptor.finalize()).decode() + raw = self._unpad(decryptor.update(enc) + decryptor.finalize()) + return raw.decode("utf-8") if decode_text else raw def _pad(self, data): padnum = self.block_size - len(data) % self.block_size @@ -229,13 +376,16 @@ class MessageDispatcher(ContextualLogger): # other messages. This is a hack to allow waiting for heartbeats. HEARTBEAT_SEQNO = -100 RESET_SEQNO = -101 + SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener): + def __init__(self, dev_id, listener, version, local_key): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" self.listeners = {} self.listener = listener + self.version = version + self.local_key = local_key self.set_logger(_LOGGER, dev_id) def abort(self): @@ -248,12 +398,12 @@ class MessageDispatcher(ContextualLogger): if isinstance(sem, asyncio.Semaphore): sem.release() - async def wait_for(self, seqno, timeout=5): + async def wait_for(self, seqno, cmd, timeout=5): """Wait for response to a sequence number to be received and return it.""" if seqno in self.listeners: raise Exception(f"listener exists for {seqno}") - self.debug("Waiting for sequence number %d", seqno) + self.debug("Command %d waiting for sequence number %d", cmd, seqno) self.listeners[seqno] = asyncio.Semaphore(0) try: await asyncio.wait_for(self.listeners[seqno].acquire(), timeout=timeout) @@ -273,51 +423,39 @@ class MessageDispatcher(ContextualLogger): if len(self.buffer) < header_len: break - # Parse header and check if enough data according to length in header - _, seqno, cmd, length, retcode = struct.unpack_from( - MESSAGE_RECV_HEADER_FMT, self.buffer - ) - if len(self.buffer[header_len - 4 :]) < length: - break - - # length includes payload length, retcode, crc and suffix - if (retcode & 0xFFFFFF00) != 0: - payload_start = header_len - 4 - payload_length = length - struct.calcsize(MESSAGE_END_FMT) - else: - payload_start = header_len - payload_length = length - 4 - struct.calcsize(MESSAGE_END_FMT) - payload = self.buffer[payload_start : payload_start + payload_length] - - crc, _ = struct.unpack_from( - MESSAGE_END_FMT, - self.buffer[payload_start + payload_length : payload_start + length], - ) - - self.buffer = self.buffer[header_len - 4 + length :] - self._dispatch(TuyaMessage(seqno, cmd, retcode, payload, crc)) + header = parse_header(self.buffer) + hmac_key = self.local_key if self.version == '3.4' else None + msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); + self.buffer = self.buffer[header_len - 4 + header.length :] + self._dispatch(msg) def _dispatch(self, msg): """Dispatch a message to someone that is listening.""" - self.debug("Dispatching message %s", msg) + self.debug("Dispatching message CMD %r %s", msg.cmd, msg) if msg.seqno in self.listeners: - self.debug("Dispatching sequence number %d", msg.seqno) + # self.debug("Dispatching sequence number %d", msg.seqno) sem = self.listeners[msg.seqno] self.listeners[msg.seqno] = msg sem.release() - elif msg.cmd == 0x09: + elif msg.cmd == HEART_BEAT: self.debug("Got heartbeat response") if self.HEARTBEAT_SEQNO in self.listeners: sem = self.listeners[self.HEARTBEAT_SEQNO] self.listeners[self.HEARTBEAT_SEQNO] = msg sem.release() - elif msg.cmd == 0x12: + elif msg.cmd == UPDATEDPS: self.debug("Got normal updatedps response") if self.RESET_SEQNO in self.listeners: sem = self.listeners[self.RESET_SEQNO] self.listeners[self.RESET_SEQNO] = msg sem.release() - elif msg.cmd == 0x08: + elif msg.cmd == SESS_KEY_NEG_RESP: + self.debug("Got key negotiation response") + if self.SESS_KEY_SEQNO in self.listeners: + sem = self.listeners[self.SESS_KEY_SEQNO] + self.listeners[self.SESS_KEY_SEQNO] = msg + sem.release() + elif msg.cmd == STATUS: if self.RESET_SEQNO in self.listeners: self.debug("Got reset status update") sem = self.listeners[self.RESET_SEQNO] @@ -327,12 +465,15 @@ class MessageDispatcher(ContextualLogger): self.debug("Got status update") self.listener(msg) else: - self.debug( - "Got message type %d for unknown listener %d: %s", - msg.cmd, - msg.seqno, - msg, - ) + if msg.cmd == CONTROL_NEW: + self.debug("Got ACK message for command %d: will ignore it", msg.cmd) + else: + self.error( + "Got message type %d for unknown listener %d: %s", + msg.cmd, + msg.seqno, + msg, + ) class TuyaListener(ABC): @@ -377,11 +518,12 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.set_logger(_LOGGER, dev_id) self.id = dev_id self.local_key = local_key.encode("latin1") + self.real_local_key = self.local_key self.version = protocol_version self.dev_type = "type_0a" self.dps_to_request = {} self.cipher = AESCipher(self.local_key) - self.seqno = 0 + self.seqno = 1 self.transport = None self.listener = weakref.ref(listener) self.dispatcher = self._setup_dispatcher() @@ -389,6 +531,40 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.heartbeater = None self.dps_cache = {} + if protocol_version: + self.set_version(float(protocol_version)) + else: + # make sure we call our set_version() and not a subclass since some of + # them (such as BulbDevice) make connections when called + TuyaProtocol.set_version(self, 3.1) + + def set_version(self, version): + self.version = version + self.version_bytes = str(version).encode('latin1') + self.version_header = self.version_bytes + PROTOCOL_3x_HEADER + if version == 3.2: # 3.2 behaves like 3.3 with type_0d + #self.version = 3.3 + self.dev_type="type_0d" + if self.dps_to_request == {}: + self.detect_available_dps() + elif version == 3.4: + self.dev_type = "v3.4" + elif self.dev_type == "v3.4": + self.dev_type = "default" + + def error_json(self, number=None, payload=None): + """Return error details in JSON""" + try: + spayload = json.dumps(payload) + # spayload = payload.replace('\"','').replace('\'','') + except: + spayload = '""' + + vals = (error_codes[number], str(number), spayload) + self.debug("ERROR %s - %s - payload: %s", *vals) + + return json.loads('{ "Error":"%s", "Err":"%s", "Payload":%s }' % vals) + def _setup_dispatcher(self): def _status_update(msg): decoded_message = self._decode_payload(msg.payload) @@ -399,7 +575,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if listener is not None: listener.status_updated(self.dps_cache) - return MessageDispatcher(self.id, _status_update) + return MessageDispatcher(self.id, _status_update, self.version, self.local_key) def connection_made(self, transport): """Did connect to the device.""" @@ -434,11 +610,13 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def data_received(self, data): """Received data from device.""" + # self.debug("received data=%r", binascii.hexlify(data)) self.dispatcher.add_data(data) def connection_lost(self, exc): """Disconnected from device.""" self.debug("Connection lost: %s", exc) + self.real_local_key = self.local_key try: listener = self.listener and self.listener() if listener is not None: @@ -449,6 +627,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def close(self): """Close connection and abort all outstanding listeners.""" self.debug("Closing connection") + self.real_local_key = self.local_key if self.heartbeater is not None: self.heartbeater.cancel() try: @@ -464,31 +643,78 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.transport = None transport.close() + # similar to exchange() but never retries sending and does not decode the response + async def exchange_quick(self, payload, recv_retries): + + if not self.transport: + self.debug("[" + self.id + "] send quick failed, could not get socket: %s", payload) + return None + enc_payload = self._encode_message(payload) if type(payload) == MessagePayload else payload + # self.debug("Quick-dispatching message %s, seqno %s", binascii.hexlify(enc_payload), self.seqno) + + try: + self.transport.write(enc_payload) + except: + # self._check_socket_close(True) + self.close() + return None + while recv_retries: + try: + #msg = await self._receive() + seqno = MessageDispatcher.SESS_KEY_SEQNO + # seqno = self.seqno - 1 + msg = await self.dispatcher.wait_for(seqno, payload.cmd) + # for 3.4 devices, we get the starting seqno with the SESS_KEY_NEG_RESP message + self.seqno = msg.seqno + except: + msg = None + if msg and len(msg.payload) != 0: + return msg + recv_retries -= 1 + if recv_retries == 0: + self.debug("received null payload (%r) but out of recv retries, giving up", msg) + else: + self.debug("received null payload (%r), fetch new one - %s retries remaining", msg, recv_retries) + return None + async def exchange(self, command, dps=None): """Send and receive a message, returning response from device.""" + + if self.version == 3.4 and self.real_local_key == self.local_key: + self.debug("3.4 device: negotiating a new session key") + await self._negotiate_session_key() + self.debug( "Sending command %s (device type: %s)", command, self.dev_type, ) payload = self._generate_payload(command, dps) + real_cmd = payload.cmd dev_type = self.dev_type + # self.debug("Exchange: payload %r %r", payload.cmd, payload.payload) # Wait for special sequence number if heartbeat or reset - seqno = self.seqno - 1 + seqno = self.seqno - if command == HEARTBEAT: + if payload.cmd == HEARTBEAT: seqno = MessageDispatcher.HEARTBEAT_SEQNO - elif command == RESET: + elif payload.cmd == RESET: seqno = MessageDispatcher.RESET_SEQNO - self.transport.write(payload) - msg = await self.dispatcher.wait_for(seqno) + enc_payload = self._encode_message(payload) + self.transport.write(enc_payload) + msg = await self.dispatcher.wait_for(seqno, payload.cmd ) if msg is None: self.debug("Wait was aborted for seqno %d", seqno) return None # TODO: Verify stuff, e.g. CRC sequence number? + if real_cmd == CONTROL_NEW and len(msg.payload) == 0: + # device may send one or two messages with empty payload in response + # to a CONTROL_NEW command, consider it an ACK + self.debug("ACK received for command %d: ignoring it", real_cmd) + return None payload = self._decode_payload(msg.payload) # Perform a new exchange (once) if we switched device type @@ -504,7 +730,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def status(self): """Return device status.""" - status = await self.exchange(STATUS) + status = await self.exchange(DP_QUERY) if status and "dps" in status: self.dps_cache.update(status["dps"]) return self.dps_cache @@ -539,7 +765,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): dps = list(set(dps).intersection(set(UPDATE_DPS_WHITELIST))) self.debug("updatedps() entry (dps %s, dps_cache %s)", dps, self.dps_cache) payload = self._generate_payload(UPDATEDPS, dps) - self.transport.write(payload) + enc_payload = self._encode_message(payload) + self.transport.write(enc_payload) return True async def set_dp(self, value, dp_index): @@ -550,11 +777,11 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): dp_index(int): dps index to set value: new value for the dps index """ - return await self.exchange(SET, {str(dp_index): value}) + return await self.exchange(CONTROL, {str(dp_index): value}) async def set_dps(self, dps): """Set values for a set of datapoints.""" - return await self.exchange(SET, dps) + return await self.exchange(CONTROL, dps) async def detect_available_dps(self): """Return which datapoints are supported by the device.""" @@ -591,38 +818,175 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.dps_to_request.update({str(index): None for index in dp_indicies}) def _decode_payload(self, payload): - if not payload: - payload = "{}" - elif payload.startswith(b"{"): - pass - elif payload.startswith(PROTOCOL_VERSION_BYTES_31): - payload = payload[len(PROTOCOL_VERSION_BYTES_31) :] # remove version header - # remove (what I'm guessing, but not confirmed is) 16-bytes of MD5 - # hexdigest of payload - payload = self.cipher.decrypt(payload[16:]) - elif self.version == 3.3: - if self.dev_type != "type_0a" or payload.startswith( - PROTOCOL_VERSION_BYTES_33 - ): - payload = payload[len(PROTOCOL_33_HEADER) :] - payload = self.cipher.decrypt(payload, False) + cipher = AESCipher(self.local_key) + if self.version == 3.4: + # 3.4 devices encrypt the version header in addition to the payload + try: + # self.debug("decrypting=%r", payload) + payload = cipher.decrypt(payload, False, decode_text=False) + except: + self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) + return self.error_json(ERR_PAYLOAD) + + # self.debug("decrypted 3.x payload=%r", payload) + + if payload.startswith(PROTOCOL_VERSION_BYTES_31): + # Received an encrypted payload + # Remove version header + payload = payload[len(PROTOCOL_VERSION_BYTES_31) :] + # Decrypt payload + # Remove 16-bytes of MD5 hexdigest of payload + payload = cipher.decrypt(payload[16:]) + elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 + # Trim header for non-default device type + if payload.startswith( self.version_bytes ): + payload = payload[len(self.version_header) :] + # self.debug("removing 3.x=%r", payload) + elif self.dev_type == "type_0d" and (len(payload) & 0x0F) != 0: + payload = payload[len(self.version_header) :] + # self.debug("removing type_0d 3.x header=%r", payload) + + if self.version != 3.4: + try: + # self.debug("decrypting=%r", payload) + payload = cipher.decrypt(payload, False) + except: + self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) + return self.error_json(ERR_PAYLOAD) + + # self.debug("decrypted 3.x payload=%r", payload) + # Try to detect if type_0d found + + if not isinstance(payload, str): + try: + payload = payload.decode() + except: + self.debug("payload was not string type and decoding failed") + return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: self.dev_type = "type_0d" + # set at least one DPS + self.dps_to_request = {"1": None} self.debug( - "switching to dev_type %s", + "'data unvalid' error detected: switching to dev_type %r", self.dev_type, ) return None - else: - raise Exception(f"Unexpected payload={payload}") + elif not payload.startswith(b"{"): + self.debug("Unexpected payload=%r", payload) + return self.error_json(ERR_PAYLOAD, payload) if not isinstance(payload, str): payload = payload.decode() - self.debug("Decrypted payload: %s", payload) - return json.loads(payload) + self.debug("Deciphered data = %r", payload) + try: + json_payload = json.loads(payload) + except: + json_payload = self.error_json(ERR_JSON, payload) - def _generate_payload(self, command, data=None): + # v3.4 stuffs it into {"data":{"dps":{"1":true}}, ...} + if "dps" not in json_payload and "data" in json_payload and "dps" in json_payload['data']: + json_payload['dps'] = json_payload['data']['dps'] + + return json_payload + + async def _negotiate_session_key(self): + self.local_nonce = b'0123456789abcdef' # not-so-random random key + self.remote_nonce = b'' + self.local_key = self.real_local_key + + rkey = await self.exchange_quick( MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 ) + if not rkey or type(rkey) != TuyaMessage or len(rkey.payload) < 48: + # error + self.debug("session key negotiation failed on step 1") + return False + + if rkey.cmd != SESS_KEY_NEG_RESP: + self.debug("session key negotiation step 2 returned wrong command: %d", rkey.cmd) + return False + + payload = rkey.payload + try: + # self.debug("decrypting %r using %r", payload, self.real_local_key) + cipher = AESCipher(self.real_local_key) + payload = cipher.decrypt(payload, False, decode_text=False) + except: + self.debug("session key step 2 decrypt failed, payload=%r (len:%d)", payload, len(payload)) + return False + + self.debug("decrypted session key negotiation step 2: payload=%r", payload) + + if len(payload) < 48: + self.debug("session key negotiation step 2 failed, too short response") + return False + + self.remote_nonce = payload[:16] + hmac_check = hmac.new(self.local_key, self.local_nonce, sha256).digest() + + if hmac_check != payload[16:48]: + self.debug("session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", binascii.hexlify(hmac_check), binascii.hexlify(payload[16:48])) + + # self.debug("session local nonce: %r remote nonce: %r", self.local_nonce, self.remote_nonce) + + rkey_hmac = hmac.new(self.local_key, self.remote_nonce, sha256).digest() + await self.exchange_quick( MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None ) + + self.local_key = bytes( [ a^b for (a,b) in zip(self.local_nonce,self.remote_nonce) ] ) + # self.debug("Session nonce XOR'd: %r" % self.local_key) + + cipher = AESCipher(self.real_local_key) + self.local_key = self.dispatcher.local_key = cipher.encrypt(self.local_key, False, pad=False) + self.debug("Session key negotiate success! session key: %r", self.local_key) + return True + + # adds protocol header (if needed) and encrypts + def _encode_message( self, msg ): + hmac_key = None + payload = msg.payload + self.cipher = AESCipher(self.local_key) + if self.version == 3.4: + hmac_key = self.local_key + if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: + # add the 3.x header + payload = self.version_header + payload + self.debug('final payload for cmd %r: %r', msg.cmd, payload) + payload = self.cipher.encrypt(payload, False) + elif self.version >= 3.2: + # expect to connect and then disconnect to set new + payload = self.cipher.encrypt(payload, False) + if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: + # add the 3.x header + payload = self.version_header + payload + elif msg.cmd == CONTROL: + # need to encrypt + payload = self.cipher.encrypt(payload) + preMd5String = ( + b"data=" + + payload + + b"||lpv=" + + PROTOCOL_VERSION_BYTES_31 + + b"||" + + self.local_key + ) + m = md5() + m.update(preMd5String) + hexdigest = m.hexdigest() + # some tuya libraries strip 8: to :24 + payload = ( + PROTOCOL_VERSION_BYTES_31 + + hexdigest[8:][:16].encode("latin1") + + payload + ) + + self.cipher = None + msg = TuyaMessage(self.seqno, msg.cmd, 0, payload, 0, True) + self.seqno += 1 # increase message sequence number + buffer = pack_message(msg,hmac_key=hmac_key) + # self.debug("payload encrypted with key %r => %r", self.local_key, binascii.hexlify(buffer)) + return buffer + + def _generate_payload(self, command, data=None, gwId=None, devId=None, uid=None): """ Generate the payload to send. @@ -631,58 +995,73 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): This is one of the entries from payload_dict data(dict, optional): The data to be send. This is what will be passed via the 'dps' entry + gwId(str, optional): Will be used for gwId + devId(str, optional): Will be used for devId + uid(str, optional): Will be used for uid """ - cmd_data = PAYLOAD_DICT[self.dev_type][command] - json_data = cmd_data["command"] - command_hb = cmd_data["hexByte"] + json_data = command_override = None + + if command in payload_dict[self.dev_type]: + if 'command' in payload_dict[self.dev_type][command]: + json_data = payload_dict[self.dev_type][command]['command'] + if 'command_override' in payload_dict[self.dev_type][command]: + command_override = payload_dict[self.dev_type][command]['command_override'] + + if self.dev_type != 'type_0a': + if json_data is None and command in payload_dict['type_0a'] and 'command' in payload_dict['type_0a'][command]: + json_data = payload_dict['type_0a'][command]['command'] + if command_override is None and command in payload_dict['type_0a'] and 'command_override' in payload_dict['type_0a'][command]: + command_override = payload_dict['type_0a'][command]['command_override'] + + if command_override is None: + command_override = command + if json_data is None: + # I have yet to see a device complain about included but unneeded attribs, but they *will* + # complain about missing attribs, so just include them all unless otherwise specified + json_data = {"gwId": "", "devId": "", "uid": "", "t": ""} + cmd_data = "" if "gwId" in json_data: - json_data["gwId"] = self.id + if gwId is not None: + json_data["gwId"] = gwId + else: + json_data["gwId"] = self.id if "devId" in json_data: - json_data["devId"] = self.id + if devId is not None: + json_data["devId"] = devId + else: + json_data["devId"] = self.id if "uid" in json_data: - json_data["uid"] = self.id # still use id, no separate uid + if uid is not None: + json_data["uid"] = uid + else: + json_data["uid"] = self.id if "t" in json_data: - json_data["t"] = str(int(time.time())) + if json_data['t'] == "int": + json_data["t"] = int(time.time()) + else: + json_data["t"] = str(int(time.time())) if data is not None: if "dpId" in json_data: json_data["dpId"] = data + elif "data" in json_data: + json_data["data"] = {"dps": data} else: json_data["dps"] = data - elif command_hb == 0x0D: + elif self.dev_type == "type_0d" and command == DP_QUERY: json_data["dps"] = self.dps_to_request - payload = json.dumps(json_data).replace(" ", "").encode("utf-8") - self.debug("Send payload: %s", payload) + if json_data == "": + payload = "" + else: + payload = json.dumps(json_data) + # if spaces are not removed device does not respond! + payload = payload.replace(" ", "").encode("utf-8") + # self.debug("Sending payload: %s", payload) - if self.version == 3.3: - payload = self.cipher.encrypt(payload, False) - if command_hb not in [0x0A, 0x12]: - # add the 3.3 header - payload = PROTOCOL_33_HEADER + payload - elif command == SET: - payload = self.cipher.encrypt(payload) - to_hash = ( - b"data=" - + payload - + b"||lpv=" - + PROTOCOL_VERSION_BYTES_31 - + b"||" - + self.local_key - ) - hasher = md5() - hasher.update(to_hash) - hexdigest = hasher.hexdigest() - payload = ( - PROTOCOL_VERSION_BYTES_31 - + hexdigest[8:][:16].encode("latin1") - + payload - ) + return MessagePayload(command_override, payload) - msg = TuyaMessage(self.seqno, command_hb, 0, payload, 0) - self.seqno += 1 - return pack_message(msg) def __repr__(self): """Return internal string representation of object.""" From c6a9460d06477e999e5f1428d5f1d5f8a09b7282 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:44:27 +0100 Subject: [PATCH 16/33] Introduced 3.4 protocol option in config flow --- custom_components/localtuya/config_flow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 1eeb3b5..cea8314 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -88,7 +88,7 @@ CONFIGURE_DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_LOCAL_KEY): str, vol.Required(CONF_HOST): str, vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, @@ -101,7 +101,7 @@ DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_FRIENDLY_NAME): cv.string, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -144,7 +144,7 @@ def options_schema(entities): vol.Required(CONF_FRIENDLY_NAME): str, vol.Required(CONF_HOST): str, vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.3"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, From 0fb619960c31fe58f3c0a372d051252bc4070e44 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 22:59:08 +0100 Subject: [PATCH 17/33] Fixed HEARTBEAT command --- custom_components/localtuya/pytuya/__init__.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index a417534..06fc170 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -99,12 +99,6 @@ error_codes = { None: "Unknown Error", } -SET = "set" -STATUS = "status" -HEARTBEAT = "heartbeat" -RESET = "reset" -UPDATEDPS = "updatedps" # Request refresh of DPS - # Tuya Command Types # Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config @@ -697,9 +691,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # Wait for special sequence number if heartbeat or reset seqno = self.seqno - if payload.cmd == HEARTBEAT: + if payload.cmd == HEART_BEAT: seqno = MessageDispatcher.HEARTBEAT_SEQNO - elif payload.cmd == RESET: + elif payload.cmd == UPDATEDPS: seqno = MessageDispatcher.RESET_SEQNO enc_payload = self._encode_message(payload) @@ -737,14 +731,14 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): async def heartbeat(self): """Send a heartbeat message.""" - return await self.exchange(HEARTBEAT) + return await self.exchange(HEART_BEAT) async def reset(self, dpIds=None): """Send a reset message (3.3 only).""" if self.version == 3.3: self.dev_type = "type_0a" self.debug("reset switching to dev_type %s", self.dev_type) - return await self.exchange(RESET, dpIds) + return await self.exchange(UPDATEDPS, dpIds) return True From a3914cc8ce5d270939eb45d5832eb56ac9e8494e Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sat, 7 Jan 2023 23:24:02 +0100 Subject: [PATCH 18/33] Added debugging --- custom_components/localtuya/pytuya/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 06fc170..1241e02 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -1052,7 +1052,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): payload = json.dumps(json_data) # if spaces are not removed device does not respond! payload = payload.replace(" ", "").encode("utf-8") - # self.debug("Sending payload: %s", payload) + self.debug("Sending payload: %s", payload) return MessagePayload(command_override, payload) From 960f07b6bbf2bec27025ecc6de07825e5ef3927a Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Sun, 8 Jan 2023 07:42:53 +0100 Subject: [PATCH 19/33] Fixed requested DPs for type_0d devices --- custom_components/localtuya/pytuya/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 1241e02..32dc744 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -704,7 +704,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return None # TODO: Verify stuff, e.g. CRC sequence number? - if real_cmd == CONTROL_NEW and len(msg.payload) == 0: + if real_cmd in [HEART_BEAT, CONTROL_NEW] and len(msg.payload) == 0: # device may send one or two messages with empty payload in response # to a CONTROL_NEW command, consider it an ACK self.debug("ACK received for command %d: ignoring it", real_cmd) @@ -860,8 +860,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: self.dev_type = "type_0d" - # set at least one DPS - self.dps_to_request = {"1": None} self.debug( "'data unvalid' error detected: switching to dev_type %r", self.dev_type, From edc6752ecfc3a4b808a6da5fa7133bd2dd46b5ee Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 01:31:28 +0100 Subject: [PATCH 20/33] Fixed negotiation and sequence numbers for protocol 3.4 --- custom_components/localtuya/pytuya/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 32dc744..3f24d50 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -366,8 +366,9 @@ class AESCipher: class MessageDispatcher(ContextualLogger): """Buffer and dispatcher for Tuya messages.""" - # Heartbeats always respond with sequence number 0, so they can't be waited for like - # other messages. This is a hack to allow waiting for heartbeats. + # Heartbeats on protocols < 3.3 respond with sequence number 0, + # so they can't be waited for like other messages. + # This is a hack to allow waiting for heartbeats. HEARTBEAT_SEQNO = -100 RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 @@ -418,7 +419,7 @@ class MessageDispatcher(ContextualLogger): break header = parse_header(self.buffer) - hmac_key = self.local_key if self.version == '3.4' else None + hmac_key = self.local_key if self.version == 3.4 else None msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); self.buffer = self.buffer[header_len - 4 + header.length :] self._dispatch(msg) @@ -561,6 +562,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def _setup_dispatcher(self): def _status_update(msg): + if self.seqno > 0: + self.seqno = msg.seqno + 1 decoded_message = self._decode_payload(msg.payload) if "dps" in decoded_message: self.dps_cache.update(decoded_message["dps"]) From c9d6bc521ea12ab15b5843fcb75169be2e89ae38 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 01:49:51 +0100 Subject: [PATCH 21/33] Fixed sequence numbering on status update --- custom_components/localtuya/pytuya/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 3f24d50..259ed57 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -562,7 +562,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): def _setup_dispatcher(self): def _status_update(msg): - if self.seqno > 0: + if msg.seqno > 0: self.seqno = msg.seqno + 1 decoded_message = self._decode_payload(msg.payload) if "dps" in decoded_message: @@ -707,9 +707,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return None # TODO: Verify stuff, e.g. CRC sequence number? - if real_cmd in [HEART_BEAT, CONTROL_NEW] and len(msg.payload) == 0: - # device may send one or two messages with empty payload in response - # to a CONTROL_NEW command, consider it an ACK + if real_cmd in [HEART_BEAT, CONTROL, CONTROL_NEW] and len(msg.payload) == 0: + # device may send messages with empty payload in response + # to a HEART_BEAT or CONTROL or CONTROL_NEW command: consider them an ACK self.debug("ACK received for command %d: ignoring it", real_cmd) return None payload = self._decode_payload(msg.payload) From 3bf69d69f00ca315f33fe42dd2c374780b364ed8 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:45:06 +0100 Subject: [PATCH 22/33] Fixed tox issues --- custom_components/localtuya/config_flow.py | 12 +- .../localtuya/pytuya/__init__.py | 314 +++++++++++------- pylint.rc | 10 +- setup.cfg | 4 +- 4 files changed, 214 insertions(+), 126 deletions(-) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index cea8314..761a241 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -88,7 +88,9 @@ CONFIGURE_DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_LOCAL_KEY): str, vol.Required(CONF_HOST): str, vol.Required(CONF_DEVICE_ID): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, @@ -101,7 +103,9 @@ DEVICE_SCHEMA = vol.Schema( vol.Required(CONF_DEVICE_ID): cv.string, vol.Required(CONF_LOCAL_KEY): cv.string, vol.Required(CONF_FRIENDLY_NAME): cv.string, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): cv.string, vol.Optional(CONF_RESET_DPIDS): str, @@ -144,7 +148,9 @@ def options_schema(entities): vol.Required(CONF_FRIENDLY_NAME): str, vol.Required(CONF_HOST): str, vol.Required(CONF_LOCAL_KEY): str, - vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In(["3.1", "3.2", "3.3", "3.4"]), + vol.Required(CONF_PROTOCOL_VERSION, default="3.3"): vol.In( + ["3.1", "3.2", "3.3", "3.4"] + ), vol.Optional(CONF_SCAN_INTERVAL): int, vol.Optional(CONF_MANUAL_DPS): str, vol.Optional(CONF_RESET_DPIDS): str, diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 259ed57..55a97e1 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -46,7 +46,7 @@ import time import weakref from abc import ABC, abstractmethod from collections import namedtuple -from hashlib import md5,sha256 +from hashlib import md5, sha256 from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes @@ -58,11 +58,13 @@ __author__ = "rospogrigio" _LOGGER = logging.getLogger(__name__) # Tuya Packet Format -TuyaHeader = namedtuple('TuyaHeader', 'prefix seqno cmd length') +TuyaHeader = namedtuple("TuyaHeader", "prefix seqno cmd length") MessagePayload = namedtuple("MessagePayload", "cmd payload") try: - TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,)) -except: + TuyaMessage = namedtuple( + "TuyaMessage", "seqno cmd retcode payload crc crc_good", defaults=(True,) + ) +except Exception: TuyaMessage = namedtuple("TuyaMessage", "seqno cmd retcode payload crc crc_good") # TinyTuya Error Response Codes @@ -99,30 +101,38 @@ error_codes = { None: "Unknown Error", } + +class DecodeError(Exception): + """Specific Exception caused by decoding error.""" + + pass + + # Tuya Command Types -# Reference: https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h -AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config -ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD -SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key -SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response +# Reference: +# https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n/blob/master/sdk/include/lan_protocol.h +AP_CONFIG = 0x01 # FRM_TP_CFG_WF # only used for ap 3.0 network config +ACTIVE = 0x02 # FRM_TP_ACTV (discard) # WORK_MODE_CMD +SESS_KEY_NEG_START = 0x03 # FRM_SECURITY_TYPE3 # negotiate session key +SESS_KEY_NEG_RESP = 0x04 # FRM_SECURITY_TYPE4 # negotiate session key response SESS_KEY_NEG_FINISH = 0x05 # FRM_SECURITY_TYPE5 # finalize session key negotiation -UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command -CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD -STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD -HEART_BEAT = 0x09 # FRM_TP_HB -DP_QUERY = 0x0a # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points -QUERY_WIFI = 0x0b # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD -TOKEN_BIND = 0x0c # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) -CONTROL_NEW = 0x0d # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD -ENABLE_WIFI = 0x0e # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD -WIFI_INFO = 0x0f # 15 # FRM_CFG_WIFI_INFO -DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW -SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC -UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS -UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION -AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 -BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 -LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM +UNBIND = 0x06 # FRM_TP_UNBIND_DEV # DATA_QUERT_CMD - issue command +CONTROL = 0x07 # FRM_TP_CMD # STATE_UPLOAD_CMD +STATUS = 0x08 # FRM_TP_STAT_REPORT # STATE_QUERY_CMD +HEART_BEAT = 0x09 # FRM_TP_HB +DP_QUERY = 0x0A # 10 # FRM_QUERY_STAT # UPDATE_START_CMD - get data points +QUERY_WIFI = 0x0B # 11 # FRM_SSID_QUERY (discard) # UPDATE_TRANS_CMD +TOKEN_BIND = 0x0C # 12 # FRM_USER_BIND_REQ # GET_ONLINE_TIME_CMD - system time (GMT) +CONTROL_NEW = 0x0D # 13 # FRM_TP_NEW_CMD # FACTORY_MODE_CMD +ENABLE_WIFI = 0x0E # 14 # FRM_ADD_SUB_DEV_CMD # WIFI_TEST_CMD +WIFI_INFO = 0x0F # 15 # FRM_CFG_WIFI_INFO +DP_QUERY_NEW = 0x10 # 16 # FRM_QUERY_STAT_NEW +SCENE_EXECUTE = 0x11 # 17 # FRM_SCENE_EXEC +UPDATEDPS = 0x12 # 18 # FRM_LAN_QUERY_DP # Request refresh of DPS +UDP_NEW = 0x13 # 19 # FR_TYPE_ENCRYPTION +AP_CONFIG_NEW = 0x14 # 20 # FRM_AP_CFG_WF_V40 +BOARDCAST_LPV34 = 0x23 # 35 # FR_TYPE_BOARDCAST_LPV34 +LAN_EXT_STREAM = 0x40 # 64 # FRM_LAN_EXT_STREAM PROTOCOL_VERSION_BYTES_31 = b"3.1" @@ -141,7 +151,15 @@ PREFIX_VALUE = 0x000055AA PREFIX_BIN = b"\x00\x00U\xaa" SUFFIX_VALUE = 0x0000AA55 SUFFIX_BIN = b"\x00\x00\xaaU" -NO_PROTOCOL_HEADER_CMDS = [DP_QUERY, DP_QUERY_NEW, UPDATEDPS, HEART_BEAT, SESS_KEY_NEG_START, SESS_KEY_NEG_RESP, SESS_KEY_NEG_FINISH ] +NO_PROTOCOL_HEADER_CMDS = [ + DP_QUERY, + DP_QUERY_NEW, + UPDATEDPS, + HEART_BEAT, + SESS_KEY_NEG_START, + SESS_KEY_NEG_RESP, + SESS_KEY_NEG_FINISH, +] HEARTBEAT_INTERVAL = 10 @@ -193,15 +211,13 @@ payload_dict = { "v3.4": { CONTROL: { "command_override": CONTROL_NEW, # Uses CONTROL_NEW command - "command": {"protocol":5, "t": "int", "data": ""} - }, - DP_QUERY: { "command_override": DP_QUERY_NEW }, - } + "command": {"protocol": 5, "t": "int", "data": ""}, + }, + DP_QUERY: {"command_override": DP_QUERY_NEW}, + }, } - - class TuyaLoggingAdapter(logging.LoggerAdapter): """Adapter that adds device id to all log points.""" @@ -243,7 +259,7 @@ class ContextualLogger: return self._logger.exception(msg, *args) -def pack_message(msg,hmac_key=None): +def pack_message(msg, hmac_key=None): """Pack a TuyaMessage into bytes.""" end_fmt = MESSAGE_END_FMT_HMAC if hmac_key else MESSAGE_END_FMT # Create full message excluding CRC and suffix @@ -262,9 +278,7 @@ def pack_message(msg,hmac_key=None): else: crc = binascii.crc32(buffer) & 0xFFFFFFFF # Calculate CRC, add it together with suffix - buffer += struct.pack( - end_fmt, crc, SUFFIX_VALUE - ) + buffer += struct.pack(end_fmt, crc, SUFFIX_VALUE) return buffer @@ -277,55 +291,82 @@ def unpack_message(data, hmac_key=None, header=None, no_retcode=False, logger=No end_len = struct.calcsize(end_fmt) headret_len = header_len + retcode_len - if len(data) < headret_len+end_len: - logger.debug('unpack_message(): not enough data to unpack header! need %d but only have %d', headret_len+end_len, len(data)) - raise DecodeError('Not enough data to unpack header') + if len(data) < headret_len + end_len: + logger.debug( + "unpack_message(): not enough data to unpack header! need %d but only have %d", + headret_len + end_len, + len(data), + ) + raise DecodeError("Not enough data to unpack header") if header is None: header = parse_header(data) - if len(data) < header_len+header.length: - logger.debug('unpack_message(): not enough data to unpack payload! need %d but only have %d', header_len+header.length, len(data)) - raise DecodeError('Not enough data to unpack payload') + if len(data) < header_len + header.length: + logger.debug( + "unpack_message(): not enough data to unpack payload! need %d but only have %d", + header_len + header.length, + len(data), + ) + raise DecodeError("Not enough data to unpack payload") - retcode = 0 if no_retcode else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + retcode = ( + 0 + if no_retcode + else struct.unpack(MESSAGE_RETCODE_FMT, data[header_len:headret_len])[0] + ) # the retcode is technically part of the payload, but strip it as we do not want it here - payload = data[header_len+retcode_len:header_len+header.length] + payload = data[header_len + retcode_len : header_len + header.length] crc, suffix = struct.unpack(end_fmt, payload[-end_len:]) if hmac_key: - have_crc = hmac.new(hmac_key, data[:(header_len+header.length)-end_len], sha256).digest() + have_crc = hmac.new( + hmac_key, data[: (header_len + header.length) - end_len], sha256 + ).digest() else: - have_crc = binascii.crc32(data[:(header_len+header.length)-end_len]) & 0xFFFFFFFF + have_crc = ( + binascii.crc32(data[: (header_len + header.length) - end_len]) & 0xFFFFFFFF + ) if suffix != SUFFIX_VALUE: - logger.debug('Suffix prefix wrong! %08X != %08X', suffix, SUFFIX_VALUE) + logger.debug("Suffix prefix wrong! %08X != %08X", suffix, SUFFIX_VALUE) if crc != have_crc: if hmac_key: - logger.debug('HMAC checksum wrong! %r != %r', binascii.hexlify(have_crc), binascii.hexlify(crc)) + logger.debug( + "HMAC checksum wrong! %r != %r", + binascii.hexlify(have_crc), + binascii.hexlify(crc), + ) else: - logger.debug('CRC wrong! %08X != %08X', have_crc, crc) + logger.debug("CRC wrong! %08X != %08X", have_crc, crc) + + return TuyaMessage( + header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc + ) - return TuyaMessage(header.seqno, header.cmd, retcode, payload[:-end_len], crc, crc == have_crc) def parse_header(data): + """Unpack bytes into a TuyaHeader.""" header_len = struct.calcsize(MESSAGE_HEADER_FMT) if len(data) < header_len: - raise DecodeError('Not enough data to unpack header') + raise DecodeError("Not enough data to unpack header") prefix, seqno, cmd, payload_len = struct.unpack( MESSAGE_HEADER_FMT, data[:header_len] ) if prefix != PREFIX_VALUE: - #self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) - raise DecodeError('Header prefix wrong! %08X != %08X' % (prefix, PREFIX_VALUE)) + # self.debug('Header prefix wrong! %08X != %08X', prefix, PREFIX_VALUE) + raise DecodeError("Header prefix wrong! %08X != %08X" % (prefix, PREFIX_VALUE)) # sanity check. currently the max payload length is somewhere around 300 bytes if payload_len > 1000: - raise DecodeError('Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes' % payload_len) + raise DecodeError( + "Header claims the packet size is over 1000 bytes! It is most likely corrupt. Claimed size: %d bytes" + % payload_len + ) return TuyaHeader(prefix, seqno, cmd, payload_len) @@ -341,7 +382,8 @@ class AESCipher: def encrypt(self, raw, use_base64=True, pad=True): """Encrypt data to be sent to device.""" encryptor = self.cipher.encryptor() - if pad: raw = self._pad(raw) + if pad: + raw = self._pad(raw) crypted_text = encryptor.update(raw) + encryptor.finalize() return base64.b64encode(crypted_text) if use_base64 else crypted_text @@ -373,13 +415,13 @@ class MessageDispatcher(ContextualLogger): RESET_SEQNO = -101 SESS_KEY_SEQNO = -102 - def __init__(self, dev_id, listener, version, local_key): + def __init__(self, dev_id, listener, protocol_version, local_key): """Initialize a new MessageBuffer.""" super().__init__() self.buffer = b"" self.listeners = {} self.listener = listener - self.version = version + self.version = protocol_version self.local_key = local_key self.set_logger(_LOGGER, dev_id) @@ -420,7 +462,9 @@ class MessageDispatcher(ContextualLogger): header = parse_header(self.buffer) hmac_key = self.local_key if self.version == 3.4 else None - msg = unpack_message(self.buffer, header=header, hmac_key=hmac_key, logger=self); + msg = unpack_message( + self.buffer, header=header, hmac_key=hmac_key, logger=self + ) self.buffer = self.buffer[header_len - 4 + header.length :] self._dispatch(msg) @@ -514,7 +558,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.id = dev_id self.local_key = local_key.encode("latin1") self.real_local_key = self.local_key - self.version = protocol_version self.dev_type = "type_0a" self.dps_to_request = {} self.cipher = AESCipher(self.local_key) @@ -525,6 +568,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.on_connected = on_connected self.heartbeater = None self.dps_cache = {} + self.local_nonce = b"0123456789abcdef" # not-so-random random key + self.remote_nonce = b"" if protocol_version: self.set_version(float(protocol_version)) @@ -533,26 +578,27 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # them (such as BulbDevice) make connections when called TuyaProtocol.set_version(self, 3.1) - def set_version(self, version): - self.version = version - self.version_bytes = str(version).encode('latin1') + def set_version(self, protocol_version): + """Set the device version and eventually start available DPs detection.""" + self.version = protocol_version + self.version_bytes = str(protocol_version).encode("latin1") self.version_header = self.version_bytes + PROTOCOL_3x_HEADER - if version == 3.2: # 3.2 behaves like 3.3 with type_0d - #self.version = 3.3 - self.dev_type="type_0d" - if self.dps_to_request == {}: - self.detect_available_dps() - elif version == 3.4: + if protocol_version == 3.2: # 3.2 behaves like 3.3 with type_0d + # self.version = 3.3 + self.dev_type = "type_0d" + if self.dps_to_request == {}: + self.detect_available_dps() + elif protocol_version == 3.4: self.dev_type = "v3.4" elif self.dev_type == "v3.4": self.dev_type = "default" def error_json(self, number=None, payload=None): - """Return error details in JSON""" + """Return error details in JSON.""" try: spayload = json.dumps(payload) # spayload = payload.replace('\"','').replace('\'','') - except: + except Exception: spayload = '""' vals = (error_codes[number], str(number), spayload) @@ -640,43 +686,51 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.transport = None transport.close() - # similar to exchange() but never retries sending and does not decode the response async def exchange_quick(self, payload, recv_retries): - + """Similar to exchange() but never retries sending and does not decode the response.""" if not self.transport: - self.debug("[" + self.id + "] send quick failed, could not get socket: %s", payload) + self.debug( + "[" + self.id + "] send quick failed, could not get socket: %s", payload + ) return None - enc_payload = self._encode_message(payload) if type(payload) == MessagePayload else payload + enc_payload = ( + self._encode_message(payload) + if isinstance(payload, MessagePayload) + else payload + ) # self.debug("Quick-dispatching message %s, seqno %s", binascii.hexlify(enc_payload), self.seqno) try: self.transport.write(enc_payload) - except: + except Exception: # self._check_socket_close(True) self.close() return None while recv_retries: try: - #msg = await self._receive() seqno = MessageDispatcher.SESS_KEY_SEQNO - # seqno = self.seqno - 1 msg = await self.dispatcher.wait_for(seqno, payload.cmd) # for 3.4 devices, we get the starting seqno with the SESS_KEY_NEG_RESP message self.seqno = msg.seqno - except: + except Exception: msg = None if msg and len(msg.payload) != 0: return msg recv_retries -= 1 if recv_retries == 0: - self.debug("received null payload (%r) but out of recv retries, giving up", msg) + self.debug( + "received null payload (%r) but out of recv retries, giving up", msg + ) else: - self.debug("received null payload (%r), fetch new one - %s retries remaining", msg, recv_retries) + self.debug( + "received null payload (%r), fetch new one - %s retries remaining", + msg, + recv_retries, + ) return None async def exchange(self, command, dps=None): """Send and receive a message, returning response from device.""" - if self.version == 3.4 and self.real_local_key == self.local_key: self.debug("3.4 device: negotiating a new session key") await self._negotiate_session_key() @@ -701,7 +755,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): enc_payload = self._encode_message(payload) self.transport.write(enc_payload) - msg = await self.dispatcher.wait_for(seqno, payload.cmd ) + msg = await self.dispatcher.wait_for(seqno, payload.cmd) if msg is None: self.debug("Wait was aborted for seqno %d", seqno) return None @@ -822,7 +876,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False, decode_text=False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -835,9 +889,9 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # Decrypt payload # Remove 16-bytes of MD5 hexdigest of payload payload = cipher.decrypt(payload[16:]) - elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 + elif self.version >= 3.2: # 3.2 or 3.3 or 3.4 # Trim header for non-default device type - if payload.startswith( self.version_bytes ): + if payload.startswith(self.version_bytes): payload = payload[len(self.version_header) :] # self.debug("removing 3.x=%r", payload) elif self.dev_type == "type_0d" and (len(payload) & 0x0F) != 0: @@ -848,7 +902,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): try: # self.debug("decrypting=%r", payload) payload = cipher.decrypt(payload, False) - except: + except Exception: self.debug("incomplete payload=%r (len:%d)", payload, len(payload)) return self.error_json(ERR_PAYLOAD) @@ -858,7 +912,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if not isinstance(payload, str): try: payload = payload.decode() - except: + except Exception: self.debug("payload was not string type and decoding failed") return self.error_json(ERR_JSON, payload) if "data unvalid" in payload: @@ -877,28 +931,34 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.debug("Deciphered data = %r", payload) try: json_payload = json.loads(payload) - except: + except Exception: json_payload = self.error_json(ERR_JSON, payload) # v3.4 stuffs it into {"data":{"dps":{"1":true}}, ...} - if "dps" not in json_payload and "data" in json_payload and "dps" in json_payload['data']: - json_payload['dps'] = json_payload['data']['dps'] + if ( + "dps" not in json_payload + and "data" in json_payload + and "dps" in json_payload["data"] + ): + json_payload["dps"] = json_payload["data"]["dps"] return json_payload async def _negotiate_session_key(self): - self.local_nonce = b'0123456789abcdef' # not-so-random random key - self.remote_nonce = b'' self.local_key = self.real_local_key - rkey = await self.exchange_quick( MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 ) - if not rkey or type(rkey) != TuyaMessage or len(rkey.payload) < 48: + rkey = await self.exchange_quick( + MessagePayload(SESS_KEY_NEG_START, self.local_nonce), 2 + ) + if not rkey or not isinstance(rkey, TuyaMessage) or len(rkey.payload) < 48: # error self.debug("session key negotiation failed on step 1") return False if rkey.cmd != SESS_KEY_NEG_RESP: - self.debug("session key negotiation step 2 returned wrong command: %d", rkey.cmd) + self.debug( + "session key negotiation step 2 returned wrong command: %d", rkey.cmd + ) return False payload = rkey.payload @@ -906,8 +966,12 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # self.debug("decrypting %r using %r", payload, self.real_local_key) cipher = AESCipher(self.real_local_key) payload = cipher.decrypt(payload, False, decode_text=False) - except: - self.debug("session key step 2 decrypt failed, payload=%r (len:%d)", payload, len(payload)) + except Exception: + self.debug( + "session key step 2 decrypt failed, payload=%r (len:%d)", + payload, + len(payload), + ) return False self.debug("decrypted session key negotiation step 2: payload=%r", payload) @@ -920,23 +984,31 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): hmac_check = hmac.new(self.local_key, self.local_nonce, sha256).digest() if hmac_check != payload[16:48]: - self.debug("session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", binascii.hexlify(hmac_check), binascii.hexlify(payload[16:48])) + self.debug( + "session key negotiation step 2 failed HMAC check! wanted=%r but got=%r", + binascii.hexlify(hmac_check), + binascii.hexlify(payload[16:48]), + ) # self.debug("session local nonce: %r remote nonce: %r", self.local_nonce, self.remote_nonce) rkey_hmac = hmac.new(self.local_key, self.remote_nonce, sha256).digest() - await self.exchange_quick( MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None ) + await self.exchange_quick(MessagePayload(SESS_KEY_NEG_FINISH, rkey_hmac), None) - self.local_key = bytes( [ a^b for (a,b) in zip(self.local_nonce,self.remote_nonce) ] ) + self.local_key = bytes( + [a ^ b for (a, b) in zip(self.local_nonce, self.remote_nonce)] + ) # self.debug("Session nonce XOR'd: %r" % self.local_key) cipher = AESCipher(self.real_local_key) - self.local_key = self.dispatcher.local_key = cipher.encrypt(self.local_key, False, pad=False) + self.local_key = self.dispatcher.local_key = cipher.encrypt( + self.local_key, False, pad=False + ) self.debug("Session key negotiate success! session key: %r", self.local_key) return True # adds protocol header (if needed) and encrypts - def _encode_message( self, msg ): + def _encode_message(self, msg): hmac_key = None payload = msg.payload self.cipher = AESCipher(self.local_key) @@ -945,7 +1017,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if msg.cmd not in NO_PROTOCOL_HEADER_CMDS: # add the 3.x header payload = self.version_header + payload - self.debug('final payload for cmd %r: %r', msg.cmd, payload) + self.debug("final payload for cmd %r: %r", msg.cmd, payload) payload = self.cipher.encrypt(payload, False) elif self.version >= 3.2: # expect to connect and then disconnect to set new @@ -977,7 +1049,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.cipher = None msg = TuyaMessage(self.seqno, msg.cmd, 0, payload, 0, True) self.seqno += 1 # increase message sequence number - buffer = pack_message(msg,hmac_key=hmac_key) + buffer = pack_message(msg, hmac_key=hmac_key) # self.debug("payload encrypted with key %r => %r", self.local_key, binascii.hexlify(buffer)) return buffer @@ -997,16 +1069,26 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): json_data = command_override = None if command in payload_dict[self.dev_type]: - if 'command' in payload_dict[self.dev_type][command]: - json_data = payload_dict[self.dev_type][command]['command'] - if 'command_override' in payload_dict[self.dev_type][command]: - command_override = payload_dict[self.dev_type][command]['command_override'] + if "command" in payload_dict[self.dev_type][command]: + json_data = payload_dict[self.dev_type][command]["command"] + if "command_override" in payload_dict[self.dev_type][command]: + command_override = payload_dict[self.dev_type][command][ + "command_override" + ] - if self.dev_type != 'type_0a': - if json_data is None and command in payload_dict['type_0a'] and 'command' in payload_dict['type_0a'][command]: - json_data = payload_dict['type_0a'][command]['command'] - if command_override is None and command in payload_dict['type_0a'] and 'command_override' in payload_dict['type_0a'][command]: - command_override = payload_dict['type_0a'][command]['command_override'] + if self.dev_type != "type_0a": + if ( + json_data is None + and command in payload_dict["type_0a"] + and "command" in payload_dict["type_0a"][command] + ): + json_data = payload_dict["type_0a"][command]["command"] + if ( + command_override is None + and command in payload_dict["type_0a"] + and "command_override" in payload_dict["type_0a"][command] + ): + command_override = payload_dict["type_0a"][command]["command_override"] if command_override is None: command_override = command @@ -1014,7 +1096,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): # I have yet to see a device complain about included but unneeded attribs, but they *will* # complain about missing attribs, so just include them all unless otherwise specified json_data = {"gwId": "", "devId": "", "uid": "", "t": ""} - cmd_data = "" if "gwId" in json_data: if gwId is not None: @@ -1032,7 +1113,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): else: json_data["uid"] = self.id if "t" in json_data: - if json_data['t'] == "int": + if json_data["t"] == "int": json_data["t"] = int(time.time()) else: json_data["t"] = str(int(time.time())) @@ -1057,7 +1138,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): return MessagePayload(command_override, payload) - def __repr__(self): """Return internal string representation of object.""" return self.id diff --git a/pylint.rc b/pylint.rc index 4ec670e..223e881 100644 --- a/pylint.rc +++ b/pylint.rc @@ -171,10 +171,12 @@ disable=line-too-long, deprecated-sys-function, exception-escape, comprehension-escape, - unused-variable, - invalid-name, - dangerous-default-value, - unreachable + unused-variable, + invalid-name, + dangerous-default-value, + unreachable, + unnecessary-pass, + broad-except # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/setup.cfg b/setup.cfg index 562dc77..c4dd99f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,10 +1,10 @@ [flake8] exclude = .git,.tox -max-line-length = 88 +max-line-length = 120 ignore = E203, W503 [mypy] -python_version = 3.7 +python_version = 3.9 ignore_errors = true follow_imports = silent ignore_missing_imports = true From 39ef76bafb29da52d2b803c943369ffdacb0586f Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:45:06 +0100 Subject: [PATCH 23/33] Fixed tox issues --- custom_components/localtuya/common.py | 10 +++++----- custom_components/localtuya/config_flow.py | 2 +- custom_components/localtuya/fan.py | 2 +- custom_components/localtuya/number.py | 7 +++---- custom_components/localtuya/select.py | 10 +++------- custom_components/localtuya/switch.py | 6 +++--- 6 files changed, 16 insertions(+), 21 deletions(-) diff --git a/custom_components/localtuya/common.py b/custom_components/localtuya/common.py index aa8992f..76521eb 100644 --- a/custom_components/localtuya/common.py +++ b/custom_components/localtuya/common.py @@ -25,18 +25,18 @@ from homeassistant.helpers.restore_state import RestoreEntity from . import pytuya from .const import ( + ATTR_STATE, ATTR_UPDATED_AT, + CONF_DEFAULT_VALUE, CONF_LOCAL_KEY, CONF_MODEL, + CONF_PASSIVE_ENTITY, CONF_PROTOCOL_VERSION, + CONF_RESET_DPIDS, + CONF_RESTORE_ON_RECONNECT, DATA_CLOUD, DOMAIN, TUYA_DEVICES, - CONF_DEFAULT_VALUE, - ATTR_STATE, - CONF_RESTORE_ON_RECONNECT, - CONF_RESET_DPIDS, - CONF_PASSIVE_ENTITY, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 761a241..0258a72 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -34,6 +34,7 @@ from .const import ( CONF_DPS_STRINGS, CONF_EDIT_DEVICE, CONF_LOCAL_KEY, + CONF_MANUAL_DPS, CONF_MODEL, CONF_NO_CLOUD, CONF_PRODUCT_NAME, @@ -45,7 +46,6 @@ from .const import ( DATA_DISCOVERY, DOMAIN, PLATFORMS, - CONF_MANUAL_DPS, ) from .discovery import discover diff --git a/custom_components/localtuya/fan.py b/custom_components/localtuya/fan.py index 584ea84..32c3289 100644 --- a/custom_components/localtuya/fan.py +++ b/custom_components/localtuya/fan.py @@ -27,12 +27,12 @@ from .const import ( CONF_FAN_DIRECTION, CONF_FAN_DIRECTION_FWD, CONF_FAN_DIRECTION_REV, + CONF_FAN_DPS_TYPE, CONF_FAN_ORDERED_LIST, CONF_FAN_OSCILLATING_CONTROL, CONF_FAN_SPEED_CONTROL, CONF_FAN_SPEED_MAX, CONF_FAN_SPEED_MIN, - CONF_FAN_DPS_TYPE, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/number.py b/custom_components/localtuya/number.py index 23d7ea9..917d3d0 100644 --- a/custom_components/localtuya/number.py +++ b/custom_components/localtuya/number.py @@ -7,14 +7,13 @@ from homeassistant.components.number import DOMAIN, NumberEntity from homeassistant.const import CONF_DEVICE_CLASS, STATE_UNKNOWN from .common import LocalTuyaEntity, async_setup_entry - from .const import ( - CONF_MIN_VALUE, - CONF_MAX_VALUE, CONF_DEFAULT_VALUE, + CONF_MAX_VALUE, + CONF_MIN_VALUE, + CONF_PASSIVE_ENTITY, CONF_RESTORE_ON_RECONNECT, CONF_STEPSIZE_VALUE, - CONF_PASSIVE_ENTITY, ) _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/localtuya/select.py b/custom_components/localtuya/select.py index f643e08..c9b1d1c 100644 --- a/custom_components/localtuya/select.py +++ b/custom_components/localtuya/select.py @@ -4,19 +4,15 @@ from functools import partial import voluptuous as vol from homeassistant.components.select import DOMAIN, SelectEntity -from homeassistant.const import ( - CONF_DEVICE_CLASS, - STATE_UNKNOWN, -) +from homeassistant.const import CONF_DEVICE_CLASS, STATE_UNKNOWN from .common import LocalTuyaEntity, async_setup_entry - from .const import ( + CONF_DEFAULT_VALUE, CONF_OPTIONS, CONF_OPTIONS_FRIENDLY, - CONF_DEFAULT_VALUE, - CONF_RESTORE_ON_RECONNECT, CONF_PASSIVE_ENTITY, + CONF_RESTORE_ON_RECONNECT, ) diff --git a/custom_components/localtuya/switch.py b/custom_components/localtuya/switch.py index bc664bf..3776836 100644 --- a/custom_components/localtuya/switch.py +++ b/custom_components/localtuya/switch.py @@ -9,14 +9,14 @@ from .common import LocalTuyaEntity, async_setup_entry from .const import ( ATTR_CURRENT, ATTR_CURRENT_CONSUMPTION, - ATTR_VOLTAGE, ATTR_STATE, + ATTR_VOLTAGE, CONF_CURRENT, CONF_CURRENT_CONSUMPTION, - CONF_VOLTAGE, CONF_DEFAULT_VALUE, - CONF_RESTORE_ON_RECONNECT, CONF_PASSIVE_ENTITY, + CONF_RESTORE_ON_RECONNECT, + CONF_VOLTAGE, ) _LOGGER = logging.getLogger(__name__) From 95b3113e88481c2588c5808c15635157f82ffdf2 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:49:22 +0100 Subject: [PATCH 24/33] Updated README.md and info.md --- README.md | 6 +++--- info.md | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a14e3a1..26d9f27 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The following Tuya device types are currently supported: Energy monitoring (voltage, current, watts, etc.) is supported for compatible devices. -> **Currently, only Tuya protocols 3.1 and 3.3 are supported (3.4 is not).** +> **Currently, Tuya protocols from 3.1 to 3.4 are supported.** This repository's development began as code from [@NameLessJedi](https://github.com/NameLessJedi), [@mileperhour](https://github.com/mileperhour) and [@TradeFace](https://github.com/TradeFace). Their code was then deeply refactored to provide proper integration with Home Assistant environment, adding config flow and other features. Refer to the "Thanks to" section below. @@ -177,8 +177,6 @@ logger: * Everything listed in https://github.com/rospogrigio/localtuya-homeassistant/issues/15 -* Support devices that use Tuya protocol v.3.4 - # Thanks to: NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant and mileperhour https://github.com/mileperhour/localtuya-homeassistant being the major sources of inspiration, and whose code for switches is substantially unchanged. @@ -187,6 +185,8 @@ TradeFace, for being the only one to provide the correct code for communication sean6541, for the working (standard) Python Handler for Tuya devices. +jasonacox, for the TinyTuya project from where I could import the code to communicate with devices using protocol 3.4. + postlund, for the ideas, for coding 95% of the refactoring and boosting the quality of this repo to levels hard to imagine (by me, at least) and teaching me A LOT of how things work in Home Assistant. Buy Me A Coffee diff --git a/info.md b/info.md index c346691..1527c8d 100644 --- a/info.md +++ b/info.md @@ -23,7 +23,7 @@ The following Tuya device types are currently supported: Energy monitoring (voltage, current, watts, etc.) is supported for compatible devices. -> **Currently, only Tuya protocols 3.1 and 3.3 are supported (3.4 is not).** +> **Currently, Tuya protocols from 3.1 to 3.4 are supported.** This repository's development began as code from [@NameLessJedi](https://github.com/NameLessJedi), [@mileperhour](https://github.com/mileperhour) and [@TradeFace](https://github.com/TradeFace). Their code was then deeply refactored to provide proper integration with Home Assistant environment, adding config flow and other features. Refer to the "Thanks to" section below. @@ -177,16 +177,16 @@ logger: * Everything listed in https://github.com/rospogrigio/localtuya-homeassistant/issues/15 -* Support devices that use Tuya protocol v.3.4 - # Thanks to: NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant and mileperhour https://github.com/mileperhour/localtuya-homeassistant being the major sources of inspiration, and whose code for switches is substantially unchanged. -TradeFace, for being the only one to provide the correct code for communication with the cover (in particular, the 0x0d command for the status instead of the 0x0a, and related needs such as double reply to be received): https://github.com/TradeFace/tuya/ +TradeFace, for being the only one to provide the correct code for communication with the type_0d devices (in particular, the 0x0d command for the status instead of the 0x0a, and related needs such as double reply to be received): https://github.com/TradeFace/tuya/ sean6541, for the working (standard) Python Handler for Tuya devices. +jasonacox, for the TinyTuya project from where I could import the code to communicate with devices using protocol 3.4. + postlund, for the ideas, for coding 95% of the refactoring and boosting the quality of this repo to levels hard to imagine (by me, at least) and teaching me A LOT of how things work in Home Assistant. Buy Me A Coffee From 2f0f507cada6454234087b26334d70163db1107f Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Mon, 9 Jan 2023 23:55:37 +0100 Subject: [PATCH 25/33] Fixed tox issues --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index f965d9f..2602e5e 100644 --- a/tox.ini +++ b/tox.ini @@ -10,7 +10,7 @@ python = 3.9: clean, py39, lint, typing [testenv] -passenv = TOXENV CI +passenv = TOXENV,CI whitelist_externals = true setenv = From 0f3160f178e03e9038e1effa5f514805bad9b90f Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 11:31:37 +0100 Subject: [PATCH 26/33] Fix for version not being set yet when calling _setup_dispatcher --- .../localtuya/pytuya/__init__.py | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/custom_components/localtuya/pytuya/__init__.py b/custom_components/localtuya/pytuya/__init__.py index 55a97e1..e6dbe27 100644 --- a/custom_components/localtuya/pytuya/__init__.py +++ b/custom_components/localtuya/pytuya/__init__.py @@ -560,6 +560,14 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.real_local_key = self.local_key self.dev_type = "type_0a" self.dps_to_request = {} + + if protocol_version: + self.set_version(float(protocol_version)) + else: + # make sure we call our set_version() and not a subclass since some of + # them (such as BulbDevice) make connections when called + TuyaProtocol.set_version(self, 3.1) + self.cipher = AESCipher(self.local_key) self.seqno = 1 self.transport = None @@ -571,13 +579,6 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): self.local_nonce = b"0123456789abcdef" # not-so-random random key self.remote_nonce = b"" - if protocol_version: - self.set_version(float(protocol_version)) - else: - # make sure we call our set_version() and not a subclass since some of - # them (such as BulbDevice) make connections when called - TuyaProtocol.set_version(self, 3.1) - def set_version(self, protocol_version): """Set the device version and eventually start available DPs detection.""" self.version = protocol_version @@ -586,12 +587,8 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): if protocol_version == 3.2: # 3.2 behaves like 3.3 with type_0d # self.version = 3.3 self.dev_type = "type_0d" - if self.dps_to_request == {}: - self.detect_available_dps() elif protocol_version == 3.4: self.dev_type = "v3.4" - elif self.dev_type == "v3.4": - self.dev_type = "default" def error_json(self, number=None, payload=None): """Return error details in JSON.""" @@ -806,7 +803,7 @@ class TuyaProtocol(asyncio.Protocol, ContextualLogger): Args: dps([int]): list of dps to update, default=detected&whitelisted """ - if self.version == 3.3: + if self.version in [3.2, 3.3]: # 3.2 behaves like 3.3 with type_0d if dps is None: if not self.dps_cache: await self.detect_available_dps() From c379645ea125439a42590d61fd04793149e6dc16 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 12:54:39 +0100 Subject: [PATCH 27/33] Introduced abort in config flow if all entities are deselected when editing a device --- custom_components/localtuya/config_flow.py | 5 +++++ custom_components/localtuya/translations/en.json | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/custom_components/localtuya/config_flow.py b/custom_components/localtuya/config_flow.py index 0258a72..f1e87bf 100644 --- a/custom_components/localtuya/config_flow.py +++ b/custom_components/localtuya/config_flow.py @@ -570,6 +570,11 @@ class LocalTuyaOptionsFlowHandler(config_entries.OptionsFlow): CONF_ENTITIES: [], } ) + if len(user_input[CONF_ENTITIES]) == 0: + return self.async_abort( + reason="no_entities", + description_placeholders={}, + ) if user_input[CONF_ENTITIES]: entity_ids = [ int(entity.split(":")[0]) diff --git a/custom_components/localtuya/translations/en.json b/custom_components/localtuya/translations/en.json index 4b3ddb0..3684986 100644 --- a/custom_components/localtuya/translations/en.json +++ b/custom_components/localtuya/translations/en.json @@ -33,7 +33,8 @@ "options": { "abort": { "already_configured": "Device has already been configured.", - "device_success": "Device {dev_name} successfully {action}." + "device_success": "Device {dev_name} successfully {action}.", + "no_entities": "Cannot remove all entities from a device.\nIf you want to delete a device, enter it in the Devices menu, click the 3 dots in the 'Device info' frame, and press the Delete button." }, "error": { "authentication_failed": "Failed to authenticate.\n{msg}", From 20ab4017c1ca88b31fb683cff590b4d1fcd9bb3e Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 18:27:26 +0100 Subject: [PATCH 28/33] Introduced IT and PT translations --- custom_components/localtuya/translations/it.json | 3 ++- custom_components/localtuya/translations/pt-BR.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/custom_components/localtuya/translations/it.json b/custom_components/localtuya/translations/it.json index faf4afa..4addeab 100644 --- a/custom_components/localtuya/translations/it.json +++ b/custom_components/localtuya/translations/it.json @@ -33,7 +33,8 @@ "options": { "abort": { "already_configured": "Il dispositivo è già stato configurato.", - "device_success": "Dispositivo {dev_name} {action} con successo." + "device_success": "Dispositivo {dev_name} {action} con successo.", + "no_entities": "Non si possono rimuovere tutte le entities da un device.\nPer rimuovere un device, entrarci nel menu Devices, premere sui 3 punti nel riquadro 'Device info', e premere il pulsante Delete." }, "error": { "authentication_failed": "Autenticazione fallita. Errore:\n{msg}", diff --git a/custom_components/localtuya/translations/pt-BR.json b/custom_components/localtuya/translations/pt-BR.json index a2feed4..4a3630c 100644 --- a/custom_components/localtuya/translations/pt-BR.json +++ b/custom_components/localtuya/translations/pt-BR.json @@ -33,7 +33,8 @@ "options": { "abort": { "already_configured": "O dispositivo já foi configurado.", - "device_success": "Dispositivo {dev_name} {action} com sucesso." + "device_success": "Dispositivo {dev_name} {action} com sucesso.", + "no_entities": "Não é possível remover todas as entidades de um dispositivo.\nSe você deseja excluir um dispositivo, insira-o no menu Dispositivos, clique nos 3 pontos no quadro 'Informações do dispositivo' e pressione o botão Excluir." }, "error": { "authentication_failed": "Falha ao autenticar.\n{msg}", From 828000b1291662e96b7698063f717e106f943830 Mon Sep 17 00:00:00 2001 From: rospogrigio <49229287+rospogrigio@users.noreply.github.com> Date: Tue, 10 Jan 2023 23:13:53 +0100 Subject: [PATCH 29/33] Update manifest.json for 5.0.0 --- custom_components/localtuya/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/localtuya/manifest.json b/custom_components/localtuya/manifest.json index 10b1b5a..3f1e00b 100644 --- a/custom_components/localtuya/manifest.json +++ b/custom_components/localtuya/manifest.json @@ -1,7 +1,7 @@ { "domain": "localtuya", "name": "LocalTuya integration", - "version": "4.1.1", + "version": "5.0.0", "documentation": "https://github.com/rospogrigio/localtuya/", "dependencies": [], "codeowners": [ From f4164cdeb1570700aa4824bacc42c5619d32ef75 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Tue, 10 Jan 2023 23:26:11 +0100 Subject: [PATCH 30/33] New tuyadebug.tgz now supporting protocol 3.4 --- tuyadebug.tgz | Bin 382472 -> 35906 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tuyadebug.tgz b/tuyadebug.tgz index 35ee561fa511240a6185d13f01cf78fe3e29e9d7..0c2418b6bc49836becd17b225d733c7a681c7c1a 100644 GIT binary patch literal 35906 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 literal 382472 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

#uMtZ&G;0(qGSw00SEI}{G9ePZSUqk> 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ø_yp4iIo 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 TQ<~D0|F7~tny`lm02m7Z?v@;; From b9c0e5ee8d88ebd20432fe109718751ef2582b3c Mon Sep 17 00:00:00 2001 From: rospogrigio <49229287+rospogrigio@users.noreply.github.com> Date: Thu, 12 Jan 2023 19:07:53 +0100 Subject: [PATCH 31/33] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 30 ++++++++++++---------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index ef8a23c..10e2c81 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,10 +24,11 @@ assignees: '' Provide details about your environment. --> - Localtuya version: -- Last working localtuya version (if known and relevant): - Home Assistant Core version: -- [] Are you using the Home Assistant Tuya Cloud component ? -- [] Are you using the Tuya App in parallel ? +- [] Does the device work using the Home Assistant Tuya Cloud component ? +- [] Does the device work using the Tinytuya (https://github.com/jasonacox/tinytuya) command line tool ? +- [] Was the device working with earlier versions of localtuya ? Which one? +- [] Are you using the Tuya/SmartLife App in parallel ? ## Steps to reproduce -```yaml - -``` ## DP dump -## Provide Home Assistant taceback/logs +## Provide Home Assistant traceback/logs -```txt - ``` +put your log output between these markers +``` + + ## Additional information From c15fcaa9b83cf63bdea99da68bac3fddbdd2fc93 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Thu, 12 Jan 2023 19:14:55 +0100 Subject: [PATCH 32/33] Fix for unknown state of covers/shutters --- custom_components/localtuya/cover.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/custom_components/localtuya/cover.py b/custom_components/localtuya/cover.py index 3b6b86d..b45669c 100644 --- a/custom_components/localtuya/cover.py +++ b/custom_components/localtuya/cover.py @@ -108,13 +108,13 @@ class LocaltuyaCover(LocalTuyaEntity, CoverEntity): def is_closed(self): """Return if the cover is closed or not.""" if self._config[CONF_POSITIONING_MODE] == COVER_MODE_NONE: - return None + return False if self._current_cover_position == 0: return True if self._current_cover_position == 100: return False - return None + return False async def async_set_cover_position(self, **kwargs): """Move the cover to a specific position.""" From 98cc44fcd1403ac6eb3daef0da1452995ac86ab0 Mon Sep 17 00:00:00 2001 From: rospogrigio Date: Thu, 12 Jan 2023 23:20:16 +0100 Subject: [PATCH 33/33] New tuyadebug.tgz now including a tinytuya test --- tuyadebug.tgz | Bin 35906 -> 136184 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tuyadebug.tgz b/tuyadebug.tgz index 0c2418b6bc49836becd17b225d733c7a681c7c1a..50c7a760bac879442ba780315bd882fe56220a7f 100644 GIT binary patch literal 136184 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

Z1=u3|8Q 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 z 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

|;kHfzc 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