قرارداد Bridge Agent
مشخصات API و WebSocket برای اتصال داشبورد به PC چاپگر
معماری
روی PC چاپگر (Debian + LinuxCNC) یک سرویس پایتون به نام bridge-agent اجرا میشود که:
- با ماژول linuxcnc به interpreter وصل میشود (stat + command).
- یک سرور FastAPI روی پورت 8765 بالا میآورد.
- Vision Worker (پروسه جدا) با OpenCV دوربین را میخواند و از طریق MQTT/UnixSocket بازخورد میفرستد.
- وضعیت را هر ۵۰۰ms به داشبورد push میکند.
REST Endpoints
GET /api/status → { running, x, y, z, feed, override, layer, temp, humidity }
POST /api/command/start { file: "wall_section_A.ngc" }
POST /api/command/pause
POST /api/command/resume
POST /api/command/abort
POST /api/command/mdi { gcode: "G1 X100 Y50 F800" }
POST /api/command/feed-override { value: 108 } # درصد
POST /api/command/set-offset { axis: "X", value: 2.14 } # G10 L20
POST /api/files/upload multipart .ngc
GET /api/files → [{ name, size, mtime }]
GET /api/defects → [{ id, type, severity, layer, x, y, image_url, ts }]
POST /api/vision/homing/start
GET /api/vision/calibration → { intrinsic, extrinsic, nozzle_offset }WebSocket Streams
ws://printer.local:8765/ws/status # وضعیت هر 500ms
ws://printer.local:8765/ws/video # MJPEG frames (یا WebRTC signaling)
ws://printer.local:8765/ws/vision # رویدادهای بینایی: layer_width, defect, nozzle_pos
ws://printer.local:8765/ws/log # لاگهای LinuxCNC + agentنمونه پیام Vision Event
{
"type": "layer_width",
"ts": 1732450123.421,
"measured_mm": 48.6,
"target_mm": 50.0,
"error_mm": -1.4,
"correction_pct": 108,
"roi": [420, 340, 780, 520],
"confidence": 0.92
}نصب Bridge Agent روی PC چاپگر
# روی سیستم LinuxCNC (Debian bookworm + linuxcnc 2.9)
sudo apt install python3-pip python3-opencv python3-numpy
git clone <repo>/bridge-agent
cd bridge-agent
pip install -r requirements.txt
# اجرای سرویس
python3 linuxcnc_bridge.py --host 0.0.0.0 --port 8765
# اجرای Vision Worker (پروسه جدا)
python3 vision_layer.py --camera /dev/video0 --target-width 50سورس کامل bridge-agent در فولدر /bridge-agent ریپازیتوری در دسترس است.