Driver Info Page

This commit is contained in:
ChK
2026-04-01 18:09:48 +02:00
parent 8a32009889
commit a9fc78305c
8 changed files with 703 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
G90 G1 x0 y300 z0 a90.00 b-90.00 c0.00 e0.00 t176148132360 f1000
G90 G1 x0 y300 z0 a90.00 b-90.00 c0.00 e0.00 t176148132360 f1000;!
G90 G1 x-50 y300 z0 a131.25 b-90.00 c0.00 e0.00 t176148136260 f1000
G90 G1 x-128.5 y410 z-11 a134.11 b-90.00 c9.74 e-57.30 t176148145060 f1000
G90 G1 x-128.5 y410 z-11 a134.11 b-90.00 c9.74 e62.45 t176148148860 f1000;!
G90 G1 x-128.5 y410 z-11 a134.11 b-90.00 c9.74 e62.45 t176148148860 f1000
G90 G1 x-128.5 y410 z35 a134.11 b-90.00 c9.74 e62.45 t176148149240 f1000
G90 G1 x-128.5 y410 z35 a163.90 b-90.00 c9.74 e62.45 t176148149980 f1000
G90 G1 x-128.5 y410 z35 a84.84 b-90.00 c9.74 e62.45 t176148150690 f1000

244
docker-compose.yaml Executable file
View File

