Установка Octoprint на Orange Pi PC

Установка 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

Запись опубликована автором в рубрике 3D.

Установка Octoprint на Orange Pi PC: 7 комментариев

  1. null

    Исправьте команду «virtualenv venv» на «virtualenv —python=python3 venv», а то по умолчанию ставится Python 2.7 и вылезает ошибка при запуске октопринта zipp.py invalid syntax.

  2. Іван

    Підбір якраз те що треба, хочу реалізувати таке на orange pi zerp ltsc, обновіть будь ласка інструкції
    для 3 версії пітона.

  3. Арс

    /venv/bin/python setup.py install
    выдает ошибку про депрекайтед и необходимость PEP 517 инсталлятор
    И все -тупик …

  4. Leon

    Че то по вашей инструкции не получилось.
    Первоначальна настройка по вашей инструкции до 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *