香橙派One安装OctoPrint 实现控制3D打印机
目录
- 1 安装OctoPrint
- 2 启动OctoPrint,进行初始化配置
- 3 安装中文语言包
- 4 配置OctoPrint服务
- 附录:systemctl命令权限问题解决方法
系统环境如下图
Ubuntu 20.04 Server,使用orangepi普通用户
1 安装OctoPrint
首先创建目录,作为安装路径。
mkdir OctoPrint && cd OctoPrint
安装必要软件包
sudo apt install python3 python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential libffi-dev libssl-dev
创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
终端提示符前看到venv字样,说明虚拟环境已经激活
可以先配置一下pip镜像,设置为清华源
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
执行命令安装OctoPrint
pip install --upgrade pip wheel
pip install octoprint
我这一步耗时比较长,主要是编译比较慢。耐心等待即可。
然后给用户添加访问串口的权限
sudo usermod -a -G tty orangepi
sudo usermod -a -G dialout orangepi
2 启动OctoPrint,进行初始化配置
启动octoprint,使用以下命令
~/OctoPrint/venv/bin/octoprint serve
浏览器访问 http://<香橙派IP>:5000,可以看到初始化页面
首先设置用户名和密码
其他设置自行配置即可。初始化完成,可以看到OctoPrint界面
3 安装中文语言包
打开设置,选择【appearance】,点击【manage】
这里可以上传语言包。语言包可以从这个Github仓库 Octoprint-i18n-zh_Hans_CN - Awkee - GitHub 找到。这个语言包不是最新的,但基本功能都有翻译。
这里不知为什么,上传语言包后没反应。自己尝试出了另一种方法,也可以汉化:
进入用户文件夹的.octoprint/translations/
路径,可以看到现在是空的
cd .octoprint/translations/
然后将解压后的语言包复制到该目录,确保目录结构如下:
(即.octoprint/translations/zh_Hans_CN/LC_MESSAGES
路径存在messages.mo
、messages.po
、messages.zh_CN.mo
、messages.zh_CN.po
这四个文件,可以用ls -R
命令确认)
再次打开语言界面,就能看到手动上传的语言包了
然后重启OctoPrint,就能自动切换为中文了(页面语言根据浏览器语言自动切换,如果不能自动变为中文,可以在这个设置处手动更改)
4 配置OctoPrint服务
接下来创建服务,使OctoPrint可以开机自动运行。
sudo nano /etc/systemd/system/octoprint.service
填写下面内容。其中可执行文件的路径需要根据自己的环境修改。可以先将ExecStart路径手动放在终端执行一次,确保可以启动,然后再填写服务配置文件。
[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=exec
User=用户名
ExecStart=/home/用户名/OctoPrint/venv/bin/octoprint serve[Install]
WantedBy=multi-user.target
完成后,使用ctrl+s
保存,ctrl+x
退出
然后执行命令,启用该服务。
sudo systemctl enable octoprint.service
确保现在没有使用命令~/OctoPrint/venv/bin/octoprint serve
手动启动的OctoPrint实例,然后执行下面命令,启动OctoPrint
sudo systemctl start octoprint
可以使用命令检查一下服务是否启动成功
sudo systemctl status octoprint
看到running,说明服务启动正常,可以打开网页测试。
接下来配置重启OctoPrint的命令。有时候修改配置文件后,需要重启才能生效,如果每次都通过ssh连接到香橙派,执行systemctl restart octoprint
命令,就有些麻烦。还好OctoPrint提供了在网页执行上述命令的方式。
打开设置,在【服务器】这一栏中,填写重启OctoPrint的命令systemctl restart octoprint
。当然也可以顺便把重启系统和关机的命令也添加进来。
保存后,可以看到右上角多了一个电源图标,点击它,就能看到重启OctoPrint的按钮了。
之后可以参考香橙派手册,启用40pin GPIO中的串口。在OctoPrint中选择正确的串口和波特率,就能和打印机通信了。
附录:systemctl命令权限问题解决方法
后面在另一台linux主机上安装OctoPrint时,发现systemctl命令无法执行,普通用户没有权限,提示Interactive authentication required.
加上sudo命令执行时,提示需要密码,如果通过命令传递密码,很不安全。
找到一种方法,可以为指定用户设置无需密码就能执行某个命令。
执行 sudo visudo
,添加如下内容,允许用户使用/bin/systemctl restart octoprint
命令,且不需要输入密码验证。
用户名 ALL=(ALL) NOPASSWD: /bin/systemctl restart octoprint
这样设置后即可运行。
参考资料:
- OctoPrint官网
OctoPrint The snappy web interface for your 3D printer - 安装过程参考
Setting up OctoPrint on a Raspberry Pi running Raspberry Pi OS (Debian) - 汉化教程
OctoPrint汉化 本地中文部署教程 - CSDN - 使用的中文语言包(非最新版,存在汉化不完全的情况)
Octoprint-i18n-zh_Hans_CN - Awkee - GitHub