70 lines
2.0 KiB
JavaScript
Executable File
70 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 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}`); |