|
- module.exports = function(RED) {
- function InterruptFlowUltimate(config) {
- RED.nodes.createNode(this,config);
- this.config = config;
- var node = this;
- setNodeStatus({ fill: "green", shape: "ring", text: "-> pass" });
- node.bInviaMessaggio = true; // Send the message or not
- this.on('input', function (msg) {
-
- var sTriggerTopic = node.config.triggertopic.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '') || "trigger"; // Topic controlling the bInviaMessaggio
- var sIncomingTopic = "";
- if (msg.hasOwnProperty("topic")) {
- // 06/11/2019
- sIncomingTopic = msg.topic.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); // Cut unwanted Characters
- if (sIncomingTopic == sTriggerTopic && ToBoolean(msg.payload) === true) {
- node.bInviaMessaggio = true;
- setNodeStatus({ fill: "green", shape: "dot", text: "-> pass" });
- return;
- } else if (sIncomingTopic==sTriggerTopic && ToBoolean(msg.payload)===false){
- node.bInviaMessaggio = false;
- setNodeStatus({ fill: "red", shape: "dot", text: "|| stop" });
- return;
- }
- }
- if (node.bInviaMessaggio) node.send(msg);
- });
-
- function setNodeStatus({fill, shape, text})
- {
- var dDate = new Date();
- node.status({fill: fill,shape: shape,text: text + " (" + dDate.getDate() + ", " + dDate.toLocaleTimeString() + ")"})
- }
-
-
- function ToBoolean( value ) {
- var res = false;
-
- if (typeof value === 'boolean') {
- res = value;
- }
- else if( typeof value === 'number' || typeof value === 'string' ) {
- // Is it formated as a decimal number?
- if( decimal.test( value ) ) {
- var v = parseFloat( value );
- res = v != 0;
- }
- else {
- res = value.toLowerCase() === "true";
- }
- }
-
- return res;
- };
- }
-
-
- RED.nodes.registerType("InterruptFlowUltimate",InterruptFlowUltimate);
- }
|