Двойной klipper

Подписаться на 3Dtoday
shadrincev
Идет загрузка
Загрузка
28.02.19
2028
15
печатает на Flyingbear P905
Техничка
12
Статья относится к принтерам:
Flyingbear P905
eae667a1158c797e1dbbaa2d2dfc5147.jpg
Доброго времени суток всем! Конечно, речь пойдёт не о гонках, как можно подумать из названия, а всего лишь об использовании klipper на 2-х машинах и одном orange pi pc. А картинка, так, улыбнуться.
Хочу сказать отдельное спасибо товарищу unisys за помощь и, конечно, товарищам с гитхаба klipper
Часть материалов взята из статьи «НастройкаOctoPrint для работы с несколькими принтерами»

Не буду долго занудствовать, перейду сразу к описанию.

Условия:
1. Наличие ПК под управлением armbian Stretch (Debian).
2. Наличие установленного и настроенного octoprint.
3. Наличие установленного и настроенного klipper.
4. 2 принтера, на которых хочется запустить klipper.
Первое что нам понадобится, это создать копию octoprint (более подробнее, по ссылке выше).
cp -R /home/pi/.octoprint /home/pi/.octoprint2
Копируем конфигурацию Octoprint
sudo cp /etc/default/octoprint /etc/default/octoprint2
Меняем настройки в файле конфигурации
sudo nano /etc/default/octoprint2
Необходимо поправить пару строк
HOST=0.0.0.0
PORT=5001
D AEMON_ARGS="--host=$HOST --port=$PORT --basedir /home/pi/.octoprint2/"
Выйти и сохранить Ctrl+X, затем Y, потом Enter (Эта последовательность повторяется во всех редактируемых файлах, я ее буду дальше пропускать, но стоит запомнить!)
Копируем скрипт запуска
sudo cp /etc/init.d/octoprint /etc/init.d/octoprint2
И правим его
sudo nano /etc/init.d/octoprint2
В верхней части этого файла вносим изменения! Измените каждое имя от «octoprint» до «octoprint2» и «OctoPrint» до «OctoPrint2», но оставьте строку «DAEMON=/usr/bin/octoprint» нетронутой! (Для тех у кого в /etc/init.d/octoprint2 есть такое # Author: Sami Olmari & Gina Hau? ge Надо вручную определить демона:
DAEMON=/usr/bin/octoprint
Примерно так:
#!/bin/sh
### BEGIN INIT INFO
# Provides: octoprint2
# Required-Start: $local_fs networking
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OctoPrint2 daemon
# Description: Starts the OctoPrint2 daemon with the user specified in
# /etc/default/octoprint2.
### END INIT INFO
# Author: Sami Olmari
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="OctoPrint2 Daemon"
NAME="OctoPrint2"
DAEMON=/usr/bin/octoprint
PIDFILE=/var/run/$NAME.pid
PKGNAME=octoprint2
SCRIPTNAME=/etc/init.d/$PKGNAME
Пере запускаем демона
sudo systemctl daemon- reload
Чтобы все автоматически запускалось обновляем rc.d
sudo update-rc.d octoprint2 defaults
Запускаем новый экземпляр Octoprint
sudo /etc/init.d/octoprint2 start
Проверяем был ли успешно добавлен сервис
systemctl status octoprint2.service
Все должно работать, как надо статус должен быть Active. (Для выхода жмем Ctrl+C). Копия octoprint будет доступна по вашему адресу и порт 5001.
Теперь к основному, ради чего это все делалоськлон klipper:

Первый способ:
Копируем автозапуск klipper
sudo cp /etc/init.d/klipper /etc/init.d/klipper2
Открываем для редактирования
sudo nano /etc/init.d/klipper2
и удаляем все, кроме
#!/bin/bash !
Добавляем строку
~/klippy-env/bin/python ~/klipper/klippy/klippy. py ~/printer2.cfg -l /tmp/klippy2.log -I /tmp/ printer2 &
Знак & - позволит запускаться процессу фоновым.
Делаем активным скриптом
sudo chmod +x /etc/init.d/klipper2
Перезапускаем демона
sudo systemctl daemon-reload
Чтобы все автоматически запускалось обновляем rc.d
sudo update-rc.d klipper2 defaults
Запускаем новый экземпляр
sudo /etc/init.d/klipper2 start
Сервис klipper запустился и работал, но что-то мне не понравилось (честно не помню), я пошел другим путём. Единственное в octoprint следует поменять значения с /tmp/printer на /tmp/printer2. То же самое в плагине octoklipper! А также printer. cfg на printer2. cfg.

Второй способ:
Копируем автозапуск клипера и параметры
sudo cp /etc/init.d/klipper /etc/init.d/klipper2
sudo cp /etc/default/klipper /etc/default/klipper2
sudo cp /var/run/klipper.pid /var/run/klipper2.pid
открываем конфигурацию
sudo nano /etc/default/klipper2
и меняем ARGS: изменить путь к конфигу и к логу и не забываем добавить в конце перед кавычками -I /tmp/printer2. Концовка выглядит примерно вот так:
printer2.cfg -l /tmp/klippy2.log -I /tmp/printer2"
Далее открываем автозапуск
sudo nano /etc/init.d/klipper2
и все значения klipper надо поменять на klipper2 (Во всех строках после klipper добавить цифру 2!)
После редактирования сохраняемся и продолжаем. Делаем активным скриптом
sudo chmod +x /etc/init.d/klipper2
Перезапускаем демона
sudo systemctl daemon-reload
Чтобы все автоматически запускалось обновляем rc.d
sudo update-rc.d klipper2 defaults
Запускаем новый экземпляр klipper
sudo /etc/init.d/klipper2 start
Проверяем, был ли успешно добавлен сервис
systemctl status klipper2.service
если есть зеленым activ то все хорошо (может понадобиться нажать CTRL+C для выхода)
Все. Сервис klipper2 запущен и можно подключаться ко второму принтеры, единственное в octoprint следует поменять значения с /tmp/printer на /tmp/printer2. То же самое в плагине octoklipper!

И напоследок. Если вы столкнулись с тем, что у вас две одинаковые китайские платы управления принтером, то у них совпадают вендор и продукт ид. Т.е. платы братья близнецы и вставляя в порт ПК, не всегда удается получить доступ к нужной плате. На форуме есть специалисты, которые лучше разбираются и объяснят это, поэтому перейду сразу к действиям, которые позволят это исправить:

Делаем привязку 2-х одинаковых плат к порту:
Подключаем устройства в порты и смотрим уникальность оборудования
udevadm info --name=/dev/ttyACMx --attribute-walk
Где x-число, соответствующее порту устройства от 0 до 9. В списке атрибутов необходимо найти уникальный для устройства атрибут (check idVendor и idProduct, или usb от 0 до 9, или, как в моем случае , USB с обозначением 6-1:1.0 – первая плата, 8-1:1.0 – вторая плата).
Дальше создаем фал правила и открываем его
sudo nano /etc/udev/rules.d/99-custom.rules
Если вы нашли уникальный атрибут устройства idVendor, то напишите следующую строку в файле правил:
ACTION=="add",SUBSYSTEM=="tty",ATTRS{idVendor}=="{VendorID}",ATTRS{idProduct}=="{ProductID}",SYMLINK+="{PrinterName}",GROUP="dialout"
Если нет ничего уникального в двух ваших платах, вы можете сделать статическое назначение на основе ядра USB (поэтому в основном любое устройство, которое вы подключаете к данному порту, создает символическую ссылку с тем же именем). Он хорошо работает даже с USB-концентраторами! Но не стоит путать эти устройства местами.
Мой пример:
ACTION=="add",SUBSYSTEM=="tty",KERNELS=="6-1:1.0",SYMLINK+="fribot",GROUP="dialout"
ACTION=="add",SUBSYSTEM=="tty",KERNELS=="8-1:1.0",SYMLINK+="p905",GROUP="dialout"
В данной группе меняете значения KERNELS 6-1:1.0 и 8-1:1.0 на свои, а так же fribot и p905. Сохраняемся и перезагружаем правила udevadm:
udevadm control -- reload
Теперь, если все прошло правильно, вы можете подключить устройство и ввести в своем терминале:
ls /dev/p905
чтобы увидеть, если вы успешно создали символическую ссылку. Поскольку это символическая ссылка, вы сможете получить доступ к /dev/p905 и /dev/ttyACM0, но они будут указывать на одно и то же устройство. Выскочит что-то типа такого: dev/p905 ……….. => dev/ttyACM0. Значит все хорошо и в настройках printer2. cfg можно прописать
[mcu]
serial: /dev/fribot # или указанное вами имя.
На этом все, что я хотел вам изложить. Предупреждаю сразу, дабы избежать глупых вопросов: у меня все работает, но я не владею достаточными знаниями, чтобы вам помочь или исправить ошибку. Если у кого-то есть, что добавить, исправить, поругать, то прошу в комментарии.
Подписаться на 3Dtoday
12
Комментарии к статье

Комментарии

28.02.19 в 14:34
0
А зачем 2 октопринта? Хм... Всегда думал, что октопринт поддерживает несколько принтеров, оказывается - нет.
01.03.19 в 14:05
0
Он и поддерживает. Автор просто решил срукожопить
01.03.19 в 14:58
0
Так я только за! Поделитесь, что да как. :) Думаю, многим будет интересно.
01.03.19 в 15:24
0
Открываем официальный FAQ и там:

