Releases: jasonacox/tinytuya
Releases · jasonacox/tinytuya
v1.2.7 - New Tuya Cloud IoT Setup Wizard
- PyPi Version 1.2.7
- Updated setup
wizard
to support new Tuya IoT Cloud signature method (Issue #57) - Added Bulb type C and manual setting function
set_bulb_type(type)
(PR #54) - Wizard creates
tuya-raw.json
to record raw response from Tuya IoT Platform - Fixed device22 bug on retry - Now returns ERR_DEVTYPE error, status() includes auto-retry (#56)
v1.2.6 - Improved Error Handling
- PyPi Version 1.2.6
- Added
wizard
handling to capture and display Tuya API server error responses (PR #45) - Added better error handling for BulbDevice
state()
function to not crash when dps values are missing in response (PR #46) - Added async examples using
send()
andreceive()
- Updated scan output to include device Local Key if known (PR #49 #50)
- Fixed print typo in examples/devices.py (PR #51)
v1.2.5 - Send and Receive Functions
- PyPi Version 1.2.5
- Added raw mode
send()
andreceive()
function to allow direct control of payload transfers. Useful to monitor state changes via threads or continuous loops. This example opens a Tuya device and watches for state changes (e.g. switch going on and off):
import tinytuya
d = tinytuya.OutletDevice('DEVICEID', 'DEVICEIP', 'DEVICEKEY')
d.set_version(3.3)
d.set_socketPersistent(True)
print(" > Send Initial Query for Status < ")
payload = d.generate_payload(tinytuya.DP_QUERY)
d.send(payload)
while(True):
# See if any data is available
data = d.receive()
print('Received Payload: %r' % data)
# Send a keyalive heartbeat ping
print(" > Send Heartbeat Ping < ")
payload = d.generate_payload(tinytuya.HEART_BEAT)
d.send(payload)
v1.2.4 - DPS Detection and Bug Fixes
- PyPi Version 1.2.4
- Added detect_available_dps() function
- Fixed bug in json_error() function
- Updated instruction for using Tuya iot.tuya.com to run Wizard
- Added option to disable deviceScan() automatic device polling
- Added better error handling processing Tuya messages (responses) Issue #39
- Fixed display bug in Wizard device polling to show correct On/Off state
v1.2.3 - Dimmer and Brightness Functions
- PyPi Version 1.2.3
- Added
set_dimmer()
to OutletDevice class. - Added
set_hsv()
to BulbDevice class. - Updated
set_brightness()
in BulbDevice to handle white and colour modes. Issue #30 - BulbDevice determines features of device and presents boolean variables
has_colour
,has_brightness
andhas_colourtemp
to ignore requests that do not exist (returns error).
v1.2.2 - Bug Fix for Bulb Functions
- PyPi Version 1.2.2
- Fix bug in set_white_percentage(): added missing self. PR #32
- Fixed set_white_percentage: colour temp was incorrectly computed for B type Bulbs. PR #33
- Moved setup Wizard out of module init to standalone import to save import load.
Command line mode is still the same:
python3 -m tinytuya wizard
Import now requires additional import to run Wizard programmatically:
import tinytuya
import tinytuya.wizard
tinytuya.wizard.wizard()
v1.2.1 - Bug Fix for Command 0x12 UpdateDPS
- PyPi Version 1.2.1
- Fixed header for 0x12 Update DPS Command (see issue #8)
v1.2.0 - Error Handling and Bug Fixes
- PyPi Version 1.2.0
- Now decrypting all TuyaMessage responses (not just status)
- Fixed
set_colour(r, g, b)
to work with python2 - Fixed
set_debug()
to toggle on debug logging (with color) - Added handler for
device22
to automatically detect andset_dpsUsed()
with available DPS values. - Added
set_socketTimeout(s)
for adjustable connection timeout setting (defaults to 5s) - Added
set_sendWait(s)
for adjustable wait time after sending device commands - Improved and added additional error handling and retry logic
- Instead of Exceptions, tinytuya responds with Error response codes (potential breaking change):
Example
import tinytuya
tinytuya.set_debug(toggle=False, color=True)
d = tinytuya.OutletDevice('<ID>','<IP>','<KEY>')
d.set_version(3.3)
d.status()
{u'Payload': None, u'Err': u'905', u'Error': u'Network Error: Device Unreachable'}
v1.1.4 - Update DPS (Command 18)
- PyPi Version 1.1.4
- Added
updatedps()
command 18 function to request device to update DPS values (Issue #8) - Added
set_debug()
function to activate debug logging
import tinytuya
import time
tinytuya.set_debug(True)
d = tinytuya.OutletDevice('DEVICEID', 'IP', 'LOCALKEY')
d.set_version(3.3)
print(" > Fetch Status < ")
data = d.status()
time.sleep(5)
print(" > Request Update for DPS indexes 18, 19 and 20 < ")
result = d.updatedps([18, 19, 20])
print(" > Fetch Status Again < ")
data2 = d.status()
print("Before %r" % data)
print("After %r" % data2)
v1.1.3 - Automatic IP Lookup
- PyPi Version 1.1.3
- Updated device read retry logic for minimum response payload (28 characters) (Issue #17)
- Feature added to do automatic IP address lookup via network scan if None or '0.0.0.0' is specified. Example:
import tinytuya
ID = "01234567890123456789"
IP = None
KEY = "0123456789012345"
d = tinytuya.OutletDevice(ID,IP,KEY)
d.status()