鸽子的折腾日记③丨安装OctoPrint

前言

之前在小树群的时候基于 OctoPrint 官方文档整理了一份在 Linux 上安装 OctoPrint 的教程,当时为了方便修改,将教程放到了腾讯文档上(那时的我假装不知道有),有了自己的网站后才计划将它好好搬过来优化一下……
废话不多说,马上开始教程!

注意

本教程仅针对OctoPrint与Marlin配合使用,如果使用Klipper,建议移步至本人的另一篇教程【手把手教你安装Klipper】来安装配合Klipper使用的Fluidd界面。

准备材料

一台装有 Linux 的电脑(Debian、Arch、RPM系均可,但是下面仅包含Debian系和Arch系的安装教程,Ubuntu 系统需要 20.04 LTS,Debian 系统最低需要 Debian 10)、一根 USB 连接线(根据主板接口选择,用于连接打印机到上位机)。

安装准备

Arch Linux 用户注意:因 OctoPrint 暂不支持 Python 3.11,请务必使用 pyenv 等工具为 OctoPrint 提供合适的 Python 版本。

检查 Python 版本

现在的 Linux 发行版一般在安装时包含了 Python 3,且 OctoPrint 需要 Python 3.7-3.10 才能使用。输入python -vpython3 -v即可查询 Python 的版本。如果 Python 版本符合要求的话,就可以进行接下来的安装了~

使用脚本自动安装

OctoPrint 官方现在提供了支持在绝大多数发行版(Debian、RPM、Arch系)上安装 OctoPrint 的脚本,使得安装过程简单方便许多。

安装必要组件

安装脚本会帮我们安装所需的所有文件,只需要安装 Git 和 pip 即可。
Ubuntu、Debian 等系统可使用以下命令:

sudo apt install git python3-pip

更换 pip 源

# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 豆瓣源
pip config set global.index-url https://pypi.doubanio.com/simple
# 腾讯源
pip config set global.index-url  https://mirrors.cloud.tencent.com/pypi/simple
# 阿里源
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple

开始自动安装

首先,使用git clone https://github.com/paukstelis/octoprint_install下载脚本。
如果GitHub访问缓慢,可以将github.com替换为hub.fgit.ml后再运行此命令。
下载好脚本以后,进入脚本目录,执行sudo octoprint_install.sh即可。

如果需要借助脚本安装摄像头,需要替换掉脚本内部的GitHub下载源,只有两处,自行替换或者使用sed -i 's/github.com/hub.fgit.ml/g' octoprint_install.sh均可。

执行后出现如下画面,选1开始安装。

*************************
octoprint_install 0.2.0
*************************

1) Install OctoPrint
2) Quit
Select operation:

脚本会询问当前使用的发行版,按照自己情况选择即可。

1) Ubuntu 20-22, Mint, Debian, Raspberry Pi OS  3) ArchLinux
2) Fedora/CentOS                                4) Quit
OS type:

选择后按y确认安装。
等待片刻,脚本会安装一些必要的依赖并安装OctoPrint。

安装后配置

脚本会询问是否安装haproxy,用于端口映射等用途。此次选择不安装。

You have the option of setting up haproxy.
This binds instance to a name on port 80 instead of having to type the port.

Use haproxy? [y/n]:

然后,脚本会询问是否安装摄像头相关服务,安装mjpg-streamerustreamer

1) mjpeg-streamer
2) ustreamer (Recommended)
3) None
Which video streamer you would like to install?:

这一步,脚本会询问是否在此时设置OctoPrint的管理员账户。

OctoPrint can be configured at this time.
This includes setting up the admin user and finishing the startup wizards.

Do you want to setup your admin user now? [y/n]:

如果选择设置,只需输入用户名和密码即可。

Enter admin user name (no spaces):
用户名
Admin user: 用户名
Enter admin user password (no spaces):
密码
Admin password: 密码
User created:
...

随后,会询问是否进行初次使用设置。

Do first run wizards now? [y/n]: y # 是否进行初次使用设置
Enable online connectivity check? [y/n]: y # 检查网络连接
Enable plugin blacklisting? [y/n]: y # 插件黑名单
Enable anonymous usage tracking? [y/n]: y # 匿名分析
Use default printer (can be changed later)? [y/n]: y # 默认打印机配置,需要自行修改

最后的最后,会询问是否安装一些推荐插件,如果不能保证顺畅连接GitHub,建议先不要在这里安装插件。

Would you like to install recommended plugins now? [y/n]:

1) CancelObject                 4) Terminal Commands Extended:  7) UI Customizer
2) Bed Visualizer               5) Active Filters Extended      8) All
3) Firmware Updater             6) PrintTimeGenius              9) Quit
Select recommended plugins to install:

到这里,OctoPrint本体就安装完成了,如果未安装摄像头,可以输入2退出,跳到本文后面的连接打印机部分继续。

System preparation complete!

*************************
octoprint_install 0.2.0
*************************
1) Add USB Camera
2) Quit
Select operation:

配置摄像头

在刚才的界面中,选择1) Add USB Camera
此时会出现插入摄像头的提示,如果已经插入摄像头,请在一分钟内重新插入,来进入下一步。

Plug your camera in via USB now (detection time-out in 1 min)

摄像头检测成功后会显示摄像头的相关信息,并进行一些相关配置。

