Posts: 592
Threads: 67
Joined: Nov 2016
Reputation:
22
Hola!
I just noticed with my new install, and trying to rebuild some past flows, that the Node-RED SERIAL nodes are no longer there.
I was able to re-install them, but given the ongoing issues with having to move the Freeboard directory aside, install new nodes, then move the Freeboard directory back, it can be a real pain to install new nodes.
Any chance that the SERIAL nodes can be returned to the distribution? Given that many of the flows we are doing receive and deliver strings on USB devices, it's pretty important to have them available.
While you're there, it would be GREAT if the ARDUINO nodes were also installed with the distribution!
Posts: 3,038
Threads: 63
Joined: Mar 2016
Reputation:
288
You are right, I will fix this on next update. Freeboard node is causing always troubles, it is not maintained and is not well implemented, could we remove it? how much people is using it?
could you point me to the arduino nodes link?
Posts: 592
Threads: 67
Joined: Nov 2016
Reputation:
22
Here's a good link for the Arduino node red stuff. It uses Firmata.
https://nodered.org/docs/hardware/arduino
At the moment, I'm not using Freeboard. For the kind of stuff we are all doing, however, some sort of ability to display from Node-RED would be very helpful. Perhaps this is another opportunity to post a poll to ask forum members their opinion?
On balance, I'd say that they ability to easily add new nodes in Node-RED is a pretty valuable feature.
Posts: 96
Threads: 0
Joined: Apr 2017
Reputation:
4
(2017-10-12, 01:30 PM)abarrow Wrote: Here's a good link for the Arduino node red stuff. It uses Firmata.
https://nodered.org/docs/hardware/arduino
At the moment, I'm not using Freeboard. For the kind of stuff we are all doing, however, some sort of ability to display from Node-RED would be very helpful. Perhaps this is another opportunity to post a poll to ask forum members their opinion?
On balance, I'd say that they ability to easily add new nodes in Node-RED is a pretty valuable feature.
Node-red has its own dashboard... https://github.com/node-red/node-red-dashboard
I really don't understand why people are still using the buggy freeboard.
Posts: 592
Threads: 67
Joined: Nov 2016
Reputation:
22
Perhaps that is the answer! Thanks.
Posts: 1,236
Threads: 103
Joined: Mar 2016
Reputation:
73
(2017-10-12, 02:49 PM)abarrow Wrote: Perhaps that is the answer! Thanks.
This is some node-red I use to graph and monitor some signalk data - you might be able to edit or copy some of this to speed things up. i never really got on with freeboard so got rid of it a long tome ago. With lots of date the charts on node-red can get a bit slow so it's good to limit just how much is getting sent. Also I log everything to a sqlite database and create some node-red charts from that. If you go the dashboard route and want to have a look at a database just ask & I'll upload some more flows.
(Easy to see where the power in the boatyard I'm in went off today and I had to turn on the solar panels )
Code: [
{
"id": "67b79641.1fad68",
"type": "websocket in",
"z": "749e8283.293f4c",
"name": "SignalK input",
"server": "fc1b2b62.0b63a8",
"client": "",
"x": 90,
"y": 120,
"wires": [
[
"20af45d9.7fe30a"
]
]
},
{
"id": "20af45d9.7fe30a",
"type": "json",
"z": "749e8283.293f4c",
"name": "",
"pretty": false,
"x": 90,
"y": 305,
"wires": [
[
"dbc264db.e996e8",
"8b31ff78.f9f4",
"4e228623.5d83f8",
"8b385a5c.b0c248",
"2c398bd9.039814",
"825023eb.4bddb"
]
]
},
{
"id": "dbc264db.e996e8",
"type": "change",
"z": "749e8283.293f4c",
"name": "Filter engine temp",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "msg.payload.updates.values[path=\"propulsion.eng.temperature\"].value",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 290,
"y": 145,
"wires": [
[
"12d0fbb4.557744"
]
]
},
{
"id": "8b31ff78.f9f4",
"type": "change",
"z": "749e8283.293f4c",
"name": "Filter alt temp",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "msg.payload.updates.values[path=\"propulsion.alt.temperature\"].value",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 300,
"y": 225,
"wires": [
[
"4a8866f9.186ab8"
]
]
},
{
"id": "4e228623.5d83f8",
"type": "change",
"z": "749e8283.293f4c",
"name": "Filter exhaust temp",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "msg.payload.updates.values[path=\"propulsion.exh.temperature\"].value",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 310,
"y": 325,
"wires": [
[
"3d303b8e.883b74"
]
]
},
{
"id": "8b385a5c.b0c248",
"type": "link out",
"z": "749e8283.293f4c",
"name": "To database",
"links": [
"1297a3e2.92bf2c",
"1eef2563.1f8deb",
"1996dede.bab381",
"13276a54.97c086",
"745f2a9.eb953d4",
"b4298a7c.2713e8"
],
"x": 75,
"y": 400,
"wires": []
},
{
"id": "2c398bd9.039814",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it batt data?",
"property": "payload.updates.\"$source\"",
"propertyType": "jsonata",
"rules": [
{
"t": "eq",
"v": "OPsensors.I2C.ADS1115",
"vt": "str"
}
],
"checkall": "false",
"outputs": 1,
"x": 235,
"y": 405,
"wires": [
[
"4ad31cf4.e60904"
]
]
},
{
"id": "825023eb.4bddb",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it Met data?",
"property": "payload.updates.\"$source\"",
"propertyType": "jsonata",
"rules": [
{
"t": "eq",
"v": "OPsensors.I2C.BMP180",
"vt": "str"
}
],
"checkall": "false",
"outputs": 1,
"x": 240,
"y": 520,
"wires": [
[
"f590e0b7.3a69e"
]
]
},
{
"id": "12d0fbb4.557744",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 350,
"y": 185,
"wires": [
[
"d652486c.7ed398",
"accdb940.5e5d38"
]
]
},
{
"id": "4a8866f9.186ab8",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 370,
"y": 265,
"wires": [
[
"b3490042.bbd67",
"23f49bc6.7d4f34"
]
]
},
{
"id": "3d303b8e.883b74",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 370,
"y": 365,
"wires": [
[
"41967fda.ebcdf",
"ee7ce1a6.f4d62"
]
]
},
{
"id": "4ad31cf4.e60904",
"type": "change",
"z": "749e8283.293f4c",
"name": "create msg.BATT",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.updates[0].values[1].$round(value)/1000",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 245,
"y": 450,
"wires": [
[
"ed9cb4da.8160b8"
]
]
},
{
"id": "f590e0b7.3a69e",
"type": "change",
"z": "749e8283.293f4c",
"name": "create msg.presure",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "msg.payload.updates.values[path=\"environment.outside.pressure\"].$round(value)/100",
"tot": "jsonata"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 260,
"y": 565,
"wires": [
[
"df31db1.f450628",
"59d07035.07b67"
]
]
},
{
"id": "d652486c.7ed398",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "minute",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 145,
"wires": [
[
"cb80fafe.8bc1d8"
]
]
},
{
"id": "accdb940.5e5d38",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 185,
"wires": [
[
"6cddc5a1.97f00c"
]
]
},
{
"id": "b3490042.bbd67",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "minute",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 225,
"wires": [
[
"c476748a.0d02b8"
]
]
},
{
"id": "23f49bc6.7d4f34",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "minute",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 265,
"wires": [
[
"30135c60.5c6134"
]
]
},
{
"id": "41967fda.ebcdf",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "minute",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 305,
"wires": [
[
"5ac0570d.33b958"
]
]
},
{
"id": "ee7ce1a6.f4d62",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 670,
"y": 345,
"wires": [
[
"2af0ffc5.36311"
]
]
},
{
"id": "ed9cb4da.8160b8",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 660,
"y": 420,
"wires": [
[
"4439e0f6.da26d"
]
]
},
{
"id": "df31db1.f450628",
"type": "debug",
"z": "749e8283.293f4c",
"name": "",
"active": false,
"console": "false",
"complete": "false",
"x": 640,
"y": 580,
"wires": []
},
{
"id": "59d07035.07b67",
"type": "delay",
"z": "749e8283.293f4c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": true,
"x": 650,
"y": 500,
"wires": [
[
"2af10602.ee0eca"
]
]
},
{
"id": "cb80fafe.8bc1d8",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 145,
"wires": [
[
"985338c6.d20748"
]
]
},
{
"id": "6cddc5a1.97f00c",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 185,
"wires": [
[
"f66f5fb8.176a1"
]
]
},
{
"id": "c476748a.0d02b8",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 225,
"wires": [
[
"c64d6283.aca53"
]
]
},
{
"id": "30135c60.5c6134",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 265,
"wires": [
[
"2e9c3f90.ea532"
]
]
},
{
"id": "5ac0570d.33b958",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 305,
"wires": [
[
"9ca91b03.6c5c38"
]
]
},
{
"id": "2af0ffc5.36311",
"type": "function",
"z": "749e8283.293f4c",
"name": "Convert to deg C",
"func": "var numInput = Number(msg.payload);\nmsg.topic = \"Eng\";\nvar T = numInput-273.15;\nmsg.payload = T.toFixed(1);\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 850,
"y": 345,
"wires": [
[
"acffaa91.dcbd08"
]
]
},
{
"id": "4439e0f6.da26d",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "BattVoltGauge",
"group": "3bc70d31.720c02",
"order": 1,
"width": "3",
"height": "4",
"gtype": "gage",
"title": "Battery Voltage",
"label": "mV",
"format": "{{value}}",
"min": "11",
"max": "16",
"colors": [
"#ff0000",
"#3ad90d",
"#ca3838"
],
"seg1": "12.5",
"seg2": "14.9",
"x": 1060,
"y": 420,
"wires": []
},
{
"id": "2af10602.ee0eca",
"type": "ui_text",
"z": "749e8283.293f4c",
"group": "3bc70d31.720c02",
"order": 0,
"width": 0,
"height": 0,
"name": "Pressure",
"label": "Pressure",
"format": "{{msg.payload}}",
"layout": "row-spread",
"x": 1040,
"y": 500,
"wires": []
},
{
"id": "985338c6.d20748",
"type": "ui_chart",
"z": "749e8283.293f4c",
"name": "EngineGraph",
"group": "839affdb.33ce",
"order": 0,
"width": "23",
"height": "7",
"label": "Engine temperature history",
"chartType": "line",
"legend": "true",
"xformat": "HH:mm",
"interpolate": "linear",
"nodata": "data",
"ymin": "",
"ymax": "",
"removeOlder": "12",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1060,
"y": 145,
"wires": [
[],
[]
]
},
{
"id": "f66f5fb8.176a1",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "EngTempGauge",
"group": "3bc70d31.720c02",
"order": 1,
"width": "3",
"height": "4",
"gtype": "gage",
"title": "Engine temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1060,
"y": 185,
"wires": []
},
{
"id": "c64d6283.aca53",
"type": "ui_chart",
"z": "749e8283.293f4c",
"name": "Alt graph",
"group": "839affdb.33ce",
"order": 0,
"width": "23",
"height": "7",
"label": "Alt temperature history",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm",
"interpolate": "linear",
"nodata": "",
"ymin": "",
"ymax": "",
"removeOlder": "12",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1040,
"y": 225,
"wires": [
[],
[]
]
},
{
"id": "2e9c3f90.ea532",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "AltTempGauge",
"group": "3bc70d31.720c02",
"order": 1,
"width": "3",
"height": "4",
"gtype": "gage",
"title": "Alt temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1060,
"y": 265,
"wires": []
},
{
"id": "9ca91b03.6c5c38",
"type": "ui_chart",
"z": "749e8283.293f4c",
"name": "ExhGraph",
"group": "839affdb.33ce",
"order": 0,
"width": "23",
"height": "7",
"label": "Exh temperature history",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm",
"interpolate": "linear",
"nodata": "waiting",
"ymin": "",
"ymax": "",
"removeOlder": "12",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1040,
"y": 305,
"wires": [
[],
[]
]
},
{
"id": "acffaa91.dcbd08",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "ExhTempGauge",
"group": "3bc70d31.720c02",
"order": 1,
"width": "3",
"height": "4",
"gtype": "gage",
"title": "Exhaust temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1060,
"y": 345,
"wires": []
},
{
"id": "fc1b2b62.0b63a8",
"type": "websocket-listener",
"z": "",
"path": "ws://localhost:3000/signalk/v1/stream",
"wholemsg": "false"
},
{
"id": "3bc70d31.720c02",
"type": "ui_group",
"z": "",
"name": "Gauges",
"tab": "de6fba2.670c748",
"disp": true,
"width": "6"
},
{
"id": "839affdb.33ce",
"type": "ui_group",
"z": "",
"name": "Eng Temp Graphs",
"tab": "9ba2713.ee8369",
"disp": true,
"width": "23"
},
{
"id": "de6fba2.670c748",
"type": "ui_tab",
"z": "",
"name": "Gauges",
"icon": "dashboard",
"order": 1
},
{
"id": "9ba2713.ee8369",
"type": "ui_tab",
"z": "",
"name": "Graphs",
"icon": "dashboard",
"order": 2
}
]
Posts: 592
Threads: 67
Joined: Nov 2016
Reputation:
22
One of the things I love about this forum: you meet folks with some amazing abilities. That's some really great work!
Posts: 1,236
Threads: 103
Joined: Mar 2016
Reputation:
73
(2017-10-13, 01:40 PM)abarrow Wrote: One of the things I love about this forum: you meet folks with some amazing abilities. That's some really great work!
There's some great stuff out there, the node red google groups is worth looking through.
I program in a very adaptable and easy to learn language - CNP.
Cut and paste,
then fiddle a bit .
Posts: 3,038
Threads: 63
Joined: Mar 2016
Reputation:
288
2017-10-13, 04:28 PM
(This post was last modified: 2017-10-13, 04:31 PM by Sailoog.)
A killer poll is a good idea, let's finish the current one.
PaddyB that looks awesome!
We could set a contest to celebrate the stable stage and choosing the default node-red flow for openplotter
Posts: 208
Threads: 45
Joined: Mar 2017
Reputation:
2
(2017-10-12, 01:30 PM)abarrow Wrote: On balance, I'd say that they ability to easily add new nodes in Node-RED is a pretty valuable feature.
Agree - Don't need Freeboard.
I use CNP too
|