A library for communicating with devices that use the Tuya cloud network. These devices are branded under many different names, but if port 6668 is open on your device chances are this library will work with it. Currently only supports smart plugs, but it should be fairly trivial to add other types of devices.
npm install codetheweb/tuyapi
const TuyaDevice = require('tuyapi');
var tuya = new TuyaDevice({
type: 'outlet',
ip: 'xxx.yyy.0.zzz',
id: 'xxxxxxxxxxxxxxxxxxxx',
key: 'xxxxxxxxxxxxxxxx'});
tuya.getStatus(function(error, status) {
if (error) { return console.log(error); }
console.log('Status: ' + status);
tuya.setStatus(!status, function(error, result) {
if (error) { return console.log(error); }
console.log('Result of setting status to ' + !status + ': ' + result);
tuya.getStatus(function(error, status) {
if (error) { return console.log(error); }
console.log('New status: ' + status);
});
});
});
This should report the current status, set the device to the opposite of what it currently is, then report the changed status.
See the setup instructions for how to find the needed parameters.
See the docs. IMPORTANT: Only one TCP connection can be in use with a device at once. If testing this, do not have the app on your phone open.
Reuse a TCP connection between subsequent commands, instead of creating a new one every time.Figure out what the hex-encoded 'padding' is.- Better documentation.
- Support arbitrary control schemes for devices as self-reported.
- Use Promises for all functions?
- Autodiscovery of devices?
- homebridge-tuya: a Homebridge plugin for Tuya devices