/tuya-smartlife-api-node

NodeJS interface for Tuya IoT devices through the Smart Life API

Primary LanguageJavaScriptMIT LicenseMIT

Tuya Smart Life API (NodeJS)

Usage

Standalone
  • install modules with npm install
  • create a .env file (see .env.example)
  • run tests with npm test
Module
  • install NPM package
npm install @shellcatt/tuya-smartlife-api
  • import ESM

See test.js

import { TuyaSmartLifeClient } from "tuya-smartlife-api";
const client = new TuyaSmartLifeClient();
try {
	await client.init('jondoe@example.co.uk', 'password', '44');
	await client.discoverDevices();

	tDevices = client.getAllDevices();
	console.log(tDevices);
} catch (e) {
	console.error('Failed because', e);
}

TODO

  • port and optimize TuyaPy
  • implement integration tests
  • implement pure CLI (see Examples)
    • list devices (short / long format)
    • control a device's state
    • control a device's custom attributes
  • use Configstore for credentials & device cache (not session.json)
  • implement unit tests
  • implement classes for other IoT devices (climate, fan, lock, etc.)
  • implement TUI (blessed-contrib)

Examples

# List all devices
node cli list [--format={short|long}]

# 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

Credits

Inspired by TuyaPy (backend) and SmartLife (web) interfaces to Tuya's SmartAtHome for IoT smart device control.

See also