Releases: jasonacox/tinytuya
Releases · jasonacox/tinytuya
v1.17.5
What's Changed
- Enhance command line interface with device control and listing commands by @jasonacox in #681
list– List all devices fromdevices.jsonas a formatted table (default) or JSON (--json).on/off– Turn a device switch on or off, with optional--dps Nto target a specific switch index (default: 1).set– Write a value to a DPS index (--dps N --value VALUE). Value is parsed as JSON where possible (e.g.true,123) and falls back to a plain string.get– Read device status; omit--dpsfor full status JSON or supply--dps Nto retrieve a single plain value.- All control commands accept
--id IDor--name NAMEto identify the target device. When--nameis used, the device ID is resolved via a case-insensitive lookup indevices.json. - Missing credentials (
--key,--ip,--version) are automatically filled in from the matchingdevices.jsonentry.
- Contrib: Add
SoriaInverterDeviceto support SORIA solar micro-inverters by @Markourai in #680 - Enhance
CoverDevicewith automatic command type detection by @jasonacox in #654- Major rewrite to support 8 different device command types with automatic detection (credit: @make-all):
- Type 1:
["open", "close", "stop", "continue"]— Most curtains, blinds, roller shades (DEFAULT) - Type 2:
[true, false]— Simple relays, garage doors, locks - Type 3:
["0", "1", "2"]— String-numeric position/state - Type 4:
["00", "01", "02", "03"]— Zero-prefixed numeric position/state - Type 5:
["fopen", "fclose"]— Directional binary (no stop) - Type 6:
["on", "off", "stop"]— Switch-lexicon - Type 7:
["up", "down", "stop"]— Vertical-motion (lifts, hoists) - Type 8:
["ZZ", "FZ", "STOP"]— Vendor-specific (Abalon-style, older standard)
- Type 1:
- Added
continue_cover()method for device types that support it (Types 1 and 4) - Added
set_cover_type(type_id)method to manually override auto-detection
- Major rewrite to support 8 different device command types with automatic detection (credit: @make-all):
- Expand DPS detection ranges in XenonDevice to include missing values by @jasonacox in #674
- Update Scanner: improved clarity on v3.4 and v3.5 device identification when unresponsive by @jasonacox in #672
- Added star projector example by @Andy-Voigt in #670
- Add Dart Flutter port of TinyTuya to README by @sjhorn in #657
- Fix pylint CI workflow to run on pull requests as well as pushes, catching errors before merge
New Contributors
- @sjhorn made their first contribution in #657
- @Andy-Voigt made their first contribution in #670
- @Markourai made their first contribution in #680
Full Changelog: v1.17.4...v1.17.5
v1.17.4 - Cloud Config
What's Changed
- Add
configFileoption to the Cloud constructor, allowing users to specify the config file location (default remains 'tinytuya.json') by @blackw1ng in #640
New Contributors
- @blackw1ng made their first contribution in #640
Full Changelog: v1.17.3...v1.17.4
v1.17.3 - Colorama Optional
What's Changed
- This update makes the colorama dependency optional for the tinytuya library, allowing it to function without colorama while gracefully disabling color output. This will help with memory or dependency limited platforms. Update by @uzlonewolf in #637.
Full Changelog: v1.17.2...v1.17.3
v1.17.2 - BulbDevice
What's Changed
- Add Singapore datacenter, update BulbDevice for non-bulb devices again by @uzlonewolf in #625
Full Changelog: v1.17.1...v1.17.2
v1.17.1 - Fix BulbDevice
What's Changed
- Fix BulbDevice for non-bulb devices. This will allow BulbDevice to be used even for non-bulb devices, e.g. turn_on() & turn_off(), by @uzlonewolf in #620.
Full Changelog: v1.17.0...v1.17.1
v1.17.0 - BulbDevice Rewrite
What's Changed
- Tool updates: pcap parse fix, new broadcast relay by @uzlonewolf in #612
- Fix initialization bug with python2 (embedded devices) by @Ircama in #615
- Rewrite BulbDevice and rework set_multiple_values(), again by @uzlonewolf in #617
BulbDevice Example Usage
import time
import random
import tinytuya
d = tinytuya.BulbDevice(DEVICEID, address=DEVICEIP, local_key=DEVICEKEY, version=DEVICEVERS, persist=True)
# BASIC FUNCTIONS
print('Basic Tests')
d.set_colour(255,127,63) # Set to orange
d.set_white_percentage(100.0, 0.0) # 100% brightness, 0% colour temperature
d.set_brightness_percentage(100) # 100% brightness
# MUSIC MODE
print("Music Mode")
d.set_mode('music')
d.set_socketPersistent( True )
# Devices respond with a command ACK, but do not send DP updates.
# Setting the 2 options below causes it to wait for a response but
# return immediately after an ACK.
d.set_sendWait( None )
d.set_retry( False )
for x in range(100):
red = random.randint(0,255)
green = random.randint(0,255)
blue = random.randint(0,255)
if (x % 6 == 0):
# extend every 6 beat
d.set_music_colour( d.MUSIC_TRANSITION_FADE, red, green, blue )
time.sleep(2)
else:
# Jump!
d.set_music_colour( d.MUSIC_TRANSITION_JUMP, red, green, blue )
time.sleep(0.1) # the bulbs seem to get upset if updates are faster than 0.1s (100ms)
# SCENE MODE
if d.bulb_has_capability(d.BULB_FEATURE_SCENE_DATA):
d.set_mode('scene')
print('String based scenes compatible smartbulb detected.')
# Example: Color rotation
print('Switch to Scene 7 - Color Rotation')
d.set_scene( 7, '464602000003e803e800000000464602007803e803e80000000046460200f003e803e800000000464602003d03e803e80000000046460200ae03e803e800000000464602011303e803e800000000')New Contributors
Full Changelog: v1.16.3...v1.17.0
v1.16.3 - Devices.json Error Handling
What's Changed
- Add error handling in Cloud getdevices() function for edge case where old devices.json has corrupt or malformed device entries. by @jasonacox in #609
- Server p14 update: Add main loop logic to try to recover when exception occurs.
Full Changelog: v1.16.2...v1.16.3
v1.16.2 - Invalid JSON Handling
What's Changed
- Update music mode example showing how to build the payload. by @cabra-lat in #591
- Add AmbiTuya to TinyTuya Powered Projects list by @CmdrAvegan in #601
- Build test updates by @uzlonewolf in #608
- Handle invalid binary data in the JSON from the device better by @uzlonewolf in #607
New Contributors
- @cabra-lat made their first contribution in #591
- @CmdrAvegan made their first contribution in #601
Full Changelog: v1.16.1...v1.16.2
v1.16.1 - Scanner Error Handling
What's Changed
- Adds error handling for cases when the scanner broadcasts fails by @x011 in #585 and @uzlonewolf in #587
- Fix WinError 10022: Handle invalid socket arguments in send_discovery_request by @x011 in #585
- Add better error message when sending scanner broadcasts fails by @uzlonewolf in #587
New Contributors
Full Changelog: v1.16.0...v1.16.1
v1.16.0 - Code Refactoring
What's Changed
- This update refactors core.py by splitting it up into smaller, more logical files. It puts it in a
coredirectory, so existing code that imports fromtinytuya.coreshould be unaffected. - Add Contrib support for Electric Blankets such as Goldair GPFAEB-Q by @leodenham in #528
- Add IoT core service renewal info to the setup wizard in the README by @lorumic in #558
- Contributing with a new device ColorfulX7Device by @CheAhMeD in #568
- Add WiFi Dual Meter device by @ggardet in #569
- Refactoring: split up core.py by @tringenbach in #575
- fix: update tests.py to pass, add to github workflow by @tringenbach in #576
New Contributors
- @leodenham made their first contribution in #528
- @lorumic made their first contribution in #558
- @CheAhMeD made their first contribution in #568
- @ggardet made their first contribution in #569
- @tringenbach made their first contribution in #575
Full Changelog: v1.15.1...v1.16.0