vault backup: 2024-02-23 02:11:42
This commit is contained in:
0
Atlas/Omnivore.md
Normal file
0
Atlas/Omnivore.md
Normal file
@@ -1,31 +0,0 @@
|
||||
---
|
||||
aliases:
|
||||
atlas: "[[Atlas/Card|Card]]"
|
||||
created: 2024-02-22 23:22:09
|
||||
id: 099f24a3-2f06-4ed7-b66a-4c031525c8a7
|
||||
modified:
|
||||
tags:
|
||||
title: OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850 – 一种还算有趣的活法
|
||||
---
|
||||
|
||||
| [前往 Omnivore](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f) | [前往源网页](https://www.luqijian.com/2023/01/08/openwrt-with-ups-tutorial-based-on-santak-tg-box-850/) |
|
||||
| ---- | ---- |
|
||||
|
||||
# OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850 – 一种还算有趣的活法
|
||||
|
||||
|
||||
## 引用
|
||||
> 自从开始搭建自己的 NAS 服务器后,偶尔会遇到突然断电的情况。不管是手误不小心点到米家 APP 上的智能插座的开关,还是公寓电费用完时的突然断电,都足以让人提心吊胆。 [⤴️](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f#6281dadc-8b06-408b-a9a7-2e0504e76ea4)
|
||||
|
||||
## 批注
|
||||
|
||||
adadawa
|
||||
|
||||
|
||||
## 引用
|
||||
> 其实这一步可以省略,因为我的群晖里安装了 `vm-tools`,可以接收宿主机的命令,也就是通过 ESXI 来关机。 [⤴️](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f#172379f8-7191-435f-9f62-c3213dfcb8fe)
|
||||
|
||||
## 批注
|
||||
|
||||
awdwafwaf
|
||||
|
||||
185
Extras/Omnivore/OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850.md
Normal file
185
Extras/Omnivore/OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850.md
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
aliases: UPS设置
|
||||
atlas: "[[Atlas/Omnivore|Omnivore]]"
|
||||
created: 2024-02-22 23:22:09
|
||||
id: 099f24a3-2f06-4ed7-b66a-4c031525c8a7
|
||||
modified:
|
||||
tags:
|
||||
- OpenWrt
|
||||
title: OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850
|
||||
---
|
||||
|
||||
| [🌐 Omnivore](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f) | [🌐 Original](https://www.luqijian.com/2023/01/08/openwrt-with-ups-tutorial-based-on-santak-tg-box-850/) |
|
||||
| ---- | ---- |
|
||||
|
||||
# 高亮批注
|
||||
|
||||
> <font color="green">自从开始搭建自己的 NAS 服务器后,偶尔会遇到突然断电的情况。不管是手误不小心点到米家 APP 上的智能插座的开关,还是公寓电费用完时的突然断电,都足以让人提心吊胆。</font> [🌐](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f#6281dadc-8b06-408b-a9a7-2e0504e76ea4)
|
||||
|
||||
> [!NOTE]
|
||||
> adadawa
|
||||
|
||||
> <font color="yellow">其实这一步可以省略,因为我的群晖里安装了 `vm-tools`,可以接收宿主机的命令,也就是通过 ESXI 来关机。</font> [🌐](https://omnivore.app/me/open-wrt-ups-tg-box-850-18dd024f82f#172379f8-7191-435f-9f62-c3213dfcb8fe)
|
||||
|
||||
> [!NOTE]
|
||||
> awdwafwaf
|
||||
|
||||
# 网页原文
|
||||
|
||||
## [NAS](https://www.luqijian.com/category/technology/nas/) / [技术](https://www.luqijian.com/category/technology/) / [软路由](https://www.luqijian.com/category/technology/%e8%bd%af%e8%b7%af%e7%94%b1/)・2023 年 1 月 8 日 **[0](https://www.luqijian.com/2023/01/08/openwrt-with-ups-tutorial-based-on-santak-tg-box-850/#respond)**
|
||||
|
||||
## 前言
|
||||
|
||||
==自从开始搭建自己的 NAS 服务器后,偶尔会遇到突然断电的情况。不管是手误不小心点到米家 APP 上的智能插座的开关,还是公寓电费用完时的突然断电,都足以让人提心吊胆。==
|
||||
我的这台 NAS 其实相对算稳定的,突然断电过好几次,期间只因此出了两三次问题。如群晖无法引导需要重装系统之类。
|
||||
虽然群晖的系统设计比较优秀,重装系统并不会导致数据丢失,但是毕竟得花费不少时间恢复系统,有时候甚至需要重建存储池(并不会丢失数据)。而且毕竟是 NAS,数据安全第一。于是便买了台山特的 UPS,型号是 **TG-BOX 850**。
|
||||
|
||||
## 山特 Santak TG-BOX 850 UPS 简介
|
||||
|
||||
[  ](https://picture.luqijian.com/uploads/big/027f713fe382e6e92c75e93e185be682.png)
|
||||
* 首先这是一款后备式的 UPS,也就是说其平时处于蓄电池充电状态,在停电时逆变器紧急切换到工作状态,将电池提供的直流电转变为稳定的交流电输出。因此,这类 UPS 存在一个切换时间的问题,不过一般切换时间达到了毫秒级别,对于家用 NAS 或计算机来说已经足够使用。
|
||||
[  ](https://picture.luqijian.com/uploads/big/153579fedb9621af8e6ec2319126339d.png)
|
||||
* 它具有即插即用型 USB 通讯接口,可以用来与电脑、NAS、软路由等连接,在紧急断电时通知这类设备,进而可以实现自动关机的功能。相比于无通讯接口的 UPS 来说,实现了无人值守的自动关机。这点对于我的使用场景来说还是相当重要的,毕竟我不可能时时刻刻待在家里,坐在 NAS 旁边待停电后给它关机。
|
||||
* 较大的功率支持。TG-BOX 850 最大不间断电源功率达到了 850VA/510W,虽然我的 NAS 满载时功率也就 100 多 W,但是 8 盘位且本身机箱硬盘仓背板不支持交错启动,加上 CPU 和显卡等,启动时的瞬时功率还是比较高的。并且为了日后的扩展需求,功率大点总归没错。
|
||||
* 电池容量大。我的 NAS 上黑群晖虚拟机跑了不少服务,导致开关机时间会比较长,完整的关机时间大概在 6 分钟左右,这就要求 UPS 有着较长的续航来撑过这 6 分钟。而这款 UPS 在 100W 输出时可以续航 24 分钟,200W 输出时也可以续航 10.5 分钟,对于我的需求是绰绰有余了。
|
||||
* 全部输出接口均有防雷支持,同时还有一组 RJ45 防止电话线 / 网线的防浪涌接口,最大限度防止设备受到电力波动影响。
|
||||
* 除了一组 **2x 双孔 + 3x 三孔 支持不间断供电 + 防雷保护** 的输出插座外,它还另附一组 **2x 双孔 + 3x 三孔 仅支持防雷保护** 的输出插座,总输出功率可以达到 2000VA,即使是当作普通插线板来用也是非常不错的。
|
||||
* 它还自带四个 5V/2A 的 USB 充电口,用来给一些低功耗设备供电,这四个口也是防雷的,只用 USB 的话可以把它当作一个超大号充电宝。
|
||||
|
||||
## 我的需求分析
|
||||
|
||||
我买这台 UPS 的主要目的是给 NAS 用,实现停电自动关机。但是我的 NAS 物理机装的是 ESXI 8.0 的虚拟化环境,群晖、Ubuntu、Windows 等都是同时运行在 ESXI 之上的虚拟机。这样就带来了问题。这台 UPS 本身是支持群晖的,可以直接用 USB 连接到群晖来实现相关功能。虽然群晖本身可以在 USB 连接 UPS 后充当一个网络 UPS 服务器来通知同网络中其它设备,但是群晖是跑在虚拟机上的,固然可以设置让 ESXI 在收到群晖 UPS 服务器的断电通知后延时一段时间等群晖关掉后再关机,不过这个延时的时间谁也说不准。
|
||||
而正好我的局域网里还有一台设备可以充当这个角色,那就是被我刷了 OpenWRT 用作软路由的树莓派 4B。这样我可以将 UPS 直接连接到树莓派,然后在树莓派上开启 UPS 服务器来通知 NAS 上的所有虚拟机以及 ESXI 本身,然后树莓派自己关机。并且树莓派 4B 功耗不高,和 NAS 一起插到 UPS 上也不会对续航有什么可感知的影响。
|
||||
整个 UPS 供电及通信网络拓扑如下图所示。
|
||||
[](https://picture.luqijian.com/uploads/big/97b32845493540991c1e392e1b02cba6.png)
|
||||
|
||||
[  ](https://picture.luqijian.com/uploads/big/97b32845493540991c1e392e1b02cba6.png)
|
||||
|
||||
## OpenWRT 配置
|
||||
|
||||
Linux 上实现和 UPS 之间通信主要依靠 **[NUT(Network UPS Tools)](https://networkupstools.org/)** 软件来实现。在 OpenWRT 上,除了基础的 nut-common 相关库和 nut-driver 驱动外,NUT 主要又由三个部分组成: nut-server、nut-upsmon、nut-web-cgi。其中 net-server 负责直接同 UPS 进行通信,提供 UPS 服务器功能,用于通知局域网设备;nut-upsmon 负责和 net-server 进行通信,相当于一个 nut-client,用于树莓派本机自动关机;nut-web-cgi 负责对外提供 API 程序和监控网页。另外还有 nut-upsc 可以直接命令行操作 UPS 等。
|
||||
对于这款 UPS,可以使用标准的 usbhid 协议来进行通信,所以需要安装 nut-driver-usbhid-ups 驱动包。
|
||||
|
||||
1. 首先,我们连接好 UPS 电源和 USB 数据线,使用 SSH 连接到软路由,通过 opkg 安装相关软件:
|
||||
```sql
|
||||
opkg update && opkg install nut nut-common nut-driver-usbhid-ups nut-server nut-upsmon nut-web-cgi nut-upsc
|
||||
```
|
||||
2. 然后进行 nut-server 的配置,配置文件路径为 `/etc/config/nut_server`,将其内容修改为:
|
||||
```routeros
|
||||
config driver 'ups'
|
||||
option driver usbhid-ups
|
||||
option port 3493
|
||||
option vendorid 0463
|
||||
config user
|
||||
option username monuser
|
||||
option password secret
|
||||
option upsmon master
|
||||
config listen_address
|
||||
option address 0.0.0.0
|
||||
option port 3493
|
||||
config upsd upsd
|
||||
```
|
||||
然后重启一下 nut-server 服务:
|
||||
```jboss-cli
|
||||
/etc/init.d/nut-server reload
|
||||
```
|
||||
> 这里设置了一台名为 `ups` 的 UPS,其驱动程序为 `usbhid-ups`,UPS 服务器端口为 `3493`,制造商 ID 为 `0463`,UPS 服务器用户名为 `monuser`,UPS 服务器密码为 `secret`,UPS 监控模式为 `master` 主机模式,并且 UPS 服务器监听在设备的所有 IP 即 `0.0.0.0` 上,最后通过 `upsd` 来启动 UPS 通信程序。
|
||||
|
||||
> 需要注意的是,如果你需要把群晖连接到这台 UPS 服务器的话,这里的 `UPS名称`、`用户名`、`密码`、`模式`、`端口`**均不能修改**,这是因为群晖的开发者偷了个懒,UPS 设置只能设置服务器 IP 地址,UPS 名称和用户名、密码、端口等均写死到系统固件了(群晖其实也是通过 nut client 实现的,可以通过命令行修改,但没必要),因此,这里就按群晖的规范来书写。
|
||||
>
|
||||
> 其实 NUT 本身是不能正确识别山特 UPS 的部分信息的,不过因为**山特**和 **Eaton** 之间有比较暧昧的关系,山特 UPS 的 USB 通信 `VendorID` 值 `0463` 其实对应的是 **Eaton**,最终我们在其他客户端软件中识别到的也会是 Eaton,也算是变相实现了。
|
||||
|
||||
1. 接着我们设置一下 nut-web-cgi,配置文件路径为 `/etc/config/nut_cgi`,将其内容修改为:
|
||||
```cmake
|
||||
config host
|
||||
option uspsname ups
|
||||
option hostname localhost
|
||||
option displayname "TG-BOX-850"
|
||||
```
|
||||
然后重启一下 nut-web-cgi 服务:
|
||||
```jboss-cli
|
||||
/etc/init.d/nut-cgi reload
|
||||
```
|
||||
> 这里 UPS 名称按之前 nut-server 的设置改为 `ups`,`hostname` 改为本机 `localhost` 即可,显示名称 `displayname` 可以自定义。
|
||||
2. 然后设置一下 nut-upsmon 来实现树莓派的自动关机,配置文件路径为 `/etc/config/nut_monitor`,将其内容修改为:
|
||||
```routeros
|
||||
config 'upsmon' upsmon
|
||||
config master
|
||||
option upsname ups
|
||||
option hostname localhost
|
||||
option username monuser
|
||||
option password secret
|
||||
```
|
||||
然后重启一下 nut-upsmon 服务:
|
||||
```jboss-cli
|
||||
/etc/init.d/nut-monitor reload
|
||||
```
|
||||
> 这里的 UPS 名称、用户名、密码均按 nut-server 的设置填写即可,主机名也是 `localhost`。其实 upsmon 有一些相关配置项,比如通过 `shutdowncmd` 来设置关机命令等。不过这些设置项的默认值已经够用,这里我们不填保持默认设置即可。相关选项可以参考 [OpenWRT 的官方 Wiki](https://openwrt.org/docs/guide-user/services/ups/software.nut#config%5Fupsmon%5Fupsmon)。
|
||||
3. 大功告成,此时给 UPS 断电来模拟停电的话,树莓派也会自己关机。
|
||||
|
||||
## 群晖配置
|
||||
|
||||
群晖的设置相对简单,图形化界面并且没什么太多可选项。
|
||||
这里以我的 NAS 现在运行的最新版的 `DSM 7.1.1-42962 Update 2` 系统为例,我们只需要进入群晖 DSM 网页端的`控制面板-硬件和电源-不断电系统`中,打开`启用UPS支持`选项,选择 UPS 类型为 `Synology不断电系统服务器`,然后设置 DiskStation 进入待机模式之前的时间为 `5秒`或者保留默认和服务器设置相同即可,然后再填入网络不断电系统服务器 IP 地址为软路由的 IP,点击应用即可。
|
||||
如果群晖没有提示任何错误,此时我们点击页面上的设备信息,就可以看到群晖获取到的 UPS 服务器信息了。可以看到,这里识别到的 UPS 厂商为 `EATON`。
|
||||
[](https://picture.luqijian.com/uploads/big/c68d2761a97be2c3315feedf0c7ad9b7.png)
|
||||
|
||||
[  ](https://picture.luqijian.com/uploads/big/c68d2761a97be2c3315feedf0c7ad9b7.png)
|
||||
|
||||
> ==其实这一步可以省略,因为我的群晖里安装了== `==vm-tools==`==,可以接收宿主机的命令,也就是通过 ESXI 来关机。==
|
||||
>
|
||||
> ## ESXI 配置
|
||||
>
|
||||
> ESXI 监听 nut-server 需要通过 NutClient-ESXI 插件来实现。
|
||||
>
|
||||
> 1. 首先我们[下载插件](https://rene.margar.fr/download/1665/?tmstv=1673116778)到桌面,通过 scp 推送到 ESXI 宿主机:
|
||||
> ```angelscript
|
||||
> scp ~\Desktop\NutClient-ESXi-2.8.0-2.4.1-offline_bundle.zip root@192.168.50.100:/tmp
|
||||
> ```
|
||||
> 记得将命令中的包路径和 IP 地址替换为你下载的路径和你自己的 ESXI 宿主机地址。
|
||||
|
||||
1. 然后使用 SSH 登录到 ESXI 宿主机,运行如下命令安装插件:
|
||||
```angelscript
|
||||
esxcli software vib install -d /tmp/NutClient-ESXi-2.8.0-2.4.1-offline_bundle.zip
|
||||
```
|
||||
等待一会儿后返回安装结果:
|
||||
```yaml
|
||||
Installation Result
|
||||
Message: Install succeed.
|
||||
Reboot Required: false
|
||||
VIBs Installed: Margar_bootbank_upsmon_2.8.0-2.4.1
|
||||
VIBs Removed:
|
||||
VIBs Skipped:
|
||||
```
|
||||
安装成功。
|
||||
2. 此时我们登录 ESXI 网页端,进入`管理-系统-高级设置`,在右上角的搜索框内输入 nut 来筛选出 nut 相关设置选项。
|
||||
[](https://picture.luqijian.com/uploads/big/c2c4c6457fafc6db7de03d5dcc59e7e1.png)
|
||||
[  ](https://picture.luqijian.com/uploads/big/c2c4c6457fafc6db7de03d5dcc59e7e1.png)
|
||||
3. 分别把 `UserVars.NutUpsName`、`UserVars.NutUser`、`UserVars.NutPassword` 三个选项改为之前 OpenWRT 中 nut-server 设置的 UPS 名称、用户名、密码即可,其他选项可以保持默认,也可以根据需要自定义。
|
||||
4. 然后进入`管理-服务`中,找到 **NutClient** 选项,将其策略设置为`随主机启动和停止`,然后启动该服务。
|
||||
[](https://picture.luqijian.com/uploads/big/6d67b1df70f79b86d1c495d92afba85c.png)
|
||||
[  ](https://picture.luqijian.com/uploads/big/6d67b1df70f79b86d1c495d92afba85c.png)
|
||||
5. 最后进入`管理-系统-自动启动`中,设置 ESXI 的启动和关机策略。
|
||||
最上方的编辑设置里是宿主机的启动和关机策略,首先启用该选项,启动延迟(宿主机启动多久后开始启动客户机)根据自己的需要修改。停止操作选择`关机`而不要选择`关闭电源`,这样以来只要客户机上安装有 vm-tools,宿主机会发送关机命令给客户机,让其自动关机。`等待检测信号`指宿主机是否检测客户机有没有完成关机,设置为`是`时,宿主机会等待客户机关机后再关机,设置为`否`后,宿主机只等待`停止延迟`选项设置的时间后便自动关机。建议两个设置均根据自身情况设置好,以防万一。
|
||||
然后针对每个客户机设置好对应的启动和关机策略即可,这里根据自己客户机开关机的实际情况设置。我的设置是开启`等待检测信号`的同时,也设置好停止延迟,防止出现问题。
|
||||
[](https://picture.luqijian.com/uploads/big/eccacd7e28894392c9a60254d4c59d0b.png)
|
||||
[  ](https://picture.luqijian.com/uploads/big/eccacd7e28894392c9a60254d4c59d0b.png)
|
||||
|
||||
## 测试
|
||||
|
||||
到这里所有设备就都设置好了,我们可以进行一场模拟演练。
|
||||
进入 ESXI 的任务监控后,断开 UPS 的供电线,可以发现,任务里依次出现了各个客户机的关机任务,最终客户机依次关机后,ESXI 宿主机自动关机,软路由也正常关机。
|
||||
大功告成。
|
||||
|
||||
## 附录:将 UPS 监控集成到 HomeAssistant
|
||||
|
||||
我在软路由上还运行了 HomeAssistant 来监控所有的智能家居设备,而 HomeAssistant 是有官方 NUT 插件的,如图所示,可以很方便的连接到 NUT 服务器。
|
||||
[](https://picture.luqijian.com/uploads/big/d725daa93d57c0fe46c1a4bfbed8bf1a.png)
|
||||
|
||||
[  ](https://picture.luqijian.com/uploads/big/d725daa93d57c0fe46c1a4bfbed8bf1a.png)
|
||||
|
||||
[](https://picture.luqijian.com/uploads/big/d725daa93d57c0fe46c1a4bfbed8bf1a.png)
|
||||
连接完成后,我们便可以创建一个 UPS 监控面板了,即使出门在外,也可以随时掌握家中设备的供电情况。
|
||||
[](https://picture.luqijian.com/uploads/big/a7cade40d3077dfcaae9dab38e6a23d0.png)
|
||||
|
||||
[  ](https://picture.luqijian.com/uploads/big/a7cade40d3077dfcaae9dab38e6a23d0.png)
|
||||
Reference in New Issue
Block a user