Установка Octoprint на Orange Pi PC. Настройка управления питанием принтера, установка камеры. Настройка Telegram Notifications (1.5.0) для Octoprint и VPN для Orange Pi PC с использованием OPENVPN. Это не инструкция, а скорее мой блокнот дабы ничего не забыть.
Подготовка флешки с системой и установка ARMBIAN
Я купил на Ali вот такую Orange Pi PC H3 ССЫЛКА НА АЛИ
Буду использовать версию Armbian Buster (Debian). Для записи на флешку нам понадобится Rufus или Win32. Пишем флешку по инструкции — их в интернете море. Подключаемся к нашему одноплатнику через Putty. Авторизуемся под root, пароль 1234. И вводим все по порядку:
Для начала создадим пользователя octoprint
useradd -m octoprint
создадим пользователю пароль
passwd octoprint
добавим пользователя в группу sudo
adduser octoprint sudo
Теперь выходим из рутовой сессии и заходим через Putty новым пользователем octoprint
После чего выполняем
cd ~
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential virtualenv
Установка Octoprint
Копируем исходники
git clone https://github.com/foosel/OctoPrint.git
cd OctoPrint
Ставим виртуальную среду
virtualenv venv
Для Питона 3
virtualenv —python=python3 venv
./venv/bin/pip install pip —upgrade
./venv/bin/python setup.py install
Создаем папку для конфигов
mkdir ~/.octoprint
Для того чтоб пользователь octoprint имел доступ к серийным портам добавим его в группы tty и dialout
sudo usermod -a -G tty octoprint
sudo usermod -a -G dialout octoprint
После этого можно попробовать запустить octoprint
~/OctoPrint/venv/bin/octoprint
После проверки закрываем octoprint Ctrl+C
Добаваляем Octoprint в автозагрузку
Из папки готовых скриптов OctoPrint-а копируем нужные скрипты в нужные места.
sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
sudo chmod +x /etc/init.d/octoprint
sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
Теперь надо подправить файл:
sudo nano /etc/default/octoprint
Открываем редактор, там нужно изменить следующее (надо убрать # перед DAEMON):
Меняем везде пути и юзера на своего (octoprint)
OCTOPRINT_USER=octoprint
DAEMON=/home/octoprint/OctoPrint/venv/bin/octoprint
Ctrl+X, нажимаем Y и Enter
Обновим список автозагрузки
sudo update-rc.d octoprint defaults
Обновление Octoprint в ручном режиме
Заходим на микрокомпьютер терминалом под пользователем octoprint
cd ~/OctoPrint/
git pull
./venv/bin/python setup.py clean
./venv/bin/python setup.py install
Можно перезагрузить только сервис OctoPrint
sudo service octoprint restart
Или перезагрузить весь микрокомпьютер
sudo restart
Перезагрузка Octoprint/Orange pi из меню Octoprinta.
sudo nano /etc/sudoers.d/octoprint-shutdown
пишем в файл
octoprint ALL=NOPASSWD: /sbin/shutdown
Ctrl+X, нажимаем Y и Enter
sudo nano /etc/sudoers.d/octoprint-restart
octoprint ALL=NOPASSWD: /bin/systemctl restart octoprint
Ctrl+X, нажимаем Y и Enter
И добавляем команды в разделе Server:
sudo shutdown -r now
sudo shutdown -h now
Для управления питанием принтера и камерой потребуется установка System Command Editor или редактирование файла config.yaml в ручную
Управление питанием принтера
Для этого нам понадобится модуль реле с Алика ССЫЛКА на АЛИ
Установка WiringOP:
git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
после установки проверяем работоспособность
gpio readall
покажет все порты, назначения и состояния.
Для подключния реле нам нужны контакты GND, +3.3B и контакт GPIO.25.
Реле включаем в разрыв провода питания 220В блока питания 3D принтера.
Есть один нюанс, при подключенной Orange pi к принтеру, питание на принтер приходит от сети 220в (через наше реле которым мы будем управлять), а еще через порт USB от Orange Pi. Если отключить через команду принтер, то он обисточится не полностью, мозги принтера останутся запитанными от USB Orange pi. Для исправления этой проблемы используем «изоленту». Просто заклеим в разъеме usb пин питания. После этого принтер будет отключаться полностью!
Скрипт отключения питания. Использует 25 ногу. Если используете реле как у меня на фото в начале статьи (инверсный вход) , они включаются при подтяжке управляющей ноги к земле и отключаются при появлении напряжения на ноге. Нужно вставить в скрипты poweroff.sh gpio write 25 1 и в poweron.sh gpio write 25 0
Скрипт отключени питания:
nano poweroff.sh
#!/bin/sh
gpio mode 25 out
gpio write 25 1
Ctrl+X, нажимаем Y и Enter
Ставим необходимые права:
chmod 755 poweroff.sh
chmod +x poweroff.sh
Скрипт включения питания:
nano poweron.sh
#!/bin/sh
gpio mode 25 out
gpio write 25 0
Ctrl+X, нажимаем Y и Enter
Ставим необходимые права:
chmod 755 poweron.sh
chmod +x poweron.sh
В System Command Editor добавить :
Запуск скрипта включения всего питания:
/home/octoprint/poweron.sh
Запуск скрипта отключения всего питания:
/home/octoprint/poweroff.sh
Или редактирование config.yaml:
cd .octoprint
nano config.yaml
system:
actions:
- action: power_on
command: /home/octoprint/poweron.sh
name: Включить принтер
- action: power_off
command: /home/octoprint/poweroff.sh
confirm: Вы точно желаете отключить принтер?
name: Отключить принтер
Если раздел system: actions: уже есть, то добавить только пункты меню.
Ctrl+X, нажимаем Y и Enter. Соблюдая все отступы и знаки в точности.
Настройка автоматического отключения 3d принтера после завершения печати
Для включения этой функции нам потребуется отредактировать файл config.yaml
cd .octoprint
nano config.yaml
events:
enabled: true
subscriptions:
- command: /home/octoprint/poweroff.sh
event: PowerOff
type: system
- command: /home/octoprint/poweron.sh
event: PowerOn
type: system
Ctrl+X, нажимаем Y и Enter. Соблюдая все отступы и знаки в точности.
Перезапускаем octoprint sudo service octoprint restart
Теперь будут корректно работать команды M81 (отключить питание) и M80(включить питание). Эти команды можно добавить или в слайсере или в самом Octoprint как GCODE выполняющйся после завершения работы:
Настройка WEB камеры в Octoprint
Выполним следующие действия
cd ~
sudo apt install subversion libjpeg-dev imagemagick ffmpeg libv4l-dev cmake
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=.
make
Выводим список доступных устройств
ls /dev/video*
Проверяем поток, меняем /dev/video1 пока не найдем свою камеру
sudo ./mjpg_streamer -i «input_uvc.so -d /dev/video1 -r 800×600 -f 30» -o «output_http.so»
Проверяем работу камеры тут http://(адрес ‘апельсинки’;):8080/?action=stream.
Если запущен mjpg-streamer, закрываем его (Ctrl+C).
Чтобы разрешить ‘обычному’ пользователю доступ к устройствам video, надо добавить его в соответствующую группу.
sudo usermod -a -G video octoprint
После этого закрываем сеанс (exit) и подключаемся к Orange Pi заново.
Устанавливаем mjpg-streamer в систему. При этом исполняемый файл окажется в /usr/local/bin, плагины — в /usr/local/lib.
cd ~/
cd mjpg-streamer/mjpg-streamer-experimental
sudo make install
После установки можно его удалить из домашней папки (cd ~ && rm -rf mjpg-streamer).
Создаем скрипт запуска
cd
nano webcam-streamer
#!/bin/bash
# Start / stop streamer
Daemon=mjpg_streamer
DaemonBase=/usr/local
DaemonArgs="-i \" input_uvc.so -d /dev/video1 -r 800x600 -f 30\" -o \"output_http.so\""
case "$1" in
start)
eval LD_LIBRARY_PATH=${DaemonBase}/lib ${DaemonBase}/bin/${Daemon} ${DaemonArgs} >/dev/null 2>&1 &
echo "$0: started"
;;
stop)
pkill -x ${Daemon}
echo "$0: stopped"
;;
*)
echo "Usage: $0 {start|stop}" >&2
;;
esac
Делаем файл исполняемым :
chmod +x webcam-streamer
Перемещаем файл куда нужно :
sudo mv webcam-streamer /usr/local/bin/
В System Command Editor добавить :
Для запуска /usr/local/bin/webcam-streamer start
для остановки /usr/local/bin/webcam-streamer stop
Или редактирование config.yaml:
cd .octoprint
nano config.yaml
Добавить строки
system:
actions:
- action: power_on
command: /usr/local/bin/webcam-streamer start
name: Включить камеру
- action: power_off
command: /usr/local/bin/webcam-streamer stop
name: Отключить камеру
Если раздел system: actions: уже есть, то добавить только пункты меню.
Ctrl+X, нажимаем Y и Enter. Соблюдая все отступы и знаки в точности.
Telegram
При первой установке он мне выдавал ошибку Pillow. Поэтому перед установкой плагина выполним нехитрые действия:
sudo apt-get install libjpeg62-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install liblcms1-dev
pip install pillow
sudo apt-get update
sudo apt-get install python-pil
А дальше просто ставим плагин и настраиваем по инструкции
*Далее для 2020 не актуально, тетеграм разблокировали в РФ*
Но после установки он отказался работать без VPN, спасибо Роскомнадзору.
Ставим openvpn:
создаем папку home\octoprint\VPN
туда кидаем ваши сертификаты и ключи, у меня такие:
ca.crt
client.crt
client.key (в нем не забываем прописать пути до остальных сертификатов и ключей)
client.ovpn
ta.key
Устанавливаем клиент openvpn:
sudo apt-get install openvpn
Проверяем коннект к VPN:
sudo openvpn —config /home/octoprint/VPN/client.ovpn
Коннект появился, но Telegram не хочет работать:
Решаем:
sudo apt-get install resolvconf
sudo apt install openvpn-systemd-resolved (это тоже поставил)
cd /etc
сделаем бэкап файла resolv
cp resolv.conf resolv.conf.orig
Выполним команду — создаем жесткую ссылку
ln -s /etc/resolvconf/run/resolv.conf /etc/resolv.conf (не сработало) sudo ln -nsf ../run/resolvconf/resolv.conf /etc/resolv.conf
(это сработало)
в конце client.ovpn добавим
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Подключаться так openvpn —script-security 2 —config /home/octoprint/VPN/client.ovpn
Проверяем, если Telegram работает, закрываем в консоли соедениеие VPN Ctrl+C и настраиваем автозагрузку.
Создадим папку для скрипта:
cd ~
mkdir ./bin
cd ./bin
Создадим скрипт автозагрузки:
sudo nano script_auto_run
В файл впишем
#!/bin/bash
#Script to start our app
echo "Autorun..."
sudo openvpn --script-security 2 --config /home/octoprint/VPN/client.ovpn &
Ctrl+X, нажимаем Y и Enter
Сделаем файл исполняемым:
sudo chmod 755 script_auto_run
Проверим как он запускается, выполнив
/home/octoprint/bin/script_auto_run
Если все хорошо, закрываем Ctrl+C
Теперь пропишем это в rc.local. Выполним команду
sudo nano /etc/rc.local
Там может быть много всего, или не быть ничего (если файл создан только что). Это не важно. Если там пусто, то просто допишите в конце exit 0, а перед ним
/home/octoprint/bin/script_auto_run
Ctrl+X, нажимаем Y и Enter
Перезагружаемся:
sudo reboot
Вроде все, по мере возможности буду обновлять и править. Если у кого есть замечания пишите в комментах.
В материале частично использованы наработки Sergey Irbis
Исправьте команду «virtualenv venv» на «virtualenv —python=python3 venv», а то по умолчанию ставится Python 2.7 и вылезает ошибка при запуске октопринта zipp.py invalid syntax.
Підбір якраз те що треба, хочу реалізувати таке на orange pi zerp ltsc, обновіть будь ласка інструкції
для 3 версії пітона.
/venv/bin/python setup.py install
выдает ошибку про депрекайтед и необходимость PEP 517 инсталлятор
И все -тупик …
Запустил, но немного все по другому.
Питон 3 так как … а 2-й нет уже.
Спасибо дружище !
Че то по вашей инструкции не получилось.
Первоначальна настройка по вашей инструкции до sudo apt-get upgrade.
Затем установка питона https://gist.github.com/SeppPenner/6a5a30ebc8f79936fa136c524417761d
Затем Install OctoPrint https://github.com/nicioniz/HowToInstallOctoprint
Затем автозапуск https://github.com/OctoPrint/OctoPrint/tree/master/scripts
https://it-chainik.ru/octoprint-na-orange-pi-pc-v-docker/ Новая статья по этой теме