Files
appRobotDriver/startRobot.js
2026-04-26 20:38:21 +02:00

65 lines
2.0 KiB
JavaScript
Executable File

const fs = require('fs');
const https = require('https');
const Robot = require('./robot/Robot');
const GCode = require('./robot/GCode');
const TenetSender = require('./robot/TelnetSenderGRBL');
const robot = new Robot(250, 264, 100);
const initInputWS = require('./server/InputWS');
const createInfoServer = require('./server/InfoServer');
/* ---------- HTTPS Server to connect to---------- */
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 ---------- */
const sharedState = {
connectedClients: [],
lastCommands: [],
lastPings: []
};
initInputWS(httpsServer, robot, GCode, sharedState);
/* ---------- GRBL Sender take commands from robot to FluidNC or Hardware---------- */
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}`);