With the flow I shared, I want to draw a linear profile that creates a trend similar to the temperature curves in the picture with the data I receive from different pixels of the thermal camera via serial port. Regards
[
{
"id": "ea87b1398b776bca",
"type": "tab",
"label": "Flow 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "4da371155c78d245",
"type": "serial-port",
"serialport": "/dev/ttyUSB0",
"serialbaud": "19200",
"databits": "8",
"parity": "none",
"stopbits": "1",
"waitfor": "",
"dtr": "none",
"rts": "none",
"cts": "none",
"dsr": "none",
"newline": "\\n",
"bin": "false",
"out": "char",
"addchar": "",
"responsetimeout": "1000"
},
{
"id": "c8facfc96a336368",
"type": "ui_base",
"theme": {
"name": "theme-light",
"lightTheme": {
"default": "#0094CE",
"baseColor": "#0094CE",
"baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif",
"edited": true,
"reset": false
},
"darkTheme": {
"default": "#097479",
"baseColor": "#097479",
"baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif",
"edited": false
},
"customTheme": {
"name": "Untitled Theme 1",
"default": "#4B7930",
"baseColor": "#4B7930",
"baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"
},
"themeState": {
"base-color": {
"default": "#0094CE",
"value": "#0094CE",
"edited": false
},
"page-titlebar-backgroundColor": {
"value": "#0094CE",
"edited": false
},
"page-backgroundColor": {
"value": "#fafafa",
"edited": false
},
"page-sidebar-backgroundColor": {
"value": "#ffffff",
"edited": false
},
"group-textColor": {
"value": "#1bbfff",
"edited": false
},
"group-borderColor": {
"value": "#ffffff",
"edited": false
},
"group-backgroundColor": {
"value": "#ffffff",
"edited": false
},
"widget-textColor": {
"value": "#111111",
"edited": false
},
"widget-backgroundColor": {
"value": "#0094ce",
"edited": false
},
"widget-borderColor": {
"value": "#ffffff",
"edited": false
},
"base-font": {
"value": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"
}
},
"angularTheme": {
"primary": "indigo",
"accents": "blue",
"warn": "red",
"background": "grey",
"palette": "light"
}
},
"site": {
"name": "Node-RED Dashboard",
"hideToolbar": "false",
"allowSwipe": "false",
"lockMenu": "false",
"allowTempTheme": "true",
"dateFormat": "DD/MM/YYYY",
"sizes": {
"sx": 48,
"sy": 48,
"gx": 6,
"gy": 6,
"cx": 6,
"cy": 6,
"px": 0,
"py": 0
}
}
},
{
"id": "c07241771bed7c5b",
"type": "inject",
"z": "ea87b1398b776bca",
"name": "READ TEMP OF 80,60",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "?Pix(80,60)",
"payloadType": "str",
"x": 160,
"y": 220,
"wires": [
[
"de0fe2ae5da53fc0"
]
]
},
{
"id": "2eeda06607062417",
"type": "comment",
"z": "ea87b1398b776bca",
"name": "SERIAL READ COMMAND",
"info": "",
"x": 190,
"y": 40,
"wires": []
},
{
"id": "de0fe2ae5da53fc0",
"type": "function",
"z": "ea87b1398b776bca",
"name": "CARRIAGE RETURN (CR/LF)",
"func": "msg.payload = msg.payload+\"\\r\\n\";\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 430,
"y": 220,
"wires": [
[
"b18e7fa0b073ca92"
]
]
},
{
"id": "b18e7fa0b073ca92",
"type": "serial request",
"z": "ea87b1398b776bca",
"name": "",
"serial": "4da371155c78d245",
"x": 670,
"y": 220,
"wires": [
[
"b799d6aebefe62c0"
]
]
},
{
"id": "d03852053ca0ac6d",
"type": "debug",
"z": "ea87b1398b776bca",
"name": "TEMP1",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1180,
"y": 220,
"wires": []
},
{
"id": "0e2242699e637cd0",
"type": "inject",
"z": "ea87b1398b776bca",
"name": "ImgTemp",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "!ImgTemp",
"payloadType": "str",
"x": 160,
"y": 100,
"wires": [
[
"eec8d05cf27a45cb"
]
]
},
{
"id": "945830e45564bf55",
"type": "inject",
"z": "ea87b1398b776bca",
"name": "READ TEMP OF 80,80",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "?Pix(80,80)",
"payloadType": "str",
"x": 160,
"y": 300,
"wires": [
[
"e7ed7db9e3f0755d"
]
]
},
{
"id": "29d1fd345bdcae43",
"type": "debug",
"z": "ea87b1398b776bca",
"name": "TEMP 2",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1140,
"y": 300,
"wires": []
},
{
"id": "e7ed7db9e3f0755d",
"type": "function",
"z": "ea87b1398b776bca",
"name": "CARRIAGE RETURN (CR/LF)",
"func": "msg.payload = msg.payload+\"\\r\\n\";\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 490,
"y": 300,
"wires": [
[
"33847b4324c2da55"
]
]
},
{
"id": "33847b4324c2da55",
"type": "serial request",
"z": "ea87b1398b776bca",
"name": "",
"serial": "4da371155c78d245",
"x": 730,
"y": 300,
"wires": [
[
"2ed01d733b629592"
]
]
},
{
"id": "7637f66a56ac445e",
"type": "serial request",
"z": "ea87b1398b776bca",
"name": "",
"serial": "4da371155c78d245",
"x": 790,
"y": 100,
"wires": [
[
"31c7a59362f2c84e"
]
]
},
{
"id": "eec8d05cf27a45cb",
"type": "function",
"z": "ea87b1398b776bca",
"name": "CARRIAGE RETURN (CR/LF)",
"func": "msg.payload = msg.payload+\"\\r\\n\";\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 530,
"y": 100,
"wires": [
[
"7637f66a56ac445e"
]
]
},
{
"id": "31c7a59362f2c84e",
"type": "debug",
"z": "ea87b1398b776bca",
"name": "debug 2",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1080,
"y": 100,
"wires": []
},
{
"id": "2ed01d733b629592",
"type": "function",
"z": "ea87b1398b776bca",
"name": "Parse and trim",
"func": "let pay = msg.payload.split(\"!Pix(80,80)=\");\nmsg.payload = {[pay[0]] : parseFloat(pay[1].trim())};\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 940,
"y": 300,
"wires": [
[
"29d1fd345bdcae43"
]
]
},
{
"id": "a1fb6cbabed18349",
"type": "json",
"z": "ea87b1398b776bca",
"name": "",
"property": "payload",
"action": "obj",
"pretty": false,
"x": 1030,
"y": 220,
"wires": [
[
"d03852053ca0ac6d"
]
]
},
{
"id": "b799d6aebefe62c0",
"type": "function",
"z": "ea87b1398b776bca",
"name": "Parse and trim",
"func": "let pay = msg.payload.split(\"!Pix(80,60)=\");\nmsg.payload = {[pay[0]] : parseFloat(pay[1].trim())};\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 860,
"y": 220,
"wires": [
[
"a1fb6cbabed18349"
]
]
}
]