Wichtig ist zu beachten, das wir keinen Druck einer Datei über Klipper machen sondern die ganze Zeit die Kontrolle haben. Daher sollte man alles weglassen das in klipper einen Druck stoppt oder pausiert.
pause_on_runout: False
im sensor verhindert, das Klipper sich darum kümmern will und alles durcheinander bringt.
Es gibt 2 mögliche herangehensweisen. Entweder wenn du per api socket angebunden bist, kannst du den Namen des sensors eintragen und er wird automatisch getriggert. Alternativ oder wenn du es keine api Anbindung nutzt, musst du eine spezielle Meldung senden, damit der Server das sieht und reagieren kann. Unten der Code wie das geht. Habe nur einen Extruder aber mit 2. geht es genau so, einfach einen 2. Sensor definieren.
[filament_switch_sensor filament_sensor]
pause_on_runout: False
# When set to True, a PAUSE will execute immediately after a runout
# is detected. Note that if pause_on_runout is False and the
# runout_gcode is omitted then runout detection is disabled. Default
# is True.
runout_gcode: outoffilament
# The gcode to run after a filament runout is detected. If
# pause_on_runout is set to True this gcode will run after the PAUSE
# is complete. The default is not to run any gcode commands.
#insert_gcode:
# The gcode to run after a filament insert is detected. The default
# is not to run any gcode commands, which disables insert detection.
event_delay: 3.0
# The minimum amount of time in seconds to delay between events.
# Events triggered during this time period will be silently
# ignored. The default is 3 seconds.
switch_pin: ar15 # ar15=RAMPS Y+ ar2=RAMPS X+ / ar4=RAMPS Servo Pin 4
# The pin on which the switch is connected. This parameter must be
# provided.
[gcode_macro outoffilament]
gcode:
; Message to server about filament sensor triggered
QUERY_FILAMENT_SENSOR SENSOR=filament_sensor
RESPOND TYPE=command MSG=action:out_of_filament