added support for DIM-02 and to detect dim func

This commit is contained in:
Marcus Westin 2019-12-10 22:01:12 +01:00
parent bedcd550ad
commit 457b41cb3c
2 changed files with 41 additions and 8 deletions

35
api.js
View file

@ -90,14 +90,37 @@ class PlejdApi extends EventEmitter {
}
for (let i = 0; i < this.site.devices.length; i++) {
let device = this.site.devices[i];
let deviceId = device.deviceId;
const device = this.site.devices[i];
const deviceId = device.deviceId;
devices.push({
id: this.site.deviceAddress[deviceId],
const settings = this.site.outputSettings.find(x => x.deviceParseId == device.objectId);
let deviceNum = this.site.deviceAddress[deviceId];
if (settings) {
const outputs = this.site.outputAddress[deviceId];
deviceNum = outputs[settings.output];
}
// check if device is dimmable
let dimmable = false;
if (device.hardware) {
dimmable = device.hardware.name == 'DIM-01';
}
if (settings) {
dimmable = settings.dimCurve != 'NonDimmable';
}
const newDevice = {
id: deviceNum,
name: device.title,
type: 'light'
});
type: 'light',
supportsDim: dimmable
};
logger(JSON.stringify(newDevice));
devices.push(newDevice);
}
return devices;

14
mqtt.js
View file

@ -33,7 +33,7 @@ const getBrightnessCommandTopic = plug => `${getPath(plug)}/setBrightness`;
const getBrightnessTopic = plug => `${getPath(plug)}/brightness`;
const getCommandTopic = plug => `${getPath(plug)}/set`;
const getDiscoveryPayload = device => ({
const getDiscoveryDimmablePayload = device => ({
name: device.name,
unique_id: `light.plejd.${device.name.toLowerCase().replace(/ /g, '')}`,
state_topic: getStateTopic(device),
@ -45,6 +45,16 @@ const getDiscoveryPayload = device => ({
optimistic: false
});
const getDiscoveryPayload = device => ({
name: device.name,
unique_id: `light.plejd.${device.name.toLowerCase().replace(/ /g, '')}`,
state_topic: getStateTopic(device),
command_topic: getCommandTopic(device),
payload_on: 1,
payload_off: 0,
optimistic: false
});
// #endregion
class MqttClient extends EventEmitter {
@ -124,7 +134,7 @@ class MqttClient extends EventEmitter {
devices.forEach((device) => {
logger(`sending discovery for ${device.name}`);
const payload = getDiscoveryPayload(device);
const payload = device.supportsDim ? getDiscoveryDimmablePayload(device) : getDiscoveryPayload(device);
self.deviceMap[device.id] = payload.unique_id;
self.client.publish(