| <a href="http://eepurl.com/gJm095" target="_blank">Subscribe to my channel.</a> Only news about my nodes, no spam, no ads. I'm a github developer, not a merchant. | <a href="http://eepurl.com/gJm095" target="_blank">Subscribe to my channel.</a> Only news about my nodes, no spam, no ads. I'm a github developer, not a merchant. | ||||
| <p> | |||||
| <b>Version 1.0.20</b> August 2020<br/> | |||||
| - NEW: Inject Node. The pourpose of this node is to speed up the testing of you flow, by issuing true/false command by pushbutton on the node itself. This node is simpler as the default node-red inject node.</br> | |||||
| </p> | |||||
| <p> | <p> | ||||
| <b>Version 1.0.19</b> August 2020<br/> | <b>Version 1.0.19</b> August 2020<br/> | ||||
| - NEW: Simple Output node. The pourpose of this node is to send a message with payload TRUE on the first pin and FALSE on second pin, independently from the msg input.</br> | - NEW: Simple Output node. The pourpose of this node is to send a message with payload TRUE on the first pin and FALSE on second pin, independently from the msg input.</br> |
| You can also set the default values of the topic inputs. | You can also set the default values of the topic inputs. | ||||
| ## CONFIGURATION | |||||
| ### CONFIGURATION | |||||
| **Number of different topics to evaluate** | **Number of different topics to evaluate** | ||||
| </code> | </code> | ||||
| </details> | </details> | ||||
| # INJECT ULTIMATE | |||||
| The pourpose of this node is to send a message with payload TRUE on the first pin, FALSE on second pin and a TOGGLE (true/false) on the third pin, by pressing the pushbutton.<br /> | |||||
| This is useful if you need to simply test your flow. The node is simpler as the default node-red inject node. | |||||
| <img src='https://raw.githubusercontent.com/Supergiovane/node-red-contrib-boolean-logic-ultimate/master/img/Inject.png' width='60%'> | |||||
| <details><summary>CLICK HERE, copy and paste it into your flow</summary> | |||||
| <code> | |||||
| [{"id":"13faaec9.cd80b9","type":"InjectUltimate","z":"81a64dae.012c18","name":"True","x":110,"y":1000,"wires":[["6557d19.c71abb"],[],[]]},{"id":"6557d19.c71abb","type":"debug","z":"81a64dae.012c18","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":370,"y":1080,"wires":[]},{"id":"569b3820.b056e8","type":"InjectUltimate","z":"81a64dae.012c18","name":"False","x":110,"y":1080,"wires":[[],["6557d19.c71abb"],[]]},{"id":"189399f.c384f66","type":"InjectUltimate","z":"81a64dae.012c18","name":"Toggle","x":110,"y":1160,"wires":[[],[],["6557d19.c71abb"]]},{"id":"56119644.8c4bf8","type":"comment","z":"81a64dae.012c18","name":"Inject Ultimate. Simple and efficient.","info":"","x":180,"y":940,"wires":[]}] | |||||
| </code> | |||||
| </details> | |||||
| [license-image]: https://img.shields.io/badge/license-MIT-blue.svg | [license-image]: https://img.shields.io/badge/license-MIT-blue.svg | ||||
| [license-url]: https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate/master/LICENSE | [license-url]: https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate/master/LICENSE | ||||
| [npm-url]: https://npmjs.org/package/node-red-contrib-boolean-logic-ultimate | [npm-url]: https://npmjs.org/package/node-red-contrib-boolean-logic-ultimate |
| <script type="text/javascript"> | |||||
| RED.nodes.registerType('InjectUltimate', { | |||||
| category: 'boolean logic ultimate', | |||||
| color: '#ff8080', | |||||
| defaults: { | |||||
| name: { | |||||
| value: "Inject", | |||||
| }, | |||||
| curVal: { | |||||
| value: true, | |||||
| } | |||||
| }, | |||||
| inputs: 0, | |||||
| outputs: 3, | |||||
| outputLabels: ["True", "False", "Toggle"], | |||||
| icon: "inject.svg", | |||||
| button: { | |||||
| onclick: function () { | |||||
| // Called when the button is clicked | |||||
| if (this.changed) { | |||||
| return RED.notify(RED._("notification.warning", { message: RED._("notification.warnings.undeployedChanges") }), "warning"); | |||||
| } | |||||
| var node = this; | |||||
| $.ajax({ | |||||
| url: "InjectUltimate/" + this.id, | |||||
| type: "POST", | |||||
| success: function (resp) { | |||||
| RED.notify(node._("inject.success", { label: label }), { type: "success", id: "inject" }); | |||||
| }, | |||||
| error: function (jqXHR, textStatus, errorThrown) { | |||||
| if (jqXHR.status == 404) { | |||||
| RED.notify(node._("common.notification.error", { message: node._("common.notification.errors.not-deployed") }), "error"); | |||||
| } else if (jqXHR.status == 500) { | |||||
| RED.notify(node._("common.notification.error", { message: node._("inject.errors.failed") }), "error"); | |||||
| } else if (jqXHR.status == 0) { | |||||
| RED.notify(node._("common.notification.error", { message: node._("common.notification.errors.no-response") }), "error"); | |||||
| } else { | |||||
| RED.notify(node._("common.notification.error", { message: node._("common.notification.errors.unexpected", { status: jqXHR.status, message: textStatus }) }), "error"); | |||||
| } | |||||
| } | |||||
| }); | |||||
| }, | |||||
| enabled: function () { | |||||
| return !this.changed | |||||
| } | |||||
| }, | |||||
| label: | |||||
| function () { | |||||
| return this.name || "Inject"; | |||||
| }, | |||||
| paletteLabel: function () { | |||||
| return "InjectUltimate"; | |||||
| } | |||||
| }); | |||||
| </script> | |||||
| <script type="text/x-red" data-template-name="InjectUltimate"> | |||||
| <div class="form-row"> | |||||
| <label for="node-input-name"><i class="icon-tag"></i> Name</label> | |||||
| <input type="text" id="node-input-name" placeholder="Name"> | |||||
| </div> | |||||
| <div class="form-row"> | |||||
| <label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label> | |||||
| <input type="text" id="node-input-topic" placeholder="Topic"> | |||||
| </div> | |||||
| </script> | |||||
| <script type="text/x-red" data-help-name="InjectUltimate"> | |||||
| <p> | |||||
| <a href="https://www.paypal.me/techtoday" target="_blank"><img src='https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square' width='30%'></a> | |||||
| and | |||||
| <a href="http://eepurl.com/gJm095" target="_blank">Subscribe to my channel</a> for news about my nodes. | |||||
| </p> | |||||
| <p>This node sends TRUE on output 1, FALSE on putput 2 and a TOGGLED value (true/false) on output 3, on every click of the button.<br/> | |||||
| The status indicator represents the output value. | |||||
| </p> | |||||
| <a href="https://www.paypal.me/techtoday" target="_blank"><img src='https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square' width='30%'></a> | |||||
| </script> |
| module.exports = function (RED) { | |||||
| function InjectUltimate(config) { | |||||
| RED.nodes.createNode(this, config); | |||||
| this.config = config; | |||||
| var node = this; | |||||
| node.curVal = true; | |||||
| node.topic = config.topic || "Inject"; | |||||
| setNodeStatus({ fill: "grey", shape: "dot", text: "Waiting" }); | |||||
| RED.httpAdmin.post("/InjectUltimate/:id", RED.auth.needsPermission("InjectUltimate.write"), function (req, res) { | |||||
| var node = RED.nodes.getNode(req.params.id); | |||||
| if (node != null) { | |||||
| try { | |||||
| node.buttonpressed(); | |||||
| res.sendStatus(200); | |||||
| } catch (err) { | |||||
| res.sendStatus(500); | |||||
| node.error(RED._("InjectUltimate.failed", { error: err.toString() })); | |||||
| } | |||||
| } else { | |||||
| res.sendStatus(404); | |||||
| } | |||||
| }); | |||||
| // 29/08/2020 triggered by button press | |||||
| node.buttonpressed = () => { | |||||
| setNodeStatus({ fill: "green", shape: "dot", text: "Sent true/false/" + node.curVal.toString() + " (next " + (!node.curVal).toString() + ")" }); | |||||
| var msgTrue = { payload: true, topic: node.topic }; | |||||
| var msgFalse = { payload: false, topic: node.topic }; | |||||
| var msgToggled = { payload: node.curVal, topic: node.topic }; | |||||
| node.curVal = !node.curVal; | |||||
| node.send([msgTrue, msgFalse, msgToggled]); | |||||
| } | |||||
| function setNodeStatus({ fill, shape, text }) { | |||||
| var dDate = new Date(); | |||||
| node.status({ fill: fill, shape: shape, text: text + " (" + dDate.getDate() + ", " + dDate.toLocaleTimeString() + ")" }) | |||||
| } | |||||
| } | |||||
| RED.nodes.registerType("InjectUltimate", InjectUltimate); | |||||
| } |
| <a href="http://eepurl.com/gJm095" target="_blank">Subscribe to my channel</a> for news about my nodes. | <a href="http://eepurl.com/gJm095" target="_blank">Subscribe to my channel</a> for news about my nodes. | ||||
| </p> | </p> | ||||
| <p>A node that emits the inverted input value.<br/> | |||||
| The status indicator represents the output value. | |||||
| <p>This node replaces the input payload by sendind a message with payload TRUE on output 1 and FALSE on output 2.<br/> | |||||
| </p> | </p> | ||||
| <a href="https://www.paypal.me/techtoday" target="_blank"><img src='https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square' width='30%'></a> | <a href="https://www.paypal.me/techtoday" target="_blank"><img src='https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square' width='30%'></a> | ||||
| { | { | ||||
| "name": "node-red-contrib-boolean-logic-ultimate", | "name": "node-red-contrib-boolean-logic-ultimate", | ||||
| "version": "1.0.19", | |||||
| "version": "1.0.20", | |||||
| "description": "A set of Node-RED enhanced boolean logic node, flow interruption node, blinker node, invert node, filter node, with persisten values after reboot and more.", | "description": "A set of Node-RED enhanced boolean logic node, flow interruption node, blinker node, invert node, filter node, with persisten values after reboot and more.", | ||||
| "author": "Supergiovane (https://github.com/Supergiovane)", | "author": "Supergiovane (https://github.com/Supergiovane)", | ||||
| "dependencies": { | "dependencies": { | ||||
| "FilterUltimate": "boolean-logic-ultimate/FilterUltimate.js", | "FilterUltimate": "boolean-logic-ultimate/FilterUltimate.js", | ||||
| "InterruptFlowUltimate": "boolean-logic-ultimate/InterruptFlowUltimate.js", | "InterruptFlowUltimate": "boolean-logic-ultimate/InterruptFlowUltimate.js", | ||||
| "BlinkerUltimate": "boolean-logic-ultimate/BlinkerUltimate.js", | "BlinkerUltimate": "boolean-logic-ultimate/BlinkerUltimate.js", | ||||
| "SimpleOutputUltimate": "boolean-logic-ultimate/SimpleOutputUltimate.js" | |||||
| "SimpleOutputUltimate": "boolean-logic-ultimate/SimpleOutputUltimate.js", | |||||
| "InjectUltimate": "boolean-logic-ultimate/InjectUltimate.js" | |||||
| } | } | ||||
| } | } |