@@ -0,0 +1,244 @@
services:
appRobotGuacamole:
image: abesnier/guacamole:latest
container_name: appRobot_guacamole
ports:
- "8080:8080"
volumes:
- /home/chk/Documents/appServerInstallation/guacamole/config:/config/guacamole
- /home/chk/Documents/appServerInstallation/guacamole/postgres:/config/postgres
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- default
appRobotDriver:
container_name: appRobot_Driver
image: node:24-alpine
working_dir: /usr/src/app
volumes:
- /home/chk/Documents/appRobotDriver:/usr/src/app
command: npm start
restart: unless-stopped
environment:
- GRBL_BASE_IP=192.168.0.183
- GRBL_ELLBOW_IP=192.168.0.202
- GRBL_HAND_IP=192.168.0.250
ports:
- "2096:2095"
- "2098:2098"
expose:
- "2095"
networks:
- default
appRobotSimulation:
container_name: appRobot_Simulation
image: node:24-alpine
working_dir: /usr/src/app
volumes:
- /home/chk/Documents/appRobotSimulation:/usr/src/app
environment:
- TARGET_SERVER=wss://appRobot_Driver:2095
command: npm start
restart: unless-stopped
ports:
- "1003:1003"
networks:
- default
appRobotControl:
image: node:24-alpine
container_name: appRobot_Control
working_dir: /app
command: sh -c "npm install && node 3DInput.js"
ports:
- "10010:10010"
volumes:
- /home/chk/Documents/appRobotControl:/app
environment:
- NODE_ENV=production
- TARGET_SERVER=wss://appRobot_Driver:2095
depends_on:
- appRobotDriver
restart: unless-stopped
appRobotHoming:
image: node:24-alpine
container_name: appRobot_Homing
working_dir: /app
volumes:
- /home/chk/Documents/appRobotHoming:/app
- /home/chk/Documents/AppRobotVideo/public/snapshots:/app/public/snapshots
environment:
- WSS_VIDEO_DRIVER=wss://localhost:8448
- WSS_URL=wss://appRobot_Driver:2095
- HTTPS_PORT=2093
ports:
- "2093:2093"
depends_on:
- appRobotDriver
command: >
/bin/sh -lc "npm ci || npm install && node server/server.js"
networks:
- default
restart: unless-stopped
# appRobotDirectBase:
# image: node:20-bullseye
# container_name: appRobot_DirectBase
# network_mode: host
# working_dir: /app
# volumes:
# - /home/chk/Documents/appRobotDirectControlBase:/app
# environment:
# - FluidNcHost=192.168.0.183
# - FluidNcPort=80
# - PORT=2098
# ports:
# - "2098:2098"
# command: >
# /bin/bash -lc "
# npm ci || npm install &&
# node server/server.js
# "
# restart: unless-stopped
appRobot_Tunnel:
image: alpine:latest
container_name: appRobot_Tunnel
restart: unless-stopped
environment:
- TZ=Europe/Zurich
volumes:
- /home/chk/Documents/AppServerPortalUI/.ssh:/root/.ssh:ro
command: >
/bin/sh -c "
apk add --no-cache openssh-client autossh &&
autossh -M 0 -N -o StrictHostKeyChecking=no \
-i /root/.ssh/id_ed25519 \
-o StrictHostKeyChecking=no \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=10 \
-o ExitOnForwardFailure=yes \
-N \
-R 0.0.0.0:9703:portainer:9000 \
-R 0.0.0.0:9710:appRobot_Control:10010 \
-R 0.0.0.0:9798:appRobot_Driver:2098 \
-R 0.0.0.0:9712:appRobot_Simulation:1003\
-R 0.0.0.0:9743:AppRobotVideo:8443 \
-R 0.0.0.0:9780:appRobot_guacamole:8080 \
-R 0.0.0.0:9793:appRobot_Homing:2093 \
-R 0.0.0.0:9725:appRobot_AccessBase:443 \
-R 0.0.0.0:9726:appRobot_AccessEllbow:443 \
-R 0.0.0.0:9727:appRobot_AccessHand:443 \
tunnel@server.schooltech.ch -p 2255
"
cloudflared:
image: cloudflare/cloudflared:latest
container_name: appServer_cloudflare
command: tunnel --no-autoupdate run --token eyJhIjoiOWUyYzk0OTI1ZWVlNmE4NjRiZjllZGRiM2ZmMDRmMTUiLCJ0IjoiZDc2YzI2MjAtZGE0ZC00OTJmLWI5YjgtODNjMjgwNjQ5MTFlIiwicyI6IllUbGpPREJtTURndFpHSTVZUzAwWkRnekxXRTRNek10TXpaaE56WTBabUpsT1RBMSJ9
# networks:
# - default
# - appRobotNet
restart: unless-stopped
appRobot_nextcloud_db:
image: mariadb:latest
container_name: appRobot_nextcloud_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: KantiWattwilABC
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: KantiABC122nextcloudX3!
volumes:
- /home/chk/Documents/appRobotNextCloud/db:/var/lib/mysql
appRobot_nextcloud:
image: nextcloud:latest
container_name: appRobot_nextcloud
restart: unless-stopped
environment:
MYSQL_PASSWORD: KantiABC122nextcloudX3!
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_HOST: appRobot_nextcloud_db
volumes:
- /home/chk/Documents/appRobotNextCloud/nextcloud:/var/www/html
- /home/chk/Documents:/mnt/server:rw
depends_on:
- appRobot_nextcloud_db
ports:
- "9183:80"
appRobot_AccessBase:
image: node:20-bullseye
# Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen)
container_name: appRobot_AccessBase
working_dir: /app
volumes:
- /home/chk/Documents/appRobotControlScara:/app
environment:
- FluidNcHost=192.168.0.183 #fluidncbase.local
- FluidNcPort=80
- PORT=443
command: >
/bin/bash -lc "
npm ci || npm install &&
node server/server.js
"
restart: unless-stopped
appRobot_AccessEllbow:
image: node:20-bullseye
# Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen)
container_name: appRobot_AccessEllbow
working_dir: /app
volumes:
- /home/chk/Documents/appRobotControlScara:/app
environment:
- FluidNcHost=192.168.0.202 #fluidncellbow.local
- FluidNcPort=80
- PORT=443
command: >
/bin/bash -lc "
npm ci || npm install &&
node server/server.js
"
restart: unless-stopped
appRobot_AccessHand:
image: node:20-bullseye
# Alternativ: node:20-alpine (kleiner, aber evtl. openssl/ca/certs nachziehen)
container_name: appRobot_AccessHand
working_dir: /app
volumes:
- /home/chk/Documents/appRobotControlScara:/app
environment:
- FluidNcHost=192.168.0.250 #fluidnchand.local
- FluidNcPort=80
- PORT=443
command: >
/bin/bash -lc "
npm ci || npm install &&
node server/server.js
"
restart: unless-stopped
networks:
default:
driver: bridge

77
logs/gcode_commands.log Normal file
View File