Can I run multiple instances of Klipper on the same host machine?
It is possible to run multiple instances of the Klipper host software, but doing so requires Linux admin knowledge. The Klipper installation scripts ultimately cause the following Unix command to be run:
~/klippy-env/bin/python ~/klipper/klippy/klippy.py ~/printer.cfg -l /tmp/klippy.log
One can run multiple instances of the above command as long as each instance has its own printer config file, its own log file, and its own pseudo-tty. For example:
~/klippy-env/bin/python ~/klipper/klippy/klippy.py ~/printer2.cfg -l /tmp/klippy2.log -I /tmp/printer2
If you choose to do this, you will need to implement the necessary start, stop, and installation scripts (if any). The install-octopi.sh script and the klipper-start.sh script may be useful as examples.
01.03.19 в 15:27
1
Я не понял, как это противоречит тому, что пишет автор, и как это относится к поддержке октопринтом двух принтеров?
01.03.19 в 19:09
0
Про октопринт речи и не было. Обсуждаем клиппер
01.03.19 в 21:35
0
Но вы отвечаете на коммент про октопринт
01.03.19 в 19:02
0
Попробуйте, выполните: будет висеть зеленый курсор в терминале. При закрытии терминала или при ctrl+c, служба закроется, а при моем варианте, она работает постоянно. Разница есть?
01.03.19 в 19:08
0
Две. Работает. В screen сессии стартую и все ок
01.03.19 в 15:00
1
Каким образом? Может, я отстал от жизни?
28.02.19 в 15:03
1
2 октопринта на разных портах. Один принтер будет доступен на 5000 порту, другой - на 5001. Открыл 2 закладки в браузере и рулишь..
28.02.19 в 17:45
1
Очень занятно, автор молодец!

на небольшую ферму старый неттоп/ноут и вуаля
28.02.19 в 17:50
0
также поинтересуюсь, может быть кто в курсе - есть октопринты на андройд
не добрался ли клиппер на него же?

*а потом как в тумане - 3д-печатники подходят к людям, интересуются позвонить, уточняют "на андройде" и убегают прикручивать телефоны к принтерам

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

Читайте в блогах

Арахнофобия на Эдоре.

Астронавты NASA примерили новые скафандры с 3D-печатными шлемами

Ижевская компания запустит производство оснастки и контактирующих устройств с применением 3D-принтеров

Пушкин в Донецке: краткий экскурс в историю одного памятника

АКЦИИ В ЗЕНИТЕ: ДАРИМ пластик Polymaker и смолу Monocure3D!

Кубок России по программированию беспилотника разыграют на фестивале RUKAMI Кружкового движения НТИ