Skip to content

jkerdreux-imt/tuya

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TuyaFace

Tuya client that allows you to locally communicate with tuya devices without the tuya-cloud.

Installation

pip install tuyaface

Public Interface

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

TuyaClient

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()

Data structure

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...
}

Todo v1.3.0

  • validate/sanitize request
  • throttle reconnect requests #48
  • Pre-commit triggers (black, mypy, flake, etc) #54

Changelog

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

Implementations

Acknowledgements

About

replacement for pytuya

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%