@@ -0,0 +1,77 @@
2026-04-01T15:52:31.755Z ::ffff:172.21.0.6: FShow
2026-04-01T15:52:38.712Z ::ffff:172.21.0.6: G91 G1 B-0.1 F100
2026-04-01T15:52:45.522Z ::ffff:172.21.0.6: G91 G1 Y-10 F100
2026-04-01T15:52:51.414Z ::ffff:172.21.0.6: FShow
2026-04-01T15:52:55.813Z ::ffff:172.21.0.6: G91 G1 Y-10 F100
2026-04-01T15:53:01.082Z ::ffff:172.21.0.6: G91 G1 Y-10 F100
2026-04-01T15:54:23.602Z ::ffff:172.21.0.6: G91 G1 Y-10 F100
2026-04-01T15:54:29.102Z ::ffff:172.21.0.6: G91 G1 Y-10 F100
2026-04-01T15:54:53.177Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:54:53.180Z ::ffff:172.21.0.6: FShow
2026-04-01T15:54:57.054Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:54:57.059Z ::ffff:172.21.0.6: FShow
2026-04-01T15:54:59.621Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:54:59.625Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:00.499Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:00.503Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:02.277Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:02.282Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:05.522Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:05.528Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:06.430Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:06.433Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:09.138Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:09.142Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:10.366Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:10.369Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:15.018Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:15.022Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:15.600Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:15.604Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:16.471Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:16.474Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:17.318Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:17.322Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:29.479Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:29.482Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:31.257Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:31.260Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:32.190Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:32.192Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:33.303Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:33.306Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:34.107Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:34.110Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:35.227Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:35.231Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:42.111Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:42.114Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:43.340Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:43.343Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:44.923Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:44.924Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:46.863Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:46.867Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:47.906Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:47.909Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:49.550Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:49.553Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:52.146Z ::ffff:172.21.0.6: FPlus
2026-04-01T15:55:52.149Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:54.399Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:54.402Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:54.475Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:54.479Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:54.705Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:54.709Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:54.876Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:54.879Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:55.217Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:55.220Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:55.627Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:55.630Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:55.965Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:55.968Z ::ffff:172.21.0.6: FShow
2026-04-01T15:55:56.352Z ::ffff:172.21.0.6: FMinus
2026-04-01T15:55:56.354Z ::ffff:172.21.0.6: FShow
2026-04-01T15:56:05.764Z ::ffff:172.21.0.6: G91 G1 Y-10 F100

214
logs/pings.log Normal file
View File

@@ -0,0 +1,214 @@
2026-04-01T15:52:10.860Z ::ffff:172.21.0.13: Ping
2026-04-01T15:52:15.877Z ::ffff:172.21.0.13: Ping
2026-04-01T15:52:20.894Z ::ffff:172.21.0.13: Ping
2026-04-01T15:52:32.876Z ::ffff:172.21.0.6: Ping
2026-04-01T15:52:36.469Z ::ffff:172.21.0.6: Ping
2026-04-01T15:52:37.893Z ::ffff:172.21.0.6: Ping
2026-04-01T15:52:52.825Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:06.142Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:11.139Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:16.190Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:21.140Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:22.828Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:26.146Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:31.141Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:36.261Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:41.163Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:46.147Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:51.141Z ::ffff:172.21.0.6: Ping
2026-04-01T15:53:56.139Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:01.140Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:06.144Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:11.136Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:16.135Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:21.214Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:22.824Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:36.272Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:41.149Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:46.141Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:51.152Z ::ffff:172.21.0.6: Ping
2026-04-01T15:54:56.221Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:01.252Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:06.142Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:11.186Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:16.159Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:21.137Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:22.859Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:26.238Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:31.154Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:36.170Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:41.188Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:46.206Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:51.226Z ::ffff:172.21.0.6: Ping
2026-04-01T15:55:56.141Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:01.170Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:11.211Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:16.169Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:21.229Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:22.866Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:26.146Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:31.262Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:36.177Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:41.196Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:46.141Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:51.230Z ::ffff:172.21.0.6: Ping
2026-04-01T15:56:56.248Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:01.142Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:06.139Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:11.153Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:16.188Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:21.150Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:22.816Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:26.251Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:31.145Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:36.184Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:41.202Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:46.149Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:51.134Z ::ffff:172.21.0.6: Ping
2026-04-01T15:57:56.132Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:01.146Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:06.142Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:11.130Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:16.222Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:21.136Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:22.824Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:26.259Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:31.174Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:36.142Z ::ffff:172.21.0.6: Ping
2026-04-01T15:58:41.141Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:27.822Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:32.822Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:37.824Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:42.830Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:47.827Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:51.319Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:52.821Z ::ffff:172.21.0.6: Ping
2026-04-01T16:00:56.295Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:01.301Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:02.929Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:06.295Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:07.811Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:11.293Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:12.815Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:16.293Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:17.820Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:21.305Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:22.821Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:26.295Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:27.814Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:31.306Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:32.826Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:36.289Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:37.826Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:44.237Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:45.825Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:49.240Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:50.813Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:54.234Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:55.820Z ::ffff:172.21.0.6: Ping
2026-04-01T16:01:59.230Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:00.819Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:04.235Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:05.821Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:09.232Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:10.823Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:14.230Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:19.234Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:22.818Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:24.239Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:29.234Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:34.235Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:39.238Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:44.224Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:49.247Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:54.237Z ::ffff:172.21.0.6: Ping
2026-04-01T16:02:59.229Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:04.230Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:09.240Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:17.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:18.830Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:27.479Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:28.812Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:32.473Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:33.812Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:37.484Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:38.814Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:42.487Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:43.812Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:47.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:52.475Z ::ffff:172.21.0.6: Ping
2026-04-01T16:03:57.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:02.476Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:07.486Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:12.473Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:17.474Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:22.484Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:22.822Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:27.481Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:32.468Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:37.474Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:42.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:47.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:52.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:04:57.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:02.488Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:07.483Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:12.486Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:17.476Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:22.485Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:22.808Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:27.483Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:32.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:37.479Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:42.476Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:47.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:52.474Z ::ffff:172.21.0.6: Ping
2026-04-01T16:05:57.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:02.469Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:07.484Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:12.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:17.468Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:22.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:22.824Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:27.484Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:32.469Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:37.481Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:42.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:47.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:52.480Z ::ffff:172.21.0.6: Ping
2026-04-01T16:06:57.473Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:02.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:07.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:12.480Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:17.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:22.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:22.821Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:27.473Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:32.480Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:37.480Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:42.479Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:47.480Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:52.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:07:57.470Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:02.475Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:07.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:12.484Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:17.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:22.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:22.812Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:27.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:32.479Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:37.478Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:42.479Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:47.481Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:52.483Z ::ffff:172.21.0.6: Ping
2026-04-01T16:08:57.558Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:02.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:07.476Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:12.473Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:17.472Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:22.482Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:22.822Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:27.471Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:32.477Z ::ffff:172.21.0.6: Ping
2026-04-01T16:09:37.480Z ::ffff:172.21.0.6: Ping

