module.exports = function(RED) { function reactor(config) { RED.nodes.createNode(this, config); var node = this; let name = config.name; const Reactor = require('./dependencies/reactor_class'); const reactor = new Reactor( parseFloat(config.volume), parseInt(config.n_inlets), parseFloat(config.kla), [ 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) ] ); node.on('input', function(msg, send, done) { let toggleUpdate = false; switch (msg.topic) { case "clock": toggleUpdate = true; break; case "Fluent": reactor.setInfluent = msg; if (msg.payload.inlet == 0) { toggleUpdate = true; } break; case "OTR": reactor.setOTR = msg; break; default: console.log("Unknown topic: " + msg.topic); } if (toggleUpdate) { reactor.updateState(msg.timestamp); send(reactor.getEffluent); } if (done) { done(); } }); } RED.nodes.registerType("advanced-reactor", reactor); };