diff --git a/additional_nodes/recirculation-pump.html b/additional_nodes/recirculation-pump.html deleted file mode 100644 index 39a3753..0000000 --- a/additional_nodes/recirculation-pump.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/additional_nodes/recirculation-pump.js b/additional_nodes/recirculation-pump.js deleted file mode 100644 index 2a02932..0000000 --- a/additional_nodes/recirculation-pump.js +++ /dev/null @@ -1,40 +0,0 @@ -module.exports = function(RED) { - function recirculation(config) { - RED.nodes.createNode(this, config); - var node = this; - - let name = config.name; - let F2 = parseFloat(config.F2); - const inlet_F2 = parseInt(config.inlet); - - node.on('input', function(msg, send, done) { - switch (msg.topic) { - case "Fluent": - // conserve volume flow debit - let F_in = msg.payload.F; - let F1 = Math.max(F_in - F2, 0); - let F2_corr = F_in < F2 ? F_in : F2; - - let msg_F1 = structuredClone(msg); - msg_F1.payload.F = F1; - - let msg_F2 = {...msg}; - msg_F2.payload.F = F2_corr; - msg_F2.payload.inlet = inlet_F2; - - send([msg_F1, msg_F2]); - break; - case "clock": - break; - default: - console.log("Unknown topic: " + msg.topic); - } - - if (done) { - done(); - } - }); - - } - RED.nodes.registerType("recirculation-pump", recirculation); -}; diff --git a/additional_nodes/settling-basin.html b/additional_nodes/settling-basin.html deleted file mode 100644 index e8e8e8d..0000000 --- a/additional_nodes/settling-basin.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/additional_nodes/settling-basin.js b/additional_nodes/settling-basin.js deleted file mode 100644 index dd3d697..0000000 --- a/additional_nodes/settling-basin.js +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = function(RED) { - function settler(config) { - RED.nodes.createNode(this, config); - var node = this; - - let name = config.name; - let TS_set = parseFloat(config.TS_set); - const inlet_sludge = parseInt(config.inlet); - - node.on('input', function(msg, send, done) { - switch (msg.topic) { - case "Fluent": - // conserve volume flow debit - let F_in = msg.payload.F; - let C_in = msg.payload.C; - let F2 = (F_in * C_in[12]) / TS_set; - - let F1 = Math.max(F_in - F2, 0); - let F2_corr = F_in < F2 ? F_in : F2; - - let msg_F1 = structuredClone(msg); - msg_F1.payload.F = F1; - msg_F1.payload.C[7] = 0; - msg_F1.payload.C[8] = 0; - msg_F1.payload.C[9] = 0; - msg_F1.payload.C[10] = 0; - msg_F1.payload.C[11] = 0; - msg_F1.payload.C[12] = 0; - - let msg_F2 = {...msg}; - msg_F2.payload.F = F2_corr; - if (F2_corr > 0) { - msg_F2.payload.C[7] = F_in * C_in[7] / F2; - msg_F2.payload.C[8] = F_in * C_in[8] / F2; - msg_F2.payload.C[9] = F_in * C_in[9] / F2; - msg_F2.payload.C[10] = F_in * C_in[10] / F2; - msg_F2.payload.C[11] = F_in * C_in[11] / F2; - msg_F2.payload.C[12] = F_in * C_in[12] / F2; - } - msg_F2.payload.inlet = inlet_sludge; - - send([msg_F1, msg_F2]); - break; - case "clock": - break; - default: - console.log("Unknown topic: " + msg.topic); - } - - if (done) { - done(); - } - }); - - } - RED.nodes.registerType("settling-basin", settler); -}; diff --git a/flows/asm3_flows.json b/flows/asm3_flows.json deleted file mode 100644 index 7f6d216..0000000 --- a/flows/asm3_flows.json +++ /dev/null @@ -1,1763 +0,0 @@ -[ - { - "id": "31bba0914516dd85", - "type": "tab", - "label": "Flow 2", - "disabled": true, - "info": "", - "env": [] - }, - { - "id": "0abdac5260d9553e", - "type": "tab", - "label": "Flow 1", - "disabled": false, - "info": "", - "env": [] - }, - { - "id": "394f713d4e71366c", - "type": "tab", - "label": "Flow 4", - "disabled": true, - "info": "", - "env": [] - }, - { - "id": "2c8bcaa0046b4323", - "type": "ui-theme", - "name": "Default", - "colors": { - "surface": "#ffffff", - "primary": "#0094ce", - "bgPage": "#eeeeee", - "groupBg": "#ffffff", - "groupOutline": "#cccccc" - }, - "sizes": { - "density": "default", - "pagePadding": "12px", - "groupGap": "12px", - "groupBorderRadius": "4px", - "widgetGap": "12px" - } - }, - { - "id": "ac25cd90dc999a5a", - "type": "ui-base", - "name": "UI Name", - "path": "/dashboard", - "appIcon": "", - "includeClientData": true, - "acceptsClientConfig": [ - "ui-notification", - "ui-control" - ], - "showPathInSidebar": false, - "headerContent": "page", - "navigationStyle": "default", - "titleBarStyle": "default", - "showReconnectNotification": true, - "notificationDisplayTime": 1, - "showDisconnectNotification": true, - "allowInstall": true - }, - { - "id": "ec4a923c5ead6278", - "type": "ui-page", - "name": "Dashboard", - "ui": "ac25cd90dc999a5a", - "path": "/page1", - "icon": "home", - "layout": "grid", - "theme": "2c8bcaa0046b4323", - "breakpoints": [ - { - "name": "Default", - "px": "0", - "cols": "3" - }, - { - "name": "Tablet", - "px": "576", - "cols": "6" - }, - { - "name": "Small Desktop", - "px": "768", - "cols": "9" - }, - { - "name": "Desktop", - "px": "1024", - "cols": "12" - } - ], - "order": -1, - "className": "", - "visible": "true", - "disabled": "false" - }, - { - "id": "58b5e9368ec5774b", - "type": "ui-group", - "name": "Group 1", - "page": "ec4a923c5ead6278", - "width": 6, - "height": 1, - "order": -1, - "showTitle": true, - "className": "", - "visible": "true", - "disabled": "false", - "groupType": "default" - }, - { - "id": "14172c57f4c6ff14", - "type": "ui-group", - "name": "Group 2", - "page": "ec4a923c5ead6278", - "width": 6, - "height": 1, - "order": -1, - "showTitle": true, - "className": "", - "visible": "true", - "disabled": "false", - "groupType": "default" - }, - { - "id": "ca564642bfc5606c", - "type": "ui-page", - "name": "PFR", - "ui": "ac25cd90dc999a5a", - "path": "/page2", - "icon": "home", - "layout": "grid", - "theme": "2c8bcaa0046b4323", - "breakpoints": [ - { - "name": "Default", - "px": "0", - "cols": "3" - }, - { - "name": "Tablet", - "px": "576", - "cols": "6" - }, - { - "name": "Small Desktop", - "px": "768", - "cols": "9" - }, - { - "name": "Desktop", - "px": "1024", - "cols": "12" - } - ], - "order": -1, - "className": "", - "visible": "true", - "disabled": "false" - }, - { - "id": "ae38454098a37db0", - "type": "ui-group", - "name": "Group 3", - "page": "ca564642bfc5606c", - "width": 6, - "height": 1, - "order": -1, - "showTitle": true, - "className": "", - "visible": "true", - "disabled": "false", - "groupType": "default" - }, - { - "id": "de8b029d69f26c0e", - "type": "ui-group", - "name": "Group 4", - "page": "ca564642bfc5606c", - "width": 6, - "height": 1, - "order": -1, - "showTitle": true, - "className": "", - "visible": "true", - "disabled": "false", - "groupType": "default" - }, - { - "id": "f7803caf86a911f6", - "type": "inject", - "z": "31bba0914516dd85", - "name": "", - "props": [ - { - "p": "timestamp", - "v": "", - "vt": "date" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "1", - "crontab": "", - "once": true, - "onceDelay": 0.1, - "topic": "clock", - "x": 200, - "y": 340, - "wires": [ - [ - "5266f4e09e7b919b" - ] - ] - }, - { - "id": "98f5ffa4bed3b99f", - "type": "inject", - "z": "31bba0914516dd85", - "name": "Influx composition", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "", - "crontab": "", - "once": true, - "onceDelay": "5", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}", - "payloadType": "json", - "x": 170, - "y": 260, - "wires": [ - [ - "5266f4e09e7b919b" - ] - ] - }, - { - "id": "f1b3cffbd2d38473", - "type": "ui-chart", - "z": "31bba0914516dd85", - "group": "14172c57f4c6ff14", - "name": "Effluent", - "label": "Effluent", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1420, - "y": 300, - "wires": [ - [] - ] - }, - { - "id": "fc4aa2928bdbe228", - "type": "function", - "z": "31bba0914516dd85", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1220, - "y": 300, - "wires": [ - [ - "f1b3cffbd2d38473" - ] - ] - }, - { - "id": "e955d0c2d3246c4b", - "type": "ui-chart", - "z": "31bba0914516dd85", - "group": "58b5e9368ec5774b", - "name": "Anoxic reactor", - "label": "Anoxic reactor", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1040, - "y": 180, - "wires": [ - [] - ] - }, - { - "id": "59f0787fadf99939", - "type": "function", - "z": "31bba0914516dd85", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 820, - "y": 180, - "wires": [ - [ - "e955d0c2d3246c4b" - ] - ] - }, - { - "id": "bb63e864735f963f", - "type": "ui-chart", - "z": "31bba0914516dd85", - "group": "14172c57f4c6ff14", - "name": "Sludge composition", - "label": "Sludge composition", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1450, - "y": 340, - "wires": [ - [] - ] - }, - { - "id": "ca96bcb7f32f011f", - "type": "function", - "z": "31bba0914516dd85", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1220, - "y": 340, - "wires": [ - [ - "bb63e864735f963f" - ] - ] - }, - { - "id": "9327869b411c3063", - "type": "ui-chart", - "z": "31bba0914516dd85", - "group": "58b5e9368ec5774b", - "name": "Aerobic reactor", - "label": "Aerobic reactor / recirculation", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1440, - "y": 260, - "wires": [ - [] - ] - }, - { - "id": "3cb7fec9537ac405", - "type": "function", - "z": "31bba0914516dd85", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1220, - "y": 260, - "wires": [ - [ - "9327869b411c3063" - ] - ] - }, - { - "id": "640ecab878ee623a", - "type": "debug", - "z": "31bba0914516dd85", - "name": "Sludge removal", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 1160, - "y": 420, - "wires": [] - }, - { - "id": "8e1117ff307f949b", - "type": "debug", - "z": "31bba0914516dd85", - "name": "Sludge recirculation", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 930, - "y": 420, - "wires": [] - }, - { - "id": "d9e3b28718762905", - "type": "debug", - "z": "31bba0914516dd85", - "name": "Effluent", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 680, - "y": 420, - "wires": [] - }, - { - "id": "9534da473265bb6a", - "type": "recirculation-pump", - "z": "31bba0914516dd85", - "name": "", - "F2": "50", - "inlet": "2", - "x": 930, - "y": 340, - "wires": [ - [ - "ca96bcb7f32f011f", - "640ecab878ee623a" - ], - [ - "8e1117ff307f949b", - "5266f4e09e7b919b" - ] - ] - }, - { - "id": "038a9d67ce069678", - "type": "settling-basin", - "z": "31bba0914516dd85", - "name": "", - "TS_set": "5400", - "inlet": "1", - "x": 700, - "y": 340, - "wires": [ - [ - "fc4aa2928bdbe228", - "d9e3b28718762905" - ], - [ - "9534da473265bb6a" - ] - ] - }, - { - "id": "1cb62ce7d6e2b362", - "type": "recirculation-pump", - "z": "31bba0914516dd85", - "name": "", - "F2": "3000", - "inlet": 1, - "x": 470, - "y": 340, - "wires": [ - [ - "038a9d67ce069678" - ], - [ - "5266f4e09e7b919b" - ] - ] - }, - { - "id": "2ac1635a77880b09", - "type": "advancedReactor", - "z": "31bba0914516dd85", - "name": "Aerobic 2", - "reactor_type": "CSTR", - "volume": "400", - "length": "", - "resolution_L": "", - "alpha": "", - "n_inlets": 1, - "kla": "7500", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": 0.001, - "X_TS_init": 125.0009, - "x": 960, - "y": 260, - "wires": [ - [ - "3cb7fec9537ac405", - "1cb62ce7d6e2b362" - ], - [], - [] - ] - }, - { - "id": "5f39b76fc9528f75", - "type": "advancedReactor", - "z": "31bba0914516dd85", - "name": "Aerobic 1", - "reactor_type": "CSTR", - "volume": "400", - "length": "", - "resolution_L": "", - "alpha": "", - "n_inlets": 1, - "kla": "7500", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": "30", - "X_TS_init": "132", - "x": 780, - "y": 260, - "wires": [ - [], - [], - [ - "2ac1635a77880b09" - ] - ] - }, - { - "id": "b38f1a7b0ab6a7c7", - "type": "advancedReactor", - "z": "31bba0914516dd85", - "name": "Anoxic 2", - "reactor_type": "CSTR", - "volume": "400", - "length": "", - "resolution_L": "", - "alpha": "", - "n_inlets": 1, - "kla": "", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": 0.001, - "X_TS_init": 125.0009, - "x": 600, - "y": 260, - "wires": [ - [ - "59f0787fadf99939" - ], - [], - [ - "5f39b76fc9528f75" - ] - ] - }, - { - "id": "5266f4e09e7b919b", - "type": "advancedReactor", - "z": "31bba0914516dd85", - "name": "Anoxic 1", - "reactor_type": "CSTR", - "volume": "400", - "length": "", - "resolution_L": "", - "alpha": "", - "n_inlets": "3", - "kla": "", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": 0.001, - "X_TS_init": 125.0009, - "x": 420, - "y": 260, - "wires": [ - [], - [], - [ - "b38f1a7b0ab6a7c7" - ] - ] - }, - { - "id": "5865699f68c9aa64", - "type": "inject", - "z": "0abdac5260d9553e", - "name": "", - "props": [ - { - "p": "timestamp", - "v": "", - "vt": "date" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "1", - "crontab": "", - "once": true, - "onceDelay": 0.1, - "topic": "clock", - "x": 300, - "y": 260, - "wires": [ - [ - "5ba082534d7b491e" - ] - ] - }, - { - "id": "061920b87a45057d", - "type": "inject", - "z": "0abdac5260d9553e", - "name": "Influx composition 1", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "5", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":6600,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}", - "payloadType": "json", - "x": 260, - "y": 180, - "wires": [ - [ - "5ba082534d7b491e" - ] - ] - }, - { - "id": "c2338b164df519f6", - "type": "debug", - "z": "0abdac5260d9553e", - "name": "Sludge removal", - "active": false, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 1260, - "y": 340, - "wires": [] - }, - { - "id": "724aa3442b6fc5fc", - "type": "debug", - "z": "0abdac5260d9553e", - "name": "Sludge recirculation", - "active": false, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 1030, - "y": 340, - "wires": [] - }, - { - "id": "fd2e755a96891ec3", - "type": "debug", - "z": "0abdac5260d9553e", - "name": "Effluent", - "active": false, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "payload", - "targetType": "msg", - "statusVal": "", - "statusType": "auto", - "x": 780, - "y": 340, - "wires": [] - }, - { - "id": "c509ace161289789", - "type": "recirculation-pump", - "z": "0abdac5260d9553e", - "name": "", - "F2": "1000", - "inlet": "2", - "x": 1030, - "y": 260, - "wires": [ - [ - "c2338b164df519f6", - "c2fd7710c8b22ffa" - ], - [ - "724aa3442b6fc5fc", - "5ba082534d7b491e", - "edbda618f142adfa" - ] - ] - }, - { - "id": "b914e9abe9d60945", - "type": "settling-basin", - "z": "0abdac5260d9553e", - "name": "", - "TS_set": "5400", - "inlet": "1", - "x": 800, - "y": 260, - "wires": [ - [ - "fd2e755a96891ec3" - ], - [ - "c509ace161289789" - ] - ] - }, - { - "id": "dc2d2c985e2fdff6", - "type": "recirculation-pump", - "z": "0abdac5260d9553e", - "name": "", - "F2": "1100", - "inlet": 1, - "x": 570, - "y": 260, - "wires": [ - [ - "b914e9abe9d60945" - ], - [ - "5ba082534d7b491e" - ] - ] - }, - { - "id": "7f94060aa59d6c3a", - "type": "advancedReactor", - "z": "0abdac5260d9553e", - "name": "Aerobic 1", - "reactor_type": "PFR", - "volume": "1470", - "length": "20", - "resolution_L": "20", - "alpha": "0", - "n_inlets": 1, - "kla": "7500", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": "30", - "X_TS_init": "132", - "enableLog": true, - "logLevel": "debug", - "positionVsParent": "atEquipment", - "x": 1060, - "y": 180, - "wires": [ - [ - "dc2d2c985e2fdff6", - "a5d1282993a362c9", - "368215b8dd484211" - ], - [], - [] - ] - }, - { - "id": "5ba082534d7b491e", - "type": "advancedReactor", - "z": "0abdac5260d9553e", - "name": "Anoxic 1", - "reactor_type": "PFR", - "volume": "730", - "length": "10", - "resolution_L": "10", - "alpha": "0", - "n_inlets": "3", - "kla": "", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": 0.001, - "X_TS_init": 125.0009, - "enableLog": true, - "logLevel": "debug", - "positionVsParent": "atEquipment", - "x": 540, - "y": 180, - "wires": [ - [ - "4874a8564327e7ab" - ], - [], - [ - "7f94060aa59d6c3a" - ] - ] - }, - { - "id": "4874a8564327e7ab", - "type": "function", - "z": "0abdac5260d9553e", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 800, - "y": 120, - "wires": [ - [ - "ac91a2c6413414f8" - ] - ] - }, - { - "id": "ac91a2c6413414f8", - "type": "ui-chart", - "z": "0abdac5260d9553e", - "group": "ae38454098a37db0", - "name": "Anoxic reactor", - "label": "Anoxic reactor", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1020, - "y": 120, - "wires": [ - [] - ] - }, - { - "id": "a5d1282993a362c9", - "type": "function", - "z": "0abdac5260d9553e", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1260, - "y": 180, - "wires": [ - [ - "e61130eff38ee89a" - ] - ] - }, - { - "id": "e61130eff38ee89a", - "type": "ui-chart", - "z": "0abdac5260d9553e", - "group": "ae38454098a37db0", - "name": "Aerobic reactor", - "label": "Aerobic reactor / recirculation", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1480, - "y": 180, - "wires": [ - [] - ] - }, - { - "id": "c2fd7710c8b22ffa", - "type": "function", - "z": "0abdac5260d9553e", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1260, - "y": 240, - "wires": [ - [ - "6cfb58885cf36b74" - ] - ] - }, - { - "id": "6cfb58885cf36b74", - "type": "ui-chart", - "z": "0abdac5260d9553e", - "group": "de8b029d69f26c0e", - "name": "Effluent", - "label": "Effluent", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1460, - "y": 240, - "wires": [ - [] - ] - }, - { - "id": "edbda618f142adfa", - "type": "function", - "z": "0abdac5260d9553e", - "name": "Data_converter", - "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;", - "outputs": 1, - "timeout": 0, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1260, - "y": 280, - "wires": [ - [ - "95dc5302c82d6bcb" - ] - ] - }, - { - "id": "95dc5302c82d6bcb", - "type": "ui-chart", - "z": "0abdac5260d9553e", - "group": "de8b029d69f26c0e", - "name": "Sludge composition", - "label": "Sludge composition", - "order": 9007199254740991, - "chartType": "line", - "category": "Series", - "categoryType": "property", - "xAxisLabel": "", - "xAxisProperty": "", - "xAxisPropertyType": "timestamp", - "xAxisType": "time", - "xAxisFormat": "", - "xAxisFormatType": "auto", - "xmin": "", - "xmax": "", - "yAxisLabel": "", - "yAxisProperty": "Y", - "yAxisPropertyType": "property", - "ymin": "", - "ymax": "", - "bins": 10, - "action": "append", - "stackSeries": false, - "pointShape": "circle", - "pointRadius": 4, - "showLegend": true, - "removeOlder": "8", - "removeOlderUnit": "3600", - "removeOlderPoints": "2000", - "colors": [ - "#0095ff", - "#ff0000", - "#ff7f0e", - "#2ca02c", - "#a347e1", - "#d62728", - "#ff9896", - "#9467bd", - "#c5b0d5" - ], - "textColor": [ - "#666666" - ], - "textColorDefault": true, - "gridColor": [ - "#e5e5e5" - ], - "gridColorDefault": true, - "width": 6, - "height": 8, - "className": "", - "interpolation": "linear", - "x": 1490, - "y": 280, - "wires": [ - [] - ] - }, - { - "id": "cb4329d4882d3b10", - "type": "inject", - "z": "0abdac5260d9553e", - "name": "", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": true, - "onceDelay": 0.1, - "topic": "Dispersion", - "payload": "10000", - "payloadType": "num", - "x": 290, - "y": 340, - "wires": [ - [ - "5ba082534d7b491e", - "7f94060aa59d6c3a" - ] - ] - }, - { - "id": "4b5a1cb582ce04a5", - "type": "inject", - "z": "0abdac5260d9553e", - "name": "Influx composition 2", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "480", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":8000,\"C\":[0,50,125,20,0,0,6.25,10,50,11,0,0,81.5]}", - "payloadType": "json", - "x": 260, - "y": 140, - "wires": [ - [ - "5ba082534d7b491e" - ] - ] - }, - { - "id": "68ba512b76ed980a", - "type": "inject", - "z": "0abdac5260d9553e", - "name": "Influx composition 3", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "960", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":6600,\"C\":[0,25,95,12.8,0,0,4,25,75,40,0,0,134]}", - "payloadType": "json", - "x": 260, - "y": 100, - "wires": [ - [ - "5ba082534d7b491e" - ] - ] - }, - { - "id": "368215b8dd484211", - "type": "debug", - "z": "0abdac5260d9553e", - "name": "debug 1", - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 1280, - "y": 100, - "wires": [] - }, - { - "id": "b5dde0cd3e3b7a9e", - "type": "inject", - "z": "394f713d4e71366c", - "name": "Influx composition 3", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "960", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,25,95,12.8,0,0,4,25,75,40,0,0,134]}", - "payloadType": "json", - "x": 220, - "y": 140, - "wires": [ - [ - "818dbe32cad9fa42" - ] - ] - }, - { - "id": "74fa10e5ad6ac925", - "type": "inject", - "z": "394f713d4e71366c", - "name": "Influx composition 2", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "480", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":1200,\"C\":[0,50,125,20,0,0,6.25,10,50,11,0,0,81.5]}", - "payloadType": "json", - "x": 220, - "y": 180, - "wires": [ - [ - "818dbe32cad9fa42" - ] - ] - }, - { - "id": "ad54f09b8bb12e39", - "type": "inject", - "z": "394f713d4e71366c", - "name": "Influx composition 1", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - }, - { - "p": "timestamp", - "v": "", - "vt": "date" - } - ], - "repeat": "1440", - "crontab": "", - "once": true, - "onceDelay": "5", - "topic": "Fluent", - "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}", - "payloadType": "json", - "x": 220, - "y": 220, - "wires": [ - [ - "818dbe32cad9fa42" - ] - ] - }, - { - "id": "2776f6ebd3205e51", - "type": "inject", - "z": "394f713d4e71366c", - "name": "", - "props": [ - { - "p": "timestamp", - "v": "", - "vt": "date" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "1", - "crontab": "", - "once": true, - "onceDelay": 0.1, - "topic": "clock", - "x": 260, - "y": 300, - "wires": [ - [ - "818dbe32cad9fa42" - ] - ] - }, - { - "id": "8538c18935bee1bf", - "type": "inject", - "z": "394f713d4e71366c", - "name": "", - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": true, - "onceDelay": 0.1, - "topic": "Dispersion", - "payload": "3000", - "payloadType": "num", - "x": 240, - "y": 380, - "wires": [ - [ - "818dbe32cad9fa42", - "c3d507ed7b05c089" - ] - ] - }, - { - "id": "818dbe32cad9fa42", - "type": "advancedReactor", - "z": "394f713d4e71366c", - "name": "Anoxic 1", - "reactor_type": "PFR", - "volume": "800", - "length": "30", - "resolution_L": "20", - "alpha": "0", - "n_inlets": "3", - "kla": "", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": 0.001, - "X_TS_init": 125.0009, - "enableLog": false, - "logLevel": "info", - "positionVsParent": "downstream", - "x": 600, - "y": 220, - "wires": [ - [], - [], - [ - "c3d507ed7b05c089" - ] - ] - }, - { - "id": "c3d507ed7b05c089", - "type": "advancedReactor", - "z": "394f713d4e71366c", - "name": "Aerobic 1", - "reactor_type": "PFR", - "volume": "800", - "length": "30", - "resolution_L": "20", - "alpha": "0", - "n_inlets": 1, - "kla": "7500", - "S_O_init": 0, - "S_I_init": 30, - "S_S_init": 100, - "S_NH_init": 16, - "S_N2_init": 0, - "S_NO_init": 0, - "S_HCO_init": 5, - "X_I_init": 25, - "X_S_init": 75, - "X_H_init": 30, - "X_STO_init": 0, - "X_A_init": "30", - "X_TS_init": "132", - "enableLog": false, - "logLevel": "info", - "positionVsParent": "upstream", - "x": 1020, - "y": 220, - "wires": [ - [], - [], - [] - ] - } -] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b8efbf7..0000000 --- a/package-lock.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "reactor", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "reactor", - "version": "0.0.1", - "license": "SEE LICENSE", - "dependencies": { - "generalFunctions": "git+https://gitea.centraal.wbd-rd.nl/RnD/generalFunctions.git", - "mathjs": "^14.5.2" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/complex.js": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.4.2.tgz", - "integrity": "sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "license": "MIT" - }, - "node_modules/escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", - "license": "MIT" - }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/generalFunctions": { - "version": "1.0.0", - "resolved": "git+https://gitea.centraal.wbd-rd.nl/RnD/generalFunctions.git#efc97d6cd17399391b011298e47e8c1b1599592d", - "license": "SEE LICENSE" - }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", - "license": "MIT" - }, - "node_modules/mathjs": { - "version": "14.8.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-14.8.0.tgz", - "integrity": "sha512-DN4wmAjNzFVJ9vHqpAJ3vX0UF306u/1DgGKh7iVPuAFH19JDRd9NAaQS764MsKbSwDB6uBSkQEmgVmKdgYaCoQ==", - "license": "Apache-2.0", - "dependencies": { - "@babel/runtime": "^7.26.10", - "complex.js": "^2.2.5", - "decimal.js": "^10.4.3", - "escape-latex": "^1.2.0", - "fraction.js": "^5.2.1", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^4.2.1" - }, - "bin": { - "mathjs": "bin/cli.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "license": "MIT" - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "license": "MIT" - }, - "node_modules/typed-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz", - "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", - "license": "MIT", - "engines": { - "node": ">= 18" - } - } - } -} diff --git a/package.json b/package.json index 4651d19..152c346 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "activated sludge", "wastewater", "biological model", + "EVOLV", "node-red" ], "license": "SEE LICENSE", @@ -21,9 +22,7 @@ }, "node-red": { "nodes": { - "reactor": "reactor.js", - "recirculation-pump": "additional_nodes/recirculation-pump.js", - "settling-basin": "additional_nodes/settling-basin.js" + "reactor": "reactor.js" } }, "dependencies": { diff --git a/reactor.html b/reactor.html index cdca7c7..e8c57c5 100644 --- a/reactor.html +++ b/reactor.html @@ -2,7 +2,7 @@