new dps topics type error fixed

fixes #3
This commit is contained in:
KarstenSiedentopp
2018-12-19 18:43:42 +01:00
parent c499a20d74
commit e89f691fb8
2 changed files with 30 additions and 16 deletions

View File

@@ -47,7 +47,7 @@ Color for lightbulb:
tuya/lightbulb/<tuyaAPI-id>/<tuyaAPI-key>/<tuyaAPI-ip>/color // Color as Payload as hexColor
Read data from device:
tuya/<tuyaAPI-type>/<tuyaAPI-id>/<tuyaAPI-key>/<tuyaAPI-ip>/dps // returns JSON.stringify(dps) values
tuya/<tuyaAPI-type>/<tuyaAPI-id>/<tuyaAPI-key>/<tuyaAPI-ip>/dps // returns JSON.stringify(dps) values, use with care, does not always contain all dps values
tuya/<tuyaAPI-type>/<tuyaAPI-id>/<tuyaAPI-key>/<tuyaAPI-ip>/dps/<tuya-dps-id> // return single dps data value
```

View File

@@ -2,12 +2,18 @@ const mqtt = require('mqtt');
const TuyaDevice = require('./tuya-device');
const debug = require('debug')('tuya-mqtt');
const debugMqtt = require('debug')('mqtt');
const debugTuya = require('debug')('tuyAPI-Events');
const debugError = require('debug')('error');
var cleanup = require('./cleanup').Cleanup(onExit);
function bmap(istate) {
return istate ? 'ON' : "OFF";
}
function boolToString(istate) {
return istate ? 'true' : "false";
}
var connected = undefined;
const CONFIG = require("./config");
@@ -69,7 +75,7 @@ mqtt_client.on('message', function (topic, message) {
}
}
} catch (e) {
debug(e);
debugError(e);
}
});
@@ -92,12 +98,12 @@ function publishStatus(device, status) {
retain: true,
qos: 2
});
debug("mqtt status updated to:" + topic + " -> " + status);
debugTuya("mqtt status updated to:" + topic + " -> " + status);
} else {
debug("mqtt status not updated");
debugTuya("mqtt status not updated");
}
} catch (e) {
debug(e);
debugError(e);
}
}
}
@@ -117,23 +123,27 @@ function publishDPS(device, dps) {
if (tuyaID != undefined && tuyaKey != undefined && tuyaIP != undefined) {
var topic = CONFIG.topic + type + "/" + tuyaID + "/" + tuyaKey + "/" + tuyaIP + "/dps";
mqtt_client.publish(topic, JSON.stringify(dps), {
var data = JSON.stringify(dps);
debugTuya("mqtt dps updated to:" + topic + " -> ", data);
mqtt_client.publish(topic, data, {
retain: true,
qos: 2
});
Object.keys(dps).forEach(function (key) {
var topic = CONFIG.topic + type + "/" + tuyaID + "/" + tuyaKey + "/" + tuyaIP + "/dps/" + key;
mqtt_client.publish(topic, dps[key], {
var data = JSON.stringify(dps[key]);
debugTuya("mqtt dps updated to:" + topic + " -> dps[" + key + "]", data);
mqtt_client.publish(topic, data, {
retain: true,
qos: 2
});
});
debug("mqtt dps updated to:" + topic + " -> " + dps);
} else {
debug("mqtt dps not updated");
debugTuya("mqtt dps not updated");
}
} catch (e) {
debug(e);
debugError(e);
}
}
}
@@ -143,13 +153,17 @@ function publishDPS(device, dps) {
* @see TuyAPI (https://github.com/codetheweb/tuyapi)
*/
TuyaDevice.onAll('data', function (data) {
debug('Data from device ' + this.type + ' :', data);
var status = data.dps['1'];
if (this.type == "lightbulb" && status == undefined) {
status = true;
try {
debugTuya('Data from device ' + this.type + ' :', data);
var status = data.dps['1'];
if (this.type == "lightbulb" && status == undefined) {
status = true;
}
publishStatus(this, bmap(status));
publishDPS(this, data.dps);
} catch (e) {
debugError(e);
}
publishStatus(this, bmap(status));
publishDPS(this, data.dps);
});
/**