[
{
"id": "e4e30c42d69f0e9c",
"type": "tab",
"label": "File Browser",
"disabled": false,
"info": "",
"env": []
},
{
"id": "4fa73dd9.83cca4",
"type": "comment",
"z": "e4e30c42d69f0e9c",
"name": "File Browser",
"info": "1) Update the default folder in the Init node\n2) Update the default folder in the Reset node as well\n3) You can duplicate the Reset nodes and use them as saved shortcuts\n4) Check the Convert Timestamps function node if you want to see your dates in a different format. I just used the Javascript toISOString format.\n5) The Graph button can read any CSV file which have any number of values, but the first column always contains a timestamp column with javascript timestamp of the data point.",
"x": 90,
"y": 40,
"wires": []
},
{
"id": "993d7272.843ae",
"type": "fs-file-lister",
"z": "e4e30c42d69f0e9c",
"name": "Files",
"start": "C:\\Users\\177008EIE\\Desktop",
"pattern": "*.*",
"folders": "*",
"hidden": false,
"lstype": "files",
"path": true,
"single": true,
"depth": 0,
"stat": true,
"showWarnings": false,
"x": 490,
"y": 140,
"wires": [
[
"dd88bd23.37cde"
]
]
},
{
"id": "d185a45.2327a58",
"type": "inject",
"z": "e4e30c42d69f0e9c",
"name": "Init",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "change",
"payload": "D:\\Node_red\\",
"payloadType": "str",
"x": 90,
"y": 100,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "a715f7a4.a398a8",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 1,
"width": "2",
"height": "1",
"passthru": false,
"label": "Refresh",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "refresh",
"payload": "",
"payloadType": "str",
"topic": "refresh",
"topicType": "str",
"x": 80,
"y": 140,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "eb17c7ee.e61988",
"type": "ui_dropdown",
"z": "e4e30c42d69f0e9c",
"name": "File Selector",
"label": "",
"tooltip": "",
"place": "Select a file",
"group": "160e81fb.f1c86e",
"order": 9,
"width": "5",
"height": "1",
"passthru": false,
"multiple": false,
"options": [
{
"label": "",
"value": "",
"type": "str"
}
],
"payload": "",
"topic": "",
"topicType": "str",
"className": "",
"x": 890,
"y": 140,
"wires": [
[
"be4830df.5775d"
]
]
},
{
"id": "dd88bd23.37cde",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Format data",
"func": "// format the data for the dropdown\nmsg.options = [];\nfor (var i=0; i<msg.payload.length; i++) {\n // This is a file\n obj = {};\n obj [msg.payload[i].name.replace(/^.*(\\\\|\\/|\\:)/, '')]=msg.payload[i].name;\n msg.options.push(obj);\n}\nmsg.payload={};\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 690,
"y": 140,
"wires": [
[
"eb17c7ee.e61988"
]
]
},
{
"id": "7b7e0d58.05e244",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 10,
"width": "2",
"height": "1",
"passthru": false,
"label": "Delete",
"tooltip": "",
"color": "",
"bgcolor": "",
"icon": "delete",
"payload": "",
"payloadType": "str",
"topic": "",
"x": 110,
"y": 300,
"wires": [
[
"8da8147a.999af8"
]
]
},
{
"id": "7d490dd1.8458b4",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Get filename",
"func": "// Get the filename from the flow context\nlet filename = flow.get(\"fileselected\");\n\n// check, if the filename is undefined that means it does not exist yet, nothing is selected yet\n// return: do not output anything\nif (filename===undefined) {\n return;\n}\n\n// return the filename to the file-in node to delete\nmsg.filename = filename;\n\nif (msg.filename.replace(/^.*(\\\\|\\/|\\:)/, '')[0]!==\".\") {\n // Only do this if this is a file, we don't delete folders\n // and delete the context/selection as we are deleting the file as well\n flow.set(\"fileselected\");\n return msg;\n}",
"outputs": 1,
"noerr": 0,
"x": 310,
"y": 360,
"wires": [
[
"372ee262.fc94de"
]
]
},
{
"id": "372ee262.fc94de",
"type": "file",
"z": "e4e30c42d69f0e9c",
"name": "Delete file",
"filename": "",
"appendNewline": true,
"createDir": false,
"overwriteFile": "delete",
"encoding": "none",
"x": 520,
"y": 360,
"wires": [
[
"993d7272.843ae",
"5219875b.c070d8"
]
]
},
{
"id": "554f0095.ac1b2",
"type": "ui_toast",
"z": "e4e30c42d69f0e9c",
"position": "dialog",
"displayTime": "3",
"highlight": "",
"sendall": false,
"outputs": 1,
"ok": "Yes",
"cancel": "No",
"raw": false,
"className": "",
"topic": "",
"name": "Confirmation",
"x": 490,
"y": 300,
"wires": [
[
"24df84fe.ebf45c"
]
]
},
{
"id": "8da8147a.999af8",
"type": "change",
"z": "e4e30c42d69f0e9c",
"name": "Set message",
"rules": [
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "Delete confirmation",
"tot": "str"
},
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "Are you sure you want to delete this file?",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 290,
"y": 300,
"wires": [
[
"554f0095.ac1b2"
]
]
},
{
"id": "24df84fe.ebf45c",
"type": "switch",
"z": "e4e30c42d69f0e9c",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "Yes",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 690,
"y": 300,
"wires": [
[
"7d490dd1.8458b4"
]
]
},
{
"id": "3d4e5e51.bdf952",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Folder handling",
"func": "let folder = context.get(\"folder\");\nif (folder===undefined) {\n folder=\"/\";\n context.set(\"folder\", folder);\n}\n\nlet hidden = context.get(\"hidden\");\nif (hidden===undefined) {\n hidden=false;\n context.set(\"hidden\", hidden);\n}\n\nif (msg.topic===\"up\") {\n var the_arr = folder.split('/');\n the_arr.pop();\n folder=the_arr.join('/'); \n context.set(\"folder\", folder);\n}\nif (msg.topic===\"change\") {\n folder=msg.payload; \n context.set(\"folder\", folder);\n}\nif (msg.topic===\"hidden\") {\n hidden=msg.payload; \n context.set(\"hidden\", hidden);\n}\n\nmsg.payload = {\"start\":folder, \"hidden\": hidden};\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 280,
"y": 200,
"wires": [
[
"993d7272.843ae",
"399ac341.7d43bc",
"5219875b.c070d8"
]
]
},
{
"id": "399ac341.7d43bc",
"type": "ui_text",
"z": "e4e30c42d69f0e9c",
"group": "160e81fb.f1c86e",
"order": 4,
"width": "9",
"height": "1",
"name": "",
"label": "Folder:",
"format": "{{msg.payload.start}}",
"layout": "row-left",
"className": "",
"x": 480,
"y": 80,
"wires": []
},
{
"id": "b40ea1d8.c700a",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 3,
"width": "2",
"height": "1",
"passthru": false,
"label": "Up",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "arrow_upwards",
"payload": "",
"payloadType": "str",
"topic": "up",
"topicType": "str",
"x": 90,
"y": 220,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "80940e39.5035b",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 8,
"width": "2",
"height": "1",
"passthru": false,
"label": "Open",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "folder_open",
"payload": "",
"payloadType": "str",
"topic": "",
"topicType": "str",
"x": 110,
"y": 420,
"wires": [
[
"8c1dfaac.979588"
]
]
},
{
"id": "8c1dfaac.979588",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Change folder",
"func": "// Get the filename from the flow context\nlet folderselected = flow.get(\"folderselected\");\n\n// check, if the filename is undefined that means it does not exist yet, nothing is selected yet\n// return: do not output anything\nif (folderselected===undefined) {\n return;\n}\n\nmsg.topic = \"change\";\nmsg.payload = folderselected;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 320,
"y": 420,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "58414ec4.c716e",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 2,
"width": "2",
"height": "1",
"passthru": false,
"label": "Reset",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "autorenew",
"payload": "D:\\Node_red\\",
"payloadType": "str",
"topic": "change",
"topicType": "str",
"x": 90,
"y": 180,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "5219875b.c070d8",
"type": "fs-file-lister",
"z": "e4e30c42d69f0e9c",
"name": "Folders",
"start": "C:\\Users\\177008EIE\\Desktop",
"pattern": "*.*",
"folders": "*",
"hidden": false,
"lstype": "directories",
"path": true,
"single": true,
"depth": 0,
"stat": true,
"showWarnings": false,
"x": 500,
"y": 240,
"wires": [
[
"ebc234be.d53fe8"
]
]
},
{
"id": "37485c24.212054",
"type": "ui_dropdown",
"z": "e4e30c42d69f0e9c",
"name": "Folder Selector",
"label": "",
"tooltip": "",
"place": "Select a folder",
"group": "160e81fb.f1c86e",
"order": 7,
"width": "5",
"height": "1",
"passthru": false,
"options": [
{
"label": "",
"value": "",
"type": "str"
}
],
"payload": "",
"topic": "",
"x": 900,
"y": 240,
"wires": [
[
"2875c79f.531558"
]
]
},
{
"id": "ebc234be.d53fe8",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Format data",
"func": "// format the data for the dropdown\nmsg.options = [];\nfor (var i=0; i<msg.payload.length; i++) {\n // This is a foler\n obj = {};\n obj [\"[\"+msg.payload[i].name.replace(/^.*(\\\\|\\/|\\:)/, '')+\"]\"]=msg.payload[i].name;\n msg.options.push(obj);\n}\nmsg.payload={};\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 690,
"y": 240,
"wires": [
[
"37485c24.212054"
]
]
},
{
"id": "be4830df.5775d",
"type": "change",
"z": "e4e30c42d69f0e9c",
"name": "Save selection",
"rules": [
{
"t": "set",
"p": "fileselected",
"pt": "flow",
"to": "payload",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1100,
"y": 140,
"wires": [
[]
]
},
{
"id": "2875c79f.531558",
"type": "change",
"z": "e4e30c42d69f0e9c",
"name": "Save selection",
"rules": [
{
"t": "set",
"p": "folderselected",
"pt": "flow",
"to": "payload",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1100,
"y": 240,
"wires": [
[]
]
},
{
"id": "928e60a7.994be",
"type": "ui_switch",
"z": "e4e30c42d69f0e9c",
"name": "",
"label": "Hidden",
"tooltip": "Show hidden files or not",
"group": "160e81fb.f1c86e",
"order": 5,
"width": "2",
"height": "1",
"passthru": false,
"decouple": "false",
"topic": "hidden",
"style": "",
"onvalue": "true",
"onvalueType": "bool",
"onicon": "check_box",
"oncolor": "#000000",
"offvalue": "false",
"offvalueType": "bool",
"officon": "check_box_outline_blank",
"offcolor": "#000000",
"x": 80,
"y": 260,
"wires": [
[
"3d4e5e51.bdf952"
]
]
},
{
"id": "bdb8660cab2fb6ee",
"type": "ui_button",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 11,
"width": "2",
"height": "1",
"passthru": false,
"label": "Graph",
"tooltip": "",
"color": "",
"bgcolor": "",
"className": "",
"icon": "show_chart",
"payload": "",
"payloadType": "str",
"topic": "",
"topicType": "str",
"x": 90,
"y": 540,
"wires": [
[
"4af56c96d2c84bd8"
]
]
},
{
"id": "4af56c96d2c84bd8",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Get filename",
"func": "// Get the filename from the flow context\nlet filename = flow.get(\"fileselected\");\n\n// check, if the filename is undefined that means it does not exist yet, nothing is selected yet\n// return: do not output anything\nif (filename===undefined) {\n return;\n}\n\n// return the filename to the file-in node to delete\nmsg.filename = filename;\n\nif (msg.filename.replace(/^.*(\\\\|\\/|\\:)/, '')[0]!==\".\") {\n // Only do this if this is a file, we don't delete folders\n return msg;\n}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 258,
"y": 540,
"wires": [
[
"24eacfda49cb6762"
]
]
},
{
"id": "24eacfda49cb6762",
"type": "file in",
"z": "e4e30c42d69f0e9c",
"name": "",
"filename": "",
"format": "utf8",
"chunk": false,
"sendError": false,
"encoding": "none",
"allProps": false,
"x": 438,
"y": 540,
"wires": [
[
"8726e1bb706a2891"
]
]
},
{
"id": "8726e1bb706a2891",
"type": "csv",
"z": "e4e30c42d69f0e9c",
"name": "",
"sep": ",",
"hdrin": false,
"hdrout": "none",
"multi": "mult",
"ret": "\\n",
"temp": "",
"skip": "0",
"strings": true,
"include_empty_strings": false,
"include_null_values": false,
"x": 588,
"y": 540,
"wires": [
[
"3293d2ddeabf37ba"
]
]
},
{
"id": "135d930d7215ffff",
"type": "debug",
"z": "e4e30c42d69f0e9c",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 1170,
"y": 340,
"wires": []
},
{
"id": "fc1bde06c37f5f44",
"type": "debug",
"z": "e4e30c42d69f0e9c",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 670,
"y": 400,
"wires": []
},
{
"id": "3293d2ddeabf37ba",
"type": "function",
"z": "e4e30c42d69f0e9c",
"name": "Format data for chart",
"func": "var chart = [{\n \"series\":[],\n \"data\":[msg.payload],\n \"labels\":[\"\"]\n}];\n\n\n/*\nvar pressure = [];\nvar out2 = [];\n\nfor (var i=0; i<msg.payload.length; i++) {\n pressure.push({\"x\":msg.payload[i].timestamp, \"y\":msg.payload[i].pressure});\n out2.push({\"x\":msg.payload[i].timestamp, \"y\":msg.payload[i].out2*200});\n\n}\nchart[0].data.push(pressure);\nchart[0].data.push(out2);\n*/\n\nlet columns = 0;\n\nfor(var series in msg.payload[0]) {\n if(series!==\"timestamp\") {\n chart[0].series.push(series);\n chart[0].data.push([]);\n columns++;\n }\n}\n\n\nfor (var j=0; j<msg.payload.length; j++) {\n for(var i=0;i<columns;i++) {\n chart[0].data[i].push({\"x\":msg.payload[j].timestamp, \"y\":msg.payload[j][chart[0].series[i]]});\n } \n}\n\n\n\n\nmsg.payload = chart;\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 800,
"y": 540,
"wires": [
[
"7312f2a78a4eef04"
]
]
},
{
"id": "7312f2a78a4eef04",
"type": "ui_chart",
"z": "e4e30c42d69f0e9c",
"name": "",
"group": "160e81fb.f1c86e",
"order": 12,
"width": "18",
"height": "6",
"label": "",
"chartType": "line",
"legend": "false",
"xformat": "HH:mm:ss",
"interpolate": "linear",
"nodata": "",
"dot": false,
"ymin": "",
"ymax": "",
"removeOlder": 1,
"removeOlderPoints": "",
"removeOlderUnit": "3600",
"cutout": 0,
"useOneColor": false,
"useUTC": false,
"colors": [
"#1f77b4",
"#aec7e8",
"#ff7f0e",
"#2ca02c",
"#98df8a",
"#d62728",
"#ff9896",
"#9467bd",
"#c5b0d5"
],
"outputs": 1,
"useDifferentColor": false,
"className": "",
"x": 1090,
"y": 580,
"wires": [
[]
]
},
{
"id": "160e81fb.f1c86e",
"type": "ui_group",
"name": "File Browser",
"tab": "c2e47548e62261b9",
"order": 3,
"disp": true,
"width": "18",
"collapse": false
},
{
"id": "c2e47548e62261b9",
"type": "ui_tab",
"name": "Home",
"icon": "dashboard",
"order": 1,
"disabled": false,
"hidden": false
}
]
* List item
The Csv file has two column one is timestamp and temperature data .I have put the debug node at the end of chart but not sure what message I am recieving
Thankyou in Advance ,.