mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Merge branch 'dev' into 3843-alternative-impl
This commit is contained in:
@@ -95,45 +95,71 @@ module.exports = function(RED) {
|
||||
}
|
||||
|
||||
this.on("input", function(msg, send, done) {
|
||||
var errors = [];
|
||||
var props = this.props;
|
||||
const errors = [];
|
||||
let props = this.props;
|
||||
if (msg.__user_inject_props__ && Array.isArray(msg.__user_inject_props__)) {
|
||||
props = msg.__user_inject_props__;
|
||||
}
|
||||
delete msg.__user_inject_props__;
|
||||
props.forEach(p => {
|
||||
var property = p.p;
|
||||
var value = p.v ? p.v : '';
|
||||
var valueType = p.vt ? p.vt : 'str';
|
||||
props = [...props]
|
||||
function evaluateProperty(doneEvaluating) {
|
||||
if (props.length === 0) {
|
||||
doneEvaluating()
|
||||
return
|
||||
}
|
||||
const p = props.shift()
|
||||
const property = p.p;
|
||||
const value = p.v ? p.v : '';
|
||||
const valueType = p.vt ? p.vt : 'str';
|
||||
|
||||
if (!property) return;
|
||||
|
||||
if (valueType === "jsonata") {
|
||||
if (p.v) {
|
||||
try {
|
||||
var exp = RED.util.prepareJSONataExpression(p.v, node);
|
||||
var val = RED.util.evaluateJSONataExpression(exp, msg);
|
||||
RED.util.setMessageProperty(msg, property, val, true);
|
||||
if (property) {
|
||||
if (valueType === "jsonata") {
|
||||
if (p.v) {
|
||||
try {
|
||||
var exp = RED.util.prepareJSONataExpression(p.v, node);
|
||||
RED.util.evaluateJSONataExpression(exp, msg, (err, newValue) => {
|
||||
if (err) {
|
||||
errors.push(err.toString())
|
||||
} else {
|
||||
RED.util.setMessageProperty(msg,property,newValue,true);
|
||||
}
|
||||
evaluateProperty(doneEvaluating)
|
||||
});
|
||||
} catch (err) {
|
||||
errors.push(err.message);
|
||||
evaluateProperty(doneEvaluating)
|
||||
}
|
||||
} else {
|
||||
evaluateProperty(doneEvaluating)
|
||||
}
|
||||
catch (err) {
|
||||
errors.push(err.message);
|
||||
} else {
|
||||
try {
|
||||
RED.util.evaluateNodeProperty(value, valueType, node, msg, (err, newValue) => {
|
||||
if (err) {
|
||||
errors.push(err.toString())
|
||||
} else {
|
||||
RED.util.setMessageProperty(msg,property,newValue,true);
|
||||
}
|
||||
evaluateProperty(doneEvaluating)
|
||||
})
|
||||
} catch (err) {
|
||||
errors.push(err.toString());
|
||||
evaluateProperty(doneEvaluating)
|
||||
}
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
evaluateProperty(doneEvaluating)
|
||||
}
|
||||
try {
|
||||
RED.util.setMessageProperty(msg,property,RED.util.evaluateNodeProperty(value, valueType, this, msg),true);
|
||||
} catch (err) {
|
||||
errors.push(err.toString());
|
||||
}
|
||||
});
|
||||
|
||||
if (errors.length) {
|
||||
done(errors.join('; '));
|
||||
} else {
|
||||
send(msg);
|
||||
done();
|
||||
}
|
||||
|
||||
evaluateProperty(() => {
|
||||
if (errors.length) {
|
||||
done(errors.join('; '));
|
||||
} else {
|
||||
send(msg);
|
||||
done();
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<script type="text/html" data-template-name="complete">
|
||||
<div class="form-row node-input-target-row">
|
||||
<button id="node-input-complete-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
<button type="button" id="node-input-complete-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
</div>
|
||||
<div class="form-row node-input-target-row node-input-target-list-row" style="position: relative; min-height: 100px">
|
||||
<div style="position: absolute; top: -30px; right: 0;"><input type="text" id="node-input-complete-target-filter"></div>
|
||||
@@ -18,7 +18,16 @@
|
||||
color:"#c0edc0",
|
||||
defaults: {
|
||||
name: {value:""},
|
||||
scope: {value:[], type:"*[]"},
|
||||
scope: {
|
||||
value: [],
|
||||
type: "*[]",
|
||||
validate: function (v, opt) {
|
||||
if (v.length > 0) {
|
||||
return true;
|
||||
}
|
||||
return RED._("node-red:complete.errors.scopeUndefined");
|
||||
}
|
||||
},
|
||||
uncaught: {value:false}
|
||||
},
|
||||
inputs:0,
|
||||
|
@@ -4,8 +4,8 @@
|
||||
<label style="width: auto" for="node-input-scope" data-i18n="catch.label.source"></label>
|
||||
<select id="node-input-scope-select">
|
||||
<option value="all" data-i18n="catch.scope.all"></option>
|
||||
<option value="group" data-i18n="status.scope.group"></option>
|
||||
<option value="target" data-i18n="catch.scope.selected"></options>
|
||||
<option value="group" data-i18n="catch.scope.group"></option>
|
||||
<option value="target" data-i18n="catch.scope.selected"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row node-input-uncaught-row">
|
||||
@@ -13,7 +13,7 @@
|
||||
<label for="node-input-uncaught" style="width: auto" data-i18n="catch.label.uncaught"></label>
|
||||
</div>
|
||||
<div class="form-row node-input-target-row">
|
||||
<button id="node-input-catch-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
<button type="button" id="node-input-catch-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
</div>
|
||||
<div class="form-row node-input-target-row node-input-target-list-row" style="position: relative; min-height: 100px">
|
||||
<div style="position: absolute; top: -30px; right: 0;"><input type="text" id="node-input-catch-target-filter"></div>
|
||||
|
@@ -5,11 +5,11 @@
|
||||
<select id="node-input-scope-select">
|
||||
<option value="all" data-i18n="status.scope.all"></option>
|
||||
<option value="group" data-i18n="status.scope.group"></option>
|
||||
<option value="target" data-i18n="status.scope.selected"></options>
|
||||
<option value="target" data-i18n="status.scope.selected"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row node-input-target-row">
|
||||
<button id="node-input-status-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
<button type="button" id="node-input-status-target-select" class="red-ui-button" data-i18n="common.label.selectNodes"></button>
|
||||
</div>
|
||||
<div class="form-row node-input-target-row node-input-target-list-row" style="position: relative; min-height: 100px">
|
||||
<div style="position: absolute; top: -30px; right: 0;"><input type="text" id="node-input-status-target-filter"></div>
|
||||
|
@@ -1,4 +1,3 @@
|
||||
|
||||
<script type="text/html" data-template-name="link in">
|
||||
<div class="form-row">
|
||||
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
|
||||
@@ -272,7 +271,17 @@
|
||||
color:"#ddd",//"#87D8CF",
|
||||
defaults: {
|
||||
name: { value: "" },
|
||||
links: { value: [], type:"link in[]" },
|
||||
links: {
|
||||
value: [],
|
||||
type: "link in[]",
|
||||
validate: function (v, opt) {
|
||||
if ((this.linkType === "static" && v.length > 0)
|
||||
|| this.linkType === "dynamic") {
|
||||
return true;
|
||||
}
|
||||
return RED._("node-red:link.errors.linkUndefined");
|
||||
}
|
||||
},
|
||||
linkType: { value:"static" },
|
||||
timeout: {
|
||||
value: "30",
|
||||
|
@@ -164,10 +164,10 @@ module.exports = function(RED) {
|
||||
if (returnNode && returnNode.returnLinkMessage) {
|
||||
returnNode.returnLinkMessage(messageEvent.id, msg);
|
||||
} else {
|
||||
node.warn(RED._("link.error.missingReturn"))
|
||||
node.warn(RED._("link.errors.missingReturn"));
|
||||
}
|
||||
} else {
|
||||
node.warn(RED._("link.error.missingReturn"))
|
||||
node.warn(RED._("link.errors.missingReturn"));
|
||||
}
|
||||
done();
|
||||
} else if (mode === "link") {
|
||||
@@ -248,6 +248,14 @@ module.exports = function(RED) {
|
||||
}
|
||||
});
|
||||
|
||||
this.on("close", function () {
|
||||
for (const event of Object.values(messageEvents)) {
|
||||
if (event.ts) {
|
||||
clearTimeout(event.ts)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
this.returnLinkMessage = function(eventId, msg) {
|
||||
if (Array.isArray(msg._linkSource) && msg._linkSource.length === 0) {
|
||||
delete msg._linkSource;
|
||||
|
27
packages/node_modules/@node-red/nodes/core/common/91-global-config.html
vendored
Normal file
27
packages/node_modules/@node-red/nodes/core/common/91-global-config.html
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<script type="text/html" data-template-name="global-config">
|
||||
<div class="form-row">
|
||||
<label style="width: 100%"><span data-i18n="global-config.label.open-conf"></span>:</label>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<button class="red-ui-button" type="button" id="node-input-edit-env-var" data-i18n="editor:env-var.header" style="margin-left: 20px"></button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
RED.nodes.registerType('global-config',{
|
||||
category: 'config',
|
||||
defaults: {
|
||||
name: { value: "" },
|
||||
env: { value: [] },
|
||||
},
|
||||
credentials: {
|
||||
map: { type: "map" }
|
||||
},
|
||||
oneditprepare: function() {
|
||||
$('#node-input-edit-env-var').on('click', function(evt) {
|
||||
RED.actions.invoke('core:show-user-settings', 'envvar')
|
||||
});
|
||||
},
|
||||
hasUsers: false
|
||||
});
|
||||
</script>
|
7
packages/node_modules/@node-red/nodes/core/common/91-global-config.js
vendored
Normal file
7
packages/node_modules/@node-red/nodes/core/common/91-global-config.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = function(RED) {
|
||||
"use strict";
|
||||
function GlobalConfigNode(n) {
|
||||
RED.nodes.createNode(this,n);
|
||||
}
|
||||
RED.nodes.registerType("global-config", GlobalConfigNode);
|
||||
}
|
@@ -17,6 +17,8 @@
|
||||
display: flex;
|
||||
background: var(--red-ui-tertiary-background);
|
||||
padding-right: 75px;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
#node-input-libs-container-row .red-ui-editableList-header > div {
|
||||
flex-grow: 1;
|
||||
@@ -91,21 +93,21 @@
|
||||
<div id="func-tab-init" style="display:none">
|
||||
<div class="form-row node-text-editor-row" style="position:relative">
|
||||
<div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-init-editor" ></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-init-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button type="button" id="node-init-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="func-tab-body" style="display:none">
|
||||
<div class="form-row node-text-editor-row" style="position:relative">
|
||||
<div style="height: 220px; min-height:150px;" class="node-text-editor" id="node-input-func-editor" ></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-function-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button type="button" id="node-function-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="func-tab-finalize" style="display:none">
|
||||
<div class="form-row node-text-editor-row" style="position:relative">
|
||||
<div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-finalize-editor" ></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button id="node-finalize-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
<div style="position: absolute; right:0; bottom: calc(100% - 20px); z-Index: 10;"><button type="button" id="node-finalize-expand-js" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -294,7 +296,7 @@
|
||||
if (val === "_custom_") {
|
||||
val = $(this).val();
|
||||
}
|
||||
var varName = val.trim().replace(/^@/,"").replace(/@.*$/,"").replace(/[-_/].?/g, function(v) { return v[1]?v[1].toUpperCase():"" });
|
||||
var varName = val.trim().replace(/^@/,"").replace(/@.*$/,"").replace(/[-_/\.].?/g, function(v) { return v[1]?v[1].toUpperCase():"" });
|
||||
fvar.val(varName);
|
||||
fvar.trigger("change");
|
||||
|
||||
@@ -451,11 +453,13 @@
|
||||
tabs.activateTab("func-tab-body");
|
||||
|
||||
$( "#node-input-outputs" ).spinner({
|
||||
min:0,
|
||||
min: 0,
|
||||
max: 500,
|
||||
change: function(event, ui) {
|
||||
var value = this.value;
|
||||
if (!value.match(/^\d+$/)) { value = 1; }
|
||||
else if (value < this.min) { value = this.min; }
|
||||
var value = parseInt(this.value);
|
||||
value = isNaN(value) ? 1 : value;
|
||||
value = Math.max(value, parseInt($(this).attr("aria-valuemin")));
|
||||
value = Math.min(value, parseInt($(this).attr("aria-valuemax")));
|
||||
if (value !== this.value) { $(this).spinner("value", value); }
|
||||
}
|
||||
});
|
||||
|
@@ -318,7 +318,7 @@ module.exports = function(RED) {
|
||||
}
|
||||
var r = node.rules[currentRule];
|
||||
if (r.t === "move") {
|
||||
if ((r.tot !== r.pt) || (r.p.indexOf(r.to) !== -1)) {
|
||||
if ((r.tot !== r.pt) || (r.p.indexOf(r.to) !== -1) && (r.p !== r.to)) {
|
||||
applyRule(msg,{t:"set", p:r.to, pt:r.tot, to:r.p, tot:r.pt},(err,msg) => {
|
||||
applyRule(msg,{t:"delete", p:r.p, pt:r.pt}, (err,msg) => {
|
||||
completeApplyingRules(msg,currentRule,done);
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<option value="scale" data-i18n="range.scale.payload"></option>
|
||||
<option value="clamp" data-i18n="range.scale.limit"></option>
|
||||
<option value="roll" data-i18n="range.scale.wrap"></option>
|
||||
<option value="drop" data-i18n="range.scale.drop"></option>
|
||||
</select>
|
||||
</div>
|
||||
<br/>
|
||||
|
@@ -32,11 +32,15 @@ module.exports = function(RED) {
|
||||
if (value !== undefined) {
|
||||
var n = Number(value);
|
||||
if (!isNaN(n)) {
|
||||
if (node.action == "clamp") {
|
||||
if (node.action === "drop") {
|
||||
if (n < node.minin) { done(); return; }
|
||||
if (n > node.maxin) { done(); return; }
|
||||
}
|
||||
if (node.action === "clamp") {
|
||||
if (n < node.minin) { n = node.minin; }
|
||||
if (n > node.maxin) { n = node.maxin; }
|
||||
}
|
||||
if (node.action == "roll") {
|
||||
if (node.action === "roll") {
|
||||
var divisor = node.maxin - node.minin;
|
||||
n = ((n - node.minin) % divisor + divisor) % divisor + node.minin;
|
||||
}
|
||||
|
@@ -21,12 +21,13 @@
|
||||
<option value="javascript">JavaScript</option>
|
||||
<option value="css">CSS</option>
|
||||
<option value="markdown">Markdown</option>
|
||||
<option value="php">PHP</option>
|
||||
<option value="python">Python</option>
|
||||
<option value="sql">SQL</option>
|
||||
<option value="yaml">YAML</option>
|
||||
<option value="text" data-i18n="template.label.none"></option>
|
||||
</select>
|
||||
<button id="node-template-expand-editor" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button>
|
||||
<button type="button" id="node-template-expand-editor" class="red-ui-button red-ui-button-small"><i class="fa fa-expand"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row node-text-editor-row">
|
||||
|
@@ -201,6 +201,7 @@ module.exports = function(RED) {
|
||||
});
|
||||
node.on("close", function() { clearDelayList(); });
|
||||
}
|
||||
|
||||
else if (node.pauseType === "random") {
|
||||
node.on("input", function(msg, send, done) {
|
||||
var wait = node.randomFirst + (node.diff * Math.random());
|
||||
@@ -226,34 +227,19 @@ module.exports = function(RED) {
|
||||
// The rate limit/queue type modes
|
||||
else if (node.pauseType === "rate") {
|
||||
node.on("input", function(msg, send, done) {
|
||||
if (msg.hasOwnProperty("reset")) {
|
||||
if (node.intervalID !== -1 ) {
|
||||
clearInterval(node.intervalID);
|
||||
node.intervalID = -1;
|
||||
}
|
||||
delete node.lastSent;
|
||||
node.buffer = [];
|
||||
node.rate = node.fixedrate;
|
||||
node.status({fill:"blue",shape:"ring",text:0});
|
||||
done();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!node.drop) {
|
||||
var m = RED.util.cloneMessage(msg);
|
||||
delete m.flush;
|
||||
delete m.lifo;
|
||||
if (Object.keys(m).length > 1) {
|
||||
if (node.intervalID !== -1) {
|
||||
if (node.allowrate && msg.hasOwnProperty("rate") && !isNaN(parseFloat(msg.rate)) && node.rate !== msg.rate) {
|
||||
node.rate = msg.rate;
|
||||
if (node.allowrate && m.hasOwnProperty("rate") && !isNaN(parseFloat(m.rate)) && node.rate !== m.rate) {
|
||||
node.rate = m.rate;
|
||||
clearInterval(node.intervalID);
|
||||
node.intervalID = setInterval(sendMsgFromBuffer, node.rate);
|
||||
}
|
||||
var max_msgs = maxKeptMsgsCount(node);
|
||||
if ((max_msgs > 0) && (node.buffer.length >= max_msgs)) {
|
||||
node.buffer = [];
|
||||
node.error(RED._("delay.errors.too-many"), msg);
|
||||
node.error(RED._("delay.errors.too-many"), m);
|
||||
} else if (msg.toFront === true) {
|
||||
node.buffer.unshift({msg: m, send: send, done: done});
|
||||
node.reportDepth();
|
||||
@@ -263,8 +249,8 @@ module.exports = function(RED) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (node.allowrate && msg.hasOwnProperty("rate") && !isNaN(parseFloat(msg.rate))) {
|
||||
node.rate = msg.rate;
|
||||
if (node.allowrate && m.hasOwnProperty("rate") && !isNaN(parseFloat(m.rate))) {
|
||||
node.rate = m.rate;
|
||||
}
|
||||
send(m);
|
||||
node.reportDepth();
|
||||
@@ -282,6 +268,8 @@ module.exports = function(RED) {
|
||||
else {
|
||||
while (len > 0) {
|
||||
const msgInfo = node.buffer.shift();
|
||||
delete msgInfo.msg.flush;
|
||||
delete msgInfo.msg.reset;
|
||||
if (Object.keys(msgInfo.msg).length > 1) {
|
||||
node.send(msgInfo.msg);
|
||||
msgInfo.done();
|
||||
@@ -335,6 +323,21 @@ module.exports = function(RED) {
|
||||
}
|
||||
done();
|
||||
}
|
||||
|
||||
if (msg.hasOwnProperty("reset")) {
|
||||
if (msg.flush === undefined) {
|
||||
if (node.intervalID !== -1 ) {
|
||||
clearInterval(node.intervalID);
|
||||
node.intervalID = -1;
|
||||
}
|
||||
delete node.lastSent;
|
||||
}
|
||||
node.buffer = [];
|
||||
node.rate = node.fixedrate;
|
||||
node.status({fill:"blue",shape:"ring",text:0});
|
||||
done();
|
||||
return;
|
||||
}
|
||||
});
|
||||
node.on("close", function() {
|
||||
clearInterval(node.intervalID);
|
||||
@@ -387,6 +390,22 @@ module.exports = function(RED) {
|
||||
node.buffer.push({msg, send, done}); // if not add to end of queue
|
||||
node.reportDepth();
|
||||
}
|
||||
if (msg.hasOwnProperty("flush")) {
|
||||
var len = node.buffer.length;
|
||||
if (typeof(msg.flush) == 'number') { len = Math.min(Math.floor(msg.flush,len)); }
|
||||
while (len > 0) {
|
||||
const msgInfo = node.buffer.shift();
|
||||
delete msgInfo.msg.flush;
|
||||
delete msgInfo.msg.reset;
|
||||
if (Object.keys(msgInfo.msg).length > 2) {
|
||||
node.send(msgInfo.msg);
|
||||
msgInfo.done();
|
||||
}
|
||||
len = len - 1;
|
||||
}
|
||||
node.status({});
|
||||
done();
|
||||
}
|
||||
if (msg.hasOwnProperty("reset")) {
|
||||
while (node.buffer.length > 0) {
|
||||
const msgInfo = node.buffer.shift();
|
||||
@@ -397,21 +416,6 @@ module.exports = function(RED) {
|
||||
node.status({text:"reset"});
|
||||
done();
|
||||
}
|
||||
if (msg.hasOwnProperty("flush")) {
|
||||
var len = node.buffer.length;
|
||||
if (typeof(msg.flush) == 'number') { len = Math.min(Math.floor(msg.flush,len)); }
|
||||
while (len > 0) {
|
||||
const msgInfo = node.buffer.shift();
|
||||
delete msgInfo.msg.flush;
|
||||
if (Object.keys(msgInfo.msg).length > 2) {
|
||||
node.send(msgInfo.msg);
|
||||
msgInfo.done();
|
||||
}
|
||||
len = len - 1;
|
||||
}
|
||||
node.status({});
|
||||
done();
|
||||
}
|
||||
});
|
||||
node.on("close", function() {
|
||||
clearInterval(node.intervalID);
|
||||
|
@@ -25,7 +25,7 @@
|
||||
<select id="node-then-type" style="width:70%;">
|
||||
<option value="block" data-i18n="trigger.wait-reset"></option>
|
||||
<option value="wait" data-i18n="trigger.wait-for"></option>
|
||||
<option value="loop" data-i18n="trigger.wait-loop"></option>
|
||||
<option id="node-trigger-wait-loop" value="loop" data-i18n="trigger.wait-loop"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-row node-type-duration">
|
||||
@@ -181,6 +181,13 @@
|
||||
$("#node-input-op2type").val('str');
|
||||
}
|
||||
|
||||
$("#node-input-op1").on("change", function() {
|
||||
if ($("#node-input-op1type").val() === "nul") {
|
||||
$("#node-trigger-wait-loop").hide();
|
||||
}
|
||||
else { $("#node-trigger-wait-loop").show(); }
|
||||
});
|
||||
|
||||
var optionNothing = {value:"nul",label:this._("trigger.output.nothing"),hasValue:false};
|
||||
var optionPayload = {value:"pay",label:this._("trigger.output.existing"),hasValue:false};
|
||||
var optionOriginalPayload = {value:"pay",label:this._("trigger.output.original"),hasValue:false};
|
||||
|
@@ -35,7 +35,11 @@ module.exports = function(RED) {
|
||||
}
|
||||
else { node.previous = {}; }
|
||||
}
|
||||
var value = RED.util.getMessageProperty(msg,node.property);
|
||||
var value;
|
||||
try {
|
||||
value = RED.util.getMessageProperty(msg,node.property);
|
||||
}
|
||||
catch(e) { }
|
||||
if (value !== undefined) {
|
||||
var t = "_no_topic";
|
||||
if (node.septopics) { t = topic || t; }
|
||||
|
@@ -25,7 +25,7 @@
|
||||
<label class="red-ui-button" for="node-config-input-certfile"><i class="fa fa-upload"></i> <span data-i18n="tls.label.upload"></span></label>
|
||||
<input class="hide" type="file" id="node-config-input-certfile">
|
||||
<span id="tls-config-certname" style="width: calc(100% - 280px); overflow: hidden; line-height:34px; height:34px; text-overflow: ellipsis; white-space: nowrap; display: inline-block; vertical-align: middle;"> </span>
|
||||
<button class="red-ui-button red-ui-button-small" id="tls-config-button-cert-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
<button type="button" class="red-ui-button red-ui-button-small" id="tls-config-button-cert-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
</span>
|
||||
<input type="hidden" id="node-config-input-certname">
|
||||
<input type="hidden" id="node-config-input-certdata">
|
||||
@@ -37,7 +37,7 @@
|
||||
<label class="red-ui-button" for="node-config-input-keyfile"><i class="fa fa-upload"></i> <span data-i18n="tls.label.upload"></span></label>
|
||||
<input class="hide" type="file" id="node-config-input-keyfile">
|
||||
<span id="tls-config-keyname" style="width: calc(100% - 280px); overflow: hidden; line-height:34px; height:34px; text-overflow: ellipsis; white-space: nowrap; display: inline-block; vertical-align: middle;"> </span>
|
||||
<button class="red-ui-button red-ui-button-small" id="tls-config-button-key-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
<button type="button" class="red-ui-button red-ui-button-small" id="tls-config-button-key-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
</span>
|
||||
<input type="hidden" id="node-config-input-keyname">
|
||||
<input type="hidden" id="node-config-input-keydata">
|
||||
@@ -53,7 +53,7 @@
|
||||
<label class="red-ui-button" for="node-config-input-cafile"><i class="fa fa-upload"></i> <span data-i18n="tls.label.upload"></span></label>
|
||||
<input class="hide" type="file" title=" " id="node-config-input-cafile">
|
||||
<span id="tls-config-caname" style="width: calc(100% - 280px); overflow: hidden; line-height:34px; height:34px; text-overflow: ellipsis; white-space: nowrap; display: inline-block; vertical-align: middle;"> </span>
|
||||
<button class="red-ui-button red-ui-button-small" id="tls-config-button-ca-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
<button type="button" class="red-ui-button red-ui-button-small" id="tls-config-button-ca-clear" style="margin-left: 10px"><i class="fa fa-times"></i></button>
|
||||
</span>
|
||||
<input type="hidden" id="node-config-input-caname">
|
||||
<input type="hidden" id="node-config-input-cadata">
|
||||
|
@@ -101,6 +101,7 @@
|
||||
hostField.val(data.host);
|
||||
}
|
||||
},
|
||||
sortable: true,
|
||||
removable: true
|
||||
});
|
||||
if (this.noproxy) {
|
||||
|
@@ -249,6 +249,12 @@
|
||||
<span id="node-config-input-cleansession-label" data-i18n="mqtt.label.cleansession"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-row mqtt-persistence">
|
||||
<label for="node-config-input-autoUnsubscribe" style="width: auto;">
|
||||
<input type="checkbox" id="node-config-input-autoUnsubscribe" style="position: relative;vertical-align: bottom; top: -2px; width: 15px;height: 15px;">
|
||||
<span id="node-config-input-autoUnsubscribe-label" data-i18n="mqtt.label.autoUnsubscribe"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-row mqtt5">
|
||||
<label style="width:auto" for="node-config-input-sessionExpiry"><span data-i18n="mqtt.label.sessionExpiry"></span></label>
|
||||
<input type="number" min="0" id="node-config-input-sessionExpiry" style="width: 100px" >
|
||||
@@ -421,7 +427,11 @@
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
|
||||
var typedInputNoneOpt = { value: 'none', label: '', hasValue: false };
|
||||
var typedInputNoneOpt = {
|
||||
value: 'none',
|
||||
label: RED._("node-red:mqtt.label.none"),
|
||||
hasValue: false
|
||||
};
|
||||
var makeTypedInputOpt = function(value){
|
||||
return {
|
||||
value: value,
|
||||
@@ -436,7 +446,11 @@
|
||||
makeTypedInputOpt("text/csv"),
|
||||
makeTypedInputOpt("text/html"),
|
||||
makeTypedInputOpt("text/plain"),
|
||||
{value:"other", label:""}
|
||||
{
|
||||
value: "other",
|
||||
label: RED._("node-red:mqtt.label.other"),
|
||||
icon: "red/images/typedInput/az.svg"
|
||||
}
|
||||
];
|
||||
|
||||
function getDefaultContentType(value) {
|
||||
@@ -475,17 +489,23 @@
|
||||
tls: {type:"tls-config",required: false,
|
||||
label:RED._("node-red:mqtt.label.use-tls") },
|
||||
clientid: {value:"", validate: function(v, opt) {
|
||||
var ok = false;
|
||||
let ok = true;
|
||||
if ($("#node-config-input-clientid").length) {
|
||||
// Currently editing the node
|
||||
ok = $("#node-config-input-cleansession").is(":checked") || (v||"").length > 0;
|
||||
let needClientId = !$("#node-config-input-cleansession").is(":checked") || !$("#node-config-input-autoUnsubscribe").is(":checked")
|
||||
if (needClientId) {
|
||||
ok = (v||"").length > 0;
|
||||
}
|
||||
} else {
|
||||
ok = (this.cleansession===undefined || this.cleansession) || (v||"").length > 0;
|
||||
let needClientId = !(this.cleansession===undefined || this.cleansession) || this.autoUnsubscribe;
|
||||
if (needClientId) {
|
||||
ok = (v||"").length > 0;
|
||||
}
|
||||
}
|
||||
if (ok) {
|
||||
return ok;
|
||||
if (!ok) {
|
||||
return RED._("node-red:mqtt.errors.invalid-client-id");
|
||||
}
|
||||
return RED._("node-red:mqtt.errors.invalid-client-id");
|
||||
return true;
|
||||
}},
|
||||
autoConnect: {value: true},
|
||||
usetls: {value: false},
|
||||
@@ -497,19 +517,20 @@
|
||||
label: RED._("node-red:mqtt.label.keepalive"),
|
||||
validate:RED.validators.number(false)},
|
||||
cleansession: {value: true},
|
||||
autoUnsubscribe: {value: true},
|
||||
birthTopic: {value:"", validate:validateMQTTPublishTopic},
|
||||
birthQos: {value:"0"},
|
||||
birthRetain: {value:false},
|
||||
birthRetain: {value:"false"},
|
||||
birthPayload: {value:""},
|
||||
birthMsg: { value: {}},
|
||||
closeTopic: {value:"", validate:validateMQTTPublishTopic},
|
||||
closeQos: {value:"0"},
|
||||
closeRetain: {value:false},
|
||||
closeRetain: {value:"false"},
|
||||
closePayload: {value:""},
|
||||
closeMsg: { value: {}},
|
||||
willTopic: {value:"", validate:validateMQTTPublishTopic},
|
||||
willQos: {value:"0"},
|
||||
willRetain: {value:false},
|
||||
willRetain: {value:"false"},
|
||||
willPayload: {value:""},
|
||||
willMsg: { value: {}},
|
||||
userProps: { value: ""},
|
||||
@@ -612,6 +633,10 @@
|
||||
this.cleansession = true;
|
||||
$("#node-config-input-cleansession").prop("checked",true);
|
||||
}
|
||||
if (typeof this.autoUnsubscribe === 'undefined') {
|
||||
this.autoUnsubscribe = true;
|
||||
$("#node-config-input-autoUnsubscribe").prop("checked",true);
|
||||
}
|
||||
if (typeof this.usetls === 'undefined') {
|
||||
this.usetls = false;
|
||||
$("#node-config-input-usetls").prop("checked",false);
|
||||
@@ -627,6 +652,14 @@
|
||||
if (typeof this.protocolVersion === 'undefined') {
|
||||
this.protocolVersion = 4;
|
||||
}
|
||||
$("#node-config-input-cleansession").on("change", function() {
|
||||
const useCleanSession = $("#node-config-input-cleansession").is(':checked');
|
||||
if(useCleanSession) {
|
||||
$("div.form-row.mqtt-persistence").hide();
|
||||
} else {
|
||||
$("div.form-row.mqtt-persistence").show();
|
||||
}
|
||||
});
|
||||
$("#node-config-input-protocolVersion").on("change", function() {
|
||||
var v5 = $("#node-config-input-protocolVersion").val() == "5";
|
||||
if(v5) {
|
||||
|
@@ -295,7 +295,7 @@ module.exports = function(RED) {
|
||||
/* mute error - it simply isnt JSON, just leave payload as a string */
|
||||
}
|
||||
}
|
||||
} //else {
|
||||
} //else {
|
||||
//leave as buffer
|
||||
//}
|
||||
}
|
||||
@@ -357,7 +357,7 @@ module.exports = function(RED) {
|
||||
return;
|
||||
}
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
@@ -366,6 +366,16 @@ module.exports = function(RED) {
|
||||
}
|
||||
}
|
||||
|
||||
function updateStatus(node, allNodes) {
|
||||
let setStatus = setStatusDisconnected
|
||||
if(node.connecting) {
|
||||
setStatus = setStatusConnecting
|
||||
} else if(node.connected) {
|
||||
setStatus = setStatusConnected
|
||||
}
|
||||
setStatus(node, allNodes)
|
||||
}
|
||||
|
||||
function setStatusDisconnected(node, allNodes) {
|
||||
if(allNodes) {
|
||||
for (var id in node.users) {
|
||||
@@ -459,7 +469,6 @@ module.exports = function(RED) {
|
||||
if(!opts || typeof opts !== "object") {
|
||||
return; //nothing to change, simply return
|
||||
}
|
||||
const originalBrokerURL = node.brokerurl;
|
||||
|
||||
//apply property changes (only if the property exists in the opts object)
|
||||
setIfHasProperty(opts, node, "url", init);
|
||||
@@ -468,13 +477,12 @@ module.exports = function(RED) {
|
||||
setIfHasProperty(opts, node, "clientid", init);
|
||||
setIfHasProperty(opts, node, "autoConnect", init);
|
||||
setIfHasProperty(opts, node, "usetls", init);
|
||||
setIfHasProperty(opts, node, "usews", init);
|
||||
setIfHasProperty(opts, node, "verifyservercert", init);
|
||||
setIfHasProperty(opts, node, "compatmode", init);
|
||||
setIfHasProperty(opts, node, "protocolVersion", init);
|
||||
setIfHasProperty(opts, node, "keepalive", init);
|
||||
setIfHasProperty(opts, node, "cleansession", init);
|
||||
setIfHasProperty(opts, node, "sessionExpiry", init);
|
||||
setIfHasProperty(opts, node, "autoUnsubscribe", init);
|
||||
setIfHasProperty(opts, node, "topicAliasMaximum", init);
|
||||
setIfHasProperty(opts, node, "maximumPacketSize", init);
|
||||
setIfHasProperty(opts, node, "receiveMaximum", init);
|
||||
@@ -484,6 +492,11 @@ module.exports = function(RED) {
|
||||
} else if (hasProperty(opts, "userProps")) {
|
||||
node.userProperties = opts.userProps;
|
||||
}
|
||||
if (hasProperty(opts, "sessionExpiry")) {
|
||||
node.sessionExpiryInterval = opts.sessionExpiry;
|
||||
} else if (hasProperty(opts, "sessionExpiryInterval")) {
|
||||
node.sessionExpiryInterval = opts.sessionExpiryInterval
|
||||
}
|
||||
|
||||
function createLWT(topic, payload, qos, retain, v5opts, v5SubPropName) {
|
||||
let message = undefined;
|
||||
@@ -567,9 +580,6 @@ module.exports = function(RED) {
|
||||
if (typeof node.usetls === 'undefined') {
|
||||
node.usetls = false;
|
||||
}
|
||||
if (typeof node.usews === 'undefined') {
|
||||
node.usews = false;
|
||||
}
|
||||
if (typeof node.verifyservercert === 'undefined') {
|
||||
node.verifyservercert = false;
|
||||
}
|
||||
@@ -581,6 +591,9 @@ module.exports = function(RED) {
|
||||
if (typeof node.cleansession === 'undefined') {
|
||||
node.cleansession = true;
|
||||
}
|
||||
if (typeof node.autoUnsubscribe === 'undefined') {
|
||||
node.autoUnsubscribe = true;
|
||||
}
|
||||
|
||||
//use url or build a url from usetls://broker:port
|
||||
if (node.url && node.brokerurl !== node.url) {
|
||||
@@ -651,6 +664,7 @@ module.exports = function(RED) {
|
||||
node.options.password = node.password;
|
||||
node.options.keepalive = node.keepalive;
|
||||
node.options.clean = node.cleansession;
|
||||
node.options.autoUnsubscribe = node.autoUnsubscribe;
|
||||
node.options.clientId = node.clientid || 'nodered_' + RED.util.generateId();
|
||||
node.options.reconnectPeriod = RED.settings.mqttReconnectTime||5000;
|
||||
delete node.options.protocolId; //V4+ default
|
||||
@@ -698,16 +712,21 @@ module.exports = function(RED) {
|
||||
if (Object.keys(node.users).length === 1) {
|
||||
if(node.autoConnect) {
|
||||
node.connect();
|
||||
//update nodes status
|
||||
setTimeout(function() {
|
||||
updateStatus(node, true)
|
||||
}, 1)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
node.deregister = function(mqttNode,done) {
|
||||
node.deregister = function(mqttNode, done, autoDisconnect) {
|
||||
delete node.users[mqttNode.id];
|
||||
if (!node.closing && node.connected && Object.keys(node.users).length === 0) {
|
||||
node.disconnect();
|
||||
if (autoDisconnect && !node.closing && node.connected && Object.keys(node.users).length === 0) {
|
||||
node.disconnect(done);
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
done();
|
||||
};
|
||||
node.canConnect = function() {
|
||||
return !node.connected && !node.connecting;
|
||||
@@ -782,7 +801,9 @@ module.exports = function(RED) {
|
||||
|
||||
// Send any birth message
|
||||
if (node.birthMessage) {
|
||||
node.publish(node.birthMessage);
|
||||
setTimeout(() => {
|
||||
node.publish(node.birthMessage);
|
||||
}, 1);
|
||||
}
|
||||
});
|
||||
node._clientOn("reconnect", function() {
|
||||
@@ -839,7 +860,7 @@ module.exports = function(RED) {
|
||||
let waitEnd = (client, ms) => {
|
||||
return new Promise( (resolve, reject) => {
|
||||
node.closing = true;
|
||||
if(!client) {
|
||||
if(!client) {
|
||||
resolve();
|
||||
} else {
|
||||
const t = setTimeout(() => {
|
||||
@@ -991,14 +1012,21 @@ module.exports = function(RED) {
|
||||
}
|
||||
|
||||
if (topicOK) {
|
||||
node.client.publish(msg.topic, msg.payload, options, function(err) {
|
||||
done && done(err);
|
||||
return
|
||||
});
|
||||
node.client.publish(msg.topic, msg.payload, options, function (err) {
|
||||
if (done) {
|
||||
done(err)
|
||||
} else if(err) {
|
||||
node.error(err, msg)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const error = new Error(RED._("mqtt.errors.invalid-topic"));
|
||||
error.warn = true;
|
||||
done(error);
|
||||
const error = new Error(RED._("mqtt.errors.invalid-topic"))
|
||||
error.warn = true
|
||||
if (done) {
|
||||
done(error)
|
||||
} else {
|
||||
node.warn(error, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1011,7 +1039,7 @@ module.exports = function(RED) {
|
||||
|
||||
/**
|
||||
* Add event handlers to the MQTT.js client and track them so that
|
||||
* we do not remove any handlers that the MQTT client uses internally.
|
||||
* we do not remove any handlers that the MQTT client uses internally.
|
||||
* Use {@link node._clientRemoveListeners `node._clientRemoveListeners`} to remove handlers
|
||||
* @param {string} event The name of the event
|
||||
* @param {function} handler The handler for this event
|
||||
@@ -1019,11 +1047,11 @@ module.exports = function(RED) {
|
||||
node._clientOn = function(event, handler) {
|
||||
node.clientListeners.push({event, handler})
|
||||
node.client.on(event, handler)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove event handlers from the MQTT.js client & only the events
|
||||
* that we attached in {@link node._clientOn `node._clientOn`}.
|
||||
* Remove event handlers from the MQTT.js client & only the events
|
||||
* that we attached in {@link node._clientOn `node._clientOn`}.
|
||||
* * If `event` is omitted, then all events matching `handler` are removed
|
||||
* * If `handler` is omitted, then all events named `event` are removed
|
||||
* * If both parameters are omitted, then all events are removed
|
||||
@@ -1205,14 +1233,18 @@ module.exports = function(RED) {
|
||||
node.on('close', function(removed, done) {
|
||||
if (node.brokerConn) {
|
||||
if(node.isDynamic) {
|
||||
Object.keys(node.dynamicSubs).forEach(function (topic) {
|
||||
node.brokerConn.unsubscribe(topic, node.id, removed);
|
||||
});
|
||||
node.dynamicSubs = {};
|
||||
if (node.brokerConn.options.autoUnsubscribe) {
|
||||
Object.keys(node.dynamicSubs).forEach(function (topic) {
|
||||
node.brokerConn.unsubscribe(topic, node.id, removed);
|
||||
});
|
||||
node.dynamicSubs = {};
|
||||
}
|
||||
} else {
|
||||
node.brokerConn.unsubscribe(node.topic,node.id, removed);
|
||||
if (node.brokerConn.options.autoUnsubscribe) {
|
||||
node.brokerConn.unsubscribe(node.topic, node.id, removed);
|
||||
}
|
||||
}
|
||||
node.brokerConn.deregister(node, done);
|
||||
node.brokerConn.deregister(node, done, removed);
|
||||
node.brokerConn = null;
|
||||
} else {
|
||||
done();
|
||||
@@ -1275,9 +1307,9 @@ module.exports = function(RED) {
|
||||
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
|
||||
}
|
||||
node.brokerConn.register(node);
|
||||
node.on('close', function(done) {
|
||||
node.on('close', function(removed, done) {
|
||||
if (node.brokerConn) {
|
||||
node.brokerConn.deregister(node,done);
|
||||
node.brokerConn.deregister(node, done, removed)
|
||||
node.brokerConn = null;
|
||||
} else {
|
||||
done();
|
||||
|
@@ -227,6 +227,7 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
sortable: true,
|
||||
removable: true
|
||||
});
|
||||
|
||||
|
@@ -46,7 +46,7 @@ module.exports = function(RED) {
|
||||
isText = true;
|
||||
} else if (parsedType.type !== "application") {
|
||||
isText = false;
|
||||
} else if ((parsedType.subtype !== "octet-stream")
|
||||
} else if ((parsedType.subtype !== "octet-stream")
|
||||
&& (parsedType.subtype !== "cbor")
|
||||
&& (parsedType.subtype !== "x-protobuf")) {
|
||||
checkUTF = true;
|
||||
@@ -200,6 +200,15 @@ module.exports = function(RED) {
|
||||
this.callback = function(req,res) {
|
||||
var msgid = RED.util.generateId();
|
||||
res._msgid = msgid;
|
||||
// Since Node 15, req.headers are lazily computed and the property
|
||||
// marked as non-enumerable.
|
||||
// That means it doesn't show up in the Debug sidebar.
|
||||
// This redefines the property causing it to be evaluated *and*
|
||||
// marked as enumerable again.
|
||||
Object.defineProperty(req, 'headers', {
|
||||
value: req.headers,
|
||||
enumerable: true
|
||||
})
|
||||
if (node.method.match(/^(post|delete|put|options|patch)$/)) {
|
||||
node.send({_msgid:msgid,req:req,res:createResponseWrapper(node,res),payload:req.body});
|
||||
} else if (node.method == "get") {
|
||||
@@ -282,7 +291,7 @@ module.exports = function(RED) {
|
||||
RED.nodes.createNode(this,n);
|
||||
var node = this;
|
||||
this.headers = n.headers||{};
|
||||
this.statusCode = n.statusCode;
|
||||
this.statusCode = parseInt(n.statusCode);
|
||||
this.on("input",function(msg,_send,done) {
|
||||
if (msg.res) {
|
||||
var headers = RED.util.cloneMessage(node.headers);
|
||||
@@ -323,7 +332,7 @@ module.exports = function(RED) {
|
||||
}
|
||||
}
|
||||
}
|
||||
var statusCode = node.statusCode || msg.statusCode || 200;
|
||||
var statusCode = node.statusCode || parseInt(msg.statusCode) || 200;
|
||||
if (typeof msg.payload == "object" && !Buffer.isBuffer(msg.payload)) {
|
||||
msg.res._res.status(statusCode).jsonp(msg.payload);
|
||||
} else {
|
||||
|
@@ -91,6 +91,11 @@
|
||||
<label for="node-input-senderr" style="width: auto" data-i18n="httpin.senderr"></label>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<input type="checkbox" id="node-input-insecureHTTPParser" style="display: inline-block; width: auto; vertical-align: top;">
|
||||
<label for="node-input-insecureHTTPParser", style="width: auto;" data-i18n="httpin.insecureHTTPParser"></label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-row">
|
||||
<label for="node-input-ret"><i class="fa fa-arrow-left"></i> <span data-i18n="httpin.label.return"></span></label>
|
||||
@@ -227,6 +232,7 @@
|
||||
persist: {value:false},
|
||||
proxy: {type:"http proxy",required: false,
|
||||
label:RED._("node-red:httpin.proxy-config") },
|
||||
insecureHTTPParser: {value: false},
|
||||
authType: {value: ""},
|
||||
senderr: {value: false},
|
||||
headers: { value: [] }
|
||||
@@ -338,6 +344,12 @@
|
||||
} else {
|
||||
$("#node-input-useProxy").prop("checked", false);
|
||||
}
|
||||
|
||||
if (node.insecureHTTPParser) {
|
||||
$("node-intput-insecureHTTPParser").prop("checked", true)
|
||||
} else {
|
||||
$("node-intput-insecureHTTPParser").prop("checked", false)
|
||||
}
|
||||
updateProxyOptions();
|
||||
$("#node-input-useProxy").on("click", function() {
|
||||
updateProxyOptions();
|
||||
@@ -405,6 +417,7 @@
|
||||
});
|
||||
|
||||
},
|
||||
sortable: true,
|
||||
removable: true
|
||||
});
|
||||
if (node.headers) {
|
||||
|
@@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
module.exports = function(RED) {
|
||||
module.exports = async function(RED) {
|
||||
"use strict";
|
||||
const got = require("got");
|
||||
const { got } = await import('got')
|
||||
const {CookieJar} = require("tough-cookie");
|
||||
const { HttpProxyAgent, HttpsProxyAgent } = require('hpagent');
|
||||
const FormData = require('form-data');
|
||||
@@ -86,6 +86,7 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
if (n.paytoqs === true || n.paytoqs === "query") { paytoqs = true; }
|
||||
else if (n.paytoqs === "body") { paytobody = true; }
|
||||
|
||||
node.insecureHTTPParser = n.insecureHTTPParser
|
||||
|
||||
var prox, noprox;
|
||||
if (process.env.http_proxy) { prox = process.env.http_proxy; }
|
||||
@@ -209,24 +210,24 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
// set defaultport, else when using HttpsProxyAgent, it's defaultPort of 443 will be used :(.
|
||||
// Had to remove this to get http->https redirect to work
|
||||
// opts.defaultPort = isHttps?443:80;
|
||||
opts.timeout = node.reqTimeout;
|
||||
opts.timeout = { request: node.reqTimeout || 5000 };
|
||||
opts.throwHttpErrors = false;
|
||||
// TODO: add UI option to auto decompress. Setting to false for 1.x compatibility
|
||||
opts.decompress = false;
|
||||
opts.method = method;
|
||||
opts.retry = 0;
|
||||
opts.retry = { limit: 0 };
|
||||
opts.responseType = 'buffer';
|
||||
opts.maxRedirects = 21;
|
||||
opts.cookieJar = new CookieJar();
|
||||
opts.ignoreInvalidCookies = true;
|
||||
opts.forever = nodeHTTPPersistent;
|
||||
// opts.forever = nodeHTTPPersistent;
|
||||
if (msg.requestTimeout !== undefined) {
|
||||
if (isNaN(msg.requestTimeout)) {
|
||||
node.warn(RED._("httpin.errors.timeout-isnan"));
|
||||
} else if (msg.requestTimeout < 1) {
|
||||
node.warn(RED._("httpin.errors.timeout-isnegative"));
|
||||
} else {
|
||||
opts.timeout = msg.requestTimeout;
|
||||
opts.timeout = { request: msg.requestTimeout };
|
||||
}
|
||||
}
|
||||
const originalHeaderMap = {};
|
||||
@@ -244,6 +245,13 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
delete options.headers[h];
|
||||
}
|
||||
})
|
||||
if (node.insecureHTTPParser) {
|
||||
// Setting the property under _unixOptions as pretty
|
||||
// much the only hack available to get got to apply
|
||||
// a core http option it doesn't think we should be
|
||||
// allowed to set
|
||||
options._unixOptions = { ...options.unixOptions, insecureHTTPParser: true }
|
||||
}
|
||||
}
|
||||
],
|
||||
beforeRedirect: [
|
||||
@@ -398,15 +406,16 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
return response
|
||||
}
|
||||
const requestUrl = new URL(response.request.requestUrl);
|
||||
const options = response.request.options;
|
||||
const options = { headers: {} }
|
||||
const normalisedHeaders = {};
|
||||
Object.keys(response.headers).forEach(k => {
|
||||
normalisedHeaders[k.toLowerCase()] = response.headers[k]
|
||||
})
|
||||
if (normalisedHeaders['www-authenticate']) {
|
||||
let authHeader = buildDigestHeader(digestCreds.user,digestCreds.password, options.method, requestUrl.pathname, normalisedHeaders['www-authenticate'])
|
||||
let authHeader = buildDigestHeader(digestCreds.user,digestCreds.password, response.request.options.method, requestUrl.pathname, normalisedHeaders['www-authenticate'])
|
||||
options.headers.Authorization = authHeader;
|
||||
}
|
||||
// response.request.options.merge(options)
|
||||
sentCreds = true;
|
||||
return retry(options);
|
||||
}
|
||||
@@ -430,6 +439,10 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
formData.append(opt, val);
|
||||
} else if (typeof val === 'object' && val.hasOwnProperty('value')) {
|
||||
formData.append(opt,val.value,val.options || {});
|
||||
} else if (Array.isArray(val)) {
|
||||
for (var i=0; i<val.length; i++) {
|
||||
formData.append(opt, val[i])
|
||||
}
|
||||
} else {
|
||||
formData.append(opt,JSON.stringify(val));
|
||||
}
|
||||
@@ -690,25 +703,43 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
});
|
||||
|
||||
const md5 = (value) => { return crypto.createHash('md5').update(value).digest('hex') }
|
||||
const sha256 = (value) => { return crypto.createHash('sha256').update(value).digest('hex') }
|
||||
const sha512 = (value) => { return crypto.createHash('sha512').update(value).digest('hex') }
|
||||
|
||||
function digestCompute(algorithm, value) {
|
||||
var lowercaseAlgorithm = ""
|
||||
if (algorithm) {
|
||||
lowercaseAlgorithm = algorithm.toLowerCase().replace(/-sess$/, '')
|
||||
}
|
||||
|
||||
if (lowercaseAlgorithm === "sha-256") {
|
||||
return sha256(value)
|
||||
} else if (lowercaseAlgorithm === "sha-512-256") {
|
||||
var hash = sha512(value)
|
||||
return hash.slice(0, 64) // Only use the first 256 bits
|
||||
} else {
|
||||
return md5(value)
|
||||
}
|
||||
}
|
||||
|
||||
function ha1Compute(algorithm, user, realm, pass, nonce, cnonce) {
|
||||
/**
|
||||
* RFC 2617: handle both MD5 and MD5-sess algorithms.
|
||||
* RFC 2617: handle both standard and -sess algorithms.
|
||||
*
|
||||
* If the algorithm directive's value is "MD5" or unspecified, then HA1 is
|
||||
* HA1=MD5(username:realm:password)
|
||||
* If the algorithm directive's value is "MD5-sess", then HA1 is
|
||||
* HA1=MD5(MD5(username:realm:password):nonce:cnonce)
|
||||
* If the algorithm directive's value ends with "-sess", then HA1 is
|
||||
* HA1=digestCompute(digestCompute(username:realm:password):nonce:cnonce)
|
||||
*
|
||||
* If the algorithm directive's value does not end with "-sess", then HA1 is
|
||||
* HA1=digestCompute(username:realm:password)
|
||||
*/
|
||||
var ha1 = md5(user + ':' + realm + ':' + pass)
|
||||
if (algorithm && algorithm.toLowerCase() === 'md5-sess') {
|
||||
return md5(ha1 + ':' + nonce + ':' + cnonce)
|
||||
var ha1 = digestCompute(algorithm, user + ':' + realm + ':' + pass)
|
||||
if (algorithm && /-sess$/i.test(algorithm)) {
|
||||
return digestCompute(algorithm, ha1 + ':' + nonce + ':' + cnonce)
|
||||
} else {
|
||||
return ha1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function buildDigestHeader(user, pass, method, path, authHeader) {
|
||||
var challenge = {}
|
||||
var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi
|
||||
@@ -723,10 +754,10 @@ in your Node-RED user directory (${RED.settings.userDir}).
|
||||
var nc = qop && '00000001'
|
||||
var cnonce = qop && uuid().replace(/-/g, '')
|
||||
var ha1 = ha1Compute(challenge.algorithm, user, challenge.realm, pass, challenge.nonce, cnonce)
|
||||
var ha2 = md5(method + ':' + path)
|
||||
var ha2 = digestCompute(challenge.algorithm, method + ':' + path)
|
||||
var digestResponse = qop
|
||||
? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)
|
||||
: md5(ha1 + ':' + challenge.nonce + ':' + ha2)
|
||||
? digestCompute(challenge.algorithm, ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)
|
||||
: digestCompute(challenge.algorithm, ha1 + ':' + challenge.nonce + ':' + ha2)
|
||||
var authValues = {
|
||||
username: user,
|
||||
realm: challenge.realm,
|
||||
|
@@ -86,7 +86,7 @@ module.exports = function(RED) {
|
||||
this.topic = n.topic;
|
||||
this.stream = (!n.datamode||n.datamode=='stream'); /* stream,single*/
|
||||
this.datatype = n.datatype||'buffer'; /* buffer,utf8,base64 */
|
||||
this.newline = (n.newline||"").replace("\\n","\n").replace("\\r","\r").replace("\\t","\t");
|
||||
this.newline = (n.newline||"").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t");
|
||||
this.base64 = n.base64;
|
||||
this.trim = n.trim || false;
|
||||
this.server = (typeof n.server == 'boolean')?n.server:(n.server == "server");
|
||||
|
@@ -19,9 +19,9 @@ module.exports = function(RED) {
|
||||
function CSVNode(n) {
|
||||
RED.nodes.createNode(this,n);
|
||||
this.template = (n.temp || "");
|
||||
this.sep = (n.sep || ',').replace("\\t","\t").replace("\\n","\n").replace("\\r","\r");
|
||||
this.sep = (n.sep || ',').replace(/\\t/g,"\t").replace(/\\n/g,"\n").replace(/\\r/g,"\r");
|
||||
this.quo = '"';
|
||||
this.ret = (n.ret || "\n").replace("\\n","\n").replace("\\r","\r");
|
||||
this.ret = (n.ret || "\n").replace(/\\n/g,"\n").replace(/\\r/g,"\r");
|
||||
this.winflag = (this.ret === "\r\n");
|
||||
this.lineend = "\n";
|
||||
this.multi = n.multi || "one";
|
||||
@@ -110,7 +110,12 @@ module.exports = function(RED) {
|
||||
if (msg.payload[s].hasOwnProperty(p)) {
|
||||
/* istanbul ignore else */
|
||||
if (typeof msg.payload[s][p] !== "object") {
|
||||
var q = "" + msg.payload[s][p];
|
||||
// Fix to honour include null values flag
|
||||
//if (typeof msg.payload[s][p] !== "object" || (node.include_null_values === true && msg.payload[s][p] === null)) {
|
||||
var q = "";
|
||||
if (msg.payload[s][p] !== undefined) {
|
||||
q += msg.payload[s][p];
|
||||
}
|
||||
if (q.indexOf(node.quo) !== -1) { // add double quotes if any quotes
|
||||
q = q.replace(/"/g, '""');
|
||||
ou += node.quo + q + node.quo + node.sep;
|
||||
@@ -130,9 +135,15 @@ module.exports = function(RED) {
|
||||
ou += node.sep;
|
||||
}
|
||||
else {
|
||||
var p = RED.util.ensureString(RED.util.getMessageProperty(msg,"payload["+s+"]['"+template[t]+"']"));
|
||||
var tt = template[t];
|
||||
if (template[t].indexOf('"') >=0 ) { tt = "'"+tt+"'"; }
|
||||
else { tt = '"'+tt+'"'; }
|
||||
var p = RED.util.getMessageProperty(msg,'payload["'+s+'"]['+tt+']');
|
||||
/* istanbul ignore else */
|
||||
if (p === "undefined") { p = ""; }
|
||||
if (p === undefined) { p = ""; }
|
||||
// fix to honour include null values flag
|
||||
//if (p === null && node.include_null_values !== true) { p = "";}
|
||||
p = RED.util.ensureString(p);
|
||||
if (p.indexOf(node.quo) !== -1) { // add double quotes if any quotes
|
||||
p = p.replace(/"/g, '""');
|
||||
ou += node.quo + p + node.quo + node.sep;
|
||||
|
@@ -33,7 +33,13 @@ module.exports = function(RED) {
|
||||
parseString(value, options, function (err, result) {
|
||||
if (err) { done(err); }
|
||||
else {
|
||||
value = result;
|
||||
// TODO: With xml2js@0.5.0, they return an object with
|
||||
// a null prototype. This could cause unexpected
|
||||
// issues. So for now, we have to reconstruct
|
||||
// the object with a proper prototype.
|
||||
// Once https://github.com/Leonidas-from-XIV/node-xml2js/pull/674
|
||||
// is merged, we can revisit and hopefully remove this hack
|
||||
value = fixObj(result)
|
||||
RED.util.setMessageProperty(msg,node.property,value);
|
||||
send(msg);
|
||||
done();
|
||||
@@ -46,4 +52,18 @@ module.exports = function(RED) {
|
||||
});
|
||||
}
|
||||
RED.nodes.registerType("xml",XMLNode);
|
||||
|
||||
|
||||
function fixObj(obj) {
|
||||
const res = {}
|
||||
const keys = Object.keys(obj)
|
||||
keys.forEach(k => {
|
||||
if (typeof obj[k] === 'object' && obj[k]) {
|
||||
res[k] = fixObj(obj[k])
|
||||
} else {
|
||||
res[k] = obj[k]
|
||||
}
|
||||
})
|
||||
return res
|
||||
}
|
||||
}
|
||||
|
@@ -224,7 +224,12 @@
|
||||
outputs:1,
|
||||
icon: "join.svg",
|
||||
label: function() {
|
||||
return this.name||this._("join.join");
|
||||
var nam = this.name||this._("join.join");
|
||||
if (this.mode === "custom" && !isNaN(Number(this.count))) {
|
||||
nam += " "+this.count;
|
||||
if (this.accumulate === true) { nam+= "+"; }
|
||||
}
|
||||
return nam;
|
||||
},
|
||||
labelStyle: function() {
|
||||
return this.name?"node_label_italic":"";
|
||||
|
@@ -251,7 +251,9 @@ module.exports = function(RED) {
|
||||
}
|
||||
else {
|
||||
node.buffer = buff.slice(p,buff.length);
|
||||
node.pendingDones.push(done);
|
||||
if (node.buffer.length > 0) {
|
||||
node.pendingDones.push(done);
|
||||
}
|
||||
}
|
||||
if (node.buffer.length == 0) {
|
||||
done();
|
||||
@@ -476,7 +478,7 @@ module.exports = function(RED) {
|
||||
var completeSend = function(partId) {
|
||||
var group = inflight[partId];
|
||||
if (group.timeout) { clearTimeout(group.timeout); }
|
||||
if ((node.accumulate !== true) || group.msg.hasOwnProperty("complete")) { delete inflight[partId]; }
|
||||
if (node.mode === 'auto' || node.accumulate !== true || group.msg.hasOwnProperty("complete")) { delete inflight[partId]; }
|
||||
if (group.type === 'array' && group.arrayLen > 1) {
|
||||
var newArray = [];
|
||||
group.payload.forEach(function(n) {
|
||||
|
@@ -107,7 +107,14 @@
|
||||
outputs:1,
|
||||
icon: "batch.svg",
|
||||
label: function() {
|
||||
return this.name||this._("batch.batch");;
|
||||
var nam = this.name||this._("batch.batch");
|
||||
if (this.mode === "count" && !isNaN(Number(this.count))) {
|
||||
nam += " "+this.count;
|
||||
}
|
||||
if (this.mode === "interval" && !isNaN(Number(this.interval))) {
|
||||
nam += " "+this.interval+"s";
|
||||
}
|
||||
return nam;
|
||||
},
|
||||
labelStyle: function() {
|
||||
return this.name ? "node_label_italic" : "";
|
||||
|
0
packages/node_modules/@node-red/nodes/core/storage/10-file.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/core/storage/10-file.html
vendored
Executable file → Normal file
@@ -117,7 +117,9 @@ module.exports = function(RED) {
|
||||
}
|
||||
if (typeof data === "boolean") { data = data.toString(); }
|
||||
if (typeof data === "number") { data = data.toString(); }
|
||||
if ((node.appendNewline) && (!Buffer.isBuffer(data))) { data += os.EOL; }
|
||||
var aflg = true;
|
||||
if (msg.hasOwnProperty("parts") && msg.parts.type === "string" && (msg.parts.count === msg.parts.index + 1)) { aflg = false; }
|
||||
if ((node.appendNewline) && (!Buffer.isBuffer(data)) && aflg) { data += os.EOL; }
|
||||
var buf;
|
||||
if (node.encoding === "setbymsg") {
|
||||
buf = encode(data, msg.encoding || "none");
|
||||
@@ -314,7 +316,6 @@ module.exports = function(RED) {
|
||||
});
|
||||
filename = filename || "";
|
||||
var fullFilename = filename;
|
||||
var filePath = "";
|
||||
if (filename && RED.settings.fileWorkingDirectory && !path.isAbsolute(filename)) {
|
||||
fullFilename = path.resolve(path.join(RED.settings.fileWorkingDirectory,filename));
|
||||
}
|
||||
|
0
packages/node_modules/@node-red/nodes/locales/de/common/20-inject.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/20-inject.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/21-debug.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/21-debug.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/25-catch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/25-catch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/25-status.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/25-status.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/60-link.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/60-link.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/90-comment.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/90-comment.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/98-unknown.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/common/98-unknown.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/10-function.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/10-function.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/10-switch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/10-switch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/15-change.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/15-change.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/16-range.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/16-range.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/80-template.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/80-template.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/89-delay.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/89-delay.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/89-trigger.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/89-trigger.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/90-exec.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/function/90-exec.html
vendored
Executable file → Normal file
1
packages/node_modules/@node-red/nodes/locales/de/messages.json
vendored
Executable file → Normal file
1
packages/node_modules/@node-red/nodes/locales/de/messages.json
vendored
Executable file → Normal file
@@ -364,6 +364,7 @@
|
||||
"port": "Port",
|
||||
"keepalive": "Keep-Alive",
|
||||
"cleansession": "Bereinigte Sitzung (clean session) verwenden",
|
||||
"autoUnsubscribe": "Abonnement bei Verbindungsende automatisch beenden",
|
||||
"cleanstart": "Verwende bereinigten Start",
|
||||
"use-tls": "TLS",
|
||||
"tls-config": "TLS-Konfiguration",
|
||||
|
0
packages/node_modules/@node-red/nodes/locales/de/network/05-tls.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/05-tls.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/06-httpproxy.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/06-httpproxy.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/10-mqtt.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/10-mqtt.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/21-httpin.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/21-httpin.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/21-httprequest.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/21-httprequest.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/22-websocket.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/31-tcpin.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/31-tcpin.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/32-udp.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/network/32-udp.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-CSV.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-CSV.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-HTML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-HTML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-JSON.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-JSON.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-XML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-XML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-YAML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/parsers/70-YAML.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/17-split.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/17-split.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/18-sort.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/18-sort.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/19-batch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/sequence/19-batch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/storage/10-file.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/storage/10-file.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/storage/23-watch.html
vendored
Executable file → Normal file
0
packages/node_modules/@node-red/nodes/locales/de/storage/23-watch.html
vendored
Executable file → Normal file
@@ -18,5 +18,5 @@
|
||||
<p>A node you can use to add comments to your flows.</p>
|
||||
<h3>Details</h3>
|
||||
<p>The edit panel will accept Markdown syntax. The text will be rendered into
|
||||
this information side panel.</p>
|
||||
the information side panel.</p>
|
||||
</script>
|
||||
|
3
packages/node_modules/@node-red/nodes/locales/en-US/common/91-global-config.html
vendored
Normal file
3
packages/node_modules/@node-red/nodes/locales/en-US/common/91-global-config.html
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
<script type="text/html" data-help-name="global-config">
|
||||
<p>A node for holding global configuration of flows.</p>
|
||||
</script>
|
@@ -34,11 +34,14 @@
|
||||
the range specified within the target range.</p>
|
||||
<p><i>Scale and wrap within the target range</i> means that the result will
|
||||
be wrapped within the target range.</p>
|
||||
<p><i>Scale, but drop if outside input range</i> means that the result will
|
||||
be scaled, but any inputs outside of the inout range will be dropped.</p>
|
||||
<p>For example an input 0 - 10 mapped to 0 - 100.</p>
|
||||
<table style="outline-width:#888 solid thin">
|
||||
<tr><th width="80px">mode</th><th width="80px">input</th><th width="80px">output</th></tr>
|
||||
<tr><td><center>scale</center></td><td><center>12</center></td><td><center>120</center></td></tr>
|
||||
<tr><td><center>limit</center></td><td><center>12</center></td><td><center>100</center></td></tr>
|
||||
<tr><td><center>wrap</center></td><td><center>12</center></td><td><center>20</center></td></tr>
|
||||
<tr><td><center>drop</center></td><td><center>12</center></td><td><center><i>(no output)</i></center></td></tr>
|
||||
</table>
|
||||
</script>
|
||||
|
@@ -52,4 +52,7 @@
|
||||
used to mark the templated sections. For example, to use <code>[[ ]]</code>
|
||||
instead, add the following line to the top of the template:</p>
|
||||
<pre>{{=[[ ]]=}}</pre>
|
||||
<h4>Using environment variables</h4>
|
||||
<p>The template node can access environment variables using the syntax:</p>
|
||||
<pre>My favourite colour is {{env.COLOUR}}.</pre>
|
||||
</script>
|
||||
|
@@ -121,7 +121,10 @@
|
||||
}
|
||||
},
|
||||
"complete": {
|
||||
"completeNodes": "complete: __number__"
|
||||
"completeNodes": "complete: __number__",
|
||||
"errors": {
|
||||
"scopeUndefined": "scope undefined"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"output": "Output",
|
||||
@@ -183,8 +186,9 @@
|
||||
"staticLinkCall": "Fixed target",
|
||||
"dynamicLinkCall": "Dynamic target (msg.target)",
|
||||
"dynamicLinkLabel": "Dynamic",
|
||||
"error": {
|
||||
"missingReturn": "Missing return node information"
|
||||
"errors": {
|
||||
"missingReturn": "Missing return node information",
|
||||
"linkUndefined": "link undefined"
|
||||
}
|
||||
},
|
||||
"tls": {
|
||||
@@ -412,6 +416,7 @@
|
||||
"port": "Port",
|
||||
"keepalive": "Keep Alive",
|
||||
"cleansession": "Use clean session",
|
||||
"autoUnsubscribe": "Automatically unsubscribe when disconnecting",
|
||||
"cleanstart": "Use clean start",
|
||||
"use-tls": "Use TLS",
|
||||
"tls-config": "TLS Configuration",
|
||||
@@ -448,7 +453,9 @@
|
||||
"staticTopic": "Subscribe to single topic",
|
||||
"dynamicTopic": "Dynamic subscription",
|
||||
"auto-connect": "Connect automatically",
|
||||
"auto-mode-depreciated": "This option is depreciated. Please use the new auto-detect mode."
|
||||
"auto-mode-depreciated": "This option is depreciated. Please use the new auto-detect mode.",
|
||||
"none": "none",
|
||||
"other": "other"
|
||||
},
|
||||
"sections-label": {
|
||||
"birth-message": "Message sent on connection (birth message)",
|
||||
@@ -556,7 +563,8 @@
|
||||
},
|
||||
"status": {
|
||||
"requesting": "requesting"
|
||||
}
|
||||
},
|
||||
"insecureHTTPParser": "Disable strict HTTP parsing"
|
||||
},
|
||||
"websocket": {
|
||||
"label": {
|
||||
@@ -815,7 +823,8 @@
|
||||
"scale": {
|
||||
"payload": "Scale the message property",
|
||||
"limit": "Scale and limit to the target range",
|
||||
"wrap": "Scale and wrap within the target range"
|
||||
"wrap": "Scale and wrap within the target range",
|
||||
"drop": "Scale, but drop msg if outside input range"
|
||||
},
|
||||
"tip": "Tip: This node ONLY works with numbers.",
|
||||
"errors": {
|
||||
@@ -1125,5 +1134,10 @@
|
||||
"warn": {
|
||||
"nonumber": "no number found in payload"
|
||||
}
|
||||
},
|
||||
"global-config": {
|
||||
"label": {
|
||||
"open-conf": "Open Configuration"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -73,7 +73,7 @@
|
||||
<h4>Cookie handling</h4>
|
||||
<p>The <code>cookies</code> property passed to the node must be an object of name/value pairs.
|
||||
The value can be either a string to set the value of the cookie or it can be an
|
||||
object with a single <code>value</code> property.<p>
|
||||
object with a single <code>value</code> property.</p>
|
||||
<p>Any cookies returned by the request are passed back under the <code>responseCookies</code> property.</p>
|
||||
<h4>Content type handling</h4>
|
||||
<p>If <code>msg.payload</code> is an Object, the node will automatically set the content type
|
||||
|
@@ -47,5 +47,6 @@
|
||||
<p>If 'include null values' option is checked, null values will be returned in result, ie. middle value '"1",,3'.</p>
|
||||
<p>The node can accept a multi-part input as long as the <code>parts</code> property is set correctly, for example from a file-in node or split node.</p>
|
||||
<p>If outputting multiple messages they will have their <code>parts</code> property set and form a complete message sequence.</p>
|
||||
<p>If the node is set to only send column headers once, then setting <code>msg.reset</code> to any value will cause the node to resend the headers.</p>
|
||||
<p><b>Note:</b> the column template must be comma separated - even if a different separator is chosen for the data.</p>
|
||||
</script>
|
||||
|
40
packages/node_modules/@node-red/nodes/locales/fr/common/20-inject.html
vendored
Normal file
40
packages/node_modules/@node-red/nodes/locales/fr/common/20-inject.html
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="inject">
|
||||
<p>Injecte un message dans un flux manuellement ou à intervalles réguliers. Le message payload
|
||||
(charge utile) peut être de différents types, y compris des chaînes de caractères, des objets JavaScript ou l'heure actuelle.</p>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload<span class="property-type">divers</span></dt>
|
||||
<dd>La charge utile configurée du message.</dd>
|
||||
<dt class="optional">topic <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Une propriété facultative qui peut être configurée dans le noeud.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Le noeud Injecter peut initier un flux avec une valeur de charge utile spécifique.
|
||||
La charge utile par défaut est un horodatage de l'heure actuelle en millisecondes depuis le 1er janvier 1970.</p>
|
||||
<p>Le noeud prend également en charge l'injection de chaînes, de nombres, de booléens, d'objets JavaScript ou de valeurs de contexte de flux/global.</p>
|
||||
<p>Par défaut, le noeud est déclenché manuellement en cliquant sur son bouton dans l'éditeur. Il peut également être réglé sur
|
||||
injecter à intervalles réguliers ou selon un horaire.</p>
|
||||
<p>Il peut également être configuré pour injecter une fois à chaque démarrage des flux.</p>
|
||||
<p>L'<i>Intervalle</i> maximum pouvant être spécifiée est d'environ 596 heures / 24 jours. Cependant, si vous regardez des intervalles
|
||||
supérieur à un jour, vous devriez envisager d'utiliser un noeud de planificateur capable de faire face aux pannes de courant et aux redémarrages.</p>
|
||||
<p><b>Remarque</b> : Les options <i>"Intervalle entre les heures"</i> et <i>"à une heure précise"</i> utilisent le système cron standard.
|
||||
Cela signifie que pour la première option, vous pouvez envoyer un message à intervalle régulier entre les heures voulues.
|
||||
Si vous voulez envoyer un message toutes les minutes à partir de maintenant, utiliser l'option <i>"intervalle"</i>.</p>
|
||||
<p><b>Remarque</b> : Pour inclure une nouvelle ligne dans une chaîne, vous devez utiliser un noeud de fonction pour créer la charge utile.</p>
|
||||
</script>
|
26
packages/node_modules/@node-red/nodes/locales/fr/common/21-debug.html
vendored
Normal file
26
packages/node_modules/@node-red/nodes/locales/fr/common/21-debug.html
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="debug">
|
||||
<p>Affiche les propriétés des message sélectionnées dans l'onglet de la barre latérale de débogage et éventuellement le journal d'exécution. Par défaut, il affiche <code>msg.payload</code>, mais peut être configuré pour afficher n'importe quelle propriété, le message complet ou le résultat d'une expression JSONata.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>La barre latérale de débogage fournit une vue structurée des messages qui lui sont envoyés, ce qui facilite la compréhension de leur structure.</p>
|
||||
<p>Les objets et tableaux JavaScript peuvent être réduits et développés selon les besoins. Les objets tampon peuvent être affichés sous forme de données brutes ou sous forme de chaîne si possible.</p>
|
||||
<p>À côté de chaque message, la barre latérale de débogage comprend des informations sur l'heure à laquelle le message a été reçu, le noeud qui l'a envoyé et le type du message.
|
||||
Cliquer sur l'identifiant du noeud source révélera ce noeud dans l'espace de travail.</p>
|
||||
<p>Le bouton sur le noeud peut être utilisé pour activer ou désactiver sa sortie. Il est recommandé de désactiver ou de supprimer tous les noeuds de débogage qui ne sont pas utilisés.</p>
|
||||
<p>Le noeud peut également être configuré pour envoyer tous les messages au journal d'exécution, ou pour envoyer un court (32 caractères) au texte d'état sous le noeud de débogage.</p>
|
||||
</script>
|
29
packages/node_modules/@node-red/nodes/locales/fr/common/24-complete.html
vendored
Normal file
29
packages/node_modules/@node-red/nodes/locales/fr/common/24-complete.html
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="complete">
|
||||
<p>Envoie un message lorsqu'un noeud termine sa gestion d'un message.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Si un noeud indique au runtime qu'il a fini de gérer un message,
|
||||
ce noeud peut être utilisé pour déclencher un deuxième flux.</p>
|
||||
<p>Par exemple, cela peut être utilisé avec un noeud sans port de sortie,
|
||||
comme le noeud d'envoi d'e-mails, pour continuer le flux.</p>
|
||||
<p>Ce noeud doit être configuré pour gérer l'événement pour les noeuds sélectionnés dans le
|
||||
flux. Contrairement au noeud Catch, il ne fournit pas automatiquement un mode "gérer tout"
|
||||
qui s'applique à tous les noeuds du flux.</p>
|
||||
<p>Tous les noeuds ne déclencheront pas cet événement - cela dépendra s'ils
|
||||
ont été implémentés pour prendre en charge cette fonctionnalité telle qu'introduite dans Node-RED 1.0.</p>
|
||||
</script>
|
42
packages/node_modules/@node-red/nodes/locales/fr/common/25-catch.html
vendored
Normal file
42
packages/node_modules/@node-red/nodes/locales/fr/common/25-catch.html
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="catch">
|
||||
<p>Capture les erreurs générées par les noeuds sur le même onglet.</p>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>error.message <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le message d'erreur.</dd>
|
||||
<dt>error.source.id <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>l'identifiant du noeud qui a lancé l'erreur.</dd>
|
||||
<dt>error.source.type <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le type du noeud qui a lancé l'erreur.</dd>
|
||||
<dt>error.source.name <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le nom, s'il est défini, du noeud qui a lancé l'erreur.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Si un noeud génère une erreur lors du traitement d'un message, le flux sera généralement
|
||||
arrêté. Ce noeud peut être utilisé pour intercepter ces erreurs et les gérer avec un
|
||||
flux dédié.</p>
|
||||
<p>Par défaut, le noeud interceptera les erreurs générées par n'importe quel noeud sur le même onglet. Alternativement
|
||||
il peut être ciblé sur des noeuds spécifiques ou configuré pour ne détecter que les erreurs qui
|
||||
n'ont pas déjà été capturés par un noeud de capture "ciblé".</p>
|
||||
<p>Lorsqu'une erreur est générée, tous les noeuds Catch correspondants recevront le message.</p>
|
||||
<p>Si une erreur est générée dans un sous-flux, l'erreur sera gérée par n'importe quel
|
||||
noeud Catch dans le sous-flux. S'il n'en existe pas, l'erreur sera propagée
|
||||
jusqu'à l'onglet sur lequel se trouve l'instance de sous-flux.</p>
|
||||
<p>Si le message a déjà une propriété <code>error</code>, il est copié dans <code>_error</code>.</p>
|
||||
</script>
|
34
packages/node_modules/@node-red/nodes/locales/fr/common/25-status.html
vendored
Normal file
34
packages/node_modules/@node-red/nodes/locales/fr/common/25-status.html
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="status">
|
||||
<p>Signale les messages d'état des autres noeuds sur le même onglet.</p>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>status.text <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le texte d'état.</dd>
|
||||
<dt>status.source.type <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le type de noeud qui a signalé l'état.</dd>
|
||||
<dt>status.source.id <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>l'identifiant du noeud qui a signalé l'état.</dd>
|
||||
<dt>status.source.name <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>tle nom, s'il est défini, du noeud qui a signalé l'état.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Ce noeud ne produit pas de <code>payload</code>.</p>
|
||||
<p>Par défaut, le noeud signale l'état de tous les noeuds sur le même onglet de l'espace de travail.
|
||||
Il peut être configuré pour signaler de manière sélective l'état des noeuds individuels.</p>
|
||||
</script>
|
66
packages/node_modules/@node-red/nodes/locales/fr/common/60-link.html
vendored
Normal file
66
packages/node_modules/@node-red/nodes/locales/fr/common/60-link.html
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="link in">
|
||||
<p>Crée des liens virtuelles entre les flux.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Le noeud peut être connecté à n'importe quel noeud <code>Link out</code> qui existe sur n'importe quel onglet.
|
||||
Une fois connectés, ils se comportent comme s'ils étaient câblés ensemble.</p>
|
||||
<p>Les fils entre les noeuds de lien ne s'affichent que lorsqu'un noeud de lien est sélectionné.
|
||||
S'il y a des fils vers d'autres onglets, un noeud virtuel est affiché et permet si on clique dessus
|
||||
d'accéder à l'onglet approprié.</p>
|
||||
<p><b>Remarque</b> : Impossible de créer des liens entrant ou sortant d'un sous-flux.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="link out">
|
||||
<p>Créer des liens virtuels entre les flux.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Ce noeud peut être configuré pour envoyer des messages à tous les noeuds <code>Link in</code>
|
||||
auxquels il est connecté, ou pour renvoyer une réponse au noeud <code>Link call</code>
|
||||
qui a déclenché le flux.</p>
|
||||
<p>En mode 'envoyer à tous', les fils entre les noeuds de liaison ne sont affichés que lorsque
|
||||
le noeud est sélectionné. S'il existe des fils vers d'autres onglets, un noeud virtuel
|
||||
s'affiche sur lequel il est possible de cliquer pour passer à l'onglet approprié.</p>
|
||||
<p><b>Remarque</b> : Impossible de créer des liens entrant ou sortant d'un sous-flux.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="link call">
|
||||
<p>Appelle un flux qui commence par un noeud <code>Link in</code> et transmet la réponse.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">target<span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Lorsque l'option <b>Type de lien</b> est définie sur 'Cible dynamique', définisser <code>msg.target</code> sur le nom du
|
||||
noeud <code>Link in</code> que vous souhaitez appeler.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Ce noeud peut être connecté à un noeud <code>Link in</code> qui existe sur n'importe quel onglet.
|
||||
Le flux connecté à ce noeud doit se terminer par un noeud <code>Link out</code> configuré
|
||||
en mode 'retour'.</p>
|
||||
<p>Lorsque ce noeud reçoit un message, il est transmis au noeud <code>Link in</code> connecté.
|
||||
Il attend alors une réponse qu'il envoie ensuite.</p>
|
||||
<p>Si aucune réponse n'est reçue dans le délai configuré, 30 secondes par défaut, le noeud
|
||||
déclenchera une erreur qui peut être détectée à l'aide du noeud <code>Catch</code>.</p>
|
||||
<p>Lorsque l'option <b>Type de lien</b> est définie sur 'Cible dynamique', <code>msg.target</code> peut être utilisé pour appeler un
|
||||
noeud <code>Link in</code> par nom ou identifiant.
|
||||
<ul>
|
||||
<li>S'il existe un noeud <code>Link in</code> avec le même identifiant, il sera appelé</li>
|
||||
<li>S'il existe au moins deux noeuds <code>Link in</code> portant le même nom, une erreur sera générée</li>
|
||||
<li>Un noeud <code>Link call</code> ne peut pas appeler un noeud <code>Link in</code> à l'intérieur d'un sous-flux</li>
|
||||
</ul>
|
||||
</p>
|
||||
Le flux connecté à ce noeud doit se terminer par un noeud <code>Link out</code> configuré
|
||||
en mode 'retour'.</p>
|
||||
</script>
|
22
packages/node_modules/@node-red/nodes/locales/fr/common/90-comment.html
vendored
Normal file
22
packages/node_modules/@node-red/nodes/locales/fr/common/90-comment.html
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="comment">
|
||||
<p>Un noeud d'annotations, que vous pouvez utiliser pour ajouter des commentaires à vos flux.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Le panneau d'édition accepte la syntaxe Markdown. Le texte sera rendu dans
|
||||
ce panneau latéral d'information.</p>
|
||||
</script>
|
28
packages/node_modules/@node-red/nodes/locales/fr/common/98-unknown.html
vendored
Normal file
28
packages/node_modules/@node-red/nodes/locales/fr/common/98-unknown.html
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="unknown">
|
||||
<p>Ce noeud est d'un type inconnu de votre installation de Node-RED.</p>
|
||||
<h3>Détails</h3>
|
||||
<p><i>Si vous déployez avec le noeud dans cet état, sa configuration sera préservée, mais
|
||||
le flux ne démarrera pas tant que le type manquant ne sera pas installé.</i></p>
|
||||
<p>Utiliser l'option <code>Menu - Gérer la palette</code>
|
||||
pour rechercher et installer des noeuds, ou <b>npm install <module></b> pour
|
||||
installer, tous les modules manquants et redémarrer Node-RED et réimporter les noeuds.</p>
|
||||
<p>Il est possible que ce type de noeud soit déjà installé, mais qu'il manque une dépendance. Vérifier au démarrage de Node-RED
|
||||
le log pour tous les messages d'erreurs associés au type de noeud manquant.</p>
|
||||
<p>Sinon, vous devez contacter l'auteur du flux pour obtenir une copie du type de noeud manquant.</p>
|
||||
</script>
|
64
packages/node_modules/@node-red/nodes/locales/fr/function/10-function.html
vendored
Normal file
64
packages/node_modules/@node-red/nodes/locales/fr/function/10-function.html
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="function">
|
||||
<p>Une fonction JavaScript à exécuter sur les messages reçus par le noeud.</p>
|
||||
<p>Les messages sont transmis sous la forme d'un objet JavaScript appelé <code>msg</code>.</p>
|
||||
<p>Par convention, il aura une propriété <code>msg.payload</code> contenant
|
||||
le corps du message.</p>
|
||||
<p>La fonction est censée renvoyer un objet message (ou plusieurs objets message), mais peut choisir
|
||||
de ne rien retourner pour stopper un flux.</p>
|
||||
<p>L'onglet <b>Au démarrage</b> contient du code qui sera exécuté à chaque démarrage du noeud.
|
||||
L'onglet <b>À l'arrêt</b> contient le code qui sera exécuté lorsque le noeud sera arrêté.</p>
|
||||
<p>Si le code 'Au démarrage' renvoie un objet Promise (promesse), le noeud ne commencera pas à gérer les messages
|
||||
jusqu'à ce que la promesse soit résolue.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Voir la <a target="_blank" href="http://nodered.org/docs/writing-functions.html">documentation en ligne</a>
|
||||
pour plus d'informations sur les fonctions d'écriture.</p>
|
||||
<h4>Envoi de messages</h4>
|
||||
<p>La fonction peut envoyer les messages qu'elle souhaite transmettre aux noeuds suivants
|
||||
dans le flux, soit avec <code>return msg</code> soit appeler la fonction <code>node.send(messages)</code>.</p>
|
||||
<p>Il peut renvoyer/envoyer :</p>
|
||||
<ul>
|
||||
<li>un seul objet de message - transmis aux noeuds connectés à la première sortie</li>
|
||||
<li>un tableau d'objets de message - transmis aux noeuds connectés aux sorties correspondantes</li>
|
||||
</ul>
|
||||
<p>Remarque : Le code 'Au démarrage' est exécuté lors de l'initialisation des noeuds. Par conséquent, si <code>node.send</code> est appelé dans l'onglet Au démarrage, les noeuds suivants peuvent ne pas être en mesure de recevoir le message.</p>
|
||||
<p>Si un élément du tableau est lui-même un tableau de messages, plusieurs
|
||||
messages sont envoyés à la sortie correspondante.</p>
|
||||
<p>Si null est renvoyé, seul ou en tant qu'élément du tableau, aucun
|
||||
message n'est envoyé.</p>
|
||||
<h4>Journalisation et gestion des erreurs</h4>
|
||||
<p>Pour enregistrer des informations ou signaler une erreur, les fonctions suivantes sont disponibles :</p>
|
||||
<ul>
|
||||
<li><code>node.log("Message pour le journal")</code></li>
|
||||
<li><code>node.warn("Attention")</code></li>
|
||||
<li><code>node.error("Erreur")</code></li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>Le noeud Catch peut également être utilisé pour gérer les erreurs. Pour invoquer un noeud Catch,
|
||||
passer <code>msg</code> comme deuxième argument à <code>node.error</code> :</p>
|
||||
<pre>node.error("Erreur",msg);</pre>
|
||||
<h4>Accéder aux informations sur les noeuds</h4>
|
||||
<p>Les propriétés suivantes sont disponibles pour accéder aux informations sur le noeud:</p>
|
||||
<ul>
|
||||
<li><code>node.id</code> - identifiant du noeud</li>
|
||||
<li><code>node.name</code> - nom du noeud</li>
|
||||
<li><code>node.outputCount</code> - nombre de sorties du noeud</li>
|
||||
</ul>
|
||||
<h4>Utilisation des variables d'environnement</h4>
|
||||
<p>Les variables d'environnement sont accessibles à l'aide de <code>env.get("MA_VAR__ENV")</code>.</p>
|
||||
</script>
|
49
packages/node_modules/@node-red/nodes/locales/fr/function/10-switch.html
vendored
Normal file
49
packages/node_modules/@node-red/nodes/locales/fr/function/10-switch.html
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="switch">
|
||||
<p>Achemine les messages en fonction de leurs valeurs de propriété ou de leur position dans la séquence.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Lorsqu'un message arrive, le noeud évaluera chacune des règles définies
|
||||
afin de transmettre le message aux sorties correspondantes.</p>
|
||||
<p>Facultativement, le noeud peut être configuré pour arrêter d'évaluer les règles une fois qu'il en trouve une
|
||||
qui correspond.</p>
|
||||
<p>Les règles peuvent être évaluées par rapport à une propriété du message reçu, une propriété du flux ou
|
||||
du contexte global, variable d'environnement ou résultat d'une expression JSONata.</p>
|
||||
<h4>Règles</h4>
|
||||
<p>Il existe quatre types de règles :</p>
|
||||
<ol>
|
||||
<li><b>Les règles de valeur</b> sont évaluées par rapport à la propriété configurée</li>
|
||||
Les règles de <li><b>séquence</b> peuvent être utilisées sur les séquences de messages, telles que celles
|
||||
généré par le noeud Diviser</li>
|
||||
<li>Une <b>expression</b> JSONata peut être fournie qui sera évaluée
|
||||
par rapport à l'ensemble du message et correspondra si l'expression renvoie
|
||||
une valeur vraie.</li>
|
||||
<li>Une règle <b>Sinon</b> peut être utilisée si aucune des règles précédentes n'ont eu de correspondances.</li>
|
||||
</ol>
|
||||
<h4>Remarques</h4>
|
||||
<p>Les règles <code>est vrai/faux</code> et <code>est nul</code> effectuent des
|
||||
comparaisons avec ces types. Ils ne convertissent pas les types reçuent avec les types des règles.</p>
|
||||
<p>Les règles <code>est vide</code> et <code>n'est pas vide</code> peuvent être utilisées pour tester la longueur des chaînes, des tableaux et des tampons, ou le nombre de propriétés d'un objet. Aucune règle ne passera si la propriété testée a un <code>booléen</code>, <code>null</code>
|
||||
ou valeur <code>undefined</code>.</p>
|
||||
<h4>Gestion des séquences de messages</h4>
|
||||
<p>Par défaut, le noeud ne modifie pas la propriété <code>msg.parts</code> des messages
|
||||
qui font partie d'une séquence.</p>
|
||||
<p>L'option <b>recréer des séquences de messages</b> peut être activée pour générer de nouvelles séquences de messages
|
||||
pour chaque règle qui correspond. Dans ce mode, le noeud mettra en mémoire tampon l'intégralité de
|
||||
séquence avant d'envoyer les nouvelles séquences. Le paramètre d'exécution <code>nodeMessageBufferMaxLength</code>
|
||||
peut être utilisé pour limiter le nombre de noeuds de messages mis en mémoire tampon.</p>
|
||||
</script>
|
37
packages/node_modules/@node-red/nodes/locales/fr/function/15-change.html
vendored
Normal file
37
packages/node_modules/@node-red/nodes/locales/fr/function/15-change.html
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="change">
|
||||
<p>Définit, modifie, supprime ou déplace les propriétés d'un message, d'un contexte de flux ou d'un contexte global.</p>
|
||||
<p>Le noeud peut spécifier plusieurs règles qui seront appliquées dans l'ordre dans lequel elles sont définies.</p>
|
||||
<h3>Détails</h3>
|
||||
<p>Les opérations disponibles sont :</p>
|
||||
<dl class="message-properties">
|
||||
<dt>Définir</dt>
|
||||
<dd>définir une propriété. La valeur peut être une variété de types différents, ou
|
||||
peut être tiré d'un message existant ou d'une propriété de contexte.</dd>
|
||||
<dt>Modifier</dt>
|
||||
<dd>rechercher & remplacer des parties de la propriété. Si les expressions régulières
|
||||
sont activées, la propriété "remplacer par" peut inclure des groupes de capture, par
|
||||
exemple <code>$1</code>. Remplacer ne changera le type que s'il y a
|
||||
une correspondance complète.</dd>
|
||||
<dt>Supprimer</dt>
|
||||
<dd>supprimer une propriété.</dd>
|
||||
<dt>Déplacer</dt>
|
||||
<dd>déplacer ou renommer une propriété.</dd>
|
||||
</dl>
|
||||
<p>Le type "expression" utilise le langage de requête et d'expression <a href="http://jsonata.org/" target="_new">JSONata</a>.</p>
|
||||
</script>
|
44
packages/node_modules/@node-red/nodes/locales/fr/function/16-range.html
vendored
Normal file
44
packages/node_modules/@node-red/nodes/locales/fr/function/16-range.html
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="range">
|
||||
<p>Associe une valeur numérique à une plage différente.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">nombre</span></dt>
|
||||
<dd>La charge utile <i>doit</i> être un nombre. Tout le reste essaiera d'être
|
||||
analysé en un nombre et rejeté si cela échoue.</dd>
|
||||
</dl>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">nombre</span></dt>
|
||||
<dd>La valeur mappée à la nouvelle plage.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Ce noeud mettra à l'échelle linéairement la valeur reçue. Par défaut, le résultat
|
||||
n'est pas contraint à la plage définie dans le noeud.</p>
|
||||
<p><i>L'échelle et la limite à la plage cible</i> signifient que le résultat ne sera jamais en dehors
|
||||
de la plage spécifiée dans la plage cible.</p>
|
||||
<p><i>Mettre à l'échelle et envelopper dans la plage cible</i> signifie que le résultat sera
|
||||
être enveloppé dans la plage cible.</p>
|
||||
<p>Par exemple, une entrée 0 - 10 mappée sur 0 - 100.</p>
|
||||
<table style="outline-width:#888 solid thin">
|
||||
<tr><th width="80px">mode</th><th width="80px">entrée</th><th width="80px">sortie</th></tr>
|
||||
<tr><td><center>échelle</center></td><td><center>12</center></td><td><center>120</center></td></tr>
|
||||
<tr><td><center>limite</center></td><td><center>12</center></td><td><center>100</center></td></tr>
|
||||
<tr><td><center>enveloppe</center></td><td><center>12</center></td><td><center>20</center></td></tr>
|
||||
</table>
|
||||
</script>
|
58
packages/node_modules/@node-red/nodes/locales/fr/function/80-template.html
vendored
Normal file
58
packages/node_modules/@node-red/nodes/locales/fr/function/80-template.html
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="template">
|
||||
<p>Définit une propriété basée sur le modèle fourni.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>msg <span class="property-type">objet</span></dt>
|
||||
<dd>Un objet msg contenant des informations pour remplir le modèle.</dd>
|
||||
<dt class="optional">template <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Un modèle à remplir à partir du message <code>msg.payload</code>. S'il n'est pas configuré dans le panneau d'édition,
|
||||
cela peut être défini comme une propriété de msg.</dd>
|
||||
</dl>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>msg <span class="property-type">objet</span></dt>
|
||||
<dd>un msg avec une propriété définie en remplissant le modèle configuré avec les propriétés du msg entrant.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Par défaut, cela utilise le format <i><a href="http://mustache.github.io/mustache.5.html" target="_blank">mustache</a></i>,
|
||||
mais cela peut être désactivé si nécessaire.</p>
|
||||
<p>Par exemple, lorsqu'un modèle de :
|
||||
<pre>Bonjour {{payload.name}}. Aujourd'hui nous sommes le {{date}}</pre>
|
||||
<p>reçoit un message contenant :
|
||||
<pre>{
|
||||
date: "Lundi",
|
||||
payload: {
|
||||
name: "Kevin"
|
||||
}
|
||||
}</pre>
|
||||
<p>La propriété résultante sera :
|
||||
<pre>Bonjour Kevin. Aujourd'hui nous sommes le lundi</pre>
|
||||
<p>Il est possible d'utiliser une propriété du contexte de flux ou du contexte global. Utiliser simplement <code>{{flow.name}}</code> ou
|
||||
<code>{{global.name}}</code>, ou pour le stockage persistant <code>store</code>, utiliser <code>{{flow[store].name}}</code> ou
|
||||
<code>{{global[store].name}}</code>.
|
||||
<p><b>Remarque : </b>Par défaut, <i>moustache</i> échappera toutes les entités non alphanumériques ou HTML dans les valeurs qu'il remplace.
|
||||
Pour éviter cela, utiliser des accolades <code>{{{triple}}}</code>.</p>
|
||||
<p>Si vous devez utiliser <code>{{ }}</code> dans votre contenu, vous pouvez modifier les caractères
|
||||
utilisé pour marquer les sections de modèle. Par exemple, pour utiliser <code>[[ ]]</code>
|
||||
à la place, ajouter la ligne suivante en haut du modèle :</p>
|
||||
<pre>{{=[[ ]]=}}</pre>
|
||||
<h4>Utilisation des variables d'environnement</h4>
|
||||
<p>Le noeud de modèle peut accéder aux variables d'environnement en utilisant la syntaxe :</p>
|
||||
<pre>Ma couleur préférée est {{env.COLOUR}}.</pre>
|
||||
</script>
|
64
packages/node_modules/@node-red/nodes/locales/fr/function/89-delay.html
vendored
Normal file
64
packages/node_modules/@node-red/nodes/locales/fr/function/89-delay.html
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="delay">
|
||||
<p>Retarde chaque message traversant le noeud ou limite la vitesse à laquelle ils peuvent passer.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">delay <span class="property-type">nombre</span></dt>
|
||||
<dd>Définit le délai, en millisecondes, à appliquer au message. Cette
|
||||
option ne s'applique que si le noeud est configuré pour autoriser le message à
|
||||
remplacer l'intervalle de délai configuré par défaut.</dd>
|
||||
<dt class="optional">rate <span class="property-type">nombre</span></dt>
|
||||
<dd>Définit la valeur du débit en millisecondes entre les messages.
|
||||
Ce noeud écrase la valeur de taux (rate) existante définie dans la configuration du noeud
|
||||
lorsqu'il reçoit le message contenant la valeur <code>msg.rate</code> en millisecondes.
|
||||
Cette option ne s'applique que si le noeud est configuré pour autoriser le message à
|
||||
remplacer l'intervalle de taux par défaut configurée.</dd>
|
||||
<dt class="optional">reset</dt>
|
||||
<dd>Si le message reçu a cette propriété définie sur n'importe quelle valeur, tous
|
||||
les messages en suspens détenus par le noeud sont effacés sans être envoyés.</dd>
|
||||
<dt class="optional">flush</dt>
|
||||
<dd>Si le message reçu a cette propriété définie sur une valeur numérique, alors autant de messages
|
||||
sera libéré immédiatement. Si défini sur un autre type (par exemple booléen), alors tous
|
||||
les messages en attente détenus par le noeud sont envoyés immédiatement.</dd>
|
||||
<dt class="optional">toFront</dt>
|
||||
<dd>En mode limite de débit, si le message reçu a cette propriété définie sur booléen <code>true</code>,
|
||||
alors le message est poussé au début de la file d'attente et sera publié ensuite.
|
||||
Ceci peut être utilisé en combinaison avec <code>msg.flush=1</code> pour envoyer immédiatement.
|
||||
</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Lorsqu'il est configuré pour retarder les messages, l'intervalle de retard peut être une valeur fixe,
|
||||
une valeur aléatoire dans une plage ou définie dynamiquement pour chaque message.
|
||||
Chaque message est retardé indépendamment de tout autre message, en fonction de
|
||||
l'heure de son arrivée.
|
||||
</p>
|
||||
<p>Lorsqu'ils sont configurés pour limiter le débit des messages, leur diffusion est répartie sur
|
||||
la période configurée. L'état indique le nombre de messages actuellement dans la file d'attente.
|
||||
Il peut éventuellement supprimer les messages intermédiaires à mesure qu'ils arrivent.</p>
|
||||
</p>
|
||||
<p>S'il est défini pour autoriser le remplacement du taux, le nouveau taux sera appliqué immédiatement,
|
||||
et restera en vigueur jusqu'à ce qu'il soit modifié à nouveau, que le noeud soit réinitialisé ou que le flux soit redémarré.</p>
|
||||
<p>La limitation de débit peut être appliquée à tous les messages, ou les regrouper selon
|
||||
leur sujet <code>msg.topic</code>. Lors du regroupement, les messages intermédiaires sont
|
||||
automatiquement abandonnés. A chaque intervalle de temps, le noeud peut soit libérer
|
||||
le message le plus récent pour tous les sujets, ou publier le message le plus récent
|
||||
pour le sujet suivant.
|
||||
</p>
|
||||
<p><b>Remarque</b> : En mode limite de débit, la profondeur maximale de la file d'attente peut être définie par une propriété de votre
|
||||
fichier <i>settings.js</i>. Par exemple <code>nodeMessageBufferMaxLength : 1000</code></p>
|
||||
</script>
|
50
packages/node_modules/@node-red/nodes/locales/fr/function/89-trigger.html
vendored
Normal file
50
packages/node_modules/@node-red/nodes/locales/fr/function/89-trigger.html
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="trigger">
|
||||
<p>Lorsqu'il est déclenché, peut envoyer un message, puis éventuellement un deuxième message, sauf extension ou réinitialisation.</p>
|
||||
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">delay <span class="property-type">nombre</span></dt>
|
||||
<dd>Définit le délai, en millisecondes, à appliquer au message. Cette option s'applique uniquement si le noeud est configuré pour permettre au message de remplacer l'intervalle de délai configuré par défaut.</dd>
|
||||
<dt class="optional">reset</dt>
|
||||
<dd>Si un message est reçu avec cette propriété, tout délai d'expiration ou répétition
|
||||
actuellement en cours sera effacé et aucun message ne sera déclenché.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Détails</h3>
|
||||
<p>Ce noeud peut être utilisé pour créer un délai d'attente dans un flux. Par défaut, lorsque
|
||||
il reçoit un message, il envoie un message avec une <code>charge utile</code> de <code>1</code>.
|
||||
Il attend ensuite 250 ms avant d'envoyer un deuxième message avec une <code>charge utile</code> de <code>0</code>.
|
||||
Cela pourrait être utilisé, par exemple, pour faire clignoter une LED attachée à une broche GPIO du Raspberry Pi.</p>
|
||||
<p>Les charges utiles de chaque message envoyé peuvent être configurées sur une variété de valeurs, y compris
|
||||
la possibilité de ne rien envoyer. Par exemple, définir le message initial sur <i>rien</i> et
|
||||
en sélectionnant l'option pour prolonger la minuterie avec chaque message reçu, le noeud
|
||||
agira en tant que minuteur de surveillance; n'envoie un message que si rien n'est reçu dans le délai
|
||||
défini dans l'intervalle.</p>
|
||||
<p>Si défini sur un type <i>chaîne</i>, le noeud prend en charge la syntaxe moustache.</p>
|
||||
<p>Le délai entre l'envoi des messages peut être remplacé par <code>msg.delay</code> si cette option est activée dans le noeud. La valeur doit être fournie en millisecondes.</p>
|
||||
<p>Si le noeud reçoit un message avec une propriété <code>reset</code>, ou une propriété <code>payload</code>
|
||||
qui correspond à celle configurée dans le noeud, tout délai d'expiration ou répétition actuellement en cours
|
||||
de progression sera effacé et aucun message ne sera déclenché.</p>
|
||||
<p>Le noeud peut être configuré pour renvoyer un message à intervalle régulier jusqu'à ce qu'il
|
||||
soit réinitialisé par un message reçu.</p>
|
||||
<p>En option, le noeud peut être configuré pour traiter les messages comme s'il s'agissait de flux distincts,
|
||||
en utilisant une propriété msg pour identifier chaque flux. <code>msg.topic</code> par défaut.</p>
|
||||
<p>Le statut indique que le noeud est actuellement actif. Si plusieurs flux sont utilisés, l'état
|
||||
indique le nombre de flux en cours.</p>
|
||||
</script>
|
84
packages/node_modules/@node-red/nodes/locales/fr/function/90-exec.html
vendored
Normal file
84
packages/node_modules/@node-red/nodes/locales/fr/function/90-exec.html
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="exec">
|
||||
<p>Exécute une commande système et renvoie sa sortie.</p>
|
||||
<p>Le noeud peut être configuré pour attendre la fin de la commande ou pour
|
||||
envoyer sa sortie au fur et à mesure que la commande la génère.</p>
|
||||
<p>La commande exécutée peut être configurée dans le noeud ou fournie par le
|
||||
message reçu.</p>
|
||||
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">payload <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>si configuré pour le faire, sera ajouté à la commande exécutée.</dd>
|
||||
<dt class="optional">kill <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le type de signal d'arrêt pour envoyer au noeud du processus exec existant.</dd>
|
||||
<dt class="optional">pid <span class="property-type">nombre|chaîne de caractères</span></dt>
|
||||
<dd>l'ID de processus d'un noeud exec existant à tuer.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Sorties</h3>
|
||||
<ol class="node-ports">
|
||||
<li>Sortie standard
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>la sortie standard de la commande.</dd>
|
||||
</dl>
|
||||
<dl class="message-properties">
|
||||
<dt>rc <span class="property-type">objet</span></dt>
|
||||
<dd>mode exec uniquement, une copie de l'objet code retourné (également disponible sur le port 3)</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>Erreur standard
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>l'erreur standard de la commande.</dd>
|
||||
</dl>
|
||||
<dl class="message-properties">
|
||||
<dt>rc <span class="property-type">objet</span></dt>
|
||||
<dd>mode exec uniquement, une copie de l'objet code retourné (également disponible sur le port 3)</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li>Code de retour
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">objet</span></dt>
|
||||
<dd>un objet contenant le code retourné, et éventuellement les propriétés <code>message</code>, <code>signal</code>.</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ol>
|
||||
<h3>Détails</h3>
|
||||
<p>Par défaut, utiliser l'appel système <code>exec</code> qui appelle la commande, attend qu'elle se termine, puis
|
||||
renvoie la sortie. Par exemple, une commande réussie doit avoir un code de retour <code>{ code : 0 }</code>.</p>
|
||||
<p>Vous pouvez éventuellement utiliser <code>spawn</code> à la place, qui renvoie la sortie de stdout et stderr
|
||||
pendant l'exécution de la commande, généralement une ligne à la fois. À la fin, il renvoie ensuite un objet
|
||||
sur le 3ème port. Par exemple, une commande réussie doit renvoyer <code>{ code : 0 }</code>.</p>
|
||||
<p>Des informations supplémentaires sur les erreurs peuvent être envoyées sur le 3e port <code>msg.payload</code>, comme une chaîne <code>message</code>,
|
||||
<code>signal</code> chaîne.</p>
|
||||
<p>La commande qui est exécutée est définie dans le noeud, avec une option pour ajouter <code>msg.payload</code> et un autre ensemble de paramètres.</p>
|
||||
<p>Les commandes ou les paramètres avec des espaces doivent être placés entre guillemets - <code>"Ceci est un paramètre unique"</code></p>
|
||||
<p>La charge utile <code>payload</code> renvoyée est généralement une <i>chaîne</i>, sauf si des caractères non UTF8 sont détectés, dans ce cas,
|
||||
il s'agit d'un <i>tampon</i>.</p>
|
||||
<p>L'icône d'état et le PID du noeud seront visibles tant que le noeud est actif. Les modifications apportées à cela peuvent être lues par le noeud <code>Status</code>.</p>
|
||||
<p>L'option <code>Masquer la console</code> masquera la console de processus normalement affichée sur les systèmes Windows.</p>
|
||||
<h4>Tuer les processus</h4>
|
||||
<p>L'envoi de <code>msg.kill</code> tuera un seul processus actif. <code>msg.kill</code> doit être une chaîne contenant
|
||||
le type de signal à envoyer, par exemple, <code>SIGINT</code>, <code>SIGQUIT</code> ou <code>SIGHUP</code>.
|
||||
La valeur par défaut est <code>SIGTERM</code> si défini sur une chaîne vide.</p>
|
||||
<p>Si le noeud a plus d'un processus en cours d'exécution, alors <code>msg.pid</code> doit également être défini avec la valeur du PID à tuer.</p>
|
||||
<p>Si une valeur est fournie dans le champ <code>Timeout</code> alors, si le processus n'est pas terminé lorsque le nombre de secondes spécifié s'est écoulé, le processus sera tué automatiquement</p>
|
||||
<p>Astuce : si vous exécutez une application Python, vous devrez peut-être utiliser le paramètre <code>-u</code> pour arrêter la mise en mémoire tampon de la sortie.</p>
|
||||
</script>
|
41
packages/node_modules/@node-red/nodes/locales/fr/function/rbe.html
vendored
Normal file
41
packages/node_modules/@node-red/nodes/locales/fr/function/rbe.html
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<script type="text/html" data-help-name="rbe">
|
||||
<p>Noeud de rapport par exception (RBE) - ne transmet les données que si la charge utile a changée.
|
||||
Il peut également bloquer, ou ignorer si la valeur change d'une quantité spécifiée (mode bande morte et bande étroite).</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload
|
||||
<span class="property-type">nombre | chaîne de caractères | (objet)</span>
|
||||
</dt>
|
||||
<dd>Le mode RBE accepte les nombres, les chaînes et les objets simples.
|
||||
Les autres modes doivent fournir un nombre analysable.</dd>
|
||||
<dt class="optional">topic <span class="property-type">chaîne de caractères</span>
|
||||
</dt>
|
||||
<dd>si spécifié, la fonction fonctionnera sur une base par sujet. Cette propriété peut être définie par configuration.</dd>
|
||||
<dt class="optional">reset<span class="property-type">tout</span></dt>
|
||||
<dd>si défini efface la valeur stockée pour le msg.topic spécifié, ou
|
||||
tous les sujets si msg.topic n'est pas spécifié.</dd>
|
||||
</dl>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload
|
||||
<span class="property-type">selon l'entrée</span>
|
||||
</dt>
|
||||
<dd>Si elle est déclenchée, la sortie sera la même que l'entrée.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>En mode RBE ce noeud bloquera jusqu'au <code>msg.payload</code>,
|
||||
(ou la propriété sélectionnée) est différente de la précédente.
|
||||
Si nécessaire, il peut ignorer la valeur initiale, afin de ne rien envoyer au démarrage.</p>
|
||||
<p>Les modes <a href="https://en.wikipedia.org/wiki/Deadband" target="_blank">Bande morte</a> bloqueront la valeur entrante
|
||||
<i>sauf si</i> sa variation est supérieure ou égale à ± la bande morte par rapport à une valeur précédente.</p>
|
||||
<p>Les modes à bande étroite bloqueront la valeur entrante,
|
||||
<i>si</i> sa variation est supérieure ou égale à ± la bande morte par rapport à la valeur précédente.
|
||||
C'est utile pour ignorer les valeurs aberrantes d'un capteur défectueux par exemple.</p>
|
||||
<p>En mode bande morte et bande étroite, la valeur entrante doit contenir un nombre analysable et
|
||||
les deux prennent également en charge % - n'envoie que si/sauf si l'entrée diffère de plus de x % de la valeur d'origine.</p>
|
||||
<p>La bande morte et la bande étroite permettent une comparaison avec la valeur de sortie valide précédente, donc
|
||||
en ignorant toute valeur hors plage ou la valeur d'entrée précédente, ce qui réinitialise le point de consigne, permettant ainsi
|
||||
une dérive graduelle (bande morte) ou un changement progressif (bande étroite).</p>
|
||||
<p><b>Remarque :</b> Cela fonctionne sur un <code>msg.topic</code> par défaut, bien que cela puisse être changé pour une autre propriété si vous le souhaitez.
|
||||
Cela signifie qu'un seul noeud de filtre peut gérer plusieurs sujets différents en même temps.</p>
|
||||
</script>
|
1140
packages/node_modules/@node-red/nodes/locales/fr/messages.json
vendored
Normal file
1140
packages/node_modules/@node-red/nodes/locales/fr/messages.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
packages/node_modules/@node-red/nodes/locales/fr/network/05-tls.html
vendored
Normal file
19
packages/node_modules/@node-red/nodes/locales/fr/network/05-tls.html
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="tls-config">
|
||||
<p>Options de configuration pour les connexions TLS.</p>
|
||||
</script>
|
22
packages/node_modules/@node-red/nodes/locales/fr/network/06-httpproxy.html
vendored
Normal file
22
packages/node_modules/@node-red/nodes/locales/fr/network/06-httpproxy.html
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="http proxy">
|
||||
<p>Options de configuration pour le proxy HTTP.</p>
|
||||
|
||||
<h3>Détails</h3>
|
||||
<p>Lors de l'accès à l'hôte dans la liste des hôtes ignorés, aucun proxy ne sera utilisé.</p>
|
||||
</script>
|
160
packages/node_modules/@node-red/nodes/locales/fr/network/10-mqtt.html
vendored
Normal file
160
packages/node_modules/@node-red/nodes/locales/fr/network/10-mqtt.html
vendored
Normal file
@@ -0,0 +1,160 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="mqtt in">
|
||||
<p>Se connecte à un courtier MQTT et s'abonne aux messages du sujet spécifié.</p>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères | tampon</span></dt>
|
||||
<dd>une chaîne à moins qu'elle ne soit détectée comme un tampon binaire.</dd>
|
||||
<dt>topic <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>la rubrique MQTT, utilise / comme séparateur de hiérarchie.</dd>
|
||||
<dt>qos <span class="property-type">nombre</span> </dt>
|
||||
<dd>0, tirer et oublier - 1, au moins une fois - 2, une fois seulement.</dd>
|
||||
<dt>retain <span class="property-type">booléen</span></dt>
|
||||
<dd>true indique que le message a été conservé et peut être ancien.</dd>
|
||||
|
||||
<dt class="optional">responseTopic <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd><b>MQTTv5</b>: le sujet de réponse MQTT pour le message</dd>
|
||||
<dt class="optional">correlationData <span class="property-type">tampon</span></dt>
|
||||
<dd><b>MQTTv5</b>: les données de corrélation pour le message</dd>
|
||||
<dt class="optional">contentType <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd><b>MQTTv5</b>: le type de contenu de la charge utile</dd>
|
||||
<dt class="optional">userProperties <span class="property-type">objet</span></dt>
|
||||
<dd><b>MQTTv5</b>: toutes les propriétés utilisateur du message</dd>
|
||||
<dt class="optional">messageExpiryInterval <span class="property-type">nombre</span></dt>
|
||||
<dd><b>MQTTv5</b>: le délai d'expiration, en secondes, du message</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
Le sujet d'abonnement peut inclure des caractères génériques MQTT, + pour un niveau, # pour plusieurs niveaux.</p>
|
||||
<p>Ce noeud nécessite une connexion à un courtier MQTT pour être configuré. Configurer en cliquant sur
|
||||
l'icône du crayon.</p>
|
||||
<p>Plusieurs noeuds MQTT (entrée ou sortie) peuvent partager la même connexion de courtier si nécessaire.</p>
|
||||
<h4>Abonnement dynamique</h4>
|
||||
Le noeud peut être configuré pour contrôler dynamiquement la connexion MQTT et ses abonnements. Lorsque cette option est activé, le noeud aura une entrée et pourra être contrôlé en lui transmettant des messages.
|
||||
<h3>Entrées</h3>
|
||||
<p>Celles-ci ne s'appliquent que lorsque le noeud a été configuré pour les abonnements dynamiques.</p>
|
||||
<dl class="message-properties">
|
||||
<dt>action <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le nom de l'action que le noeud doit effectuer. Les actions disponibles sont : <code>"connect"</code>,
|
||||
<code>"disconnect"</code>, <code>"subscribe"</code> and <code>"unsubscribe"</code>.</dd>
|
||||
<dt class="optional">topic <span class="property-type">chaîne de caractères|objet|tableau</span></dt>
|
||||
<dd>Pour les actions <code>"subscribe"</code> et <code>"unsubscribe"</code>, cette propriété
|
||||
donne le sujet. Il peut être défini comme suit :<ul>
|
||||
<li>une chaîne contenant le filtre de sujet</li>
|
||||
<li>un objet contenant les propriétés <code>topic</code> et <code>qos</code></li>
|
||||
<li>un tableau de chaînes ou d'objets pour gérer plusieurs sujets en un</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="optional">broker <span class="property-type">broker</span> </dt>
|
||||
<dd>Pour l'action <code>"connect"</code>, cette propriété peut remplacer tout
|
||||
les paramètres de configuration du courtier individuel, y compris:
|
||||
<ul>
|
||||
<li><code>broker</code></li>
|
||||
<li><code>port</code></li>
|
||||
<li><code>url</code> - remplace le courtier/port pour fournir une URL de connexion complète</li>
|
||||
<li><code>nom d'utilisateur</code></li>
|
||||
<li><code>mot de passe</code></li>
|
||||
</ul>
|
||||
<p>Si cette propriété est définie et que le courtier est déjà connecté, une erreur
|
||||
sera enregistré à moins qu'il n'ait la propriété <code>force</code> définie - auquel cas il sera
|
||||
déconnecté du courtier, appliquer les nouveaux paramètres et reconnectez-vous.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="mqtt out">
|
||||
<p>Se connecte à un broker MQTT et publie des messages.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères | tampon</span></dt>
|
||||
<dd> la charge utile à publier. Si cette propriété n'est pas définie, aucun message ne sera envoyé. Pour envoyer un message vide, définisser cette propriété sur une chaîne vide.</dd>
|
||||
<dt class="facultatif">topic <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd> le sujet MQTT dans laquelle publier.</dd>
|
||||
<dt class="facultatif">qos <span class="property-type">numéro</span></dt>
|
||||
<dd>0, tirer et oublier - 1, au moins une fois - 2, une fois et une seule. Par défaut 0.</dd>
|
||||
<dt class="facultatif">retain <span class="property-type">booléen</span></dt>
|
||||
<dd>définir sur true pour conserver le message sur le courtier. Faux par défaut.</dd>
|
||||
<dt class="facultatif">responseTopic <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd><b>MQTTv5</b> : le sujet de réponse MQTT pour le message</dd>
|
||||
<dt class="facultatif">correlationData <span class="property-type">Buffer</span></dt>
|
||||
<dd><b>MQTTv5</b> : les données de corrélation pour le message</dd>
|
||||
<dt class="optional">contentType <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd><b>MQTTv5</b> : le type de contenu de la charge utile</dd>
|
||||
<dt class="facultatif">userProperties <span class="property-type">objet</span></dt>
|
||||
<dd><b>MQTTv5</b> : toutes les propriétés utilisateur du message</dd>
|
||||
<dt class="facultatif">messageExpiryInterval <span class="property-type">numéro</span></dt>
|
||||
<dd><b>MQTTv5</b> : le délai d'expiration, en secondes, du message</dd>
|
||||
<dt class="facultatif">sujetAlias <span class="property-type">numéro</span></dt>
|
||||
<dd><b>MQTTv5</b> : l'alias de rubrique MQTT à utiliser</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<code>msg.payload</code> est utilisé comme charge utile du message publié.
|
||||
S'il contient un objet, il sera converti en chaîne JSON avant d'être envoyé.
|
||||
S'il contient un tampon binaire, le message sera publié tel quel.</p>
|
||||
<p>Le sujet utilisé peut être configuré dans le noeud ou, s'il est laissé vide, peut être défini dans le <code>msg.topic</code>.</p>
|
||||
<p>De même, la QoS et les valeurs de conservation peuvent être configurées dans le noeud ou, si elles sont laissées
|
||||
vide, défini dans <code>msg.qos</code> et <code>msg.retain</code> respectivement. Pour effacer un
|
||||
sujet retenu du courtier, envoyer un message vide à ce sujet avec l'indicateur de conservation défini.</p>
|
||||
<p>Ce noeud nécessite une connexion à un courtier MQTT pour être configuré. Pour configurer cliquer sur
|
||||
l'icône du crayon.</p>
|
||||
<p>Plusieurs noeuds MQTT (entrant ou sortant) peuvent partager la même connexion de courtier si nécessaire.</p>
|
||||
|
||||
<h4>Contrôle dynamique</h4>
|
||||
La connexion partagée par le noeud peut être contrôlée dynamiquement. Si le noeud reçoit
|
||||
l'un des messages de contrôle suivants, il ne publiera pas non plus la charge utile du message.
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>action <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>le nom de l'action que le noeud doit effectuer. Les actions disponibles sont : <code>"connect"</code>,
|
||||
et <code>"disconnect"</code>.</dd>
|
||||
<dt class="optional">broker <span class="property-type">broker</span> </dt>
|
||||
<dd>Pour l'action <code>"connect"</code>, cette propriété peut remplacer tous
|
||||
les paramètres de configuration du courtier individuel, y compris : <ul>
|
||||
<li><code>broker</code></li>
|
||||
<li><code>port</code></li>
|
||||
<li><code>url</code> - overrides broker/port to provide a complete connection url</li>
|
||||
<li><code>nom d'utilisateur</code></li>
|
||||
<li><code>mot de passe</code></li>
|
||||
</ul>
|
||||
<p>Si cette propriété est définie et que le courtier est déjà connecté, une erreur
|
||||
sera enregistré à moins qu'il n'ait la propriété <code>force</code> définie - auquel cas il sera
|
||||
déconnecté du courtier, appliquer les nouveaux paramètres et reconnectez-vous.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="mqtt-broker">
|
||||
<p>Configuration d'une connexion à un broker MQTT.</p>
|
||||
<p>Cette configuration créera une connexion unique au courtier qui peut
|
||||
être réutilisée par les noeuds <code>MQTT in</code> et <code>MQTT out</code>.</p>
|
||||
<p>Le noeud générera un ID client aléatoire si aucun n'est défini et le
|
||||
noeud utilisera une connexion Clean Session. Si un ID client est défini,
|
||||
il doit être unique pour le courtier auquel vous vous connectez.</p>
|
||||
<h4>Message au démarrage</h4>
|
||||
<p>Ceci est un message qui sera publié sur le sujet configuré chaque fois que le
|
||||
la connexion est établie.</p>
|
||||
<h4>Message à la fermeture</h4>
|
||||
<p>Ceci est un message qui sera publié sur le sujet configuré avant que la
|
||||
connexion soit fermée normalement, soit en redéployant le noeud, soit en s'arrêtant.</p>
|
||||
<h4>Message à la perte de connexion</h4>
|
||||
<p>Ceci est un message qui sera publié par le courtier dans le cas où le noeud
|
||||
perd inopinément sa connexion.</p>
|
||||
<h4>WebSockets</h4>
|
||||
<p>Le noeud peut être configuré pour utiliser une connexion WebSocket. Pour ce faire, le Serveur
|
||||
doit être configuré avec un URI complet pour la connexion. Par exemple :</p>
|
||||
<pre>ws://example.com:4000/mqtt</pre>
|
||||
|
||||
</script>
|
100
packages/node_modules/@node-red/nodes/locales/fr/network/21-httpin.html
vendored
Normal file
100
packages/node_modules/@node-red/nodes/locales/fr/network/21-httpin.html
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="http in">
|
||||
<p>Crée un point de terminaison HTTP pour créer des services Web.</p>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload</dt>
|
||||
<dd>Pour une requête GET, cette propriété contient un objet de tous les paramètres de chaîne de requête.
|
||||
Sinon, contient le corps de la requête HTTP.</dd>
|
||||
<dt>req<span class="property-type">objet</span></dt>
|
||||
<dd>Un objet de requête HTTP. Cet objet contient plusieurs propriétés qui
|
||||
fournir des informations sur la demande.
|
||||
<ul>
|
||||
<li><code>body</code> - le corps de la requête entrante. Le format
|
||||
dépendra de la demande.</li>
|
||||
<li><code>headers</code> - un objet contenant les en-têtes de requête HTTP.</li>
|
||||
<li><code>query</code> - un objet contenant les paramètres de chaîne de requête.</li>
|
||||
<li><code>params</code> - un objet contenant tous les paramètres de routage.</li>
|
||||
<li><code>cookies</code> - un objet contenant les cookies de la requête.</li>
|
||||
<li><code>files</code> - s'il est activé dans le noeud, un objet contenant
|
||||
tous les fichiers téléchargés dans le cadre d'une requête POST.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>res<span class="property-type">objet</span></dt>
|
||||
<dd>Un objet de réponse HTTP. Cette propriété ne doit pas être utilisée directement;
|
||||
le noeud <code>Réponse HTTP</code> documente comment répondre à une requête.
|
||||
Cette propriété doit rester attachée au message transmis au noeud de réponse.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Le noeud écoutera sur le chemin configuré les requêtes d'un type particulier.
|
||||
Le chemin peut être entièrement spécifié, tel que <code>/user</code>, ou inclure
|
||||
des paramètres nommés qui acceptent n'importe quelle valeur, comme <code>/user/:name</code>.
|
||||
Lorsque des paramètres nommés sont utilisés, leur valeur réelle dans une requête est accessible sous <code>msg.req.params</code>.</p>
|
||||
<p>Pour les requêtes qui incluent un corps, tel qu'un POST ou un PUT, le contenu de
|
||||
la demande est rendue disponible en tant que <code>msg.payload</code>.</p>
|
||||
<p>Si le type de contenu de la requête peut être déterminé, le corps sera analysé pour
|
||||
tout type approprié. Par exemple, <code>application/json</code> sera analysé en
|
||||
tant que représentation d'objet JavaScript.</p>
|
||||
<p><b>Remarque</b> : ce noeud n'envoie aucune réponse à la requête. Le flux
|
||||
doit inclure un noeud de réponse HTTP pour terminer la requête.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="http response">
|
||||
<p>Renvoie les réponses des requêtes reçues d'un noeud d'entrée HTTP.</p>
|
||||
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Le corps de la réponse.</dd>
|
||||
<dt class="optional">statusCode <span class="property-type">nombre</span></dt>
|
||||
<dd>S'il est défini, il est utilisé comme code d'état de réponse. Par défaut : 200.</dd>
|
||||
<dt class="optional">headers <span class="property-type">objet</span></dt>
|
||||
<dd>Si défini, fournit les en-têtes HTTP à inclure dans la réponse.</dd>
|
||||
<dt class="optional">cookies <span class="property-type">objet</span></dt>
|
||||
<dd>Si défini, peut être utilisé pour définir ou supprimer les cookies.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Les <code>statusCode</code> et <code>headers</code> peuvent également être définis dans
|
||||
le noeud lui-même. Si une propriété est définie dans le noeud, elle ne peut pas être remplacée
|
||||
par la propriété de message correspondante.</p>
|
||||
<h4>Gestion des cookies</h4>
|
||||
<p>La propriété <code>cookies</code> doit être un objet de paires nom/valeur.
|
||||
La valeur peut être soit une chaîne pour définir la valeur du cookie avec des
|
||||
options par défaut, soit il peut être un objet d'options.</p>
|
||||
<p>L'exemple suivant définit deux cookies - l'un appelé <code>name</code> avec
|
||||
une valeur de <code>nick</code>, l'autre appelée <code>session</code> avec un
|
||||
valeur de <code>1234</code> et une expiration fixée à 15 minutes.</p>
|
||||
<pre>
|
||||
msg.cookies = {
|
||||
name: 'nick',
|
||||
session: {
|
||||
value: '1234',
|
||||
maxAge: 900000
|
||||
}
|
||||
}</pre>
|
||||
<p>Les options valides incluent :</p>
|
||||
<ul>
|
||||
<li><code>domain</code> - (Chaîne) nom de domaine pour le cookie</li>
|
||||
<li><code>expires</code> - (Date) date d'expiration en GMT. S'il n'est pas spécifié ou défini sur 0, crée un cookie de session</li>
|
||||
<li><code>maxAge</code> - (Chaîne) date d'expiration par rapport à l'heure actuelle en millisecondes</li>
|
||||
<li><code>path</code> - (Chaîne) chemin du cookie. Par défaut à /</li>
|
||||
<li><code>value</code> - (Chaîne) la valeur à utiliser pour le cookie</li>
|
||||
</ul>
|
||||
<p>Pour supprimer un cookie, définisser sa valeur <code>value</code> sur <code>null</code>.</p>
|
||||
|
||||
</script>
|
96
packages/node_modules/@node-red/nodes/locales/fr/network/21-httprequest.html
vendored
Normal file
96
packages/node_modules/@node-red/nodes/locales/fr/network/21-httprequest.html
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="http request">
|
||||
<p>Envoie des requêtes HTTP et renvoie la réponse.</p>
|
||||
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt class="optional">url <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Si elle n'est pas configurée dans le noeud, cette propriété facultative définit l'url de la requête.</dd>
|
||||
<dt class="optional">method <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Si elle n'est pas configurée dans le noeud, cette propriété facultative définit la méthode HTTP de la requête.
|
||||
Doit être l'une des méthodes suivantes <code>GET</code>, <code>PUT</code>, <code>POST</code>, <code>PATCH</code> or <code>DELETE</code>.</dd>
|
||||
<dt class="optional">headers <span class="property-type">objet</span></dt>
|
||||
<dd>Définit les en-têtes HTTP de la requête. REMARQUE : Tous les en-têtes définis dans la configuration du noeud écraseront tous les en-têtes correspondants dans <code>msg.headers</code>.</dd>
|
||||
<dt class="optional">cookies <span class="property-type">object</span></dt>
|
||||
<dd>Si défini, peut être utilisé pour envoyer des cookies avec la demande.</dd>
|
||||
<dt class="optional">payload</dt>
|
||||
<dd>Envoyé dans le corps de la requête.</dd>
|
||||
<dt class="optional">rejectUnauthorized</dt>
|
||||
<dd>Si défini sur <code>false</code>, permet d'effectuer des requêtes vers des sites https qui utilisent
|
||||
des certificats auto-signés.</dd>
|
||||
<dt class="optional">followRedirects</dt>
|
||||
<dd>Si défini sur <code>false</code> empêche la redirection suivante (HTTP 301).<code>true</code> par défaut</dd>
|
||||
<dt class="optional">requestTimeout</dt>
|
||||
<dd>Si défini sur un nombre positif de millisecondes, remplacera le paramètre <code>httpRequestTimeout</code> défini globalement.</dd>
|
||||
</dl>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload <span class="property-type">chaîne de caractères | objet | tampon</span></dt>
|
||||
<dd>Le corps de la réponse. Le noeud peut être configuré pour renvoyer le corps
|
||||
en tant que chaîne, essayer de l'analyser en tant que chaîne JSON ou laisser-le en tant que
|
||||
tampon binaire.</dd>
|
||||
<dt>statusCode <span class="property-type">nombre</span></dt>
|
||||
<dd>Le code d'état de la réponse, ou le code d'erreur si la demande n'a pas pu être complétée.</dd>
|
||||
<dt>headers <span class="property-type">objet</span></dt>
|
||||
<dd>Un objet contenant les en-têtes de réponse.</dd>
|
||||
<dt>responseUrl <span class="property-type">chaîne de caractères</span></dt>
|
||||
<dd>Dans le cas où des redirections se sont produites lors du traitement de la demande, cette propriété est l'URL finale redirigée.
|
||||
Sinon, l'url de la demande d'origine.</dd>
|
||||
<dt>responseCookies <span class="property-type">object</span></dt>
|
||||
<dd>Si la réponse inclut des cookies, cette propriété est un objet de paires nom/valeur pour chaque cookie.</dd>
|
||||
<dt>redirectList <span class="property-type">tableau</span></dt>
|
||||
<dd>Si la requête a été redirigée une ou plusieurs fois, les informations accumulées seront ajoutées à cette propriété. `location` est la prochaine destination de redirection. `cookies` correspond aux cookies renvoyés par la source de redirection.</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Lorsqu'elle est configurée dans le noeud, la propriété URL peut contenir des balises <a href="http://mustache.github.io/mustache.5.html" target="_blank">de style moustache</a>. Celles-ci permettent à
|
||||
l'url de construire en utilisant les valeurs du message entrant. Par exemple, si l'URL est définie sur
|
||||
<code>example.com/{{{topic}}}</code>, la valeur du <code>msg.topic</code> sera automatiquement insérée.
|
||||
L'utilisation de {{{...}}} empêche le style moustache de s'échapper des caractères comme / & etc.</p>
|
||||
<p>Le noeud peut éventuellement encoder automatiquement <code>msg.payload</code> en tant que paramètres de chaîne de requête pour une requête GET, dans ce cas <code>msg.payload</code> doit être un objet.</p >
|
||||
<p><b>Remarque</b> : en cas d'exécution derrière un proxy, la variable d'environnement standard <code>http_proxy=...</code> doit être définie et Node-RED redémarré, ou utiliser la configuration du proxy. Si la configuration du proxy a été définie, la configuration a priorité sur la variable d'environnement.</p>
|
||||
<h4>Utilisation de plusieurs noeuds de requête HTTP</h4>
|
||||
<p>Afin d'utiliser plus d'un de ces noeuds dans le même flux, des précautions doivent être prises avec
|
||||
la propriété <code>msg.headers</code>. Le premier noeud définira cette propriété avec
|
||||
les en-têtes de réponse. Le noeud suivant utilisera alors ces en-têtes pour sa requête - ceci
|
||||
n'est généralement pas la bonne chose à faire. Si la propriété du <code>msg.headers</code> reste inchangée
|
||||
entre les noeuds, il sera ignoré par le deuxième noeud. Pour définir des en-têtes personnalisés, le <code>msg.headers</code>
|
||||
doit d'abord être supprimé ou réinitialisé sur un objet vide : <code>{}</code>.
|
||||
<h4>Gestion des cookies</h4>
|
||||
<p>La propriété <code>cookies</code> transmise au noeud doit être un objet de paires nom/valeur.
|
||||
La valeur peut être soit une chaîne pour définir la valeur du cookie, soit un
|
||||
objet avec une seule propriété <code>value</code>.<p>
|
||||
<p>Tous les cookies renvoyés par la requête sont envoyés sous la propriété <code>responseCookies</code>.</p>
|
||||
<h4>Gestion des types de contenu</h4>
|
||||
<p>Si <code>msg.payload</code> est un objet, le noeud définira automatiquement le type de contenu
|
||||
de la requête à <code>application/json</code> et encode le corps en tant que tel.</p>
|
||||
<p>Pour encoder la demande en tant que données de formulaire, <code>msg.headers["content-type"]</code> doit être défini sur <code>application/x-www-form-urlencoded</code>.< /p>
|
||||
<h4>Téléchargement de fichier</h4>
|
||||
<p>Pour effectuer un téléchargement de fichier, <code>msg.headers["content-type"]</code> doit être défini sur <code>multipart/form-data</code>
|
||||
et le <code>msg.payload</code> passé au noeud doit être un objet avec la structure suivante :</p>
|
||||
<pre><code>{
|
||||
"KEY": {
|
||||
"value": FILE_CONTENTS,
|
||||
"options": {
|
||||
"filename": "FILENAME"
|
||||
}
|
||||
}
|
||||
}</code></pre>
|
||||
<p>Les valeurs de <code>KEY</code>, <code>FILE_CONTENTS</code> et <code>FILENAME</code>
|
||||
doivent être réglées sur les valeurs appropriées.</p>
|
||||
|
||||
</script>
|
43
packages/node_modules/@node-red/nodes/locales/fr/network/22-websocket.html
vendored
Normal file
43
packages/node_modules/@node-red/nodes/locales/fr/network/22-websocket.html
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="websocket in">
|
||||
<p>Noeud d'entrée WebSocket.</p>
|
||||
<p>Par défaut, les données reçues du WebSocket seront dans <code>msg.payload</code>.
|
||||
Le Socket peut être configuré pour attendre une chaîne JSON correctement formée, dans ce
|
||||
cas, il analysera le JSON et enverra l'objet résultant en tant que message entier.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="websocket out">
|
||||
<p>Noeud de sortie WebSocket.</p>
|
||||
<p>Par défaut, <code>msg.payload</code> sera envoyé via le WebSocket. Le Socket
|
||||
peut être configuré pour encoder l'intégralité de l'objet <code>msg</code> en tant que chaîne JSON et l'envoyer
|
||||
sur le WebSocket.</p>
|
||||
|
||||
<p>Si le message arrivant à ce noeud provient d'un noeud WebSocket entrant, le message
|
||||
sera renvoyé au client qui a déclenché le flux. Sinon, le message
|
||||
sera diffusé à tous les clients connectés.</p>
|
||||
<p>Si vous souhaitez diffuser un message provennant d'un noeud WebSocket entrant, vous
|
||||
devez supprimer la propriété <code>msg._session</code> dans le flux.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="websocket-listener">
|
||||
<p>Ce noeud de configuration crée un point de terminaison WebSocket Server en utilisant le chemin spécifié.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="websocket-client">
|
||||
<p>Ce noeud de configuration connecte un client WebSocket à l'URL spécifiée.</p>
|
||||
</script>
|
45
packages/node_modules/@node-red/nodes/locales/fr/network/31-tcpin.html
vendored
Normal file
45
packages/node_modules/@node-red/nodes/locales/fr/network/31-tcpin.html
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="tcp in">
|
||||
<p>Fournit un choix d'entrées TCP. Peut soit se connecter à un port TCP distant,
|
||||
soit accepter les connexions entrantes.</p>
|
||||
<p><b>Remarque</b> : Sur certains systèmes, vous aurez peut-être besoin d'un accès root ou administrateur
|
||||
pour accéder aux ports inférieurs à 1024.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="tcp out">
|
||||
<p>Fournit un choix de sorties TCP. Peut soit se connecter à un port TCP distant,
|
||||
accepter les connexions entrantes soit répondre aux messages reçus d'un noeud TCP in.</p>
|
||||
<p>Seul le <code>msg.payload</code> est envoyé.</p>
|
||||
<p>Si <code>msg.payload</code> est une chaîne contenant un encodage Base64 de donnée binaire,
|
||||
l'option de décodage Base64 entraînera sa reconversion en binaire
|
||||
avant d'être envoyé.</p>
|
||||
<p>Si <code>msg._session</code> n'est pas présent, la charge utile est
|
||||
envoyé à <b>tous</b> les clients connectés.</p>
|
||||
<p><b>Remarque</b> : Sur certains systèmes, vous aurez peut-être besoin d'un accès root ou administrateur
|
||||
pour accéder aux ports inférieurs à 1024.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="tcp request">
|
||||
<p>Un simple noeud de requête TCP - envoie le <code>msg.payload</code> à un port tcp du serveur et attend une réponse.</p>
|
||||
<p>Se connecte, envoie la "requête" et lit la "réponse". Il peut soit compter un certain nombre de
|
||||
caractères renvoyés dans un tampon fixe, correspondant à un caractère spécifié avant de revenir,
|
||||
attendre un délai fixe à partir de la première réponse, puis revenir, s'installer et attender les données, ou envoie puis ferme la connexion
|
||||
immédiatement, sans attendre de réponse.</p>
|
||||
<p>La réponse sortira dans <code>msg.payload</code> en tant que tampon, vous pouvez alors utiliser la fonction .toString().</p>
|
||||
<p>Si vous laissez l'hôte ou le port tcp vide, ils doivent être définis à l'aide des propriétés <code>msg.host</code> et <code>msg.port</code> dans chaque message envoyé au noeud.</ p>
|
||||
</script>
|
31
packages/node_modules/@node-red/nodes/locales/fr/network/32-udp.html
vendored
Normal file
31
packages/node_modules/@node-red/nodes/locales/fr/network/32-udp.html
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="udp in">
|
||||
<p>Un noeud d'entrée UDP, qui produit un <code>msg.payload</code> contenant un
|
||||
tampon, chaîne ou chaîne encodée en base64. Prend en charge la multidiffusion.</p>
|
||||
<p>Il fournit également <code>msg.ip</code> et <code>msg.port</code> définis sur
|
||||
l'adresse IP et le port à partir desquels le message a été reçu.</p>
|
||||
<p><b>Remarque</b> : Sur certains systèmes, vous aurez peut-être besoin d'un accès root ou administrateur pour utiliser
|
||||
les ports inférieurs à 1024 et/ou diffusés.</p>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="udp out">
|
||||
<p>Ce noeud envoie un <code>msg.payload</code> à l'hôte et au port UDP désigné. Prend en charge la multidiffusion.</p>
|
||||
<p>Vous pouvez également utiliser <code>msg.ip</code> et <code>msg.port</code> pour définir les valeurs de destination, mais les valeurs configurées statiquement ont priorité.</p>
|
||||
<p>Si vous sélectionnez la diffusion, définisser l'adresse sur l'adresse IP de diffusion locale ou essayer 255.255.255.255, qui est l'adresse de diffusion globale.</p>
|
||||
<p><b>Remarque</b> : sur certains systèmes, vous devrez peut-être être root pour utiliser des ports inférieurs à 1024 et/ou de diffusion.</p>
|
||||
</script>
|
52
packages/node_modules/@node-red/nodes/locales/fr/parsers/70-CSV.html
vendored
Normal file
52
packages/node_modules/@node-red/nodes/locales/fr/parsers/70-CSV.html
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
<!--
|
||||
Copyright JS Foundation and other contributors, http://js.foundation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<script type="text/html" data-help-name="csv">
|
||||
<p>Convertit une chaîne au format CSV en une représentation d'objet JavaScript, et inversément.</p>
|
||||
<h3>Entrées</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload<span class="property-type">objet | tableau | chaîne de caractères</span></dt>
|
||||
<dd>Un objet JavaScript, un tableau ou une chaîne CSV.</dd>
|
||||
</dl>
|
||||
<h3>Sorties</h3>
|
||||
<dl class="message-properties">
|
||||
<dt>payload<span class="property-type">objet | tableau | chaîne de caractères</span></dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>Si l'entrée est une chaîne, le noeud essaie de l'analyser en tant que CSV et crée un objet JavaScript de paires clé/valeur pour chaque ligne.
|
||||
Le noeud enverra alors soit un message pour chaque ligne, soit un seul message contenant un tableau d'objets.</li>
|
||||
<li>Si l'entrée est un objet JavaScript, le noeud essaie de créer une chaîne CSV.</li>
|
||||
<li>Si l'entrée est un tableau de valeurs simples, le noeud crée une chaîne CSV sur une seule ligne.</li>
|
||||
<li>Si l'entrée est un tableau de tableaux ou un tableau d'objets, une chaîne CSV multiligne est créée.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<h3>Détails</h3>
|
||||
<p>Le modèle de colonne peut contenir une liste ordonnée de noms de colonnes. Lors de la conversion de CSV en objet, les noms de colonne
|
||||
seront utilisés comme noms de propriété. Alternativement, les noms de colonne peuvent être tirés de la première ligne du CSV.</p>
|
||||
<p>Lors de la conversion au format CSV, le modèle de colonnes est utilisé pour identifier les propriétés à extraire de l'objet et dans quel ordre.</p>
|
||||
<p>Si le modèle de colonnes est vide, vous pouvez utiliser une simple liste de propriétés séparées par des virgules fournies dans <code>msg.columns</code> pour
|
||||
déterminer quoi extraire et dans quel ordre. Si ni l'un ni l'autre n'est présent, toutes les propriétés de l'objet sont sorties dans l'ordre
|
||||
dans lesquelles les propriétés se trouvent dans la première ligne.</p>
|
||||
<p>Si l'entrée est un tableau, le modèle de colonnes n'est utilisé que pour éventuellement générer une ligne de titres de colonne.</p>
|
||||
<p>Si l'option 'analyser les valeurs numériques' est cochée, les valeurs numériques de la chaîne seront renvoyées sous forme de nombres, c'est à dire. valeur médiane '1,"1.5",'2'.</p>
|
||||
<p>Si l'option 'inclure les chaînes vides' est cochée, les chaînes vides seront renvoyées dans le résultat, c'est à dire. valeur médiane '1,"",3'.</p>
|
||||
<p>Si l'option 'inclure les valeurs nulles' est cochée, les valeurs nulles seront renvoyées dans le résultat, c'est à dire. valeur médiane '1,,3'.</p>
|
||||
<p>Le noeud peut accepter une entrée en plusieurs parties tant que la propriété <code>parts</code> est correctement définie, par exemple à partir d'un noeud de fichier d'entrée ou d'un noeud divisé.</p>
|
||||
<p>Si vous produisez plusieurs messages, leur propriété <code>parts</code> sera définie et formera une séquence de messages complète.</p>
|
||||
<p>Si le noeud est configuré pour n'envoyer qu'une seule fois les en-têtes de colonne, la définition de <code>msg.reset</code> sur n'importe quelle valeur entraînera le renvoi des en-têtes par le noeud.</p>
|
||||
<p><b>Remarque</b> : le modèle de colonne doit être séparé par des virgules, même si un séparateur différent est choisi pour les données.</p>
|
||||
</script>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user