Реле отключение питание Принтера с Klipper для Armbian

dvino
Идет загрузка
Загрузка
19.10.2021
988
0
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

7

Решил я на днях настроить управление питанием принтера через веб интерфейс. Бывает иногда, возникнет идея, которую срочно хочется воплотить, а оставлять принтер включенным круглые сутки - идея не из лучших. Статей на эту тему полно. Вроде, ничего сложного - подключаешь реле к выводу GPIO на одноплатнике, включаешь возможность управление GPIO в операционной системе, добавляешь пару строк в конфиг Moonraker, и вуаля, в веб интерфейсе должна появиться заветная кнопка отключения питания. Но на Armbian у меня возникли некоторые сложности с управлением GPIO, которые просто так не гуглились. В связи с этим, делюсь решением.

Описываю последовательность действий для связки Klipper и Moonraker, установленных на Armbian

Так понимаю что на OctoPi и других ОС для Raspberry Pi у народа проблем не возникает, потому и решения просто так не гуглятся. Но мне пришлось работать с тем что есть. В загажнике лежал Orange Pi Zero. Его для данных целей выше крыши. Судя по загрузке CPU во время печати и 70% свободной оперативки из 512 Мб, мощности еще и для подключения веб камеры хватит. 

Подключение

Для управления питанием принтера не используйте самые дешевые китайские реле.

Реле отключение питание Принтера с Klipper для Armbian

У меня после порядка десяти включений, у вот такого реле, начали залипать контакты.

Подключите реле к выходу GPIO вашего одноплатника. Проверьте, умеет ли конкретный GPIO на вашей работать на выход.

Настройка

Далее включите возможность управления GPIO в операционной системе:

sudo armbian-config

Реле отключение питание Принтера с Klipper для Armbian

Настройка разрешений для управления GPIO пользователем без прав root

Вот на этом моменте у меня и случился затык. Управлять GPIO от пользователя через bash получалось, но Moonraker ругался на отсутствие прав. Так как в программировании я не силен, в частности Python знаю посредственно, а Moonraker написан на нем, осилить самому проблему у меня не вышло. Гугл тоже не говорил ничего внятного. Из решений находились только костыли по предоставлению прав root. Помогли ребята из группы Telegram Anycubic Mega Zero Rus. Решение здесь.

Таким образом, для управления GPIO от пользователя, создаем группу gpio:

sudo groupadd gpio

Добавляем нашего пользователя и(или) пользователя из под которого запускается Moonraker в группу gpio

useradd -G gpio USERNAME

Если вы хотите рулить gpio при помощи bash скриптов, создаем файл

/etc/udev/rules.d/99-gpio.rules

С содержанием:

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\

    chown -R root:gpio /sys/class/gpio && chmod -R 0770 /sys/class/gpio &&\

    chown -R root:gpio /sys/devices/platform/soc && chmod -R 0770 /sys/devices/platform/soc'"

Для того, чтоб управлять gpio из Moonraker, файл:

vim /etc/udev/rules.d/60-gpiod.rules

С содержанием:

SUBSYSTEM=="gpio", KERNEL=="gpiochip[0-4]", GROUP="gpio", MODE="0660"

Чтоб все это заработало, необходимо перезагрузиться.

Конфигурация Moonraker

Далее правите moonraker.conf в соответствии с необходимым функционалом. Описано что и как в официальной документации.

Минимальна конфигурация:

[power printer]

type: gpio

pin: gpiochip0/gpio6

Остальное в конфиг добавляете для себя, при необходимости.

перезагружаете Moonraker

sudo systemctl restart moonraker

После этого в веб морде должен появиться пункт управления питанием.

Реле отключение питание Принтера с Klipper для Armbian

Ну и управление питанием принтера из клиппера, как это описано в документации (гугл перевод):

Можно переключить питание устройства с хоста Klippy, это можно сделать с помощью gcode_macro, например:

# printer.cfg

[gcode_macro POWER_OFF_PRINTER]

gcode:

  {action_call_remote_method("set_device_power",

                             device="printer",

                             state="off")}

POWER_OFF_PRINTER GCode можно запустить , чтобы отключить «принтер» устройство. Это можно использовать вместе с тайм-аутом простоя Klipper для выключения принтера в режиме ожидания с конфигурацией, аналогичной приведенной ниже:

# printer.cfg

[delayed_gcode delayed_printer_off]

initial_duration: 0.

gcode:

  {% if printer.idle_timeout.state == "Idle" %}

    POWER_OFF_PRINTER

  {% endif %}

[idle_timeout]

gcode:

  M84

  TURN_OFF_HEATERS

  UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=60

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

7
Комментарии к статье