Files
appRobotDriver/startRobot_better.js
2026-04-23 17:27:52 +02:00

70 lines
2.0 KiB
JavaScript

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);
});
}, 8000);
/* ---------- 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}`);