diff --git a/additional_nodes/recirculation-pump.html b/additional_nodes/recirculation-pump.html index 2027a17..52f94a6 100644 --- a/additional_nodes/recirculation-pump.html +++ b/additional_nodes/recirculation-pump.html @@ -26,11 +26,11 @@ }, oneditsave: function() { let debit = parseFloat($("#node-input-F2").typedInput("value")); - if (isNaN(volume) || debit < 0) { + if (isNaN(debit) || debit < 0) { RED.notify("Debit is not set correctly", {type: "error"}); } let inlet = parseInt($("#node-input-n_inlets").typedInput("value")); - if (isNaN(inlet) || inlet < 1) { + if (inlet < 1) { RED.notify("Number of inlets not set correctly", {type: "error"}); } } diff --git a/additional_nodes/recirculation-pump.js b/additional_nodes/recirculation-pump.js index 472c7cc..489df01 100644 --- a/additional_nodes/recirculation-pump.js +++ b/additional_nodes/recirculation-pump.js @@ -15,10 +15,10 @@ module.exports = function(RED) { let F_diff = Math.max(F1 - F2, 0); let F2_corr = F1 < F2 ? F1 : F2; - let msg_F1 = {...msg}; + let msg_F1 = structuredClone(msg); msg_F1.payload.F = F_diff; - let msg_F2 = structuredClone(msg); + let msg_F2 = {...msg}; msg_F2.payload.F = F2_corr; msg_F2.payload.inlet = inlet_F2; diff --git a/additional_nodes/settling-basin.html b/additional_nodes/settling-basin.html new file mode 100644 index 0000000..da614bc --- /dev/null +++ b/additional_nodes/settling-basin.html @@ -0,0 +1,57 @@ + + + + + diff --git a/additional_nodes/settling-basin.js b/additional_nodes/settling-basin.js new file mode 100644 index 0000000..f012b81 --- /dev/null +++ b/additional_nodes/settling-basin.js @@ -0,0 +1,53 @@ +module.exports = function(RED) { + function settler(config) { + RED.nodes.createNode(this, config); + var node = this; + + let name = config.name; + let SVI = parseFloat(config.SVI); + 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 X_in = (C_in[7] + C_in[8] + C_in[9] + C_in[10] + C_in[11] + C_in[12]); + let F2 = (F_in * X_in) / (SVI*1000*1000); + + let msg_F1 = structuredClone(msg); + msg_F1.payload.F = F_in - F2; + 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; + if (F2 != 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; + default: + console.log("Unknown topic: " + msg.topic); + } + + if (done) { + done(); + } + }); + + } + RED.nodes.registerType("settling-basin", settler); +}; diff --git a/package.json b/package.json index 59c69a7..e60fa97 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "node-red": { "nodes": { "advanced-reactor": "advanced-reactor.js", - "recirculation-pump": "additional_nodes/recirculation-pump.js" + "recirculation-pump": "additional_nodes/recirculation-pump.js", + "settling-basin": "additional_nodes/settling-basin.js" } }, "dependencies": {