added info about device type and ids

This commit is contained in:
Marcus Westin 2019-12-13 14:13:00 +01:00
parent 75e9539b5a
commit a7e491adf6
2 changed files with 62 additions and 8 deletions

56
api.js
View file

@ -102,10 +102,8 @@ class PlejdApi extends EventEmitter {
} }
// check if device is dimmable // check if device is dimmable
let dimmable = false; const plejdDevice = this.site.plejdDevices.find(x => x.deviceId == deviceId);
if (device.hardware) { let { name, type, dimmable } = this._getDeviceType(plejdDevice.hardwareId);
dimmable = device.hardware.name == 'DIM-01';
}
if (settings) { if (settings) {
dimmable = settings.dimCurve != 'NonDimmable'; dimmable = settings.dimCurve != 'NonDimmable';
@ -114,8 +112,9 @@ class PlejdApi extends EventEmitter {
const newDevice = { const newDevice = {
id: deviceNum, id: deviceNum,
name: device.title, name: device.title,
type: 'light', type: type,
supportsDim: dimmable typeName: name,
dimmable: dimmable
}; };
logger(JSON.stringify(newDevice)); logger(JSON.stringify(newDevice));
@ -125,6 +124,51 @@ class PlejdApi extends EventEmitter {
return devices; return devices;
} }
_getDeviceType(hardwareId) {
switch (parseInt(hardwareId)) {
case 1:
case 11:
return { name: "DIM-01", type: 'light', dimmable: true };
case 2:
return { name: "DIM-02", type: 'light', dimmable: true };
case 3:
return { name: "CTR-01", type: 'light', dimmable: false };
case 4:
return { name: "GWY-01", type: 'sensor', dimmable: false };
case 5:
return { name: "LED-10", type: 'light', dimmable: true };
case 6:
return { name: "WPH-01", type: 'switch', dimmable: false };
case 7:
return { name: "REL-01", type: 'switch', dimmable: false };
case 8:
case 9:
// Unknown
return { name: "-unknown-", type: 'light', dimmable: false };
case 10:
return { name: "-unknown-", type: 'light', dimmable: false };
case 12:
// Unknown
return { name: "-unknown-", type: 'light', dimmable: false };
case 13:
return { name: "Generic", type: 'light', dimmable: false };
case 14:
case 15:
case 16:
// Unknown
return { name: "-unknown-", type: 'light', dimmable: false };
case 17:
return { name: "REL-01", type: 'switch', dimmable: false };
case 18:
return { name: "REL-02", type: 'switch', dimmable: false };
case 19:
// Unknown
return { name: "-unknown-", type: 'light', dimmable: false };
case 20:
return { name: "SPR-01", type: 'switch', dimmable: false };
}
}
} }
module.exports = { PlejdApi }; module.exports = { PlejdApi };

12
mqtt.js
View file

@ -134,7 +134,17 @@ class MqttClient extends EventEmitter {
devices.forEach((device) => { devices.forEach((device) => {
logger(`sending discovery for ${device.name}`); logger(`sending discovery for ${device.name}`);
const payload = device.supportsDim ? getDiscoveryDimmablePayload(device) : getDiscoveryPayload(device); let payload = null;
if (device.type === 'switch') {
payload = getDiscoveryPayload(device);
}
else {
payload = device.dimmable ? getDiscoveryDimmablePayload(device) : getDiscoveryPayload(device);
}
console.log(`discovered ${device.name} with Plejd ID ${device.id}.`);
self.deviceMap[device.id] = payload.unique_id; self.deviceMap[device.id] = payload.unique_id;
self.client.publish( self.client.publish(