2019-12-15 00:48:37 +01:00
[
{
"id" : "7f885510.6173fc" ,
"type" : "tab" ,
"label" : "Flow 1" ,
"disabled" : false ,
"info" : ""
} ,
2019-12-15 02:05:05 +01:00
{
"id" : "4e7b0c26.1eecb4" ,
"type" : "tab" ,
"label" : "Flow 2" ,
"disabled" : false ,
"info" : ""
} ,
{
"id" : "b2d230de.b7751" ,
"type" : "ui_base" ,
"theme" : {
"name" : "theme-dark" ,
"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" : true ,
"reset" : 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" ,
"reset" : false
} ,
"themeState" : {
"base-color" : {
"default" : "#097479" ,
"value" : "#097479" ,
"edited" : false
} ,
"page-titlebar-backgroundColor" : {
"value" : "#097479" ,
"edited" : false
} ,
"page-backgroundColor" : {
"value" : "#111111" ,
"edited" : false
} ,
"page-sidebar-backgroundColor" : {
"value" : "#000000" ,
"edited" : false
} ,
"group-textColor" : {
"value" : "#0eb8c0" ,
"edited" : false
} ,
"group-borderColor" : {
"value" : "#555555" ,
"edited" : false
} ,
"group-backgroundColor" : {
"value" : "#333333" ,
"edited" : false
} ,
"widget-textColor" : {
"value" : "#eeeeee" ,
"edited" : false
} ,
"widget-backgroundColor" : {
"value" : "#097479" ,
"edited" : false
} ,
"widget-borderColor" : {
"value" : "#333333" ,
"edited" : false
} ,
"base-font" : {
"value" : "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"
}
} ,
"angularTheme" : {
"primary" : "purple" ,
"accents" : "pink" ,
"warn" : "indigo" ,
"background" : "deep-purple" ,
"palette" : "dark"
}
} ,
"site" : {
"name" : "PlanktonScope GUI v2.1" ,
"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" : "6b01f851.598028" ,
"type" : "ui_tab" ,
"z" : "" ,
"name" : "PlanktonScope GUI v2.1" ,
"icon" : "date_range" ,
"order" : 1 ,
"disabled" : false ,
"hidden" : false
} ,
{
"id" : "c627ea8d.f886e8" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "General" ,
"tab" : "6b01f851.598028" ,
"order" : 1 ,
"disp" : true ,
"width" : 5 ,
"collapse" : false
} ,
{
"id" : "c62ffbd3.787ef8" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "Preview" ,
"tab" : "6b01f851.598028" ,
"order" : 2 ,
"disp" : true ,
"width" : 12 ,
"collapse" : false
} ,
{
"id" : "832434ce.ebe498" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "Optic Settings" ,
"tab" : "6b01f851.598028" ,
"order" : 3 ,
"disp" : true ,
"width" : 8 ,
"collapse" : false
} ,
{
"id" : "a72a9ec6.bb144" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "Fluidic settings" ,
"tab" : "6b01f851.598028" ,
"order" : 4 ,
"disp" : true ,
"width" : 5 ,
"collapse" : false
} ,
{
"id" : "106f0e1b.6478a2" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "Spatio Temporal" ,
"tab" : "6b01f851.598028" ,
"order" : 5 ,
"disp" : true ,
"width" : 8 ,
"collapse" : false
} ,
{
"id" : "77a6994b.e3efb8" ,
"type" : "ui_group" ,
"z" : "" ,
"name" : "General" ,
"tab" : "6b01f851.598028" ,
"order" : 6 ,
"disp" : true ,
"width" : 5 ,
"collapse" : false
} ,
2019-12-15 00:48:37 +01:00
{
"id" : "955fdac.f54f328" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_ship" ,
2019-12-15 02:05:05 +01:00
"label" : "Name of the ship" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c627ea8d.f886e8" ,
"order" : 2 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "sample_ship" ,
2019-12-15 02:05:05 +01:00
"x" : 170 ,
"y" : 100 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"3dd9a121.e386de"
]
]
} ,
{
"id" : "dfb29406.d68148" ,
"type" : "ui_dropdown" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_sampling_gear" ,
"label" : "Sampling gear" ,
"tooltip" : "" ,
"place" : "Select" ,
"group" : "c627ea8d.f886e8" ,
"order" : 5 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"options" : [
{
"label" : "Plankton net" ,
"value" : "net" ,
"type" : "str"
} ,
{
"label" : "Niskin bottle 12L" ,
"value" : "niskin_12L" ,
"type" : "str"
} ,
{
"label" : "Niskin bottle 24L" ,
"value" : "niskin_24L" ,
"type" : "str"
}
] ,
"payload" : "" ,
"topic" : "sample_sampling_gear" ,
2019-12-15 02:05:05 +01:00
"x" : 130 ,
"y" : 220 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"8861710f.55b92"
]
]
} ,
{
"id" : "bfce92c6.5f66a" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_operator" ,
"label" : "Name of the operator" ,
"tooltip" : "" ,
"group" : "c627ea8d.f886e8" ,
"order" : 4 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "sample_operator" ,
2019-12-15 02:05:05 +01:00
"x" : 150 ,
"y" : 180 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"3dd9a121.e386de"
]
]
} ,
{
"id" : "bae9c122.3612f" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_project" ,
2019-12-15 02:05:05 +01:00
"label" : "Name of the project*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c627ea8d.f886e8" ,
"order" : 1 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "sample_project" ,
2019-12-15 02:05:05 +01:00
"x" : 160 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
2019-12-15 02:05:05 +01:00
"3dd9a121.e386de" ,
"a8cb0c6e.7220d"
2019-12-15 00:48:37 +01:00
]
]
} ,
{
"id" : "eb39c21c.a3fec" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "object_lat" ,
"label" : "Lattitude (decimal degrees)" ,
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 6 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "number" ,
"delay" : 300 ,
"topic" : "object_lat" ,
2019-12-15 02:05:05 +01:00
"x" : 1020 ,
2019-12-15 00:48:37 +01:00
"y" : 320 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "404b41a5.ae3d5" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "object_lon" ,
"label" : "Longitude (decimal degrees)" ,
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 7 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "number" ,
"delay" : 300 ,
"topic" : "object_lon" ,
2019-12-15 02:05:05 +01:00
"x" : 1010 ,
2019-12-15 00:48:37 +01:00
"y" : 360 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "d90c72f2.cf1ca" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_id" ,
2019-12-15 02:05:05 +01:00
"label" : "Name of the station*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c627ea8d.f886e8" ,
"order" : 3 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "sample_id" ,
2019-12-15 02:05:05 +01:00
"x" : 170 ,
"y" : 140 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"3dd9a121.e386de"
]
]
} ,
{
"id" : "3300f426.cc515c" ,
"type" : "ui_dropdown" ,
"z" : "7f885510.6173fc" ,
"name" : "acq_fnumber_objective" ,
2019-12-15 02:05:05 +01:00
"label" : "M12 Lens*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"place" : "Select option" ,
"group" : "832434ce.ebe498" ,
"order" : 1 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"options" : [
{
"label" : "f 25mm 1/2\" 5MP IR" ,
"value" : 25 ,
"type" : "num"
} ,
{
"label" : "f 16mm 1/2.5\" 5MP IR" ,
"value" : 16 ,
"type" : "num"
} ,
{
"label" : "f 12mm 1/2.5\" 5MP IR" ,
"value" : 12 ,
"type" : "num"
} ,
{
"label" : "f 8mm 1/2.5\" 5MP IR" ,
"value" : 8 ,
"type" : "num"
} ,
{
"label" : "f 6mm 1/2.5\" 5MP IR" ,
"value" : 6 ,
"type" : "num"
}
] ,
"payload" : "" ,
"topic" : "acq_fnumber_objective" ,
2019-12-15 02:05:05 +01:00
"x" : 1030 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"de455648.b432f8"
]
]
} ,
{
"id" : "72d57e31.59234" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "Magnification" ,
"order" : 2 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Magnification : X\n <span id=\"obj_magnification\" ng-bind-html=\"msg.payload\">\n </span>\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1590 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "98a4bc0a.f3304" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "77a6994b.e3efb8" ,
"name" : "Instrument" ,
"order" : 1 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Instrument :\n <span id=\"acq_instrument\">\n PlanktonScope V2.1\n </span>\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 170 ,
"y" : 420 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "53b3cb43.2acf04" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "77a6994b.e3efb8" ,
"name" : "Software" ,
"order" : 2 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Software :\n <span id=\"acq_software\">\n Node-RED Dashboard\n </span>\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 180 ,
"y" : 460 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "1a0a45f1.2cd7da" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "77a6994b.e3efb8" ,
"name" : "Camera" ,
"order" : 3 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Camera :\n <span id=\"acq_camera_name\">\n Pi Camera v2.1\n </span>\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 180 ,
"y" : 500 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "de455648.b432f8" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "calculate" ,
"func" : "global.set(msg.topic,msg.payload);\nvar acq_fnumber_objective = String(global.get(msg.topic));\n\nswitch(acq_fnumber_objective) {\n case \"25\":\n global.set(\"magnification\",0.6);\n global.set(\"process_pixel\",1.86);\n global.set(\"sug_min\",60);\n global.set(\"sug_max\",670);\n global.set(\"flowrate\",3);\n break;\n case \"16\":\n global.set(\"magnification\",0.94);\n global.set(\"process_pixel\",1.19);\n global.set(\"sug_min\",40);\n global.set(\"sug_max\",430);\n global.set(\"flowrate\",2.4);\n break;\n case \"12\":\n global.set(\"magnification\",1.20);\n global.set(\"process_pixel\",0.94);\n global.set(\"sug_min\",30);\n global.set(\"sug_max\",340);\n global.set(\"flowrate\",1.25);\n break;\n case \"8\":\n global.set(\"magnification\",1.78);\n global.set(\"process_pixel\",0.63);\n global.set(\"sug_min\",20);\n global.set(\"sug_max\",230);\n global.set(\"flowrate\",0.42);\n break;\n case \"6\":\n global.set(\"magnification\",2.36);\n global.set(\"process_pixel\",0.48);\n global.set(\"sug_min\",15);\n global.set(\"sug_max\",170);\n global.set(\"flowrate\",0.32);\n break;\n}\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1220 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"c83fc403.8ba2d8" ,
"48d9cc9c.852214" ,
"44969aec.4e87e4" ,
"a1201a.dc3f8fe8" ,
"89b9399b.9389a8"
]
]
} ,
{
"id" : "f3aa18d.65f0de8" ,
"type" : "ui_dropdown" ,
"z" : "7f885510.6173fc" ,
"name" : "acq_celltype" ,
2019-12-15 02:05:05 +01:00
"label" : "Thickness flowcell*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"place" : "Select option" ,
"group" : "a72a9ec6.bb144" ,
"order" : 1 ,
"width" : 0 ,
"height" : 0 ,
"passthru" : true ,
"options" : [
{
"label" : "200 μm µ-Slide I Luer" ,
"value" : 200 ,
"type" : "num"
} ,
{
"label" : "400 μm µ-Slide I Luer" ,
"value" : 400 ,
"type" : "num"
} ,
{
"label" : "600 μm µ-Slide I Luer" ,
"value" : 600 ,
"type" : "num"
} ,
{
"label" : "800 μm µ-Slide I Luer" ,
"value" : 800 ,
"type" : "num"
}
] ,
"payload" : "" ,
"topic" : "acq_celltype" ,
2019-12-15 02:05:05 +01:00
"x" : 170 ,
"y" : 280 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"8861710f.55b92"
]
]
} ,
{
"id" : "45568fe8.67759" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "acq_minimum_mesh" ,
"label" : "Min fraction size (μm)" ,
"tooltip" : "" ,
"group" : "a72a9ec6.bb144" ,
"order" : 2 ,
"width" : 0 ,
"height" : 0 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "acq_minimum_mesh" ,
"format" : "{{value}}" ,
"min" : 0 ,
"max" : "300" ,
"step" : "10" ,
2019-12-15 02:05:05 +01:00
"x" : 140 ,
"y" : 320 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"8861710f.55b92"
]
]
} ,
{
"id" : "918b69e2.7e6e88" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "acq_maximum_mesh" ,
"label" : "Max fraction size (μm)" ,
"tooltip" : "" ,
"group" : "a72a9ec6.bb144" ,
"order" : 3 ,
"width" : 0 ,
"height" : 0 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "acq_maximum_mesh" ,
"format" : "{{value}}" ,
"min" : "200" ,
"max" : "2000" ,
"step" : "100" ,
2019-12-15 02:05:05 +01:00
"x" : 140 ,
"y" : 360 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"8861710f.55b92"
]
]
} ,
{
"id" : "86d762dc.47911" ,
"type" : "ui_switch" ,
"z" : "7f885510.6173fc" ,
"name" : "light_state" ,
"label" : "Light" ,
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 2 ,
"width" : 2 ,
"height" : 1 ,
"passthru" : true ,
"decouple" : "false" ,
"topic" : "" ,
"style" : "" ,
"onvalue" : "true" ,
"onvalueType" : "bool" ,
"onicon" : "" ,
"oncolor" : "" ,
"offvalue" : "false" ,
"offvalueType" : "bool" ,
"officon" : "" ,
"offcolor" : "" ,
2019-12-15 02:05:05 +01:00
"x" : 510 ,
"y" : 100 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"b5a366b4.cb6918"
]
]
} ,
{
"id" : "b5a366b4.cb6918" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/light.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "light.py" ,
2019-12-15 02:05:05 +01:00
"x" : 820 ,
"y" : 100 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "node-red/light.svg"
} ,
{
"id" : "5ea28a70.42ae14" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "up" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 4 ,
"width" : 1 ,
"height" : 1 ,
"passthru" : false ,
"label" : "" ,
"tooltip" : "" ,
"color" : "" ,
"bgcolor" : "" ,
"icon" : "arrow_upwards" ,
"payload" : "up" ,
"payloadType" : "str" ,
"topic" : "up" ,
2019-12-15 02:05:05 +01:00
"x" : 530 ,
"y" : 220 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"523fdeaa.50c6c"
]
]
} ,
{
"id" : "27f16831.dde938" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "down" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 6 ,
"width" : 1 ,
"height" : 1 ,
"passthru" : true ,
"label" : "" ,
"tooltip" : "" ,
"color" : "" ,
"bgcolor" : "" ,
"icon" : "arrow_downward" ,
"payload" : "down" ,
"payloadType" : "str" ,
"topic" : "down" ,
2019-12-15 02:05:05 +01:00
"x" : 530 ,
"y" : 300 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"523fdeaa.50c6c"
]
]
} ,
{
"id" : "855e9d96.ab869" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "nb_step" ,
"label" : "nb step (30μm/step)" ,
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 5 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : false ,
"mode" : "number" ,
"delay" : 300 ,
"topic" : "nb_step" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 260 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"523fdeaa.50c6c"
]
]
} ,
{
"id" : "b110542b.5de4f8" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "kill_focus" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 7 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : false ,
"label" : "Cancel focus" ,
"tooltip" : "" ,
"color" : "#AD1625" ,
"bgcolor" : "#333333" ,
"icon" : "pause" ,
"payload" : "" ,
"payloadType" : "str" ,
"topic" : "" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 340 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"d9dea2bc.47097"
]
]
} ,
{
"id" : "523fdeaa.50c6c" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "focus" ,
"func" : "if(msg.topic === \"nb_step\"){\n nb_step = msg.payload;\n global.set(\"nb_step\",nb_step);\n}\nif(msg.topic === \"up\"){\n\n nb_step = global.get(\"nb_step\");\n\n orientation = \"up\";\n\n msg.payload = String(nb_step).concat(' ', orientation);\n return msg;\n}\nif(msg.topic === \"down\"){\n \n nb_step = global.get(\"nb_step\");\n\n orientation = \"down\";\n msg.payload = String(nb_step).concat(' ', orientation);\n\n return msg;\n}\n\n" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 670 ,
"y" : 260 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"ada728bd.8e7818"
]
] ,
"info" : "### Focusing\n##### focus.py `nb_step` `orientation`\n\n- `nb_step` : **integer** (from 1 to 100000) - number of step to perform by the stage (about 31um/step)\n- `orientation` : **string** - orientation of the focus either `up` or `down`\n\nExample:\n\n python3.7 $HOME/PlanktonScope/scripts/focus.py 650 up\n"
} ,
{
"id" : "ada728bd.8e7818" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/focus.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "focus.py" ,
2019-12-15 02:05:05 +01:00
"x" : 820 ,
"y" : 260 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "node-red/sort.svg"
} ,
{
"id" : "d9dea2bc.47097" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "bash $HOME/PlanktonScope/scripts/killer.sh focus.py && bash $HOME/PlanktonScope/scripts/killer.sh focus.py" ,
"addpay" : false ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Kill Focus" ,
2019-12-15 02:05:05 +01:00
"x" : 820 ,
"y" : 340 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-stop"
} ,
{
"id" : "2d0f6720.0f92f8" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "Pi Camera settings" ,
"order" : 7 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<button class=\"md-raised md-button md-ink-ripple\" type=\"button\" onclick=\"window.location.href = 'http://127.0.0.1/html/';\">Pi Camera settings</button>\n" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1010 ,
"y" : 100 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "9599b953.529c28" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "process_pixel" ,
"order" : 3 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Pixel resolution :\n <span id=\"process_pixel\" ng-bind-html=\"msg.payload\"></span>\n μm\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1600 ,
"y" : 80 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "612e2b9b.ed1684" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "min_size" ,
"order" : 4 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Smallest cells to explore :\n <span id=\"min_size\" ng-bind-html=\"msg.payload\"></span>\n μm\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1580 ,
"y" : 120 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "f84ab57a.556df8" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "max_size" ,
"order" : 5 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Biggest cells to explore :\n <span id=\"max_size\" ng-bind-html=\"msg.payload\"></span>\n μm\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1580 ,
"y" : 160 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "45f53656.d631e8" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "832434ce.ebe498" ,
"name" : "flowrate" ,
"order" : 6 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Flowrate :\n <span id=\"max_size\" ng-bind-html=\"msg.payload\"></span>\n ml/min\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 1580 ,
"y" : 200 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "53ec5f97.7567c" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "c62ffbd3.787ef8" ,
"name" : "Stream Pi Camera" ,
"order" : 1 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<center><iframe id=\"inlineFrameExample\"\n title=\"Inline Frame Example\"\n height=\"384\"\n width=\"512\"\n frameborder=\"0\"\n src=\"http://127.0.0.1/html/min.php\">\n</iframe></center>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
2019-12-15 02:05:05 +01:00
"x" : 570 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "c84f1718.4af6b8" ,
"type" : "ui_switch" ,
"z" : "7f885510.6173fc" ,
"name" : "fan_state" ,
"label" : "Fan" ,
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 3 ,
"width" : 2 ,
"height" : 1 ,
"passthru" : true ,
"decouple" : "false" ,
"topic" : "" ,
"style" : "" ,
"onvalue" : "true" ,
"onvalueType" : "bool" ,
"onicon" : "" ,
"oncolor" : "" ,
"offvalue" : "false" ,
"offvalueType" : "bool" ,
"officon" : "" ,
"offcolor" : "" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 160 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"dec2b84a.6faa18"
]
]
} ,
{
"id" : "dec2b84a.6faa18" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/fan.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "fan.py" ,
2019-12-15 02:05:05 +01:00
"x" : 810 ,
"y" : 160 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-spinner"
} ,
{
"id" : "7923e634.673cd8" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "in_path" ,
2019-12-15 02:05:05 +01:00
"label" : "Directory*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 12 ,
"width" : 6 ,
"height" : 1 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "in_path" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 580 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"263878b3.e0a478"
]
]
} ,
{
"id" : "477dc1bd.c3de8" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "acq_id" ,
2019-12-15 02:05:05 +01:00
"label" : "Acquisition ID*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 13 ,
"width" : 6 ,
"height" : 1 ,
"passthru" : true ,
"mode" : "text" ,
"delay" : 300 ,
"topic" : "acq_id" ,
2019-12-15 02:05:05 +01:00
"x" : 530 ,
"y" : 620 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"263878b3.e0a478"
]
]
} ,
{
"id" : "3dd9a121.e386de" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "set global" ,
"func" : "var value = msg.payload.split(' ').join('_');\nvar key = msg.topic;\n\nglobal.set(key,value);" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 340 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "c83fc403.8ba2d8" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get magnification" ,
"func" : "var magnification = global.get(\"magnification\");\nmsg.payload = magnification;\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1410 ,
"y" : 40 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"72d57e31.59234"
]
]
} ,
{
"id" : "48d9cc9c.852214" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get process_pixel" ,
"func" : "var process_pixel = global.get(\"process_pixel\");\nmsg.payload = process_pixel;\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1410 ,
"y" : 80 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"9599b953.529c28"
]
]
} ,
{
"id" : "44969aec.4e87e4" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get sug_min" ,
"func" : "var sug_min = global.get(\"sug_min\");\nmsg.payload = sug_min;\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1390 ,
"y" : 120 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"612e2b9b.ed1684"
]
]
} ,
{
"id" : "a1201a.dc3f8fe8" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get sug_max" ,
"func" : "var sug_max = global.get(\"sug_max\");\nmsg.payload = sug_max;\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1390 ,
"y" : 160 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"f84ab57a.556df8"
]
]
} ,
{
"id" : "89b9399b.9389a8" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get flowrate" ,
"func" : "var flowrate = global.get(\"flowrate\");\nmsg.payload = flowrate\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1390 ,
"y" : 200 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"45f53656.d631e8"
]
]
} ,
{
"id" : "c650b922.6adef8" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "set global" ,
"func" : "var value = msg.payload;\nvar key = msg.topic;\n\nglobal.set(key,value);" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 1180 ,
"y" : 320 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "e4c54d5a.19ff3" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_year" ,
"label" : "/" ,
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 3 ,
"width" : 3 ,
"height" : 1 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "sample_year" ,
"format" : "{{value}}" ,
"min" : "2019" ,
"max" : "2050" ,
"step" : 1 ,
2019-12-15 02:05:05 +01:00
"x" : 1010 ,
2019-12-15 00:48:37 +01:00
"y" : 480 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "b45db708.cedec8" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_month" ,
"label" : "/" ,
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 2 ,
"width" : 2 ,
"height" : 1 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "sample_month" ,
"format" : "{{value}}" ,
"min" : "1" ,
"max" : "12" ,
"step" : 1 ,
2019-12-15 02:05:05 +01:00
"x" : 1000 ,
2019-12-15 00:48:37 +01:00
"y" : 440 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "6351d257.6d7f1c" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_day" ,
2019-12-15 02:05:05 +01:00
"label" : "Date*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 1 ,
"width" : 3 ,
"height" : 1 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "sample_day" ,
"format" : "{{value}}" ,
"min" : "1" ,
"max" : "31" ,
"step" : 1 ,
2019-12-15 02:05:05 +01:00
"x" : 1010 ,
2019-12-15 00:48:37 +01:00
"y" : 400 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "9ee03294.39987" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_hour" ,
2019-12-15 02:05:05 +01:00
"label" : "Time*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 4 ,
"width" : 5 ,
"height" : 1 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "sample_hour" ,
"format" : "{{value}}" ,
"min" : "0" ,
"max" : "24" ,
"step" : 1 ,
2019-12-15 02:05:05 +01:00
"x" : 1010 ,
2019-12-15 00:48:37 +01:00
"y" : 520 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "5bd11314.ae6e4c" ,
"type" : "ui_numeric" ,
"z" : "7f885510.6173fc" ,
"name" : "sample_minute" ,
"label" : ":" ,
"tooltip" : "" ,
"group" : "106f0e1b.6478a2" ,
"order" : 5 ,
"width" : 3 ,
"height" : 1 ,
"wrap" : false ,
"passthru" : true ,
"topic" : "sample_minute" ,
"format" : "{{value}}" ,
"min" : "0" ,
"max" : "59" ,
"step" : 1 ,
2019-12-15 02:05:05 +01:00
"x" : 1000 ,
2019-12-15 00:48:37 +01:00
"y" : 560 ,
"wires" : [
[
"c650b922.6adef8"
]
]
} ,
{
"id" : "8861710f.55b92" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "set global" ,
"func" : "var value = msg.payload;\nvar key = msg.topic;\n\nglobal.set(key,value);" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 340 ,
"y" : 220 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "a8cb0c6e.7220d" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "store generic" ,
2019-12-15 02:05:05 +01:00
"func" : "global.set(\"acq_instrument\",\"PlanktonScope V2.1\");\nglobal.set(\"acq_software\",\"Node-RED Dashboard\");\nglobal.set(\"acq_camera\",\"Pi Camera V2.1\");\nglobal.set(\"acq_instrument_ID\",\"Odezenne\");" ,
2019-12-15 00:48:37 +01:00
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 350 ,
"y" : 420 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
"id" : "263878b3.e0a478" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "set global" ,
"func" : "var value = msg.payload;\nvar key = msg.topic;\n\nglobal.set(key,value);" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 680 ,
"y" : 600 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ]
]
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "f84c662c.df8248" ,
"type" : "function" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "Image" ,
"func" : "var in_path = context.get(\"in_path\") || 0; //get from context or default to 0\nvar sample_project = context.get(\"sample_project\") || 0; //get from context or default to 0\nvar sample_id = context.get(\"sample_id\") || 0; //get from context or default to 0\nvar acq_id = context.get(\"acq_id\") || 0; //get from context or default to 0\nvar acq_fnumber_objective = String(msg.payload);\n\nswitch(acq_fnumber_objective) {\n case \"25\":\n flowrate = String(' 3');\n break;\n case \"16\":\n flowrate = String(' 2.4');\n break;\n case \"12\":\n flowrate = String(' 1.25');\n break;\n case \"8\":\n flowrate = String(' 0.42');\n break;\n case \"6\":\n flowrate = String(' 0.32');\n break;\n}\n\nswitch (msg.topic){\n case \"in_path\":\n in_path = msg.payload; //payload NOT paydoad :)\n context.set(\"in_path\", in_path); //store in context for next time \n break;\n case \"sample_project\":\n sample_project = msg.payload; //payload NOT paydoad :)\n context.set(\"sample_project\", sample_project); //store in context for next time \n break;\n case \"sample_id\":\n sample_id = msg.payload; //payload NOT paydoad :)\n context.set(\"sample_id\", sample_id); //store in context for next time \n break;\n case \"acq_id\":\n acq_id = msg.payload; //payload NOT paydoad :)\n context.set(\"acq_id\", acq_id); //store in context for next time \n break;\n}\nif(msg.topic === \"start\"){\n \n in_path = String(in_path);\n sample_project = String(sample_project);\n sample_id = String(sample_id);\n acq_id = String(acq_id);\n\n msg.payload = [in_path, sample_project, sample_id, acq_id, flowrate].filter(x => typeof x === 'string' && x.length > 0).join(\" \");\n return msg;\n}" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 370 ,
2019-12-15 00:48:37 +01:00
"y" : 480 ,
"wires" : [
[
2019-12-15 02:05:05 +01:00
"802532e3.f89bc" ,
"dd01a090.6bec9"
2019-12-15 00:48:37 +01:00
]
2019-12-15 02:05:05 +01:00
] ,
"info" : "### Image\n##### image.py `in_path` `sample_project` `sample_id` `acq_id` `volume` `flowrate`\n\n- `in_path` : **string** - directory to store acquisitions **the path has to end with /**\n- `sample_project` : **string**\n- `sample_id` : **string**\n- `acq_id` : **string**\n- `volume` : **integer**\n- `flowrate` : **float**\n\nExample:\n\n python3.7 $HOME/PlanktonScope/scripts/image.py $HOME/PlanktonScope/Acquisitions/ tara_pacific station_125 exp_1 24 3.2\n "
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "9ac0625a.53e68" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/image.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "image.py" ,
"x" : 760 ,
"y" : 420 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "node-red/arrow-in.svg"
} ,
{
"id" : "6b594814.3fa0b8" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "bash $HOME/RPi_Cam_Web_Interface/stop.sh" ,
"addpay" : false ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Kill RPi Web Interface" ,
"x" : 800 ,
"y" : 500 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
]
} ,
{
"id" : "802532e3.f89bc" ,
"type" : "delay" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 440 ,
"wires" : [
[
"9ac0625a.53e68"
]
]
} ,
{
"id" : "1500affd.e4407" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "bash $HOME/RPi_Cam_Web_Interface/start.sh" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Restart RPi Web Interface" ,
"x" : 810 ,
"y" : 580 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
]
} ,
{
"id" : "dd01a090.6bec9" ,
"type" : "delay" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "2" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 500 ,
"wires" : [
[
"6b594814.3fa0b8"
]
]
} ,
{
"id" : "c1091e12.4fe17" ,
"type" : "function" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "wait" ,
"func" : "var acq_fnumber_objective = String(msg.payload);\n\nswitch(acq_fnumber_objective) {\n case \"25\":\n duration = String('500');\n break;\n case \"16\":\n duration = String('620');\n break;\n case \"12\":\n duration = String('1170');\n break;\n case \"8\":\n duration = String('3450');\n break;\n case \"6\":\n duration = String('4520');\n break;\n}\n\nmsg.payload = duration;\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 610 ,
"y" : 560 ,
"wires" : [
[
"1500affd.e4407"
]
]
} ,
{
"id" : "46d0bcb6.694744" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "bash $HOME/PlanktonScope/scripts/kill_image.sh" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Kill Image" ,
"x" : 760 ,
"y" : 640 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
]
} ,
{
"id" : "182d9940.d0c327" ,
"type" : "function" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "Image" ,
"func" : "var in_path = context.get(\"in_path\") || 0; //get from context or default to 0\nvar sample_project = context.get(\"sample_project\") || 0; //get from context or default to 0\nvar sample_id = context.get(\"sample_id\") || 0; //get from context or default to 0\nvar acq_id = context.get(\"acq_id\") || 0; //get from context or default to 0\n\nswitch (msg.topic){\n case \"in_path\":\n in_path = msg.payload; //payload NOT paydoad :)\n context.set(\"in_path\", in_path); //store in context for next time \n break;\n case \"sample_project\":\n sample_project = msg.payload; //payload NOT paydoad :)\n context.set(\"sample_project\", sample_project); //store in context for next time \n break;\n case \"sample_id\":\n sample_id = msg.payload; //payload NOT paydoad :)\n context.set(\"sample_id\", sample_id); //store in context for next time \n break;\n case \"acq_id\":\n acq_id = msg.payload; //payload NOT paydoad :)\n context.set(\"acq_id\", acq_id); //store in context for next time \n break;\n}\nif(msg.topic === \"stop\"){\n \n in_path = String(in_path);\n sample_project = String(sample_project);\n sample_id = String(sample_id);\n acq_id = String(acq_id);\n\n msg.payload = [in_path, sample_project, sample_id, acq_id].filter(x => typeof x === 'string' && x.length > 0).join(\" \");\n return msg;\n}" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 610 ,
"y" : 640 ,
"wires" : [
[
"46d0bcb6.694744"
]
] ,
"info" : "### Image\n##### image.py `in_path` `sample_project` `sample_id` `acq_id` `volume` `flowrate`\n\n- `in_path` : **string** - directory to store acquisitions **the path has to end with /**\n- `sample_project` : **string**\n- `sample_id` : **string**\n- `acq_id` : **string**\n- `volume` : **integer**\n- `flowrate` : **float**\n\nExample:\n\n python3.7 $HOME/PlanktonScope/scripts/image.py $HOME/PlanktonScope/Acquisitions/ tara_pacific station_125 exp_1 24 3.2\n "
} ,
{
"id" : "ddc97106.8b2e7" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/pump.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "pump.py" ,
"x" : 760 ,
"y" : 360 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
]
} ,
{
"id" : "f5e45860.0bc0d8" ,
"type" : "function" ,
"z" : "4e7b0c26.1eecb4" ,
"name" : "Image" ,
"func" : "var acq_fnumber_objective = String(msg.payload);\n\nswitch(acq_fnumber_objective) {\n case \"25\":\n flowrate = String(' 3');\n break;\n case \"16\":\n flowrate = String(' 2.4');\n break;\n case \"12\":\n flowrate = String(' 1.25');\n break;\n case \"8\":\n flowrate = String(' 0.42');\n break;\n case \"6\":\n flowrate = String(' 0.32');\n break;\n}\n\nif(msg.topic === \"start\"){\n \n msg.payload = [\"24\", flowrate, \"foward\"].filter(x => typeof x === 'string' && x.length > 0).join(\" \");\n return msg;\n}" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 470 ,
"y" : 400 ,
"wires" : [
[
"ddc97106.8b2e7"
]
] ,
"info" : "### Image\n##### image.py `in_path` `sample_project` `sample_id` `acq_id` `volume` `flowrate`\n\n- `in_path` : **string** - directory to store acquisitions **the path has to end with /**\n- `sample_project` : **string**\n- `sample_id` : **string**\n- `acq_id` : **string**\n- `volume` : **integer**\n- `flowrate` : **float**\n\nExample:\n\n python3.7 $HOME/PlanktonScope/scripts/image.py $HOME/PlanktonScope/Acquisitions/ tara_pacific station_125 exp_1 24 3.2\n "
} ,
{
"id" : "d324c4b.31afb38" ,
"type" : "exec" ,
"z" : "4e7b0c26.1eecb4" ,
"command" : "bash $HOME/PlanktonScope/scripts/killer.sh pump.py && bash $HOME/PlanktonScope/scripts/killer.sh pump.py" ,
"addpay" : false ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Kill Pump" ,
"x" : 760 ,
"y" : 700 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
]
} ,
{
"id" : "4b3ea5bd.03248c" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "backward" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 8 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : false ,
"label" : "Backward" ,
"tooltip" : "" ,
"color" : "" ,
"bgcolor" : "" ,
"icon" : "arrow_back" ,
"payload" : "backward" ,
"payloadType" : "str" ,
"topic" : "backward" ,
"x" : 520 ,
"y" : 400 ,
"wires" : [
[
"84fd85fd.426878"
]
]
} ,
{
"id" : "cfe9783a.286438" ,
2019-12-15 00:48:37 +01:00
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "foward" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 10 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : true ,
"label" : "Forward" ,
"tooltip" : "" ,
"color" : "" ,
"bgcolor" : "" ,
"icon" : "arrow_forward" ,
"payload" : "foward" ,
"payloadType" : "str" ,
"topic" : "foward" ,
2019-12-15 02:05:05 +01:00
"x" : 530 ,
"y" : 480 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"84fd85fd.426878"
]
]
} ,
{
"id" : "f94950fb.4454f" ,
"type" : "ui_text_input" ,
"z" : "7f885510.6173fc" ,
"name" : "volume" ,
2019-12-15 02:05:05 +01:00
"label" : "Volume (ml)*" ,
2019-12-15 00:48:37 +01:00
"tooltip" : "" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 9 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : false ,
"mode" : "number" ,
"delay" : 300 ,
"topic" : "volume" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 440 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"84fd85fd.426878"
]
]
} ,
{
"id" : "83d75b6b.6afa28" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "kill_pump" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 11 ,
"width" : 3 ,
"height" : 1 ,
"passthru" : false ,
"label" : "Cancel pump" ,
"tooltip" : "" ,
"color" : "#AD1625" ,
"bgcolor" : "#333333" ,
"icon" : "pause" ,
"payload" : "" ,
"payloadType" : "str" ,
"topic" : "" ,
2019-12-15 02:05:05 +01:00
"x" : 520 ,
"y" : 520 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"8fc930df.c7ae6"
]
]
} ,
{
"id" : "84fd85fd.426878" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "pump" ,
"func" : "if(msg.topic === \"volume\"){\n volume = msg.payload;\n global.set(\"volume\",volume);\n}\nif(msg.topic === \"foward\"){\n\n volume = global.get(\"volume\");\n flowrate = global.get(\"flowrate\");\n\n action = \" foward\";\n\n msg.payload = String(volume).concat(' ',flowrate, action);\n return msg;\n}\nif(msg.topic === \"backward\"){\n \n volume = global.get(\"volume\");\n flowrate = global.get(\"flowrate\");\n\n action = \" backward\";\n msg.payload = String(volume).concat(' ',flowrate, action);\n\n return msg;\n}\n\n" ,
"outputs" : 1 ,
"noerr" : 0 ,
2019-12-15 02:05:05 +01:00
"x" : 670 ,
"y" : 440 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[
"649f7ec8.06a84"
]
] ,
"info" : "### Focusing\n##### focus.py `nb_step` `orientation`\n\n- `nb_step` : **integer** (from 1 to 100000) - number of step to perform by the stage (about 31um/step)\n- `orientation` : **string** - orientation of the focus either `up` or `down`\n\nExample:\n\n python3.7 $HOME/PlanktonScope/scripts/focus.py 650 up\n"
} ,
{
"id" : "649f7ec8.06a84" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/pump.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "pump.py" ,
2019-12-15 02:05:05 +01:00
"x" : 820 ,
"y" : 440 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-rotate-left"
} ,
{
"id" : "8fc930df.c7ae6" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "bash $HOME/PlanktonScope/scripts/killer.sh pump.py && bash $HOME/PlanktonScope/scripts/killer.sh pump.py" ,
"addpay" : false ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Kill Pump" ,
2019-12-15 02:05:05 +01:00
"x" : 820 ,
"y" : 520 ,
2019-12-15 00:48:37 +01:00
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-stop"
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "13ad31b4.5b682e" ,
"type" : "ui_template" ,
"z" : "7f885510.6173fc" ,
"group" : "77a6994b.e3efb8" ,
"name" : "Device ID" ,
"order" : 3 ,
"width" : 0 ,
"height" : 0 ,
"format" : "<div>\n Device ID :\n <span id=\"acq_camera_name\">\n Odezenne\n </span>\n</div>" ,
"storeOutMessages" : true ,
"fwdInMessages" : true ,
"templateScope" : "local" ,
"x" : 180 ,
"y" : 540 ,
"wires" : [
[ ]
]
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "6bf10b4c.c83c84" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "start" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 14 ,
"width" : 6 ,
"height" : 1 ,
"passthru" : false ,
"label" : "Start Acquisition" ,
"tooltip" : "" ,
"color" : "" ,
"bgcolor" : "" ,
"icon" : "play_circle_fill" ,
"payload" : "" ,
"payloadType" : "str" ,
"topic" : "start" ,
"x" : 530 ,
"y" : 680 ,
"wires" : [
[
"3fe055c2.6ab7da"
]
]
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "2c9498e7.bf0c38" ,
"type" : "ui_button" ,
"z" : "7f885510.6173fc" ,
"name" : "cancel" ,
"group" : "c62ffbd3.787ef8" ,
"order" : 15 ,
"width" : 6 ,
"height" : 1 ,
"passthru" : false ,
"label" : "Cancel Acquisition" ,
"tooltip" : "" ,
"color" : "#AD1625" ,
"bgcolor" : "#333333" ,
"icon" : "pause_circle_filled" ,
"payload" : "" ,
"payloadType" : "str" ,
"topic" : "cancel" ,
"x" : 530 ,
"y" : 740 ,
"wires" : [
[
"f2acb5e0.c2c898"
]
]
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "b0fda998.f0ad48" ,
"type" : "file" ,
"z" : "7f885510.6173fc" ,
"name" : "logs.json" ,
"filename" : "/home/pi/PlanktonScope/logs.json" ,
"appendNewline" : true ,
"createDir" : false ,
"overwriteFile" : "false" ,
"encoding" : "none" ,
"x" : 820 ,
"y" : 680 ,
"wires" : [
[ ]
]
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "3fe055c2.6ab7da" ,
"type" : "function" ,
"z" : "7f885510.6173fc" ,
"name" : "get global" ,
"func" : "msg.payload = {\n \"sample\":{\n \"sample_project\":global.get(\"sample_project\"),\n \"sample_ship\":global.get(\"sample_ship\"),\n \"sample_operator\":global.get(\"sample_operator\"),\n \"sample_id\":global.get(\"sample_id\"),\n \"sample_sampling_gear\":global.get(\"sample_sampling_gear\"),\n \"sample_hour\":global.get(\"sample_hour\"),\n \"sample_minute\":global.get(\"sample_minute\"),\n \"sample_day\":global.get(\"sample_day\"),\n \"sample_month\":global.get(\"sample_month\"),\n \"sample_year\":global.get(\"sample_year\")\n },\n \"object\":{\n \"object_lat\":global.get(\"object_lat\"),\n \"object_lon\":global.get(\"object_lon\")\n },\n \"acquisition\":{\n \"acq_id\":global.get(\"acq_id\"),\n \"acq_fnumber_objective\":global.get(\"acq_fnumber_objective\"),\n \"acq_celltype\":global.get(\"acq_celltype\"),\n \"acq_maximum_mesh\":global.get(\"acq_maximum_mesh\"),\n \"acq_minimum_mesh\":global.get(\"acq_minimum_mesh\"),\n \"process_pixel\":global.get(\"process_pixel\"),\n \"acq_camera\":global.get(\"acq_camera\"),\n \"acq_instrument\":global.get(\"acq_instrument\"),\n \"acq_software\":global.get(\"acq_software\"),\n \"acq_instrument_ID\":global.get(\"acq_instrument_ID\")\n },\n \"process\":{\n \"process_pixel\":global.get(\"process_pixel\")\n }\n}\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 680 ,
"y" : 680 ,
"wires" : [
[
"b0fda998.f0ad48"
]
]
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "f2acb5e0.c2c898" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "sed -ie '$d' /home/pi/PlanktonScope/logs.json" ,
"addpay" : false ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "Remove last log" ,
"x" : 840 ,
"y" : 740 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-close"
2019-12-15 00:48:37 +01:00
} ,
{
2019-12-15 02:05:05 +01:00
"id" : "546bd06b.de8ae" ,
"type" : "exec" ,
"z" : "7f885510.6173fc" ,
"command" : "python3.7 $HOME/PlanktonScope/scripts/pump.py" ,
"addpay" : true ,
"append" : "" ,
"useSpawn" : "false" ,
"timer" : "" ,
"oldrc" : false ,
"name" : "pump.py" ,
"x" : 820 ,
"y" : 800 ,
"wires" : [
[ ] ,
[ ] ,
[ ]
] ,
"icon" : "font-awesome/fa-rotate-left"
2019-12-15 00:48:37 +01:00
}
]