我这套使用的是大树的skr-pico和他家的大树派,所有风扇啥的都是可以控制的,所以软件层面关机就可以做到待机5w,感觉不是很有必要搞继电器那些,配合了一个智能插座。下面是配置:
写在Moonraker.cfg中的:
#打完关机的 [power dwgj] type: klipper_device object_name: gcode_macro DWGJ initial_state:off locked_while_printing: False
写在print.cfg中的配置:
[gcode_macro SHUTDOWN] gcode: M84 #关闭电机 SET_LED LED="board_neopixel" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1 #关灯 {action_call_remote_method("shutdown_machine")} #延时关机的宏 [delayed_gcode delayed_printer_off] gcode: #M81 ;关机(klipper没有这种命令) SET_LED LED="board_neopixel" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1 #关灯 SHUTDOWN #闲置关机的宏 [idle_timeout] gcode: M84 #关闭电机 UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=180 timeout: 1600 #如果state等于1,则设置G代码变量MACRO=DWGJ VARIABLE=value的值为1,并返回信息“DWGJ-ON-ON-ON!”。 #否则,设置G代码变量MACRO=DWGJ VARIABLE=value的值为0,并返回信息“DWGJ-OFF-OFF-OFF!”。 [gcode_macro DWGJ] # The variable below should be initialized to the startup value. If your # device is configured to be on at startup use "variable_value: 1" variable_value: 0 gcode: {% if 'VALUE' not in params %} {action_raise_error("Parameter 'VALUE' missing from 'DWGJ'")} {% endif %} {% set state = params.VALUE|int %} {% if state == 1 %} SET_GCODE_VARIABLE MACRO=DWGJ VARIABLE=value value=1 {action_respond_info("DWGJ-ON-ON-ON!打印完将关机")} {% else %} SET_GCODE_VARIABLE MACRO=DWGJ VARIABLE=value value=0 {action_respond_info("DWGJ-OFF-OFF-OFF!打完关机功能关闭")} {% endif %} #测试打印完关机的用的 [gcode_macro Test_AfterPrint] gcode: {% set is_shutdown = printer["gcode_macro DWGJ"].value|int %} {% if is_shutdown == 1 %} {action_respond_info("5分钟后关机")} UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=300 {% endif %} #打印结束时检查DWGJ宏指令的值,如果为1,则设置一个延迟关闭打印机的G代码命令,让打印机在300秒后关闭。
把这些代码加在PRINT_END宏中:
#打印结束时检查DWGJ宏指令的值,如果为1,则设置一个延迟关闭打印机的G代码命令,让打印机在300秒后关闭。 {% set is_shutdown = printer["gcode_macro DWGJ"].value|int %} {% if is_shutdown == 1 %} {action_respond_info("5分钟后关机")} UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=300 {% endif %}