node-red-contrib-boolean-logic-ultimate 1.0.60 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
 
4
4
  # CHANGELOG
5
5
 
6
+ <p>
7
+ <b>Version 1.0.62</b> August 2023<br/>
8
+ - Math node: added "subtract option".</br>
9
+ </p>
10
+ <p>
11
+ <b>Version 1.0.61</b> Juli 2023<br/>
12
+ - Standardization of the help, based on Node-Red directives.</br>
13
+ - Updated the README</br>
14
+ </p>
6
15
  <p>
7
16
  <b>Version 1.0.60</b> March 2023<br/>
8
17
  - FIX: Fixed some little issues to the Railways Node and fixed the youtube video not having audio https://youtu.be/iPVyiwDIUMg.
package/README.md CHANGED
@@ -84,7 +84,7 @@ The node can convert arbitrary input values to true/false. It supports Homeassis
84
84
  |Property|Description|
85
85
  |--|--|
86
86
  | Inputs count | Set the number of different topics to be evaluated. The node will output a message to the flow, after this number of *different* topics arrives. *Remember: each input topic must be different. For example, if you set this field to 3, the node expects 3 different topics.* |
87
- | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
87
+ | Evaluate | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
88
88
  | Filter output | **Output both 'true' and 'false'** results: Standard behaviour, the node will output <b>true</b> and <b>false</b> whenever it receives an input and calculate the boolean logics as output. **Output only 'true'** results: whenever the node receives an input, it outputs a payload <b>true</b> only if the result of the logic is true. <b>False</b> results are filtered out. |
89
89
  | Trigger mode | **All topics**: standard behaviour, the node will evaluate each input topic and ouputs the values. At each input change, it will output a msg on the flow. **Single topic + eval other inputs**: the node evaluates all the input topics, but only whenever it receives a msg input with the **specified topic**, it outputs a msg to the flow.|
