โ† Back to DevOps & Cloud
DevOps & Cloud by @lucakaufmann

snapmaker

Monitor and control Snapmaker 3D printers

0
Source Code

Snapmaker Printer Control

Control Snapmaker U1 printers via the Moonraker API.

Configuration

Create a config file at ~/clawd/config/snapmaker.json:

{
  "ip": "192.168.x.x",
  "port": 80
}

Or use environment variables:

export SNAPMAKER_IP=192.168.x.x
export SNAPMAKER_PORT=80  # optional, defaults to 80

Config search order:

  1. SNAPMAKER_IP environment variable (highest priority)
  2. ~/clawd/config/snapmaker.json
  3. ~/.config/clawdbot/snapmaker.json

Quick Commands

Check Status

scripts/snapmaker.py status

Filament Info

scripts/snapmaker.py filament

Shows RFID tag data for each slot: material type, color (hex), temp ranges, and sensor status.

Monitor Print (Live)

scripts/snapmaker.py monitor

Print Control

scripts/snapmaker.py pause
scripts/snapmaker.py resume  
scripts/snapmaker.py cancel

Temperature

scripts/snapmaker.py temps

API Reference

The U1 uses Moonraker REST API on port 80:

Endpoint Description
/server/info Server status
/printer/info Printer info
/printer/objects/query?heater_bed&extruder&print_stats Status
/printer/print/pause Pause print
/printer/print/resume Resume print
/printer/print/cancel Cancel print

Status Response Fields

  • print_stats.state: standby, printing, paused, complete, error
  • print_stats.filename: Current file
  • print_stats.print_duration: Seconds elapsed
  • virtual_sdcard.progress: 0.0 to 1.0
  • heater_bed.temperature / heater_bed.target: Bed temps
  • extruder.temperature / extruder.target: Nozzle temps

Filament & Sensor Data

Query filament RFID and sensors:

/printer/objects/query?filament_detect&filament_motion_sensor%20e0_filament&filament_motion_sensor%20e1_filament&filament_motion_sensor%20e2_filament&filament_motion_sensor%20e3_filament

filament_detect.info[]

Array of 4 slots with RFID tag data (or defaults if no tag):

Field Description
VENDOR "Snapmaker" or "NONE" if no RFID
MANUFACTURER e.g. "Polymaker"
MAIN_TYPE Material: "PLA", "PETG", "ABS", etc.
SUB_TYPE Variant: "SnapSpeed", "generic", etc.
RGB_1 Color as decimal int (convert: #${(rgb>>16&0xFF).toString(16)}...)
ARGB_COLOR Color with alpha (decimal)
WEIGHT Spool weight in grams
HOTEND_MIN_TEMP / HOTEND_MAX_TEMP Nozzle temp range
BED_TEMP Recommended bed temp
OFFICIAL true if official Snapmaker filament

filament_motion_sensor e{0-3}_filament

Field Description
filament_detected Boolean - filament present in slot
enabled Boolean - sensor active

Note: Slots can have filament_detected: true but VENDOR: NONE โ€” this means third-party filament without RFID tag.