Двойной klipper

shadrincev
Идет загрузка
Загрузка
28.02.2019
2448
20
печатает на Flyingbear P905
Техничка

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

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

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

13
Статья относится к принтерам:
Flyingbear P905
Доброго времени суток всем! Конечно, речь пойдёт не о гонках, как можно подумать из названия, а всего лишь об использовании 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 # или указанное вами имя.

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

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

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

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

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

Комментарии

28.02.2019 в 14:34
0

А зачем 2 октопринта? Хм... Всегда думал, что октопринт поддерживает несколько принтеров, оказывается - нет.

01.03.2019 в 14:05
0

 Он и поддерживает. Автор просто решил срукожопить

01.03.2019 в 14:58
0

Так я только за!  Поделитесь, что да как. :) Думаю, многим будет интересно.

01.03.2019 в 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.2019 в 15:27
1

Я не понял, как это противоречит тому, что пишет автор, и как это относится к поддержке октопринтом двух принтеров?

01.03.2019 в 19:09
0

Про октопринт речи и не было. Обсуждаем клиппер

01.03.2019 в 21:35
0

Но вы отвечаете на коммент про октопринт

01.03.2019 в 19:02
0

Попробуйте, выполните: будет висеть зеленый курсор в терминале. При закрытии терминала или при ctrl+c, служба закроется, а при моем варианте, она работает постоянно. Разница есть?

01.03.2019 в 19:08
0

Две. Работает. В screen сессии стартую и все ок

01.03.2019 в 15:00
1

Каким образом? Может, я отстал от жизни?

18.11.2019 в 07:10
0

запускаешь screen

$ screen -D -R


запускаешь что надо


нужно еще запустить: нажимаешь Ctrl-A c (последовательно), открывается новый терминал. запускаешь всего сколько нужно.


перемещение по терминалам Ctrl-A 1 (или какой там нужен номер терминала)


перед выходом нажимаешь Ctrl-A Ctrl-D - отключение от screen


можно закрывать подключение к линуху. заново подключиться опять же screen -D -R


при перезагрузке само не стартует


полный набор сочетаний клавиш screen по Ctrl-A ?

28.02.2019 в 15:03
2

2 октопринта на разных портах. Один принтер будет доступен на 5000 порту, другой - на 5001.  Открыл 2 закладки в браузере и рулишь..

28.02.2019 в 17:45
1

Очень занятно, автор молодец!

на небольшую ферму старый неттоп/ноут и вуаля

28.02.2019 в 17:50
0

также поинтересуюсь, может быть кто в курсе - есть октопринты на андройд
не добрался ли клиппер на него же?

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

17.11.2019 в 03:35
1

Устройства потеряются если воткнуть в другой USB порт, но есть решения выкинуть все

ATTRS{idVendor}=='{VendorID}',ATTRS{idProduct}=='{ProductID}

и сделать привязку к серийному номеру чипа

1 принтер

SUBSYSTEM=="tty", ATTRS{serial}=="04FFF006AF291D295AA35837F50020C0", SYMLINK+="ttyACMsmail"

2 принтер

SUBSYSTEM=="tty", ATTRS{serial}=="09003013AF2E94025B5159B2F50020C4", SYMLINK+="ttyACMbig"

после этого в какой либо порт USB вы не воткнули ваши принтеры они всегда привяжутся по серийнику правильно


17.11.2019 в 16:07
0

Устройства потеряются если воткнуть в другой USB порт

Да, так и есть, я об этом писал.Очень рад, что вы нашли, для себя, лучшее решение, но! У китайцев, есть случаи абсолютно одинаковых плат, в том числе и serial. И говоря об способе, надо писать и способ его реализации: 

вводится, 

udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0) 

где в место АСМ0 от 0 до 9. 

а дальше как советуется. Поправьте, если ошибся.

17.11.2019 в 22:04
1

 в клиппере порт принтера ты можешь  задать при конфигурации прошивке  а с марлином (у меня 2 платы SKR) серийник частично привязан к серийному номеру флешки и их одинаковых я пока не видел

18.11.2019 в 06:02
0

Что-то я не допонял... А можно пошагово, как вы делаете? Уж очень интересно стало. Спасибо. 

18.11.2019 в 08:59
1

В Клиппере через консоль

cd ./klipper

make clean

make menuconfig

поставить галочку

перейти в меню

и забить номер серийного порта прошивки клиппера (любое пятизначное число)

сохраняем все и выходим из конфигуратора

далее останавливаем клиппер

sudo service klipper stop

make

и компилим прошивку, запускаем службу

sudo service klipper start

скидываем бинарник на флешку а перезагружаем плату

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

ls /dev/serial/by-id/*


/dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00


где числа которые мы вписали при конфигурации принтера
 далее прописываем порт в printer.cfg  и перезагружаем службу клиппер

теперь пофиг в какой USB порт ты не воткнешь он всегда подрубится

С марлином опишу чуть позже

18.11.2019 в 15:28
0

Вот удивили, не знал. Огромное спасибо! Век живи, век учись. :)))

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

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

SKR v1.4 и Pro v1.4

Вервольф

Последние распродажи в 2019 году

Formnext 2019 | Нестандартный обзор мировой выставки 3D печати

Klipper + DuetWebControl

Как шатаются направляющие валы у FLSUN qq-s