Tuya client that allows you to locally communicate with tuya devices without the tuya-cloud.
pip install tuyaface
Request current device status
status(device: dict)
Returns dict
Update device dps state
set_state(device: dict, value: bool, idx: int = 1)
Returns dict
Update device status
set_status(device: dict, dps: dict)
Returns dict
Initialize client
TuyaClient(device: dict, on_status: callable=None, on_connection: callable=None)
Request current device status
status()
Returns dict
Update device dps state
set_state(value: bool, idx: int = 1)
Returns dict
Close the connection and stop the worker thread
stop_client()
example
from tuyaface.tuyaclient import TuyaClient
def on_status(data:dict):
print(data)
def on_connection(value: bool):
print(value)
device = {
'protocol': '3.3', # 3.1 | 3.3
'deviceid': '34280100600194d17c96',
'localkey': 'e7e9339aa82abe61',
'ip': '192.168.1.101',
}
client = TuyaClient(device, on_status, on_connection)
client.start()
data = client.status()
client.set_state(!data['dps']['1'], 1) #toggle
client.stop_client()
Device dict
device = {
'protocol': '3.3', # 3.1 | 3.3
'deviceid': '34280100600194d17c96',
'localkey': 'e7e9339aa82abe61',
'ip': '192.168.1.101',
}
DPS dict
dps = {
'1': True,
'2': False,
'101': 255,
'102': 128,
...etc...
}
- validate/sanitize request
- throttle reconnect requests #48
- Pre-commit triggers (black, mypy, flake, etc) #54
v1.2.0
- WIP #44 sequence_nr
- WIP #44 connection
- Store preferred status command in device dict #43
- Nest tuyaface values in device: dict #44
- Improve message parsing #47
Earlier changes https://github.com/TradeFace/tuya/wiki
- https://github.com/TradeFace/tuyamqtt
- let me know, I'll add it here
- This module is a rewrite of https://github.com/clach04/python-tuya
- https://github.com/codetheweb/tuyapi as reference on commands
- https://github.com/SDNick484 for testing protocol 3.1 reimplementation
- https://github.com/jkerdreux-imt several improvements
- https://github.com/PortableProgrammer help on #20
- https://github.com/emontnemery tuyaclient