const fs = require('fs'); const https = require('https'); const Robot = require('./robot/Robot'); const GCode = require('./robot/GCode'); const initInputWS = require('./server/InputWS'); const createInfoServer = require('./server/InfoServer'); const TenetSender = require('./robot/TelnetSenderGRBL'); /* ---------- Robot ---------- */ const robot = new Robot(250, 264, 100); /* ---------- Shared State ---------- */ const sharedState = { connectedClients: [], lastCommands: [], lastPings: [] }; /* ---------- HTTPS ---------- */ const httpsOptions = { enable: true, key: fs.readFileSync('https/localhost.key'), cert: fs.readFileSync('https/localhost.pem'), passphrase: 'abcd' }; const httpsServer = https.createServer(httpsOptions); /* ---------- WebSocket Input ---------- */ initInputWS(httpsServer, robot, GCode, sharedState); /* ---------- GRBL Sender ---------- */ const baseIP = process.env.GRBL_BASE_IP ?? "fluidNcBase.local"; const elbowIP= process.env.GRBL_ELLBOW_IP ?? "fluidNcEllbow.local"; const handIP = process.env.GRBL_HAND_IP ?? "fluidNcHand.local"; const telnetSender1 = new TenetSender(baseIP, 2300, "x", "y", "z"); const telnetSender2 = new TenetSender(elbowIP, 5000, "a", null, null); const telnetSender3 = new TenetSender(handIP, 5000, "c", "e", "b"); setTimeout(() => { [telnetSender1, telnetSender2, telnetSender3].forEach(s => { if (s?.tSocket) robot.cmdReceivers.push(s); }); }, 5000); /* ---------- Start Input Server ---------- */ const port = Number(process.env.PORT) || 2095; httpsServer.listen(port); console.log(`Input HTTPS/WebSocket on https://localhost:${port}`); /* ---------- Info Server ---------- */ const infoServer = createInfoServer( httpsOptions, sharedState, robot, GCode, [ { name: "Base", instance: telnetSender1 }, { name: "Elbow", instance: telnetSender2 }, { name: "Hand", instance: telnetSender3 } ] ); const infoPort = 2098; infoServer.listen(infoPort); console.log(`Info server on https://localhost:${infoPort}`);