UNPKG

node-red-contrib-trigger-empty

Version:

Sends On on input of an On trigger, and when for all On triggers an Off was received off, Send Off

32 lines (31 loc) 1.4 kB
module.exports = function(RED) { function TriggerOnEmptyNode(config) { RED.nodes.createNode(this,config); this.topic = config.topic; this.on_payload = config.on_payload; this.off_payload = config.off_payload; var node = this; var triggers = {}; node.on('input', function(msg) { if (typeof msg.topic != "undefined" && typeof msg.payload != "undefined") { if(msg.payload.toUpperCase() == this.on_payload.toUpperCase()) { triggers[msg.topic] = this.on_payload; msg.payload = this.on_payload; msg.topic = node.topic; this.status({fill:"green",shape:"dot",text:this.on_payload+" send:"+triggers.keys().length}); node.send(msg); } else if(msg.payload.toUpperCase() == this.off_payload.toUpperCase()) { delete triggers[msg.topic]; if (Object.keys(triggers).length == 0) { msg.payload = this.off_payload; msg.topic = node.topic this.status({fill:"green",shape:"ring",text:this.off_payload+" send:"+triggers.keys().length}); node.send(msg); } } } }); } RED.nodes.registerType("trigger-empty",TriggerOnEmptyNode); }