END_PRINT und Folge-G-Code vertragen sich nicht.

Folgendes Problem: Nachdem der Druck fertig ist, soll der Pi runter gefahren werden und Tasmota schaltet dann den Drucker komplett stromlos. So weit so gut, das funktioniert, wenn ich die END_PRINT entsprechend anpasse und mein:
[gcode_macro POWER_OFF_PRINTER_NOW]
gcode =
{% if printer.extruder.temperature < 49 %}
RESPOND MSG="Printer switch-off..."
G4 P6000
host_shutdown
tasmota_off
{% else %}
RESPOND MSG="Waiting for cooling down to shut off."
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=49
G4 P6000
host_shutdown
tasmota_off
{% endif %}
[gcode_macro POWER_OFF_PRINTER_NOW]
gcode =
{% if printer.extruder.temperature < 49 %}
RESPOND MSG="Printer switch-off..."
G4 P6000
host_shutdown
tasmota_off
{% else %}
RESPOND MSG="Waiting for cooling down to shut off."
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=49
G4 P6000
host_shutdown
tasmota_off
{% endif %}
direkt aus der END_PRINT am Ende starte. Packe ich den Aufruf "POWER_OFF_PRINTER_NOW" im Slicer ans Ende, wie im anhängenden Screenshot zu sehen ist, dann bleibt der Druckfortschritt bei 99% stehen, der Drucker fährt nach Unterschreitung von 49°C Nozzle-Temp dann wahrscheinlich unsauber runter und schaltet den Strom weg. Wie bekomme ich es hin, dass mein Macro erst startet, wenn der Druckvorgang 100% erreicht hat und damit dann sauber auch runter fährt? Vielleicht hast du @Helge Keck da ja eine Lösung für? PS: Den Fehler mit variable_chamber_filter_disable_bed_temp: 60 habe ich bereits geändert.
2 Replies
Sören
Sören4mo ago
das power off printer now ist ja noch teil des Druckauftrags. also erst mit runterfahren ist der zu 100% fertig. Bei mir hab ich ein Idle Timeout drin. wenn der 15min unter einer bestimmten temp ist, dann schaltet der ab. Das kam irgendwie auch zum teil aus Ratos wenn ich mich richtig errinnere (hatte ich zum ersten mal bei mir mit dem Ender 3 gemacht)
[gcode_macro POWER_OFF_PRINTER]
gcode:
{action_call_remote_method("set_device_power", device="printer", state="off")}

[idle_timeout]
timeout: 1200
gcode:
M84
TURN_OFF_HEATERS
UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=60

[delayed_gcode delayed_printer_off]
initial_duration: 0
gcode:
{% if printer.idle_timeout.state == "Idle" %}
POWER_OFF_PRINTER
{% endif %}
[gcode_macro POWER_OFF_PRINTER]
gcode:
{action_call_remote_method("set_device_power", device="printer", state="off")}

[idle_timeout]
timeout: 1200
gcode:
M84
TURN_OFF_HEATERS
UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=60

[delayed_gcode delayed_printer_off]
initial_duration: 0
gcode:
{% if printer.idle_timeout.state == "Idle" %}
POWER_OFF_PRINTER
{% endif %}
https://www.klipper3d.org/Config_Reference.html?h=idle#idle_timeout
Rigattoni
RigattoniOP3mo ago
Helge hatte mir gestern im ratos-support noch geschrieben: try it with a delayed gcode macro should do the trick
[delayed_gcode POWER_OFF_PRINTER_NOW]
gcode:
{% if printer.extruder.temperature < 49 %}
RESPOND MSG="Printer switch-off..."
G4 P6000
host_shutdown # Calls safe shut down of Raspbi
tasmota_off # Calls Shell command to switch off Tasmota
{% else %}
RESPOND MSG="Waiting for cooling down to shut off."
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=49
G4 P6000
host_shutdown # Calls safe shut down of Raspbi
tasmota_off # Calls Shell command to switch off Tasmota
{% endif %}
[delayed_gcode POWER_OFF_PRINTER_NOW]
gcode:
{% if printer.extruder.temperature < 49 %}
RESPOND MSG="Printer switch-off..."
G4 P6000
host_shutdown # Calls safe shut down of Raspbi
tasmota_off # Calls Shell command to switch off Tasmota
{% else %}
RESPOND MSG="Waiting for cooling down to shut off."
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM=49
G4 P6000
host_shutdown # Calls safe shut down of Raspbi
tasmota_off # Calls Shell command to switch off Tasmota
{% endif %}
and after END_PRINT in the slicer you call it with
UPDATE_DELAYED_GCODE ID=POWER_OFF_PRINTER_NOW DURATION=1
UPDATE_DELAYED_GCODE ID=POWER_OFF_PRINTER_NOW DURATION=1
Hatte ich auch überlegt, kann ich dann aber nicht abbrechen, ohne irgendeine Heizung im Drucker wieder zu aktivieren... Bei mir klemmen dahinter noch ein paar Macros...
[gcode_macro POWER_OFF_PRINTER]
gcode:
RESPOND MSG="Waiting for cooling down to shut off."
UPDATE_DELAYED_GCODE ID=DELAYED_POWER_OFF_PRINTER DURATION=10

[gcode_macro STOP_POWER_OFF]
gcode:
UPDATE_DELAYED_GCODE ID=DELAYED_POWER_OFF_PRINTER DURATION=0

[gcode_shell_command host_shutdown]
command: poweroff
timeout: 3.
verbose: False

[gcode_macro HOST_SHUTDOWN]
gcode:
RUN_SHELL_COMMAND CMD=host_shutdown
[gcode_macro POWER_OFF_PRINTER]
gcode:
RESPOND MSG="Waiting for cooling down to shut off."
UPDATE_DELAYED_GCODE ID=DELAYED_POWER_OFF_PRINTER DURATION=10

[gcode_macro STOP_POWER_OFF]
gcode:
UPDATE_DELAYED_GCODE ID=DELAYED_POWER_OFF_PRINTER DURATION=0

[gcode_shell_command host_shutdown]
command: poweroff
timeout: 3.
verbose: False

[gcode_macro HOST_SHUTDOWN]
gcode:
RUN_SHELL_COMMAND CMD=host_shutdown
Danach kommt dann noch das hier:
[gcode_shell_command tasmota_off]
command: curl "http://192.168.***.**/cm?user=irgendwer&password=irgendwas&cmnd=Backlog%3BDelay%20300%3BPower%20OFF"
timeout: 2.
verbose: False

[gcode_macro TASMOTA_OFF]
gcode:
RUN_SHELL_COMMAND CMD=tasmota_off
[gcode_shell_command tasmota_off]
command: curl "http://192.168.***.**/cm?user=irgendwer&password=irgendwas&cmnd=Backlog%3BDelay%20300%3BPower%20OFF"
timeout: 2.
verbose: False

[gcode_macro TASMOTA_OFF]
gcode:
RUN_SHELL_COMMAND CMD=tasmota_off

Did you find this page helpful?