2025-06-12 11:55:17 +02:00
|
|
|
module.exports = function(RED) {
|
|
|
|
|
function reactor(config) {
|
|
|
|
|
RED.nodes.createNode(this, config);
|
|
|
|
|
var node = this;
|
|
|
|
|
|
|
|
|
|
let name = config.name;
|
2025-06-12 12:52:32 +02:00
|
|
|
|
2025-06-12 16:56:28 +02:00
|
|
|
const Reactor = require('./dependencies/reactor_class');
|
|
|
|
|
|
2025-06-13 12:56:30 +02:00
|
|
|
const reactor = new Reactor(
|
2025-06-16 14:01:19 +02:00
|
|
|
parseFloat(config.volume),
|
|
|
|
|
parseInt(config.n_inlets),
|
2025-06-17 11:13:38 +02:00
|
|
|
parseFloat(config.kla),
|
2025-06-13 12:56:30 +02:00
|
|
|
[
|
2025-06-13 15:10:57 +02:00
|
|
|
parseFloat(config.S_O_init),
|
|
|
|
|
parseFloat(config.S_I_init),
|
|
|
|
|
parseFloat(config.S_S_init),
|
|
|
|
|
parseFloat(config.S_NH_init),
|
|
|
|
|
parseFloat(config.S_N2_init),
|
|
|
|
|
parseFloat(config.S_NO_init),
|
|
|
|
|
parseFloat(config.S_HCO_init),
|
|
|
|
|
parseFloat(config.X_I_init),
|
|
|
|
|
parseFloat(config.X_S_init),
|
|
|
|
|
parseFloat(config.X_H_init),
|
|
|
|
|
parseFloat(config.X_STO_init),
|
|
|
|
|
parseFloat(config.X_A_init),
|
|
|
|
|
parseFloat(config.X_TS_init)
|
2025-06-13 12:56:30 +02:00
|
|
|
]
|
|
|
|
|
);
|
2025-06-12 16:56:28 +02:00
|
|
|
|
|
|
|
|
node.on('input', function(msg, send, done) {
|
2025-06-16 17:52:31 +02:00
|
|
|
let toggleUpdate = false;
|
|
|
|
|
|
2025-06-13 15:10:57 +02:00
|
|
|
switch (msg.topic) {
|
|
|
|
|
case "clock":
|
2025-06-16 17:52:31 +02:00
|
|
|
toggleUpdate = true;
|
2025-06-13 15:10:57 +02:00
|
|
|
break;
|
2025-06-16 14:01:19 +02:00
|
|
|
case "Fluent":
|
|
|
|
|
reactor.setInfluent = msg;
|
2025-06-16 17:52:31 +02:00
|
|
|
if (msg.payload.inlet == 0) {
|
|
|
|
|
toggleUpdate = true;
|
|
|
|
|
}
|
2025-06-13 15:10:57 +02:00
|
|
|
break;
|
|
|
|
|
case "OTR":
|
|
|
|
|
reactor.setOTR = msg;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
2025-06-13 15:31:31 +02:00
|
|
|
console.log("Unknown topic: " + msg.topic);
|
2025-06-12 16:56:28 +02:00
|
|
|
}
|
|
|
|
|
|
2025-06-16 17:52:31 +02:00
|
|
|
if (toggleUpdate) {
|
|
|
|
|
reactor.updateState(msg.timestamp);
|
|
|
|
|
send(reactor.getEffluent);
|
|
|
|
|
}
|
2025-06-13 15:31:31 +02:00
|
|
|
|
2025-06-12 16:56:28 +02:00
|
|
|
if (done) {
|
|
|
|
|
done();
|
|
|
|
|
}
|
2025-06-12 12:52:32 +02:00
|
|
|
});
|
2025-06-12 11:55:17 +02:00
|
|
|
}
|
|
|
|
|
RED.nodes.registerType("advanced-reactor", reactor);
|
2025-06-12 12:52:32 +02:00
|
|
|
};
|