Camera detected with serial number:  SN0001
Camera Port (ENTER will increment last value in /etc/camera_ports): # 端口号,直接回车使用默认值
Camera Resolution [default: 640x480]: # 分辨率
1280x720
Selected camera resolution: 1280x720
Camera Framerate (use 0 for ustreamer hardware) [default: 5]: # 帧率,0为默认帧率
0
Selected camera framerate: 0

手动安装

安装剩余的依赖软件

# Debian系(Ubuntu等)
sudo apt install python3-pip python3-dev python3-setuptools python3-venv python3-wheel git libyaml-dev build-essential
# Arch系(Arch Linux, Manjaro等)
sudo pacman -S --needed python-pip python-virtualenv python-setuptools python-wheel git base-devel

安装

(以下指令在 Ubuntu、Debian、Armbian 等系统运行时,需将指令中的python改为python3pip改为pip3

# 新建并进入文件夹
mkdir octoprint && cd octoprint
# 创建虚拟环境
python -m venv venv
# 进入虚拟环境,进入成功后路径前会出现(venv)字样
source venv/bin/activate
# 安装 OctoPrint 本体
pip install octoprint

以上指令运行完成后,即可使用octoprint serve命令运行 OctoPrint 进行初次配置。
使用电脑浏览器访问http://机器的ip地址/5000。如果一切无误,将出现 Setup Wizard(设置向导)页面,此时可以开始初始设置。

初始设置界面喵~

初始配置

这里先贴出一些重要的设置项目,以后会逐渐完善(咕咕咕

登陆用户名/密码设置

匿名分析功能,选择Enable开头的即可

联网检测,默认每15分钟检测一次,开启就好

插件黑名单,自动禁用一些会造成问题的插件,建议开启

打印机参数设置,自己想写什么就写什么

打印平台设置,只需按照自己打印机的打印大小设置XYZ数值即可

喷头直径/挤出机数量设置

重启服务、关机指令设置,按图上填写即可,后面会进行相关设置

连接打印机


Serial Port(串口设定)中选择以/dev/ttyUSB开头的设备(如: /dev/ttyUSB0)后,按Connect即可自动尝试连接。
如果连接失败,State处含有文字Offline (Error: No more candidates to test, and no working port/baudrate combination detected.),请点击界面右边的Terminal标签查看输出,如果输出中含有Permission Denied字样,说明USB串口权限没有开放,需要手动开放权限。
使用sudo nano /etc/udev/rules.d/70-ttyusb.rules创建自动设置权限的配置文件,输入以下内容并保存:

KERNEL=="ttyUSB[0-9]*", MODE="0666"

重新插拔USB线后点击Connect即可成功连接。

进行打印

点击界面左侧Files-Upload,上传gcode文件。


上传gcode文件后,点击模型下方的Load按键(文件夹图标),此时State处会显示模型的基本信息,按Print即可开始打印。

实现开机自启动

/etc/systemd/system 目录下,创建新文件 octoprint.service

sudo nano /etc/systemd/system/octoprint.service

输入以下内容:

[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=simple
User=用户名
ExecStart=/home/用户名/octoprint/venv/bin/octoprint

[Install]
WantedBy=multi-user.target

替换为自己的用户名并确认无误后保存。
输入sudo systemctl enable octoprint.service命令即可设置开机自启动,且可以通过systemctl status octoprint.service检查Octoprint的启动状态。

安装摄像头

OctoPrint支持通过mjpg-streamer来访问摄像头。

通过AUR安装mjpg-streamer(仅适用于Arch Linux)

如果系统中安装了yayyaourt等支持AUR的包管理器,可使用以下命令直接从AUR中安装mjpg-streamer:(以yay为例)

yay -S mjpg-streamer-git

编译安装mjpg-streamer(适用于Debian、Ubuntu等系统)

首先下载mjpg-streamer的源代码:

git clone https://github.com/jacksonliam/mjpg-streamer.git

测试mjpg-streamer

连接摄像头,使用sudo mjpg_streamer -i input_uvc.so测试摄像头,终端会出现以下内容(可能出现Error at xxx的消息,忽略即可):

MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: -1
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
 o: www-folder-path......: disabled
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled

打开浏览器输入http://设备的IP地址:8080/?action=stream,正常情况下浏览器窗口内将会出现视频画面。

配置开机启动

/etc/systemd/system目录下创建服务mjpg-streamer.service

sudo nano /etc/systemd/system/mjpg-streamer.service

输入以下内容:

[Unit]
Description=Webcam streaming service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/mjpg_streamer -i input_uvc.so

[Install]
WantedBy=multi-user.target

可在服务文件中通过参数对mjpg_streamer进行配置。
如要配置摄像头画面分辨率、帧率等参数,请参考input_uvc.so的配置文档。
如要配置端口、服务器根目录、用户名密码等参数,请参考output_http.so的配置文档。
保存后设置开机自启并启动服务。

# 开机自启
sudo systemctl enable mjpg-streamer.service
# 启动服务
sudo systemctl start mjpg-streamer.service

在OctoPrint中添加摄像头

登录Octoprint的Web界面,点击右上角小扳手进入设置界面,选择Features下的Webcam & Timelapse,在界面右边填入摄像头的信息。(填写每一项后可以点击Test按键测试摄像头是否正常工作)



如果要启用延时摄影,需要确保系统中安装FFmpeg。
对于Debian、Ubuntu系统,可使用sudo apt install ffmpeg来安装,
对于Arch Linux、Manjaro等系统,使用sudo pacman -S ffmpeg即可。

你可能感兴趣的:(鸽子的折腾日记③丨安装OctoPrint)