tuya-smartlife-api
v0.7.4
Published
NodeJS interface for Tuya IoT devices through the Smart Life interface
Downloads
15
Maintainers
Readme
Tuya Smart Life API (NodeJS)
Usage
- install global module with
npm -g install tuya-smartlife-api-node
- verify installation with
tuyacli --version
- install NPM package
npm install @shellcatt/tuya-smartlife-api
run unit tests with
npm test
run live tests with
node cli live
import ESM
import { TuyaSmartLifeClient } from "tuya-smartlife-api";
const client = new TuyaSmartLifeClient();
try {
await client.init('[email protected]', 'password', '44');
await client.discoverDevices();
tDevices = client.getAllDevices();
console.log(tDevices);
} catch (e) {
console.error('Failed because', e);
}
TODO
- [x] port and optimize TuyaPy
- [x] implement integration tests
- [x] implement pure CLI (see Examples)
- [x] list devices (short / long format)
- [x] control a device's state
- [x] control a device's custom attributes
- [x] use Configstore for credentials & device cache (not
session.json
) - [x] implement unit tests
- [ ] implement classes for other IoT devices (climate, fan, lock, etc.)
- [ ] ~~implement TUI with blessed-contrib~~
Examples
# Authenticate /will be automatically called later if skipped the first time/
node cli auth
# List all devices
node cli list [--format={short|long}]
# Perform interactiv device tests
node cli test
# Turn device ID on / off
node cli control <ID|Name> --state [1|on]
node cli control <ID|Name> --state [0|off]
node cli control <ID|Name> --toggle
# Set light brightness, color temp & color
node cli control <ID|Name> --brigntness 30
node cli control <ID|Name> --temperature 3500 # set warm temp
node cli control <ID|Name> --hsv 78.34,1,100 # HSV chill green
node cli control <ID|Name> --hsv 324.77,1,42 # HSV chill purple
node cli control <ID|Name> --rgb 90,30,115 # RGB something
Note: The
<ID|Name>
portion is treated as a filtering pattern rather than a full identifier. Conviniently,node cli control bulb -s off
would turn off all devices with the pattern "bulb" in their name, but use with caution.ID
would be used for large setups, whereName
is not viable.
Credits
Inspired by TuyaPy (backend) and SmartLife (web) interfaces to Tuya's SmartAtHome for IoT smart device control.