-
Notifications
You must be signed in to change notification settings - Fork 4
/
nr-rf24output.html
135 lines (129 loc) · 6.29 KB
/
nr-rf24output.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<script type="text/x-red" data-template-name="RF24output">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" />
</div>
<div class="form-row">
<label for="node-input-radio"><i class="fa fa-microchip"></i> Radio</label>
<input type="text" id="node-input-radio" />
</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">
</div>
<div class="form-row">
<label for="node-input-pipeaddress"><i class="fa fa-key"></i> Addr</label>
<input type="text" id="node-input-pipeaddress"
placeholder="Pipe address are 5 byte(40-bit) Hex number 0xDDDDDDDD"
style="width: 60%;"/>
</div>
<div class="form-row">
<label for="node-input-autoack"><i class="fa fa-check"></i> Auto Ack</label>
<input type="checkbox" id="node-input-autoack" style="width: 60%;" />
</div>
<div class="form-row">
<label for="node-input-hidestats"><i class="fa fa-check"></i> Hide Stats</label>
<input type="checkbox" id="node-input-hidestats" style="width: 60%;" />
</div>
<div class="form-row">
<label for="node-input-writemode"><i class="fa fa-clock-o"></i> Write Mode</label>
<select id="node-input-writemode" style="width: 60%;">
<option value="0">Sync single Write</option>
<option value="1" selected>Async single Write</option>
<option value="2">Stream</option>
</select>
</div>
<div class="form-row">
<label for="node-input-streamsize"><i class="fa fa-stream"></i> Stream size</label>
<input type="text" id="node-input-streamsize">
</div>
<div class="form-tips">
<b>Tip:</b>
Remote address must be a 5 byte(40-bit) Hex number with format 0xhhhhhhhhhh<br>
Write Mode: Sync write / Async Write / Stream bytes bigger than payload size<br>
Stream size: Size in bytes of the stream chunk.(ignored if not in stream mode)
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType("RF24output", {
category: "nRF24l01",
color:"#A6BBCF",
icon:"radio.png",
defaults: {
name: {value:"", required: false},
radio: {type:"RF24radio", required: true},
topic: {value:"", required: false},
pipeaddress:{ value:"0x65646f4e32", required: true, validate: function(v){
return v.length==12 && v[0]=="0" && v[1].toUpperCase()=="X" && !isNaN(parseInt(v,16));
}},
autoack: {value:true , required: true},
hidestats: {value:false, required:true},
writemode: {value: 1, required: true},
streamsize: {value:"512", required: true, validate: function(v){
var n=parseInt(v);
return !(isNaN(n) || n<32*2);
}}
},
outputs:1,
inputs: 1,
align: 'right',
label: function() {
return this.name ? this.name : "RF24output";
},
labelStyle: function() { return this.name ? "node_label_italic" : "";},
outputLabels: ["Payloads Ack"],
inputLabels: ["Outgoing payloads"]
});
</script>
<script type="text/x-red" data-help-name="RF24input">
<p>Plain RF24 output node</p>
<p> This node enables node-red to send nrf24 payloads. The node has one input and
one output. Any message injected into the input will be processed and it's <code>msg.payload</code>
sent over the radio. This message is reused and redirected to the ouput including an extra boolean field
<code>msg.rf24_ack</code> to control if the message was delivered.
</p>
<h3>Configuration</h3>
<ul>
<li><code>Name</code> - Name of the node for identification</li>
<li><code>Radio</code> - Radio node to use (reference to configuration node) </li>
<li><code>Topic</code> - Topic set in the output message <code>msg.topic</code>. Set this to empty to reuse input's message topic</li>
<li><code>Addr</code> - Remote Pipe address to send incoming payloads.</li>
<li><code>Auto Ack</code> - Use auto ack feature for the transfer.</li>
<li><code>Hide stats</code> - Hides stats on node status bar</li>
<li><code>Write mode</code> - Sending mode. Sync & Async write will send only a single frame.</li>
<li><code>Steam size</code> - If mode streaming is selected. The maximun size in bytes to be streamed.</li>
</ul>
<h3>Input</h3>
<ul>
<li><code>msg.payload</code> - Buffer or any value that can be converted into a buffer.</li>
<li><code>msg.pipeAddressW</code> - Overwrite the remote address of the output node (optional)</li>
<li><code>msg.pipeAckW</code> - Overwrite the auto ack activation of the output node (optional)</li>
</ul>
<h3>Outputs</h3>
<p>The input msg is reused in the output. Any information included in the input message
will be passed to the output with the exeception of the following fields:
</p>
<ul>
<li><code>msg.rf24_ack</code> - boolean with the confirmation of ack receiver. If the pipe is not configured with auto ack feature this field will be allways <i>true</i></li>
<li><code>msg.topic</code> - if configured topic is not empty ("") </li>
</ul>
<h3>Details</h3>
<p> nrf24l01 radios only have one writting pipe. This means that the radio can only
send to one address each time. You can, however, insert several output nodes in
your flows. The radio will manage to switch betwen different address and parameters.
</p>
<p> Single write (Sync or Async) have can send payloads up to the maximun size
configured at radio level (see radio configuration node). If the payload's size
is bigger than the maximun size defined the payload will be croped.
</p>
<p> To send larger buffer in a sequential way <i>Stream</i> mode can be selected. In this mode
the output node will send several frames over the radio to the selected address with high performance.
The maximun streamable size is configured in the <code>Stream Size</code> configuration parameter of the
output node. If the input payload is larger thant <code>Stream Size</code> the payload will be croped.
</p>
<p>
If auto-ack feature is enabled on the pipe and the node is configured to stream
buffers. The transmission will be aborted if one frame/payload is not acknowledged. Therefore for each
application a balance between performance (bigger stream size) and link realeability.
</p>
</script>