Files
tuya-mqtt/tuya.js
2018-06-11 10:17:20 +02:00

84 lines
2.1 KiB
JavaScript

/*
* Simple wrapper for tuyapi for use with openhab or command line
npm install codetheweb/tuyapi
node tuya.js args
arg format --ip=192.168.x.x --id=1231204564df --key=dsf456sdf TOGGLE
args can be, ON, OFF, or TOGGLE. No arguement returns state
*/
const TuyaDevice = require('tuyapi');
const TuyaStatus = require('./tuya-status');
var args = require('yargs').argv;
var tuyaConnect = this;
_DEBUG = false;
TuyaStatus.setDebug(_DEBUG);
var switchStatus = args._[0];
switchStatus = switchStatus.toLowerCase();
var tuyaID = args.id;
var tuyaKey = args.key;
var tuyaIP = args.ip;
let tuya = undefined;
exports.createDevice = function (tuyaID, tuyaKey, tuyaIP) {
if (tuyaID != undefined && tuyaKey != undefined) {
try {
var config = {
id: tuyaID + "",
key: tuyaKey
};
if (tuyaIP != undefined) {
config.ip = tuyaIP;
}
if (_DEBUG) {
console.log(config);
}
return new TuyaDevice(config);
} catch (e) {
//console.error(e);
console.error(config);
}
}
return undefined;
};
exports.hasDevice = function () {
var device = (tuya != undefined);
if (!device) {
console.error("Tuya - Device not set");
}
return device;
}
exports.setStatus = function (newState) {
if (this.hasDevice()) {
if (_DEBUG) {
console.log('Status: ' + newState);
}
if (newState == "toogle".toLowerCase()) {
TuyaStatus.toggle();
}
if (newState == "on".toLowerCase()) {
TuyaStatus.on();
}
if (newState == "off".toLowerCase()) {
TuyaStatus.off();
}
}
}
tuya = module.exports.createDevice(tuyaID, tuyaKey, tuyaIP);
TuyaStatus.setDevice(tuya);
if (switchStatus == "now".toLowerCase()) {
if (module.exports.hasDevice()) {
TuyaStatus.getCurrent();
}
} else {
if (module.exports.hasDevice()) {
module.exports.setStatus(switchStatus);
}
}