核心用法
本技能通过 Python 脚本封装 Snapmaker 2.0 的官方 HTTP API,提供完整的 3D 打印机远程控制能力。用户需在 ~/clawd/snapmaker/config.json 中配置打印机 IP、Token 和端口(默认 8080),Token 需从 Snapmaker Luban 应用中获取。
主要功能模块:
- 设备发现:通过 UDP 广播(端口 20054)自动发现局域网内打印机,支持跨子网指定 IP 探测
- 状态监控:实时获取打印状态、温度数据(喷头/热床)、当前坐标、进度百分比及剩余时间
- 任务管理:发送 G-code 文件、启停打印、暂停/恢复作业,所有破坏性操作默认需确认
- 事件通知:支持轮询检测打印完成、断料、舱门开启等状态
典型工作流:
# 发现设备 → 发送文件 → 启动作业 → 监控进度 python3 scripts/snapmaker.py discover python3 scripts/snapmaker.py send ~/model.gcode --start --yes python3 scripts/snapmaker.py watch
显著优点
- 完整的作业生命周期管理:覆盖从文件上传到打印完成的全流程,支持 JSON 输出便于脚本集成
- 多重安全保护:活动打印保护、确认提示、状态校验三层机制,防止误操作损坏正在进行的作业
- 灵活的发现机制:UDP 广播 + HTTP 回退双模式,适应复杂网络环境
- 实时数据丰富:除基础进度外,提供 G-code 行级进度、温度曲线、坐标位置等详细遥测
潜在缺点与局限性
- 协议非官方文档化:API 源于社区逆向(forum.snapmaker.com 讨论帖),存在随固件更新失效的风险
- 依赖 Token 持久性:连接会话在打印机重启后失效,需重新获取 Token
- 无加密传输:HTTP 明文通信,Token 与 G-code 文件在局域网内裸传
- 仅限 Snapmaker 2.0:不兼容 Artisan、J1 等新机型或其他品牌打印机
- Python 依赖:需预装 Python 3.6+ 及 requests 库
适合人群
- 拥有 Snapmaker 2.0 打印机且希望实现自动化打印流程的进阶用户
- 需要批量管理多台打印机或集成到 CI/CD 流程的创客空间/小型工作室
- 熟悉命令行操作、具备基础网络调试能力的 3D 打印爱好者
常规风险
- 网络暴露风险:若将打印机端口暴露至公网,API 缺乏认证强度,易被未授权访问
- 物理安全风险:远程启停打印可能绕过现场安全检查(如舱门开启、异物检测)
- 固件兼容性:非官方 API 可能在固件更新后行为变更,导致控制失败或异常
- 数据完整性:G-code 上传无校验机制,网络中断可能导致打印异常
配置要点
Token 获取路径:Luban 应用 → 连接打印机 → 连接设置 → 复制 Token。建议配置后执行 status 命令验证连通性。