clean up arduino node readme. Add hint re rate limit or rbe.

This commit is contained in:
Dave Conway-Jones 2018-05-13 17:26:32 +01:00
parent dca9dfccc1
commit a3d4f01587
No known key found for this signature in database
GPG Key ID: 9E7F9C73F5168CD4
5 changed files with 178 additions and 60 deletions

View File

@ -28,6 +28,7 @@
<p>The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.</p>
<p>You can select either Digital or Analogue input. Outputs the value read as <code>msg.payload</code> and the pin number as <code>msg.topic</code>.</p>
<p>It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle.</p>
<p>For example you could use a <code>delay</code> node set to rate limit and drop intermediate values, or an <code>rbe</code> node to only report when it changes by a certain amount.</p>
</script>
<script type="text/javascript">

View File

@ -33,8 +33,8 @@ module.exports = function(RED) {
if (node.board) {
try {
node.board.sp.close(function() {
done();
if (RED.settings.verbose) { node.log(RED._("arduino.status.portclosed")); }
done();
});
}
catch(e) { done(); }
@ -93,9 +93,6 @@ module.exports = function(RED) {
}
if (node.board.isReady) { doit(); }
else { node.board.on("ready", function() { doit(); }); }
node.on("close", function() {
if (node.tout) { clearTimeout(node.tout); }
})
}
else {
this.warn(RED._("arduino.errors.portnotconf"));
@ -155,9 +152,6 @@ module.exports = function(RED) {
}
if (node.board.isReady) { doit(); }
else { node.board.on("ready", function() { doit(); }); }
node.on("close", function() {
if (node.tout) { clearTimeout(node.tout); }
})
}
else {
this.warn(RED._("arduino.errors.portnotconf"));

View File

@ -26,9 +26,7 @@ Connects to local Arduino and monitors the selected pin for changes.
You can select either **Digital**, **Analogue**, or **String** input type.
Outputs the value read as `msg.payload` and the pin number as `msg.topic`.
It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle.
You can set the sample rate from `20` to `65535` mS.
It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle. For example you could use a `delay` node set to rate limit and drop intermediate values, or an `rbe` node to only report when it changes by a certain amount.
### Output Node

View File

@ -1,6 +1,6 @@
{
"name" : "node-red-node-arduino",
"version" : "0.0.16",
"version" : "0.0.17",
"description" : "A Node-RED node to talk to an Arduino running firmata",
"dependencies" : {
"firmata" : "~0.19.1"

223
package-lock.json generated
View File

@ -1435,9 +1435,9 @@
}
},
"follow-redirects": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.3.0.tgz",
"integrity": "sha1-9oSHH8EW0uMp/aVe9naH9Pq8kFw=",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz",
"integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==",
"dev": true,
"requires": {
"debug": "^3.1.0"
@ -2440,9 +2440,9 @@
"dev": true
},
"jsonata": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.5.0.tgz",
"integrity": "sha512-Bc+T0WspLUArkLqp9Bgewja92LukPRlyS1hsjGITQj1OLxwEi+yxpVfcpn2NBJePHJb6CdqJsu/QjPGiWmez8A==",
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.5.3.tgz",
"integrity": "sha512-dkXujSyBt/6BtESLvQHrc0OQ+MjSM9FXhb+UkLVrN88Gdh/OjhcDO1C4r8aDrSJxW4mDf9ogFfCAh7rK3rH6KA==",
"dev": true
},
"jsonfile": {
@ -2982,32 +2982,32 @@
"dev": true
},
"moment-timezone": {
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.16.tgz",
"integrity": "sha512-4d1l92plNNqnMkqI/7boWNVXJvwGL2WyByl1Hxp3h/ao3HZiAqaoQY+6KBkYdiN5QtNDpndq+58ozl8W4GVoNw==",
"version": "0.5.17",
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.17.tgz",
"integrity": "sha512-Y/JpVEWIOA9Gho4vO15MTnW1FCmHi3ypprrkUaxsZ1TKg3uqC8q/qMBjTddkHoiwwZN3qvZSr4zJP7x9V3LpXA==",
"dev": true,
"requires": {
"moment": ">= 2.9.0"
}
},
"mqtt": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.15.1.tgz",
"integrity": "sha512-wcU1Ec/PqdgmWZ8InKd9298UlHbsL4ujnUdkkN1JIee0HI1Qe+JvZhO66qCYQKEH+U2XsJMcr9GncQPKUEfmRw==",
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.17.0.tgz",
"integrity": "sha512-eYeK5G/GQcdP/AOrGQMUULX7QvBXt3I9bfmgNkzMTsdSR1ywJQhK1iCYPrhh+rtRl3eUSJwEbO+oZx/Q51uHaw==",
"dev": true,
"requires": {
"commist": "^1.0.0",
"concat-stream": "^1.6.0",
"end-of-stream": "^1.1.0",
"concat-stream": "^1.6.2",
"end-of-stream": "^1.4.1",
"help-me": "^1.0.1",
"inherits": "^2.0.3",
"minimist": "^1.2.0",
"mqtt-packet": "^5.4.0",
"pump": "^2.0.0",
"readable-stream": "^2.3.3",
"mqtt-packet": "^5.5.0",
"pump": "^3.0.0",
"readable-stream": "^2.3.5",
"reinterval": "^1.1.0",
"split2": "^2.1.1",
"websocket-stream": "^5.0.1",
"websocket-stream": "^5.1.2",
"xtend": "^4.0.1"
},
"dependencies": {
@ -3050,9 +3050,9 @@
}
},
"mqtt-packet": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-5.5.0.tgz",
"integrity": "sha512-kR+Uw+r9rjUFSLZutmaAhjL4Y1asKLMTwE++PP0iuApJuc+zItE5v2LluQN2K3Pri5e2+K4V++QDjqGTgle/+A==",
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-5.6.0.tgz",
"integrity": "sha512-QECe2ivqcR1LRsPobRsjenEKAC3i1a5gmm+jNKJLrsiq9PaSQ18LlKFuxvhGxWkvGEPadWv6rKd31O4ICqS1Xw==",
"dev": true,
"requires": {
"bl": "^1.2.1",
@ -3270,9 +3270,9 @@
}
},
"node-red": {
"version": "0.18.4",
"resolved": "https://registry.npmjs.org/node-red/-/node-red-0.18.4.tgz",
"integrity": "sha512-X8JZTsZou2AyoCzNbeooRm+ZDq9lCk9b+v5V5FSPzSO/XkfVEVAXoAaLB5Tt338Mx2ky0/uGQy9bXdztUOAiGg==",
"version": "0.18.5",
"resolved": "https://registry.npmjs.org/node-red/-/node-red-0.18.5.tgz",
"integrity": "sha512-GsuAnSwIr2AFwVUIpI2ehCeX+dvFrpENiQ7wV4bLiihtXk8/tt71TUi529vq2GuRPh3lDQ0/oS18qiyG6aV30w==",
"dev": true,
"requires": {
"basic-auth": "2.0.0",
@ -3285,20 +3285,20 @@
"cookie-parser": "1.4.3",
"cors": "2.8.4",
"cron": "1.3.0",
"express": "4.16.2",
"express": "4.16.3",
"express-session": "1.15.6",
"follow-redirects": "1.3.0",
"follow-redirects": "1.4.1",
"fs-extra": "5.0.0",
"fs.notify": "0.0.4",
"hash-sum": "1.0.2",
"i18next": "1.10.6",
"is-utf8": "0.2.1",
"js-yaml": "3.10.0",
"js-yaml": "3.11.0",
"json-stringify-safe": "5.0.1",
"jsonata": "1.5.0",
"jsonata": "1.5.3",
"media-typer": "0.3.0",
"memorystore": "1.6.0",
"mqtt": "2.15.1",
"mqtt": "2.17.0",
"multer": "1.3.0",
"mustache": "2.3.0",
"node-red-node-email": "0.1.*",
@ -3311,10 +3311,10 @@
"passport": "0.4.0",
"passport-http-bearer": "1.0.1",
"passport-oauth2-client-password": "0.1.2",
"raw-body": "2.3.2",
"semver": "5.4.1",
"raw-body": "2.3.3",
"semver": "5.5.0",
"sentiment": "2.1.0",
"uglify-js": "3.3.6",
"uglify-js": "3.3.24",
"when": "3.7.8",
"ws": "1.1.5",
"xml2js": "0.4.19"
@ -3326,10 +3326,72 @@
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true
},
"express": {
"version": "4.16.3",
"resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
"dev": true,
"requires": {
"accepts": "~1.3.5",
"array-flatten": "1.1.1",
"body-parser": "1.18.2",
"content-disposition": "0.5.2",
"content-type": "~1.0.4",
"cookie": "0.3.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.1.1",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.3",
"qs": "6.5.1",
"range-parser": "~1.2.0",
"safe-buffer": "5.1.1",
"send": "0.16.2",
"serve-static": "1.13.2",
"setprototypeof": "1.1.0",
"statuses": "~1.4.0",
"type-is": "~1.6.16",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
}
},
"finalhandler": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"dev": true,
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
"parseurl": "~1.3.2",
"statuses": "~1.4.0",
"unpipe": "~1.0.0"
}
},
"iconv-lite": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
"dev": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"js-yaml": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
"integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@ -3346,10 +3408,55 @@
"osenv": "^0.1.4"
}
},
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"raw-body": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
"integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
"dev": true,
"requires": {
"bytes": "3.0.0",
"http-errors": "1.6.3",
"iconv-lite": "0.4.23",
"unpipe": "1.0.0"
}
},
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"dev": true,
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
"destroy": "~1.0.4",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
"http-errors": "~1.6.2",
"mime": "1.4.1",
"ms": "2.0.0",
"on-finished": "~2.3.0",
"range-parser": "~1.2.0",
"statuses": "~1.4.0"
}
},
"serve-static": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"dev": true,
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.2",
"send": "0.16.2"
}
},
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
"dev": true
}
}
@ -3973,9 +4080,9 @@
"dev": true
},
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"requires": {
"end-of-stream": "^1.1.0",
@ -3991,6 +4098,18 @@
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
"pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"punycode": {
@ -4272,6 +4391,12 @@
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"samsam": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz",
@ -4985,19 +5110,19 @@
}
},
"uglify-js": {
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.6.tgz",
"integrity": "sha512-dHp7NHttxYRqz6v/YtR+Jgfo68I/yMbofhYymx9fhIRMxPgap9axbMq5a4NT9gWVzQW8Zh8DJsgZpxKpZbolMA==",
"version": "3.3.24",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.24.tgz",
"integrity": "sha512-hS7+TDiqIqvWScCcKRybCQzmMnEzJ4ryl9ErRmW4GFyG48p0/dKZiy/5mVLbsFzU8CCnCgQdxMiJzZythvLzCg==",
"dev": true,
"requires": {
"commander": "~2.13.0",
"commander": "~2.15.0",
"source-map": "~0.6.1"
},
"dependencies": {
"commander": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
"integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
"dev": true
},
"source-map": {