50
public/app.js Executable file
View File

@@ -0,0 +1,50 @@
document.addEventListener('DOMContentLoaded', function() {
function updateStatus() {
fetch('/api/status')
.then(response => response.json())
.then(data => {
// WebClients
const clientsUl = document.getElementById('clients');
clientsUl.innerHTML = '';
data.clients.forEach(client => {
const li = document.createElement('li');
li.textContent = client;
clientsUl.appendChild(li);
});
// Sender
const sendersUl = document.getElementById('senderList');
sendersUl.innerHTML = '';
data.senders.forEach(sender => {
const li = document.createElement('li');
li.textContent = `${sender.name}: ${sender.status}`;
sendersUl.appendChild(li);
});
// Letzte Commands
const commandsUl = document.getElementById('commandList');
commandsUl.innerHTML = '';
data.lastCommands.forEach(cmd => {
const li = document.createElement('li');
li.textContent = cmd;
commandsUl.appendChild(li);
});
// Letzte Pings
const pingsUl = document.getElementById('pingList');
pingsUl.innerHTML = '';
data.lastPings.forEach(ping => {
const li = document.createElement('li');
li.textContent = ping;
pingsUl.appendChild(li);
});
})
.catch(error => console.error('Error fetching status:', error));
}
// Initial load
updateStatus();
// Update every 5 seconds
setInterval(updateStatus, 5000);
});

35
public/index.html Executable file
View File

