我这套使用的是大树的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 %}