node-red-contrib-zigbee2mqtt-devices
Version:
Nodes to interact with zigbee2mqtt for Node-RED
116 lines (115 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
module.exports = function (RED) {
const utils = require("../../lib/utils.js");
const bavaria = utils.bavaria();
function PayloadOverride(msg, payload) {
Object.assign(msg, {
payload: {
...msg.payload,
override: {
// @ts-ignore TODO: Weg finden welcher TypeGuard sagt was sache ist
...(typeof msg.payload === "object" && msg.payload !== null && ("override" in msg.payload) && msg.payload.override),
...payload
}
}
});
}
/**
*
* @param config
* @constructor
*/
function OverrideStateConstructor(config) {
RED.nodes.createNode(this, config);
this.on("input", (msg) => {
PayloadOverride(msg, { state: config.state });
this.send(msg);
});
}
RED.nodes.registerType("override-state", OverrideStateConstructor);
/**
*
* @param config
* @constructor
*/
function OverrideBrightnessConstructor(config) {
RED.nodes.createNode(this, config);
this.on("input", (msg) => {
PayloadOverride(msg, { brightness: config.brightness });
this.send(msg);
});
}
RED.nodes.registerType("override-brightness", OverrideBrightnessConstructor);
/**
*
* @param config
* @constructor
*/
function OverrideTemperatureConstructor(config) {
RED.nodes.createNode(this, config);
this.on("input", (msg) => {
PayloadOverride(msg, { temperature: config.temperature });
this.send(msg);
});
}
RED.nodes.registerType("override-temperature", OverrideTemperatureConstructor);
/**
*
* @param config
* @constructor
*/
function OverrideColorConstructor(config) {
RED.nodes.createNode(this, config);
this.on("input", (msg) => {
PayloadOverride(msg, {
color: {
r: config.red,
g: config.green,
b: config.blue,
}
});
this.send(msg);
});
}
RED.nodes.registerType("override-color", OverrideColorConstructor);
/**
*
* @param config
* @constructor
*/
function OverrideActionConstructor(config) {
RED.nodes.createNode(this, config);
this.on("input", (msg) => {
switch (config.mode) {
case "brightness_move":
PayloadOverride(msg, { action: utils.payloads.createBrightnessMove(config.value) });
break;
case "brightness_step":
PayloadOverride(msg, { action: utils.payloads.createBrightnessStep(config.value) });
break;
case "color_temp_move":
PayloadOverride(msg, { action: utils.payloads.createColorTempMove(config.value) });
break;
case "color_temp_step":
PayloadOverride(msg, { action: utils.payloads.createColorTempStep(config.value) });
break;
case "hue_move":
PayloadOverride(msg, { action: utils.payloads.createHueMove(config.value) });
break;
case "hue_step":
PayloadOverride(msg, { action: utils.payloads.createHueStep(config.value) });
break;
case "saturation_move":
PayloadOverride(msg, { action: utils.payloads.createSaturationMove(config.value) });
break;
case "saturation_step":
PayloadOverride(msg, { action: utils.payloads.createSaturationStep(config.value) });
break;
}
msg.payload.override = msg.payload.override.action.payload.override;
this.send(msg);
});
}
RED.nodes.registerType("override-action", OverrideActionConstructor);
};