mirror of
https://github.com/node-red/node-red-nodes.git
synced 2023-10-10 13:36:58 +02:00
Let RBE node be able to use any property as key (not just topic)
(not for publish until 2.0)
This commit is contained in:
parent
4bd657fcd8
commit
c890ca57d5
@ -10,7 +10,7 @@
|
|||||||
Other modes must provide a parseable number.</dd>
|
Other modes must provide a parseable number.</dd>
|
||||||
<dt class="optional">topic <span class="property-type">string</span>
|
<dt class="optional">topic <span class="property-type">string</span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>if specified the function will work on a per topic basis.</dd>
|
<dd>if specified the function will work on a per topic basis. This property can be set by configuration.</dd>
|
||||||
<dt class="optional">reset<span class="property-type">any</span></dt>
|
<dt class="optional">reset<span class="property-type">any</span></dt>
|
||||||
<dd>if set clears the stored value for the specified msg.topic, or
|
<dd>if set clears the stored value for the specified msg.topic, or
|
||||||
all topics if msg.topic is not specified.</dd>
|
all topics if msg.topic is not specified.</dd>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<p>In RBE mode this node will block until the <code>msg.payload</code>,
|
<p>In RBE mode this node will block until the <code>msg.payload</code>,
|
||||||
(or selected property) value is different to the previous one.
|
(or selected property) value is different to the previous one.
|
||||||
If required it can ignore the intial value, so as not to send anything at start.</p>
|
If required it can ignore the intial value, so as not to send anything at start.</p>
|
||||||
<p>The <a href="https://en.wikipedia.org/wiki/Deadband" target="_blank">Deadband</a> modes will block the incoming value
|
<p>The <a href="https://en.wikipedia.org/wiki/Deadband" target="_blank">Deadband</a> modes will block the incoming value
|
||||||
<i>unless</i> its change is greater or greater-equal than ± the band gap away from a previous value.</p>
|
<i>unless</i> its change is greater or greater-equal than ± the band gap away from a previous value.</p>
|
||||||
<p>The Narrowband modes will block the incoming value,
|
<p>The Narrowband modes will block the incoming value,
|
||||||
<i>if</i> its change is greater or greater-equal than ± the band gap away from the previous value.
|
<i>if</i> its change is greater or greater-equal than ± the band gap away from the previous value.
|
||||||
@ -36,6 +36,6 @@
|
|||||||
<p>Both Deadband and Narrowband allow comparison against either the previous valid output value, thus
|
<p>Both Deadband and Narrowband allow comparison against either the previous valid output value, thus
|
||||||
ignoring any values out of range, or the previous input value, which resets the set point, thus allowing
|
ignoring any values out of range, or the previous input value, which resets the set point, thus allowing
|
||||||
gradual drift (deadband), or a step change (narrowband).</p>
|
gradual drift (deadband), or a step change (narrowband).</p>
|
||||||
<p><b>Note:</b> This works on a per <code>msg.topic</code> basis.
|
<p><b>Note:</b> This works on a per <code>msg.topic</code> basis, though this can be changed to another property if desired.
|
||||||
This means that a single rbe node can handle multiple different topics at the same time.</p>
|
This means that a single rbe node can handle multiple different topics at the same time.</p>
|
||||||
</script>
|
</script>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"init": "Send initial value",
|
"init": "Send initial value",
|
||||||
"start": "Start value",
|
"start": "Start value",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"septopics": "Apply mode for each msg.topic separately"
|
"septopics": "Apply mode separately for each "
|
||||||
},
|
},
|
||||||
"placeholder":{
|
"placeholder":{
|
||||||
"bandgap": "e.g. 10 or 5%",
|
"bandgap": "e.g. 10 or 5%",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name" : "node-red-node-rbe",
|
"name" : "node-red-node-rbe",
|
||||||
"version" : "0.5.0",
|
"version" : "0.6.0",
|
||||||
"description" : "A Node-RED node that provides report-by-exception (RBE) and deadband capabilities.",
|
"description" : "A Node-RED node that provides report-by-exception (RBE) and deadband capabilities.",
|
||||||
"dependencies" : {
|
"dependencies" : {
|
||||||
},
|
},
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label> </label>
|
<label> </label>
|
||||||
<input type="checkbox" id="node-input-septopics" style="display:inline-block; width:20px; vertical-align:baseline;">
|
<input type="checkbox" id="node-input-septopics" style="display:inline-block; width:20px; vertical-align:baseline;">
|
||||||
<span data-i18n="rbe.label.septopics"></span>
|
<span data-i18n="rbe.label.septopics"></span> <input type="text" id="node-input-topi" style="width:27%;"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="rbe.label.name"></span></label>
|
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="rbe.label.name"></span></label>
|
||||||
@ -49,7 +49,8 @@
|
|||||||
start: {value:""},
|
start: {value:""},
|
||||||
inout: {value:"out"},
|
inout: {value:"out"},
|
||||||
septopics: {value:true},
|
septopics: {value:true},
|
||||||
property: {value:"payload",required:true}
|
property: {value:"payload",required:true},
|
||||||
|
topi: {value:"topic",required:true}
|
||||||
},
|
},
|
||||||
inputs:1,
|
inputs:1,
|
||||||
outputs:1,
|
outputs:1,
|
||||||
@ -69,6 +70,7 @@
|
|||||||
$("#node-input-septopics").prop('checked', true);
|
$("#node-input-septopics").prop('checked', true);
|
||||||
}
|
}
|
||||||
$("#node-input-property").typedInput({default:'msg',types:['msg']});
|
$("#node-input-property").typedInput({default:'msg',types:['msg']});
|
||||||
|
$("#node-input-topi").typedInput({default:'msg',types:['msg']});
|
||||||
//$( "#node-input-gap" ).spinner({min:0});
|
//$( "#node-input-gap" ).spinner({min:0});
|
||||||
if ($("#node-input-inout").val() === null) {
|
if ($("#node-input-inout").val() === null) {
|
||||||
$("#node-input-inout").val("out");
|
$("#node-input-inout").val("out");
|
||||||
|
@ -13,7 +13,8 @@ module.exports = function(RED) {
|
|||||||
this.gap = parseFloat(this.gap);
|
this.gap = parseFloat(this.gap);
|
||||||
}
|
}
|
||||||
this.g = this.gap;
|
this.g = this.gap;
|
||||||
this.property = n.property||"payload";
|
this.property = n.property || "payload";
|
||||||
|
this.topi = n.topi || "topic";
|
||||||
this.septopics = true;
|
this.septopics = true;
|
||||||
if (n.septopics !== undefined && n.septopics === false) {
|
if (n.septopics !== undefined && n.septopics === false) {
|
||||||
this.septopics = false;
|
this.septopics = false;
|
||||||
@ -23,8 +24,13 @@ module.exports = function(RED) {
|
|||||||
|
|
||||||
node.previous = {};
|
node.previous = {};
|
||||||
this.on("input",function(msg) {
|
this.on("input",function(msg) {
|
||||||
|
var topic;
|
||||||
|
try {
|
||||||
|
topic = RED.util.getMessageProperty(msg,node.topi);
|
||||||
|
}
|
||||||
|
catch(e) { }
|
||||||
if (msg.hasOwnProperty("reset")) {
|
if (msg.hasOwnProperty("reset")) {
|
||||||
if (node.septopics && msg.hasOwnProperty("topic") && (typeof msg.topic === "string") && (msg.topic !== "")) {
|
if (node.septopics && topic && (typeof topic === "string") && (topic !== "")) {
|
||||||
delete node.previous[msg.topic];
|
delete node.previous[msg.topic];
|
||||||
}
|
}
|
||||||
else { node.previous = {}; }
|
else { node.previous = {}; }
|
||||||
@ -32,7 +38,7 @@ module.exports = function(RED) {
|
|||||||
var value = RED.util.getMessageProperty(msg,node.property);
|
var value = RED.util.getMessageProperty(msg,node.property);
|
||||||
if (value !== undefined) {
|
if (value !== undefined) {
|
||||||
var t = "_no_topic";
|
var t = "_no_topic";
|
||||||
if (node.septopics) { t = msg.topic || t; }
|
if (node.septopics) { t = topic || t; }
|
||||||
if ((this.func === "rbe") || (this.func === "rbei")) {
|
if ((this.func === "rbe") || (this.func === "rbei")) {
|
||||||
var doSend = (this.func !== "rbei") || (node.previous.hasOwnProperty(t)) || false;
|
var doSend = (this.func !== "rbei") || (node.previous.hasOwnProperty(t)) || false;
|
||||||
if (typeof(value) === "object") {
|
if (typeof(value) === "object") {
|
||||||
|
Loading…
Reference in New Issue
Block a user