set_dpsUsed turned into add_dps_to_request ; used it when setting up entities

This commit is contained in:
rospogrigio
2020-09-18 17:19:10 +02:00
committed by rospogrigio
parent 5507652bae
commit 6700e02c52
5 changed files with 34 additions and 16 deletions

View File

@@ -20,8 +20,8 @@
json = status() # returns json payload
set_version(version) # 3.1 [default] or 3.3
detect_available_dps() # returns a list of available dps provided by the device
set_dpsUsed(dpsUsed)
set_dps(on, dps_index) # Set int value of any dps index.
add_dps_to_request(dps_index) # adds dps_index to the list of dps used by the device (to be queried in the payload)
set_dps(on, dps_index) # Set value of any dps index.
set_timer(num_secs):
@@ -194,6 +194,7 @@ class TuyaDevice(object):
self.connection_timeout = connection_timeout
self.version = 3.1
self.dev_type = 'type_0a'
self.dps_to_request = {}
self.port = 6668 # default - do not expect caller to pass in
@@ -248,7 +249,9 @@ class TuyaDevice(object):
detected_dps = {}
# dps 1 must always be sent, otherwise it might fail in case no dps is found in the requested range
self.set_dpsUsed({ str(dps): None for dps in chain(range(1,2), range(2, 11)) })
self.dps_to_request = {"1": None}
for dps in range(2, 11):
self.add_dps_to_request(dps)
try:
data = self.status()
except Exception as e:
@@ -259,7 +262,9 @@ class TuyaDevice(object):
if self.dev_type == "type_0a":
return detected_dps
self.set_dpsUsed({ str(dps): None for dps in chain(range(1,2), range(11, 21)) })
self.dps_to_request = {"1": None}
for dps in range(11, 21):
self.add_dps_to_request(dps)
try:
data = self.status()
except Exception as e:
@@ -267,7 +272,9 @@ class TuyaDevice(object):
raise CannotConnect
detected_dps.update( data["dps"] )
self.set_dpsUsed({ str(dps): None for dps in chain(range(1,2), range(21, 31)) })
self.dps_to_request = {"1": None}
for dps in range(21, 31):
self.add_dps_to_request(dps)
try:
data = self.status()
except Exception as e:
@@ -275,7 +282,9 @@ class TuyaDevice(object):
raise CannotConnect
detected_dps.update( data["dps"] )
self.set_dpsUsed({ str(dps): None for dps in chain(range(1,2), range(100, 111)) })
self.dps_to_request = {"1": None}
for dps in range(100, 111):
self.add_dps_to_request(dps)
try:
data = self.status()
except Exception as e:
@@ -286,8 +295,8 @@ class TuyaDevice(object):
return detected_dps
def set_dpsUsed(self, dpsUsed):
self.dpsUsed = dpsUsed
def add_dps_to_request(self, dps_index):
self.dps_to_request[str(dps_index)] = None
def generate_payload(self, command, data=None):
"""
@@ -314,8 +323,8 @@ class TuyaDevice(object):
if data is not None:
json_data['dps'] = data
if command_hb == '0d':
json_data['dps'] = self.dpsUsed
# log.info('******** COMMAND IS %r', self.dpsUsed)
json_data['dps'] = self.dps_to_request
# log.info('******** COMMAND IS %r', self.dps_to_request)
# Create byte buffer from hex data
json_payload = json.dumps(json_data)