diff --git a/flows/main.json b/flows/main.json index 2b2eb90..1681724 100644 --- a/flows/main.json +++ b/flows/main.json @@ -69,6 +69,13 @@ "disabled": false, "info": "" }, + { + "id": "1eaf21c8.f7a21e", + "type": "tab", + "label": "Hardware Settings", + "disabled": false, + "info": "" + }, { "id": "1c24ad9c.bebec2", "type": "subflow", @@ -77,8 +84,8 @@ "category": "", "in": [ { - "x": 500, - "y": 860, + "x": 200, + "y": 160, "wires": [ { "id": "752a925a.2d11b4" @@ -88,8 +95,8 @@ ], "out": [ { - "x": 1220, - "y": 300, + "x": 1030, + "y": 60, "wires": [ { "id": "ad541674.4791c8", @@ -101,6 +108,38 @@ "env": [], "color": "#DDAA99" }, + { + "id": "4ed26b8b.253504", + "type": "subflow", + "name": "Hardware config", + "info": "", + "category": "", + "in": [ + { + "x": 40, + "y": 200, + "wires": [ + { + "id": "53d163be.47cf24" + } + ] + } + ], + "out": [ + { + "x": 1040, + "y": 80, + "wires": [ + { + "id": "ddb4b136.fc0b78", + "port": 0 + } + ] + } + ], + "env": [], + "color": "#DDAA99" + }, { "id": "833bc5bb.217ba8", "type": "ui_group", @@ -893,6 +932,26 @@ "width": 3, "height": 1 }, + { + "id": "b0fb559a.6966a8", + "type": "ui_tab", + "z": "", + "name": "Hardware Settings", + "icon": "fa-cogs", + "disabled": false, + "hidden": false + }, + { + "id": "6be36295.0ab324", + "type": "ui_group", + "z": "", + "name": "Settings", + "tab": "b0fb559a.6966a8", + "order": 1, + "disp": false, + "width": "6", + "collapse": false + }, { "id": "4e78af2d.90be7", "type": "ui_ui_control", @@ -1801,15 +1860,16 @@ "type": "ui_template", "z": "eaae323a.31b3", "group": "777a7c33.fcd804", - "name": "Settings", + "name": "System Monitoring", "order": 1, "width": 4, "height": 4, - "format": "\n \n
Settings
\n
", + "format": "\n \n
System Monitoring
\n
", "storeOutMessages": true, "fwdInMessages": true, + "resendOnRefresh": false, "templateScope": "local", - "x": 160, + "x": 130, "y": 260, "wires": [ [ @@ -3603,8 +3663,8 @@ "chunk": false, "sendError": false, "encoding": "none", - "x": 660, - "y": 300, + "x": 470, + "y": 60, "wires": [ [ "15ceb135.6628bf" @@ -3620,8 +3680,8 @@ "property": "payload", "action": "", "pretty": false, - "x": 910, - "y": 300, + "x": 720, + "y": 60, "wires": [ [ "ad541674.4791c8" @@ -3638,8 +3698,8 @@ "createDir": true, "overwriteFile": "true", "encoding": "none", - "x": 1040, - "y": 860, + "x": 740, + "y": 160, "wires": [ [] ] @@ -3652,8 +3712,8 @@ "property": "payload", "action": "str", "pretty": true, - "x": 790, - "y": 860, + "x": 490, + "y": 160, "wires": [ [ "7205d267.36adcc" @@ -3670,8 +3730,8 @@ "noerr": 0, "initialize": "", "finalize": "", - "x": 1090, - "y": 300, + "x": 900, + "y": 60, "wires": [ [] ] @@ -3692,9 +3752,8 @@ "once": true, "onceDelay": 0.1, "topic": "", - "payloadType": "str", - "x": 410, - "y": 300, + "x": 220, + "y": 60, "wires": [ [ "6465bdd5.15eb8c" @@ -5623,8 +5682,8 @@ "noerr": 0, "initialize": "", "finalize": "", - "x": 620, - "y": 860, + "x": 320, + "y": 160, "wires": [ [ "2e6ddf51.c0dba" @@ -7796,5 +7855,432 @@ "wires": [ [] ] + }, + { + "id": "1f63860d.5f5efa", + "type": "file in", + "z": "4ed26b8b.253504", + "name": "", + "filename": "/home/pi/PlanktonScope/hardware.json", + "format": "utf8", + "chunk": false, + "sendError": false, + "encoding": "none", + "x": 380, + "y": 80, + "wires": [ + [ + "8c1fda48.d7d828" + ] + ], + "info": "# PlanktonScope Help\nThis Node will read the content of the file named **config.txt** containing all the input placeholders.\n" + }, + { + "id": "8c1fda48.d7d828", + "type": "json", + "z": "4ed26b8b.253504", + "name": "Parse JSON", + "property": "payload", + "action": "", + "pretty": false, + "x": 650, + "y": 80, + "wires": [ + [ + "ddb4b136.fc0b78" + ] + ] + }, + { + "id": "82099021.9ceb08", + "type": "file", + "z": "4ed26b8b.253504", + "name": "", + "filename": "/home/pi/PlanktonScope/config.json", + "appendNewline": true, + "createDir": true, + "overwriteFile": "true", + "encoding": "none", + "x": 770, + "y": 200, + "wires": [ + [] + ] + }, + { + "id": "bb0a8725.a1849", + "type": "json", + "z": "4ed26b8b.253504", + "name": "Create JSON", + "property": "payload", + "action": "str", + "pretty": true, + "x": 500, + "y": 200, + "wires": [ + [ + "82099021.9ceb08" + ] + ] + }, + { + "id": "f748d952.4b6bc8", + "type": "inject", + "z": "4ed26b8b.253504", + "name": "Load config", + "props": [ + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": true, + "onceDelay": 0.1, + "topic": "", + "x": 110, + "y": 80, + "wires": [ + [ + "1f63860d.5f5efa" + ] + ] + }, + { + "id": "ddb4b136.fc0b78", + "type": "change", + "z": "4ed26b8b.253504", + "name": "", + "rules": [ + { + "t": "set", + "p": "hardware_conf", + "pt": "global", + "to": "payload", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 870, + "y": 80, + "wires": [ + [] + ] + }, + { + "id": "44efaeb3.59bf6", + "type": "subflow:4ed26b8b.253504", + "z": "1eaf21c8.f7a21e", + "name": "", + "env": [], + "x": 100, + "y": 180, + "wires": [ + [ + "e10f5e55.00b828", + "c534fd26.13741", + "54ba7f16.709ad8" + ] + ] + }, + { + "id": "e10f5e55.00b828", + "type": "change", + "z": "1eaf21c8.f7a21e", + "name": "Get stepper_type", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "payload.stepper_type", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 330, + "y": 140, + "wires": [ + [ + "dee52a36.2af72" + ] + ] + }, + { + "id": "dee52a36.2af72", + "type": "ui_dropdown", + "z": "1eaf21c8.f7a21e", + "name": "stepper_type", + "label": "", + "tooltip": "", + "place": "", + "group": "6be36295.0ab324", + "order": 3, + "width": 3, + "height": 1, + "passthru": false, + "multiple": false, + "options": [ + { + "label": "", + "value": "adafruit", + "type": "str" + }, + { + "label": "", + "value": "waveshare", + "type": "str" + } + ], + "payload": "", + "topic": "stepper_type", + "x": 610, + "y": 140, + "wires": [ + [ + "2068e7f.f4efb18", + "8e3b3d3c.955148" + ] + ] + }, + { + "id": "e41870d7.300eb8", + "type": "link out", + "z": "1eaf21c8.f7a21e", + "name": "Stepper_type change", + "links": [ + "45a7b5aa.2ed20c" + ], + "x": 955, + "y": 160, + "wires": [] + }, + { + "id": "2068e7f.f4efb18", + "type": "delay", + "z": "1eaf21c8.f7a21e", + "name": "", + "pauseType": "delay", + "timeout": "1", + "timeoutUnits": "seconds", + "rate": "1", + "nbRateUnits": "1", + "rateUnits": "second", + "randomFirst": "1", + "randomLast": "5", + "randomUnits": "seconds", + "drop": false, + "x": 820, + "y": 160, + "wires": [ + [ + "e41870d7.300eb8" + ] + ] + }, + { + "id": "45a7b5aa.2ed20c", + "type": "link in", + "z": "9daf9e2b.019fc", + "name": "Python restart", + "links": [ + "e41870d7.300eb8" + ], + "x": 155, + "y": 300, + "wires": [ + [ + "466eb611.4da048" + ] + ] + }, + { + "id": "53d163be.47cf24", + "type": "function", + "z": "4ed26b8b.253504", + "name": "Update and retrieve hardware_conf", + "func": "// change global\nhardware_conf = global.get(\"hardware_conf\");\nif (msg.topic !== null){\n hardware_conf[msg.topic] = msg.payload;\n global.set(\"hardware_conf\", hardware_conf);\n}\n\nreturn {\"payload\": hardware_conf};", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "x": 240, + "y": 200, + "wires": [ + [ + "bb0a8725.a1849" + ] + ] + }, + { + "id": "8e3b3d3c.955148", + "type": "subflow:4ed26b8b.253504", + "z": "1eaf21c8.f7a21e", + "name": "", + "env": [], + "x": 840, + "y": 200, + "wires": [ + [] + ] + }, + { + "id": "c534fd26.13741", + "type": "change", + "z": "1eaf21c8.f7a21e", + "name": "Get stepper_reverse", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "payload.stepper_reverse", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 340, + "y": 180, + "wires": [ + [ + "cd1987c7.027f58" + ] + ] + }, + { + "id": "cd1987c7.027f58", + "type": "ui_switch", + "z": "1eaf21c8.f7a21e", + "name": "stepper_reverse", + "label": "Invert stepper output", + "tooltip": "Stepper 1 is controlled by output 1 or the other way around", + "group": "6be36295.0ab324", + "order": 4, + "width": 0, + "height": 0, + "passthru": false, + "decouple": "false", + "topic": "stepper_reverse", + "style": "", + "onvalue": "true", + "onvalueType": "bool", + "onicon": "", + "oncolor": "", + "offvalue": "false", + "offvalueType": "bool", + "officon": "", + "offcolor": "", + "x": 600, + "y": 180, + "wires": [ + [ + "8e3b3d3c.955148", + "2068e7f.f4efb18" + ] + ] + }, + { + "id": "54ba7f16.709ad8", + "type": "change", + "z": "1eaf21c8.f7a21e", + "name": "Get pump_steps_per_ml", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "payload.pump_steps_per_ml", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 350, + "y": 220, + "wires": [ + [ + "ee58b91c.396108" + ] + ] + }, + { + "id": "ee58b91c.396108", + "type": "ui_text_input", + "z": "1eaf21c8.f7a21e", + "name": "pump_steps_per_ml", + "label": "Pump: steps per mL", + "tooltip": "", + "group": "6be36295.0ab324", + "order": 5, + "width": 0, + "height": 0, + "passthru": false, + "mode": "number", + "delay": "2000", + "topic": "pump_steps_per_ml", + "x": 580, + "y": 220, + "wires": [ + [ + "2068e7f.f4efb18", + "8e3b3d3c.955148" + ] + ] + }, + { + "id": "be888117.5cd67", + "type": "ui_template", + "z": "1eaf21c8.f7a21e", + "group": "6be36295.0ab324", + "name": "Stepper controller type header", + "order": 2, + "width": 3, + "height": 1, + "format": "
Stepper controller type
", + "storeOutMessages": true, + "fwdInMessages": true, + "resendOnRefresh": true, + "templateScope": "local", + "x": 550, + "y": 100, + "wires": [ + [] + ] + }, + { + "id": "7534dfd9.8cf3e8", + "type": "ui_template", + "z": "1eaf21c8.f7a21e", + "group": "6be36295.0ab324", + "name": "Information", + "order": 1, + "width": 6, + "height": 3, + "format": "
\n

Changing one of these values will make the python back-end to restart.

\n

If you are not sure, you probably should not be touching anything here!

\n
", + "storeOutMessages": true, + "fwdInMessages": true, + "resendOnRefresh": true, + "templateScope": "local", + "x": 610, + "y": 60, + "wires": [ + [] + ] } ] \ No newline at end of file