ВНИМАНИЕ! Все операции вы выполняете на свой страх и риск, а также осознаете, что будете работать с опасным для жизни напряжением!
Для работы автоотключения используется свободный порт Probe0 (черный) материнской платы.
Ну и надо будет приобрести модуль реле 5 вольт как на фото:


Ссылка на ВБ: https://www.wildberries.ru/catalog/170504420/detail.aspx?size=283097419
Перемычку на модуле устанавливаем в режим HIGH.
upd: резистор на фото устанавливаем в случае, если для включения принтера приходится долго удерживать кнопку (примерно пока не включится подсветка у принтера). Сопротивление подбирается опытным путем от 20-60 килоом, у всех по разному. Если будет сильно большое – ничего не изменится, если сильно малое – принтер не будет отключаться по команде.
Схема подключения реле:

Логика работы следующая: когда срабатывает макрос POWER_MANAGEMENT в конечном G-code файла печати, в порт Probe0 (черный) материнской платы выводится логический «0», тем самым модуль реле отключается обесточивая принтер.
При обновлении прошивки НА ВСЯКИЙ СЛУЧАЙ от ГРЕХА подальше удерживаете вынесенную в удобное место кнопку включения на время процесса обновления. Естественно, после обновления необходимо будет снова проделать пункт 2.
(кнопка без фиксации с нормально разомкнутыми контактами рассчитанная на 220 вольт).
Я установил ее внутри камеры принтера просверлив отверстие в пластике:

Провод от кнопки идущий от реле ( показан желтым на рисунке 2) проложил по дну принтера:

Помните, что если вы будете обновлять прошивку, то эту манипуляцию нужно будет проделать заново.

2. В любом свободном месте (я сделал это в конце) добавляем код:
(пробелы перед SET_PIN PIN=POWER_MANAGEMENT VALUE=0 последней строке обязательны):
[output_pin POWER_MANAGEMENT]
pin: PB11
value: 1
shutdown_value: 1
[gcode_macro POWER_MANAGEMENT]
gcode:
SET_PIN PIN=POWER_MANAGEMENT VALUE=0
Если хотим, чтобы при аварии принтер сам выключился (в теории, лично не проверял), то shutdown_value: ставим на 0. Но тогда мы не узнаем причину аварии (только если в логах можно будет посмотреть).
Сохраняем:

3. Открываем файл gcode_macro.cfg

Ищем строку gcode_macro PRINT_END и в конце после строки SDCARD_RESET_FILE c абзаца вставляем:
; Запускаем фоновую проверку температуры для отключения питания
UPDATE_DELAYED_GCODE ID=power_off_check DURATION=5
[delayed_gcode power_off_check]
gcode:
{% set current_temp = printer.extruder.temperature %}
; Отменяем если началась новая печать или экструдер нагревается
{% if printer.print_stats.state == "printing" or printer.extruder.target > 0 %}
{ action_respond_info("Начата новая печать, отмена отключения питания") }
{% elif current_temp <= 55 %}
SET_PIN PIN=POWER_MANAGEMENT VALUE=0
{ action_respond_info("Экструдер остыл до %d°C, питание отключено" % current_temp) }
{% else %}
UPDATE_DELAYED_GCODE ID=power_off_check DURATION=5
{ action_respond_info("Ожидание остывания: %d°C" % current_temp) }
{% endif %}
4. Сохраняем и перезагружаем.
Теперь выведем кнопку выключения в верх страницы, чтобы можно было отключить принтер через веб интерфейс:

Для этого в настройках нужно выбрать этот пункт:

По итогу мы получаем функцию автоотключения принтера после удачного завершения печати и остывания экструдера. Удачи)
Автор: https://t.me/BlackShooter