Skip to main content

snapmaker

Control and monitor Snapmaker 2.0 3D printers via their HTTP API. Status, job management, progress watching, and event monitoring.

معلومات المصدر

المستودع
Kernel8901/ai-agent-skills-classification
آخر نشاط في المصدر
٤ أبريل ٢٠٢٦ في ١٥:٢٦
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٦
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
4 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
snapmaker
description
Control and monitor Snapmaker 2.0 3D printers via their HTTP API. Status, job management, progress watching, and event monitoring.
summary
Snapmaker 2.0 3D printer control: status, jobs, monitoring.
version
1.0.0
homepage
https://github.com/odrobnik/snapmaker-skill
metadata
{"openclaw":{"emoji":"🖨️","requires":{"bins":"[Truncated]"}}}
# Snapmaker 2.0 Skill Control and monitor Snapmaker 2.0 3D printers via their HTTP API. ## Features - **Status monitoring** - Real-time printer status (temperatures, progress, position) - **Job management** - Send, start, pause, resume, and stop print jobs - **Safety features** - Prevents interfering with active prints without confirmation - **Progress watching** - Live monitoring of print progress - **Notification support** - Detect print completion, filament issues, errors ## Configuration Config stored in `~/clawd/snapmaker/config.json`: ```json { "ip": "192.168.0.32", "token": "your-token-here", "port": 8080 } ``` **Finding your token:** - macOS: `~/Library/Application Support/snapmaker-luban/machine.json` - Windows: `%appdata%\snapmaker-luban\machine.json` - Linux: `~/.config/snapmaker-luban/machine.json` Look for the `server.token` field (second "token" in the file). ## Usage ### Basic Commands ```bash # Get current printer status python3 scripts/snapmaker.py status # Watch print progress (updates every 5 seconds) python3 scripts/snapmaker.py watch # Get status as JSON python3 scripts/snapmaker.py status --json ``` ### Job Control ```bash # Send a file (prepares but doesn't start) python3 scripts/snapmaker.py send ~/prints/model.gcode # Send and start immediately python3 scripts/snapmaker.py send ~/prints/model.gcode --start --yes # Pause current print python3 scripts/snapmaker.py pause --yes # Resume paused print python3 scripts/snapmaker.py resume --yes # Stop/cancel print (requires confirmation) python3 scripts/snapmaker.py stop ``` ### Safety Flags - `--yes` - Skip confirmation prompts (use with caution!) - `--force` - Override safety checks (NOT RECOMMENDED) All commands that modify state require confirmation unless `--yes` is provided. ## API Endpoints The skill uses these Snapmaker HTTP API v1 endpoints: - `POST /api/v1/connect` - Establish connection - `GET /api/v1/status` - Get printer status - `POST /api/v1/prepare_print` - Upload file - `POST /api/v1/start_print` - Start printing - `POST /api/v1/pause` - Pause print - `POST /api/v1/resume` - Resume print - `POST /api/v1/stop` - Stop/cancel print - `GET /api/v1/print_file` - Download last file ## Status Fields The status command returns: - **status** - Overall state (IDLE, RUNNING, PAUSED) - **printStatus** - Printing / Idle - **progress** - 0.0 to 1.0 - **fileName** - Current/last file - **currentLine** / **totalLines** - G-code progress - **elapsedTime** / **remainingTime** - In seconds - **nozzleTemperature1** / **nozzleTargetTemperature1** - **heatedBedTemperature** / **heatedBedTargetTemperature** - **x** / **y** / **z** - Current position - **isFilamentOut** - Filament runout detection - **isEnclosureDoorOpen** - Door state ## Notifications To detect events: ```bash # Watch for completion python3 scripts/snapmaker.py watch # Or poll status in a loop while true; do python3 scripts/snapmaker.py status --json | jq -r '.printStatus' sleep 10 done ``` Event detection: - **Print complete** - status == "IDLE" && progress >= 0.99 - **Filament out** - isFilamentOut == true - **Door opened** - isEnclosureDoorOpen == true - **Error** - Check status field for errors ## Safety Features 1. **Active print protection** - Cannot send files while printing 2. **Confirmation prompts** - All destructive actions require confirmation 3. **State validation** - Commands check printer state before executing 4. **Clear warnings** - Stop command shows prominent warning ## Examples ### Check if printer is busy ```bash python3 scripts/snapmaker.py status | grep -q "RUNNING" && echo "Busy" || echo "Available" ``` ### Get remaining time ```bash python3 scripts/snapmaker.py status --json | jq -r '.remainingTime' ``` ### Monitor temperatures ```bash python3 scripts/snapmaker.py status --json | jq '{nozzle: .nozzleTemperature1, bed: .heatedBedTemperature}' ``` ## Troubleshooting **Connection refused:** - Verify printer IP: `ping 192.168.0.32` - Check printer is powered on - Ensure you're on the same network **Invalid token:** - Reconnect Luban to the printer (accept on touchscreen) - Extract new token from `machine.json` - Update `~/clawd/snapmaker/config.json` **Can't send file:** - Check if printer is busy: `python3 scripts/snapmaker.py status` - Wait for current print to finish - Use `--force` only if absolutely necessary ## References - [Snapmaker Forum: Auto-start Guide](https://forum.snapmaker.com/t/guide-automatic-start-via-drag-drop/29177) - [Snapmaker Forum: API Documentation](https://forum.snapmaker.com/t/documentation-of-the-web-api/20976/16) ## Dependencies - Python 3.6+ - `requests` library (install: `pip3 install requests`) ## License Part of OpenClaw skills collection.
عرض على GitHub