mirror of
https://github.com/node-red/node-red-nodes.git
synced 2023-10-10 13:36:58 +02:00
Let RBE node handle multiple msg.topic at the same time.
This commit is contained in:
parent
04f43851e5
commit
3f08764dd4
@ -18,6 +18,9 @@ Usage
|
|||||||
A simple node to provide report by exception (RBE) and deadband function
|
A simple node to provide report by exception (RBE) and deadband function
|
||||||
- only passes on data if it has changed.
|
- only passes on data if it has changed.
|
||||||
|
|
||||||
|
This works on a per **msg.topic** basis. This means that a single rbe node can
|
||||||
|
handle multiple topics at the same time.
|
||||||
|
|
||||||
###RBE mode
|
###RBE mode
|
||||||
|
|
||||||
Outputs the **msg** if the **msg.payload** is different to the previous one.
|
Outputs the **msg** if the **msg.payload** is different to the previous one.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "node-red-node-rbe",
|
"name" : "node-red-node-rbe",
|
||||||
"version" : "0.0.4",
|
"version" : "0.0.5",
|
||||||
"description" : "A Node-RED node that provides report-by-exception (RBE) and deadband capability.",
|
"description" : "A Node-RED node that provides report-by-exception (RBE) and deadband capability.",
|
||||||
"dependencies" : {
|
"dependencies" : {
|
||||||
},
|
},
|
||||||
|
@ -38,6 +38,8 @@
|
|||||||
different to the previous one. Works on numbers and strings.</p>
|
different to the previous one. Works on numbers and strings.</p>
|
||||||
<p>In <b>deadband</b> mode the incoming payload should contain a parseable <i>number</i> and is
|
<p>In <b>deadband</b> mode the incoming payload should contain a parseable <i>number</i> and is
|
||||||
output only if greater than + or - the <i>band gap</i> away from the previous output.</p>
|
output only if greater than + or - the <i>band gap</i> away from the previous output.</p>
|
||||||
|
<p><b>Note:</b> This works on a per <b>msg.topic</b> basis. This means that a single rbe node can
|
||||||
|
handle multiple topics at the same time.</p>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
@ -23,21 +23,22 @@ module.exports = function(RED) {
|
|||||||
this.gap = n.gap || 0;
|
this.gap = n.gap || 0;
|
||||||
var node = this;
|
var node = this;
|
||||||
|
|
||||||
var previous = null;
|
node.previous = {};
|
||||||
this.on("input",function(msg) {
|
this.on("input",function(msg) {
|
||||||
if (msg.hasOwnProperty("payload")) {
|
if (msg.hasOwnProperty("payload")) {
|
||||||
|
var t = msg.topic || "_no_topic";
|
||||||
if (this.func === "rbe") {
|
if (this.func === "rbe") {
|
||||||
if (msg.payload != previous) {
|
if (msg.payload != node.previous[t]) {
|
||||||
previous = msg.payload;
|
node.previous[t] = msg.payload;
|
||||||
node.send(msg);
|
node.send(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var n = parseFloat(msg.payload);
|
var n = parseFloat(msg.payload);
|
||||||
if (!isNaN(n)) {
|
if (!isNaN(n)) {
|
||||||
if (previous == null) { previous = n - node.gap; }
|
if (!node.previous.hasOwnProperty(t)) { node.previous[t] = n - node.gap; }
|
||||||
if (Math.abs(n - previous) >= node.gap) {
|
if (Math.abs(n - node.previous[t]) >= node.gap) {
|
||||||
previous = n;
|
node.previous[t] = n;
|
||||||
node.send(msg);
|
node.send(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user