Skip to main content

Python interface to Tuya WiFi smart devices.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tuyaface-1.2.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

tuyaface-1.2.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file tuyaface-1.2.0.tar.gz.

File metadata

  • Download URL: tuyaface-1.2.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for tuyaface-1.2.0.tar.gz
Algorithm Hash digest
SHA256 da7709c5271133cdb08a6e6d370cdf25cf8997abd0a266a5170049ed6ab7ea94
MD5 4ac7a8cb9663f3e79462ee84b04c10d8
BLAKE2b-256 79715bbfbb82d17cef8ad942313d0915018be317550c9ae8675b69e99e39521b

See more details on using hashes here.

File details

Details for the file tuyaface-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: tuyaface-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for tuyaface-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 073262f4bd70eaf7b13a31180d49d65c0501e11002728ad22673e240e8f2fe44
MD5 9a5ee4b1266a2322efc6c569e0caafc4
BLAKE2b-256 57675883b92f37574c8540df15713ef72b55519b439aa2092f23dcaa28e7c8aa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page