A few weeks back my node-red started using 100% CPU after an update.
Finally tracked it down to JsonPath node filtering SignalK data from a websocket node. Annoying as I lost the engine/alternator/exhaust temperatures.
Asking on the node-red google group didn't reveal why it was happening but came up with what looks to be a better way to filter-
Jsonata ->
http://try.jsonata.org/
http://docs.jsonata.org/
https://github.com/jsonata-js/jsonata/bl...utorial.md
Looks very powerful, filtering the engine temp json is this in a change node-
Finally tracked it down to JsonPath node filtering SignalK data from a websocket node. Annoying as I lost the engine/alternator/exhaust temperatures.
Asking on the node-red google group didn't reveal why it was happening but came up with what looks to be a better way to filter-
Jsonata ->
http://try.jsonata.org/
http://docs.jsonata.org/
https://github.com/jsonata-js/jsonata/bl...utorial.md
Looks very powerful, filtering the engine temp json is this in a change node-
- msg.payload.updates.values[path="propulsion.eng.temperature"].value
Code:
[
{
"id": "67b79641.1fad68",
"type": "websocket in",
"z": "749e8283.293f4c",
"name": "SignalK input",
"server": "fc1b2b62.0b63a8",
"client": "",
"x": 90,
"y": 180,
"wires": [
[
"20af45d9.7fe30a"
]
]
},
{
"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": 650,
"y": 160,
"wires": [
[
"cb80fafe.8bc1d8"
]
]
},
{
"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": 830,
"y": 160,
"wires": [
[
"985338c6.d20748"
]
]
},
{
"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": "4",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1040,
"y": 160,
"wires": [
[],
[]
]
},
{
"id": "f66f5fb8.176a1",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "EngTempGauge",
"group": "f5ff732a.35433",
"order": 1,
"width": "3",
"height": "5",
"gtype": "gage",
"title": "Engine temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1040,
"y": 200,
"wires": []
},
{
"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": 650,
"y": 240,
"wires": [
[
"c476748a.0d02b8"
]
]
},
{
"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": 830,
"y": 240,
"wires": [
[
"c64d6283.aca53"
]
]
},
{
"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": "4",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1020,
"y": 240,
"wires": [
[],
[]
]
},
{
"id": "2e9c3f90.ea532",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "AltTempGauge",
"group": "f5ff732a.35433",
"order": 1,
"width": "3",
"height": "5",
"gtype": "gage",
"title": "Alternator temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1040,
"y": 280,
"wires": []
},
{
"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": 650,
"y": 320,
"wires": [
[
"5ac0570d.33b958"
]
]
},
{
"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": 830,
"y": 320,
"wires": [
[
"9ca91b03.6c5c38"
]
]
},
{
"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": "4",
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": "",
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"x": 1020,
"y": 320,
"wires": [
[],
[]
]
},
{
"id": "acffaa91.dcbd08",
"type": "ui_gauge",
"z": "749e8283.293f4c",
"name": "ExhTempGauge",
"group": "f5ff732a.35433",
"order": 1,
"width": "3",
"height": "5",
"gtype": "gage",
"title": "Exhaust temperature",
"label": "Deg C",
"format": "{{value}}",
"min": 0,
"max": "120",
"colors": [
"#00b500",
"#e6e600",
"#ca3838"
],
"seg1": "",
"seg2": "",
"x": 1040,
"y": 360,
"wires": []
},
{
"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": 650,
"y": 360,
"wires": [
[
"2af0ffc5.36311"
]
]
},
{
"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": 830,
"y": 360,
"wires": [
[
"acffaa91.dcbd08"
]
]
},
{
"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": 650,
"y": 280,
"wires": [
[
"30135c60.5c6134"
]
]
},
{
"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": 830,
"y": 280,
"wires": [
[
"2e9c3f90.ea532"
]
]
},
{
"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": 650,
"y": 200,
"wires": [
[
"6cddc5a1.97f00c"
]
]
},
{
"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": 830,
"y": 200,
"wires": [
[
"f66f5fb8.176a1"
]
]
},
{
"id": "ad76e510.526488",
"type": "comment",
"z": "749e8283.293f4c",
"name": "Engine temperature guages and graphs",
"info": "",
"x": 174.00005340576172,
"y": 109.00006675720215,
"wires": []
},
{
"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": 270,
"y": 160,
"wires": [
[
"12d0fbb4.557744"
]
]
},
{
"id": "20af45d9.7fe30a",
"type": "json",
"z": "749e8283.293f4c",
"name": "",
"pretty": false,
"x": 70,
"y": 320,
"wires": [
[
"dbc264db.e996e8",
"8b31ff78.f9f4",
"4e228623.5d83f8"
]
]
},
{
"id": "12d0fbb4.557744",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 330,
"y": 200,
"wires": [
[
"d652486c.7ed398",
"accdb940.5e5d38"
]
]
},
{
"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": 280,
"y": 240,
"wires": [
[
"4a8866f9.186ab8"
]
]
},
{
"id": "4a8866f9.186ab8",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 350,
"y": 280,
"wires": [
[
"b3490042.bbd67",
"23f49bc6.7d4f34"
]
]
},
{
"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": 290,
"y": 340,
"wires": [
[
"3d303b8e.883b74"
]
]
},
{
"id": "3d303b8e.883b74",
"type": "switch",
"z": "749e8283.293f4c",
"name": "Is it empty?",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"outputs": 1,
"x": 350,
"y": 380,
"wires": [
[
"41967fda.ebcdf",
"ee7ce1a6.f4d62"
]
]
},
{
"id": "fc1b2b62.0b63a8",
"type": "websocket-listener",
"z": "",
"path": "ws://localhost:3000/signalk/v1/stream",
"wholemsg": "false"
},
{
"id": "839affdb.33ce",
"type": "ui_group",
"z": "",
"name": "Eng Temp Graphs",
"tab": "9ba2713.ee8369",
"disp": true,
"width": "23"
},
{
"id": "f5ff732a.35433",
"type": "ui_group",
"z": "",
"name": "Gauges",
"tab": "de6fba2.670c748",
"disp": true,
"width": "6"
},
{
"id": "9ba2713.ee8369",
"type": "ui_tab",
"z": "",
"name": "Graphs",
"icon": "dashboard",
"order": 2
},
{
"id": "de6fba2.670c748",
"type": "ui_tab",
"z": "",
"name": "Gauges",
"icon": "dashboard",
"order": 1
}
]