@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Robot Driver Info</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
h1 { color: #333; }
.section { margin-bottom: 20px; border: 1px solid #ccc; padding: 10px; }
ul { list-style-type: none; padding: 0; }
li { padding: 5px 0; }
</style>
</head>
<body>
<h1>Robot Driver Status</h1>
<div id="status" class="section">
<h2>Verbundene WebClients</h2>
<ul id="clients"></ul>
</div>
<div id="senders" class="section">
<h2>Verbundene Sender</h2>
<ul id="senderList"></ul>
</div>
<div id="commands" class="section">
<h2>Letzte Commands</h2>
<ul id="commandList"></ul>
</div>
<div id="pings" class="section">
<h2>Letzte Ping Nachrichten</h2>
<ul id="pingList"></ul>
</div>
<script src="app.js"></script>
</body>
</html>

View File

@@ -55,6 +55,7 @@ module.exports = class TelnetSenderGRBL{
});
}
console.log("🤖 TelnetSenderGRBL initialized with URL: " + urlGRBL);
}
moveTo(mOld, mNew){

View File

@@ -2,12 +2,27 @@ const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
function getLastLines(filePath, numLines) {
try {
const data = fs.readFileSync(filePath, 'utf8');
const lines = data.split('\n').filter(line => line.trim());
return lines.slice(-numLines);
} catch (e) {
return [];
}
}
const Robot = require('./robot/Robot.js')
const GCode = require('./robot/GCode.js')
// 238 + 1 + 25 = 264
let robot = new Robot(250,264,100); //(300,290,10);
// Tracking variables for info page
let connectedClients = [];
let lastCommands = [];
let lastPings = [];
const httpsOptions = {
"enable": true,
@@ -24,10 +39,19 @@ const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws)
{
console.log("WebServer for Input is connected");
const clientIP = ws._socket.remoteAddress || 'unknown';
connectedClients.push(clientIP);
ws.on('close', () => {
connectedClients = connectedClients.filter(client => client !== clientIP);
});
ws.on('message', function incoming(message)
{
if(message == "Ping"){
fs.appendFileSync('./logs/pings.log', `${new Date().toISOString()} ${clientIP}: ${message}\n`);
lastPings.push(new Date().toISOString() + ': ' + message);
if (lastPings.length > 10) lastPings.shift();
wss.clients.forEach(function (client)
{
if (client.readyState == WebSocket.OPEN)
@@ -38,6 +62,9 @@ wss.on('connection', function connection(ws)
}
if(GCode.containsCommand(message)){
fs.appendFileSync('./logs/gcode_commands.log', `${new Date().toISOString()} ${clientIP}: ${message}\n`);
lastCommands.push(new Date().toISOString() + ': ' + message);
if (lastCommands.length > 10) lastCommands.shift();
GCode.receiveGCode(robot,message);
reply = GCode.getM114(robot);
wss.clients.forEach(function (client)
@@ -50,6 +77,9 @@ wss.on('connection', function connection(ws)
}
if(GCode.ContainsFilesCommand(message)){
fs.appendFileSync('./logs/gcode_commands.log', `${new Date().toISOString()} ${clientIP}: ${message}\n`);
lastCommands.push(new Date().toISOString() + ': ' + message);
if (lastCommands.length > 10) lastCommands.shift();
reply = GCode.receiveFC(robot, message);
wss.clients.forEach(function (client)
{
@@ -62,6 +92,9 @@ wss.on('connection', function connection(ws)
// Request for Status
if(message == "M114"){
fs.appendFileSync('./logs/gcode_commands.log', `${new Date().toISOString()} ${clientIP}: ${message}\n`);
lastCommands.push(new Date().toISOString() + ': ' + message);
if (lastCommands.length > 10) lastCommands.shift();
reply = GCode.getM114(robot);
wss.clients.forEach(function (client)
{
@@ -114,3 +147,50 @@ console.log("Works with FluidNc Base");
port = 2095
server.listen(port);
console.log("Listen on Port: https://localhost:" + port.toString()+ "/")
// Info server on port 2098
const infoServer = https.createServer(httpsOptions, (req, res) => {
if (req.url === '/') {
fs.readFile('./public/index.html', (err, data) => {
if (err) {
res.writeHead(404);
res.end('Not found');
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
}
});
} else if (req.url === '/app.js') {
fs.readFile('./public/app.js', (err, data) => {
if (err) {
res.writeHead(404);
res.end('Not found');
} else {
res.writeHead(200, {'Content-Type': 'application/javascript'});
res.end(data);
}
});
} else if (req.url === '/api/status') {
const status = {
clients: connectedClients,
senders: [
{name: 'Base', status: telnetSender1?.tSocket ? 'connected' : 'disconnected'},
{name: 'Elbow', status: telnetSender2?.tSocket ? 'connected' : 'disconnected'},
{name: 'Hand', status: telnetSender3?.tSocket ? 'connected' : 'disconnected'}
],
lastCommands: getLastLines('./logs/gcode_commands.log', 10),
lastPings: getLastLines('./logs/pings.log', 10)
};
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify(status));
} else {
res.writeHead(404);
res.end('Not found');
}
});
infoServer.listen(2098);
console.log("Info server listening on https://localhost:2098/");