node-red-contrib-dynamic-dimmer
Version:
A dimmer node for Node-RED
82 lines (81 loc) • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var dim_processor_1 = require("./services/dim-processor");
var node_1 = require("./models/node");
var rxjs_1 = require("rxjs");
var marshal_1 = require("@marcj/marshal");
var dtos_1 = require("./models/dtos");
var dto_converter_1 = require("./converter/dto-converter");
module.exports = function (RED) {
var DynamicDimmerController = (function () {
function DynamicDimmerController(config) {
this.config = config;
RED.nodes.createNode(this, this.config);
this.node = this;
this.dimProcessor = dim_processor_1.DimProcessorFactory.getProcessor({
eventInterval: this.config.eventInterval,
minValue: this.config.minValue,
maxValue: this.config.maxValue,
step: 1.0 / this.config.steps
});
this.registerInput();
}
DynamicDimmerController.prototype.registerInput = function () {
var _this = this;
this.node.on('input', function (msg, send, done) {
try {
var inputMsg = (0, dto_converter_1.convertInput)(msg);
var sendValue = {
next: function (v) {
_this.reportStatus(v);
send(Object.assign(msg, { payload: v }));
},
complete: function () {
_this.clearStatus();
done();
}
};
_this.mapCommand(inputMsg.payload).subscribe(sendValue);
}
catch (error) {
if (error instanceof marshal_1.ValidationFailed) {
done(new node_1.InputValidationError("Invalid message type provided!", error.errors).toString());
}
else {
done(error.toString());
}
}
});
};
DynamicDimmerController.prototype.reportStatus = function (dimValue) {
this.node.status({ fill: "blue", shape: "dot", text: "dimming (" + dimValue + ")" });
};
DynamicDimmerController.prototype.clearStatus = function () {
this.node.status({});
};
DynamicDimmerController.prototype.mapCommand = function (dimMsg) {
var dimOperation$;
var config = (0, dto_converter_1.convertDimConfigUpdate)(dimMsg.config);
switch (dimMsg.command) {
case dtos_1.DimCommand.DIM:
dimOperation$ = this.dimProcessor.dim(dimMsg.target, dimMsg.start, config);
break;
case dtos_1.DimCommand.PAUSE:
dimOperation$ = this.dimProcessor.pause();
break;
case dtos_1.DimCommand.SET:
dimOperation$ = this.dimProcessor.set(dimMsg.target, config);
break;
case dtos_1.DimCommand.RESET:
dimOperation$ = this.dimProcessor.reset(config);
break;
default:
dimOperation$ = (0, rxjs_1.empty)();
break;
}
return dimOperation$;
};
return DynamicDimmerController;
}());
RED.nodes.registerType('dynamic-dimmer', DynamicDimmerController);
};