90
90
  | If input states are undefined | Every time you create a node or modify the node, all inputs are set to undefined. This means that the node will wait the arrive of all topics (for example 3 topics, if you've selected 3 topics in the option), before it can output a payload. This can be a problem if your logic must be operative as soon as you deploy the flow. To overcome this problem, you can "initialize" all the undefined inputs with True or False. **Leave undefined**: Standard behaviour, the node will wait all the "undefined" topics to arrive, then starts a flow with the result. **True or False**: The node is immediately operative, by force the initialization of the "undefined" inputs with "true" or "false".|
@@ -82,10 +82,7 @@
82
82
  </script>
83
83
 
84
84
  <script type="text/markdown" data-help-name="BlinkerUltimate">
85
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
86
-
87
- [Find it useful?](https://www.paypal.me/techtoday)
88
-
85
+ <p>The pourpose of this node is to blink a led, a light, or anything you like.</p>
89
86
 
90
87
  |Property|Description|
91
88
  |--|--|
@@ -93,9 +90,17 @@
93
90
 
94
91
  <br/>
95
92
 
93
+ * Input message
96
94
 
97
95
  Pass <code>msg.payload = true</code> to start blinking</br>
98
96
  Pass <code>msg.payload = false</code> to stop blinking</br>
99
97
  Pass <code>msg.interval = 2000</code> to change the blinking interval</br>
100
98
 
99
+ <br/>
100
+ <br/>
101
+
102
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
103
+
104
+ [Find it useful?](https://www.paypal.me/techtoday)
105
+
101
106
  </script>
@@ -109,6 +109,8 @@
109
109
  this.sInitializeWith = "WaitForPayload";
110
110
  }
111
111
 
112
+ $("#tabs").tabs();
113
+
112
114
  },
113
115
  oneditsave: function () {
114
116
  // Delete persistent state file
@@ -119,7 +121,7 @@
119
121
 
120
122
  </script>
121
123
 
122
- <script type="text/x-red" data-template-name="BooleanLogicUltimate">
124
+ <script type="text/html" data-template-name="BooleanLogicUltimate">
123
125
  <div class="form-row">
124
126
  <b>Boolean Logic Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
125
127
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/6En2WiWKsXM"><u>Youtube Sample</u></a></span>
@@ -127,81 +129,105 @@
127
129
  <br/>
128
130
  </div>
129
131
 
130
- <div class="form-row">
131
- <label for="node-input-inputCount"><i class="fa fa-step-forward"></i> Inputs count</label>
132
- <input style="width:100px" type="text" id="node-input-inputCount" placeholder="Inputs count, for example: 2">
133
- </div>
134
- <div class="form-tips" style="margin-top: 8px;text-align:center">Inputs count: each incoming msg.topic represents one input.</div>
135
- <br/>
136
- <div class="form-row">
137
- <label for="node-input-name"><i class="icon-tag"></i> Name</label>
138
- <input type="text" id="node-input-name" placeholder="Name">
139
- </div>
140
- <div class="form-row">
141
- <label for="node-input-payloadPropName"><i class="fa fa-ellipsis-h"></i> Input</label>
142
- <input type="text" id="node-input-payloadPropName">
143
- </div>
144
- <div class="form-row">
145
- <label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
146
- <input type="text" id="node-input-topic" placeholder="Node's own topic">
147
- </div>
148
- <div class="form-row">
149
- <label for="node-input-filtertrue"><i class="fa fa-filter"></i> Filter output</label>
150
- <select type="text" id="node-input-filtertrue" placeholder="Filter">
151
- <option value="both">Output both 'true' and 'false' results</option>
152
- <option value="onlytrue">Output only 'true' results</option>
153
- </select>
154
- </div>
155
- <div class="form-row">
156
- <label for="node-input-outputtriggeredby"><i class="fa fa-filter"></i> Trigger mode</label>
157
- <select type="text" id="node-input-outputtriggeredby" placeholder="Event">
158
- <option value="all">All topics (will output a result whenever an input msg arrives)</option>
159
- <option value="onlyonetopic">Single topic (still evaluates all inputs, but will output a result only if a specified topic arrives)</option>
160
- </select>
161
- </div>
162
- <div class="form-row" id="triggertopic">
163
- <label for="node-input-triggertopic"><i class="fa fa-tasks"></i> Topic that start boolean logic evaluation</label>
164
- <input type="text" id="node-input-triggertopic" placeholder="Input topic">
132
+ <div id="tabs">
133
+ <ul>
134
+ <li><a href="#fragment-1">Basic configuration</a></li>
135
+ <li><a href="#fragment-2">Advanced configuration</a></li>
136
+ </ul>
137
+ <div id="fragment-1">
138
+ <p>
139
+ <div class="form-row">
140
+ <label for="node-input-inputCount"><i class="fa fa-step-forward"></i> Inputs count</label>
141
+ <input style="width:100px" type="text" id="node-input-inputCount" placeholder="Inputs count, for example: 2">
142
+ </div>
143
+ <div class="form-row">
144
+ <label for="node-input-payloadPropName"><i class="fa fa-ellipsis-h"></i> Evaluate</label>
145
+ <input type="text" id="node-input-payloadPropName">
146
+ </div>
147
+ <div class="form-row">
148
+ <label for="node-input-name"><i class="icon-tag"></i> Name</label>
149
+ <input type="text" id="node-input-name" placeholder="Name">
150
+ </div>
151
+ <div class="form-row">
152
+ <label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
153
+ <input type="text" id="node-input-topic" placeholder="Node's own topic">
154
+ </div>
155
+ </p>
165
156
  </div>
166
- <div class="form-row">
167
- <label style="width:250px" for="node-input-sInitializeWith"><i class="fa fa-home"></i> If input states are undefined at boot</label>
168
- <select style="width:170px" type="text" id="node-input-sInitializeWith" placeholder="">
169
- <option value="WaitForPayload">Leave undefined</option>
170
- <option value="false">Initialize all with False</option>
171
- <option value="true">Initialize all with True</option>
172
- </select>
173
- </div>
174
- <div class="form-row">
175
- <i class="fa fa-floppy-o"></i> &nbsp
176
- <input type="checkbox" id="node-input-persist" style="display:inline-block; width:auto; vertical-align:top;">
177
- &nbsp<label style="width:auto" for="node-input-persist"> Remember latest input values after reboot</label>
178
- </div>
179
- <div class="form-row">
180
- <i class="fa fa-gavel"></i>&nbsp
181
- <input type="checkbox" id="node-input-restrictinputevaluation" style="display:inline-block; width:auto; vertical-align:top;">
182
- &nbsp<label style="width:auto" for="node-input-restrictinputevaluation"> Reject non boolean (true/false) input values</label>
183
- </div>
184
- <div class="form-row">
185
- <label style="width:160px" for="node-input-delayEvaluation"><i class="fa fa-hourglass-o"></i> Delay evaluation (ms)</label>
186
- <input style="width:150px" type="text" id="node-input-delayEvaluation" placeholder="Set 0 for no delay">
157
+ <div id="fragment-2">
158
+ <p>
159
+ <div class="form-row">
160
+ <label for="node-input-filtertrue"><i class="fa fa-filter"></i> Filter output</label>
161
+ <select type="text" id="node-input-filtertrue" placeholder="Filter">
162
+ <option value="both">Output both 'true' and 'false' results</option>
163
+ <option value="onlytrue">Output only 'true' results</option>
164
+ </select>
165
+ </div>
166
+ <div class="form-row">
167
+ <label for="node-input-outputtriggeredby"><i class="fa fa-filter"></i> Trigger mode</label>
168
+ <select type="text" id="node-input-outputtriggeredby" placeholder="Event">
169
+ <option value="all">All topics (will output a result whenever an input msg arrives)</option>
170
+ <option value="onlyonetopic">Single topic (still evaluates all inputs, but will output a result only if a
171
+ specified topic arrives)</option>
172
+ </select>
173
+ </div>
174
+ <div class="form-row" id="triggertopic">
175
+ <label for="node-input-triggertopic"><i class="fa fa-tasks"></i> Topic that start boolean logic evaluation</label>
176
+ <input type="text" id="node-input-triggertopic" placeholder="Input topic">
177
+ </div>
178
+ <div class="form-row">
179
+ <label style="width:250px" for="node-input-sInitializeWith"><i class="fa fa-home"></i> If input states are undefined
180
+ at boot</label>
181
+ <select style="width:170px" type="text" id="node-input-sInitializeWith" placeholder="">
182
+ <option value="WaitForPayload">Leave undefined</option>
183
+ <option value="false">Initialize all with False</option>
184
+ <option value="true">Initialize all with True</option>
185
+ </select>
186
+ </div>
187
+ <div class="form-row">
188
+ <i class="fa fa-floppy-o"></i> &nbsp
189
+ <input type="checkbox" id="node-input-persist" style="display:inline-block; width:auto; vertical-align:top;">
190
+ &nbsp<label style="width:auto" for="node-input-persist"> Remember latest input values after reboot</label>
191
+ </div>
192
+ <div class="form-row">
193
+ <i class="fa fa-gavel"></i>&nbsp
194
+ <input type="checkbox" id="node-input-restrictinputevaluation"
195
+ style="display:inline-block; width:auto; vertical-align:top;">
196
+ &nbsp<label style="width:auto" for="node-input-restrictinputevaluation"> Reject non boolean (true/false) input
197
+ values</label>
198
+ </div>
199
+ <div class="form-row">
200
+ <label style="width:160px" for="node-input-delayEvaluation"><i class="fa fa-hourglass-o"></i> Delay evaluation
201
+ (ms)</label>
202
+ <input style="width:150px" type="text" id="node-input-delayEvaluation" placeholder="Set 0 for no delay">
203
+ </div>
204
+ </p>
187
205
  </div>
188
206
 
207
+ </div>
189
208
  <br/>
190
209
  <br/>
191
210
  <br/>
192
211
  </script>
193
212
 
194
213
  <script type="text/markdown" data-help-name="BooleanLogicUltimate">
195
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
214
+ <p>This node does a boolean logic evaluation and outputs a result. It's compatible with the HomeAssistant's output nodes.</p>
215
+
216
+ **Basic Configuration**
196
217
 
197
- [Find it useful?](https://www.paypal.me/techtoday)
198
-
199
218
  |Property|Description|
200
219
  |--|--|
201
220
  | Inputs count | Set the number of different topics to be evaluated. The node will output a message to the flow, after this number of *different* topics arrives. *Remember: each input topic must be different. For example, if you set this field to 3, the node expects 3 different topics.* |
202
- | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
221
+ | Evaluate | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
222
+
223
+ <br/>
224
+
225
+ **Advanced Configuration**
226
+
227
+ |Property|Description|
228
+ |--|--|
203
229
  | Filter output | **Output both 'true' and 'false'** results: Standard behaviour, the node will output <b>true</b> and <b>false</b> whenever it receives an input and calculate the boolean logics as output. **Output only 'true'** results: whenever the node receives an input, it outputs a payload <b>true</b> only if the result of the logic is true. <b>False</b> results are filtered out. |
204
- | Trigger mode | **All topics**: standard behaviour, the node will evaluate each input topic and ouputs the values. At each input change, it will output a msg on the flow. **Single topic + eval other inputs**: the node evaluates all the input topics, but only whenever it receives a msg input with the **specified topic**, it outputs a msg to the flow.|
230
+ | Trigger mode | **All topics** is the standard behaviour, the node will evaluate each input topic and ouputs the values. At each input change, it will output a msg on the flow. **Single topic + eval other inputs**: the node evaluates all the input topics, but only whenever it receives a msg input with the **specified topic**, it outputs a msg to the flow.|
205
231
  | If input states are undefined | Every time you create a node or modify the node, all inputs are set to undefined. This means that the node will wait the arrive of all topics (for example 3 topics, if you've selected 3 topics in the option), before it can output a payload. This can be a problem if your logic must be operative as soon as you deploy the flow. To overcome this problem, you can "initialize" all the undefined inputs with True or False. **Leave undefined**: Standard behaviour, the node will wait all the "undefined" topics to arrive, then starts a flow with the result. **True or False**: The node is immediately operative, by force the initialization of the "undefined" inputs with "true" or "false".|
206
232
  | Remember latest input values after reboot | If checked, the input values are retained after a node-red reboot. That means, that if you reboot your node-red, you don't need to wait all inputs to arrive and initialize the node, before the node can output a payload. Every time you modify the node's config, <b>the retained values are cleared</b>.|
207
233
  | Reject non boolean (true/false) input values | If checked, the node will accept only boolean true/false values. Otherwise, it will try to convert the payload value to a logic true/false boolean. |
@@ -214,4 +240,12 @@
214
240
  | msg.reset = true | Resets all saved input values to undefined |
215
241
  | msg.inputcount | Changes the inputs count property. For example, <b>msg.inputcount = 3</b> Whenever you lower the inputcount from a higher number to a lower one, for example from 3 to 2, it's suggested to do a <b>msg.reset=true</b> to reset all stored input values.|
216
242
 
243
+ <br/>
244
+ <br/>
245
+
246
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
247
+
248
+ [Find it useful?](https://www.paypal.me/techtoday)
249
+ <br/>
250
+
217
251
  </script>
@@ -56,18 +56,21 @@
56
56
  </script>
57
57
 
58
58
  <script type="text/markdown" data-help-name="FilterUltimate">
59
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
59
+ <p>This node filters the input msg by *true* and *false*<p>
60
60
 
61
- [Find it useful?](https://www.paypal.me/techtoday)
62
61
 
63
62
  This node has 2 outputs.<br />
64
- If the input payload is true, the node will send <code>true</code> on output 1 and nothing on output 2<br />
65
- If the input payload is false, the node will send nothing on output 1 and <code>false</code> on output 2<br />
66
- The input message is preserved and passed to the output, changing only the topic and the payload. If the input message has it's own topic, it'll be preserved as well.<br/>
63
+ If the input payload is true, the node will send <code>true</code> on output 1 and nothing on output 2 <br/>
64
+ If the input payload is false, the node will send nothing on output 1 and <code>false</code> on output 2 <br/>
65
+ The input message is preserved and passed to the output, changing only the topic and the payload. If the input message has it's own topic, it'll be preserved as well. <br/>
67
66
 
68
67
  |Property|Description|
69
68
  |--|--|
70
69
  | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
71
70
 
71
+ <br/>
72
72
 
73
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
74
+
75
+ [Find it useful?](https://www.paypal.me/techtoday)
73
76
  </script>
@@ -50,7 +50,7 @@
50
50
 
51
51
  </script>
52
52
 
53
- <script type="text/x-red" data-template-name="ImpulseUltimate">
53
+ <script type="text/html" data-template-name="ImpulseUltimate">
54
54
  <div class="form-row">
55
55
  <b>Impulse Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
56
56
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/PdLEWtKsNv8"><u>Youtube Sample</u></a></span>
@@ -82,17 +82,16 @@
82
82
  </script>
83
83
 
84
84
  <script type="text/markdown" data-help-name="ImpulseUltimate">
85
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
86
-
87
- [Find it useful?](https://www.paypal.me/techtoday)
85
+ <p>The pourpose of this node is to send a sequence of pulsed commands to for example, open a garage door or to command an appliance requiring a set of timed commands.</p>
88
86
 
89
- The pourpose of this node is to send a sequence of pulsed commands to for example, open a garage door or to command an appliance requiring a set of timed commands.<br />
87
+ **Configuration**
90
88
 
91
89
  |Property|Description|
92
90
  |--|--|
93
91
  | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
94
92
 
95
- **Avaiable Commands**<br />
93
+ * Avaiable Commands
94
+
96
95
  Commands are to be wrote in the format: command:value. For example ***send:200***, ***wait:2000***. Each row represents a command.<br />
97
96
  <br /><b>send</b><br />
98
97
  sends a value. For example: ***send:true*** or ***send:100*** or ***send:Hello***<br />
@@ -106,8 +105,15 @@ comment. For example: ***// This opens the garage***. The comment are ignored, s
106
105
 
107
106
  Pass <code>msg.payload = true</code> to the node to start the sequence</br>
108
107
  Pass <code>msg.payload = false</code> to the node to stop the running sequence</br>
109
- <br />
108
+ <br/>
110
109
 
111
110
  - Output: the node outputs a message you specified in the command textbox<br/>
112
111
 
112
+ <br/>
113
+ <br/>
114
+
115
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
116
+
117
+ [Find it useful?](https://www.paypal.me/techtoday)
118
+
113
119
  </script>
@@ -77,12 +77,15 @@
77
77
  </script>
78
78
 
79
79
  <script type="text/markdown" data-help-name="InjectUltimate">
80
+ <p>The pourpose of this node is to send a message with payload TRUE on the first output, FALSE on second output and a TOGGLE (true/false) on the third output, by pressing the pushbutton.</p>
81
+
82
+ This is useful if you need to simply test your flow.
83
+
80
84
 
81
85
  [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
82
86
 
83
87
  [Find it useful?](https://www.paypal.me/techtoday)
84
88
 
85
- The pourpose of this node is to send a message with payload TRUE on the first output, FALSE on second output and a TOGGLE (true/false) on the third output, by pressing the pushbutton.<br />
86
- This is useful if you need to simply test your flow.
89
+
87
90
 
88
91
  </script>
@@ -87,13 +87,9 @@
87
87
  </script>
88
88
 
89
89
  <script type="text/markdown" data-help-name="InterruptFlowUltimate">
90
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
91
-
92
- [Find it useful?](https://www.paypal.me/techtoday)
93
-
94
- The interrupt flows is able to stop the input messages to exiting the node.
90
+ <p>The interrupt flows is able to stop the input messages to exiting the node.</p>
95
91
 
96
- ### NODE CONFIGURATION
92
+ **Configuration**
97
93
 
98
94
  |Property|Description|
99
95
  |--|--|
@@ -101,11 +97,21 @@ The interrupt flows is able to stop the input messages to exiting the node.
101
97
  | With Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
102
98
  | Then | This property, allow you to auto toggle the selected start state (pass or block) after a timer has elapsed. You can choose from some pre-defined delays. If you have, for example, an Homekit-Bridged nodeset with a thermostat node or security system node in your flow, once node-red restarts, these homekit nodes output a default message to the flow. Just put an InterruptFlow node with a "block at start" behaviour and a toggle delay enabled behind homekit nodes, to temporary stop the chained nodes to receive the unwanted startup message.|
103
99
 
104
- **INPUT MSG WITH "TRIGGER" TOPIC**
100
+ <br/>
101
+
102
+ * Input messages
103
+
104
+ Explanation of the input msg, having the <code>msg.topic</code> equal to the *Trigger by topic* property:
105
105
 
106
106
  Pass <code>msg.payload = true</code> to allow messages to pass through</br>
107
107
  Pass <code>msg.payload = false</code> to prevent messages from passing through</br>
108
- Pass <code>msg.play = true</code> from a message having the "trigger" topic, to replay the last stored message</br>
109
- Pass <code>msg.reset = true</code> from a message having the "trigger" topic, to clear the last stored message</br>
108
+ Pass <code>msg.play = true</code> to replay the last stored message</br>
109
+ Pass <code>msg.reset = true</code> to clear the last stored message</br>
110
+
111
+ <br/>
112
+ <br/>
113
+
114
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
115
+ [Find it useful?](https://www.paypal.me/techtoday)
110
116
 
111
117
  </script>
@@ -43,16 +43,18 @@
43
43
  </script>
44
44
 
45
45
  <script type="text/markdown" data-help-name="InvertUltimate">
46
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
47
-
48
- [Find it useful?](https://www.paypal.me/techtoday)
46
+ <p>Outputs the inverted input.</p>
49
47
 
50
- Outputs the inverted input. For example true -> false<br />
51
48
  The input message is preserved and passed to the output, changing only the topic and the payload. If the input message has it's own topic, it'll be preserved as well.<br/>
52
49
 
53
50
  |Property|Description|
54
51
  |--|--|
55
52
  | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
56
53
 
54
+ <br/>
55
+
56
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
57
+
58
+ [Find it useful?](https://www.paypal.me/techtoday)
57
59
 
58
60
  </script>
@@ -39,7 +39,7 @@
39
39
  });
40
40
  </script>
41
41
 
42
- <script type="text/x-red" data-template-name="RailwaySwitchUltimate">
42
+ <script type="text/html" data-template-name="RailwaySwitchUltimate">
43
43
  <div class="form-row">
44
44
  <b>Railway Switch Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
45
45
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/iPVyiwDIUMg"><u>Youtube Sample</u></a></span>
@@ -88,11 +88,7 @@
88
88
  </script>
89
89
 
90
90
  <script type="text/markdown" data-help-name="RailwaySwitchUltimate">
91
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
92
-
93
- [Find it useful?](https://www.paypal.me/techtoday)
94
-
95
- The railway switcher, switches the input msg flow to one ot the two outputs (upper or lower).
91
+ <p>The railway switcher, switches the input msg flow to one ot the two outputs (upper or lower).</p>
96
92
 
97
93
  |Property|Description|
98
94
  |--|--|
@@ -100,10 +96,17 @@ The railway switcher, switches the input msg flow to one ot the two outputs (upp
100
96
  | With Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
101
97
  | Then | This property, allow you to auto toggle the selected start state after some time. |
102
98
 
103
- **INPUT MSG WITH "TRIGGER" TOPIC**
99
+ * Input messages
100
+
101
+ Explanation of the input msg, having the <code>msg.topic</code> equal to the *Switcher by topic* property:
104
102
 
105
103
  Pass <code>msg.payload = false</code> switches the msg input to the UPPER output</br>
106
104
  Pass <code>msg.payload = true</code> switches the msg input to the LOWER output</br>
107
105
 
106
+ <br/>
107
+
108
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
109
+
110
+ [Find it useful?](https://www.paypal.me/techtoday)
108
111
 
109
112
  </script>
@@ -33,7 +33,7 @@
33
33
  });
34
34
  </script>
35
35
 
36
- <script type="text/x-red" data-template-name="SimpleOutputUltimate">
36
+ <script type="text/html" data-template-name="SimpleOutputUltimate">
37
37
  <div class="form-row">
38
38
  <b>Simple Output Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
39
39
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/tCKolVculuw"><u>Youtube Sample</u></a></span>
@@ -47,16 +47,18 @@
47
47
  </script>
48
48
 
49
49
  <script type="text/markdown" data-help-name="SimpleOutputUltimate">
50
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
51
-
52
- [Find it useful?](https://www.paypal.me/techtoday)
50
+ <p>The pourpose of this node is to send a message with payload TRUE on the first output and FALSE on second output, independently from the msg input.</p>
53
51
 
54
- The pourpose of this node is to send a message with payload TRUE on the first output and FALSE on second output, independently from the msg input.<br />
55
52
  This is useful if you need to simply send a true or false payload.
56
53
 
57
54
  |Property|Description|
58
55
  |--|--|
59
56
  | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
60
57
 
58
+ <br/>
59
+
60
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
61
+
62
+ [Find it useful?](https://www.paypal.me/techtoday)
61
63
 
62
64
  </script>
@@ -24,7 +24,7 @@
24
24
  });
25
25
  </script>
26
26
 
27
- <script type="text/x-red" data-template-name="StatusUltimate">
27
+ <script type="text/html" data-template-name="StatusUltimate">
28
28
  <div class="form-row">
29
29
  <b>Status Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
30
30
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/m3p06PN3rTI"><u>Youtube Sample</u></a></span>
@@ -42,14 +42,15 @@
42
42
  </script>
43
43
 
44
44
  <script type="text/markdown" data-help-name="StatusUltimate">
45
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
45
+ <p>The pourpose of this node is to show a status of the passingthrough message.<p>
46
46
 
47
- [Find it useful?](https://www.paypal.me/techtoday)
47
+ **Show msg.**
48
48
 
49
- The pourpose of this node is to show a status of the passingthrough message.<br />
49
+ Write here the property you want to get the status from. For example, "payload", "mycar.color", etc.
50
50
 
51
- **Show msg.**
51
+ <br/>
52
52
 
53
- - Write here the property you want to get the status from. For example, "payload", "mycar.color", etc.
53
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
54
54
 
55
+ [Find it useful?](https://www.paypal.me/techtoday)
55
56
  </script>
@@ -31,7 +31,7 @@
31
31
  });
32
32
  </script>
33
33
 
34
- <script type="text/x-red" data-template-name="SumUltimate">
34
+ <script type="text/html" data-template-name="SumUltimate">
35
35
  <div class="form-row">
36
36
  <b>Math Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
37
37
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/jLIbQgmRzuc"><u>Youtube Sample</u></a></span>
@@ -51,20 +51,24 @@
51
51
  <select type="text" id="node-input-math" placeholder="">
52
52
  <option value="sum">Sum</option>
53
53
  <option value="multiply">Multiply</option>
54
+ <option value="subtract">Subtract</option>
54
55
  </select>
55
56
  </div>
56
57
  </script>
57
58
 
58
59
  <script type="text/markdown" data-help-name="SumUltimate">
59
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
60
-
61
- [Find it useful?](https://www.paypal.me/techtoday)
62
-
63
- The pourpose of this node is to do maths on the incoming values. Each incoming message MUST HAVE OWN TOPIC.<br />
60
+ <p>The pourpose of this node is to do maths on the incoming values. Each incoming message MUST HAVE OWN TOPIC.</p>
64
61
 
65
62
  |Property|Description|
66
63
  |--|--|
67
- | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
64
+ | Input | Set the property where the input payload is. *By default, it is *payload*, but you can also specify other properties, for example "payload.value"* |
65
+ | Operation | Operation to be performed. |
66
+
67
+ <br/>
68
+ <br/>
69
+
70
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
71
+
72
+ [Find it useful?](https://www.paypal.me/techtoday)
68
73
 
69
-
70
74
  </script>
@@ -75,6 +75,24 @@ module.exports = function (RED) {
75
75
  msg.payload = moltiplicazione; // Sum
76
76
  msg.average = undefined; // Average
77
77
  msg.measurements = quantita; // Topics
78
+ } else if (node.math === "subtract") {
79
+ let values = []
80
+ for (let row in node.topics) {
81
+ if (node.topics.hasOwnProperty(row)) {
82
+ values.push(node.topics[row]);
83
+ }
84
+ }
85
+ function orderReverseNumbers(a, b) {
86
+ return b - a;
87
+ }
88
+ values.sort(orderReverseNumbers)
89
+ let risultato = values[0]
90
+ for (let index = 1; index < values.length; index++) {
91
+ risultato -= values[index];
92
+ }
93
+ msg.payload = risultato; // Sum
94
+ msg.average = risultato / quantita; // Average
95
+ msg.measurements = quantita; // Topics
78
96
  }
79
97
 
80
98
  // overwrite topic if configured
@@ -26,7 +26,7 @@
26
26
  });
27
27
  </script>
28
28
 
29
- <script type="text/x-red" data-template-name="toggleUltimate">
29
+ <script type="text/html" data-template-name="toggleUltimate">
30
30
  <div class="form-row">
31
31
  <b>Toggle Ultimate</b>&nbsp&nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-question-circle"></i>&nbsp<a target="_blank" href="https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate"><u>Help online</u></a></span>
32
32
  &nbsp&nbsp&nbsp<span style="color:red"><i class="fa fa-youtube-play"></i>&nbsp<a target="_blank" href="https://youtu.be/VijkMBpt_CM"><u>Youtube Sample</u></a></span>
@@ -60,17 +60,20 @@
60
60
  </script>
61
61
 
62
62
  <script type="text/markdown" data-help-name="toggleUltimate">
63
- [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
64
-
65
- [Find it useful?](https://www.paypal.me/techtoday)
66
-
67
- The pourpose of this node is to toggle between true/false, everytime an inboud message arrives.<br />
63
+ <p>The pourpose of this node is to toggle between true/false, everytime an inboud message arrives.</p>
68
64
 
69
65
  |Property|Description|
70
66
  |--|--|
71
67
  | Input | Set the property where the input payload is. *By default, it is "payload", but you can also specify other properties, for example "payload.value"* |
72
68
 
73
- **INPUT**<br />
69
+ * Input message
74
70
 
75
71
  Any message that arrives on input, will be passwd through to the output with the payload toggled between true and false.
72
+
73
+ <br/>
74
+
75
+ [SEE THE README FOR FULL HELP AND SAMPLES](https://github.com/Supergiovane/node-red-contrib-boolean-logic-ultimate)
76
+
77
+ [Find it useful?](https://www.paypal.me/techtoday)
78
+
76
79
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-boolean-logic-ultimate",
3
- "version": "1.0.60",
3
+ "version": "1.0.62",
4
4
  "description": "A set of Node-RED enhanced boolean logic and utility nodes, flow interruption, blinker, invert, filter, toggle etc.., with persistent values after reboot. Compatible also with Homeassistant values.",
5
5
  "author": "Supergiovane (https://github.com/Supergiovane)",
6
6
  "dependencies": {