找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 911|回复: 2

利用openwrt实现UPS共享

[复制链接]
发表于 2025-10-9 10:48 | 显示全部楼层 |阅读模式
本帖最后由 白云朵朵 于 2025-10-9 11:17 编辑

市面上几乎所有的成品NAS系统都支持UPS功能,通过USB连接就能直接使用,但如果多台NAS想共用一台UPS情况就复杂了。同一厂商还好,不同厂商NAS基本上无法实现。不过借助openwrt,可以轻易实现UPS跨厂商共享。我的UPS是 APC BK650M2-CH,两台NAS分别是黑群晖和绿联云DX4600(运行UGOS Pro),在一台x86工控机上运行 immortalwrt 24.10.3 稳定版,配置过程供网友参考。
物理连接
UPS通过USB连接到运行immortalwrt的工控机,工控机、交换机、两台NAS接入UPS供电。


安装配置apcupsd
  1. opkg update
  2. opkg install apcupsd
复制代码
然后修改配置文件
  1. # 备份原配置
  2. cp /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf.backup

  3. # 创建新的配置文件
  4. cat > /etc/apcupsd/apcupsd.conf << 'EOF'
  5. ## apcupsd.conf v1.1 ##
  6. #
  7. # Configuration for APC Back-UPS BK650M2-CH USB UPS

  8. # General configuration
  9. UPSNAME apc-ups
  10. UPSCABLE usb
  11. UPSTYPE usb
  12. DEVICE

  13. # Lock file and directories
  14. LOCKFILE /var/lock
  15. SCRIPTDIR /etc/apcupsd
  16. PWRFAILDIR /var/lock
  17. NOLOGINDIR /etc

  18. # Power failure settings
  19. ONBATTERYDELAY 10
  20. BATTERYLEVEL 20
  21. MINUTES 5
  22. TIMEOUT 0
  23. ANNOY 300
  24. ANNOYDELAY 60
  25. NOLOGON disable
  26. KILLDELAY 0

  27. # Network Information Server (for NAS clients)
  28. NETSERVER on
  29. NISIP 0.0.0.0
  30. NISPORT 3551

  31. # Logging
  32. EVENTSFILE /var/log/apcupsd.events
  33. EVENTSFILEMAX 100
  34. STATTIME 60
  35. STATFILE /var/log/apcupsd.status
  36. LOGSTATS off
  37. DATATIME 0

  38. # UPS mode
  39. UPSCLASS standalone
  40. UPSMODE disable
  41. EOF
复制代码
关键修改说明:

UPSCABLE usb - 改为 USB 电缆类型

UPSTYPE usb - 改为 USB UPS 类型

DEVICE - 留空,让系统自动检测 USB 设备

BATTERYLEVEL 20 - 电池剩余 20% 时关机(更安全)

MINUTES 5 - 电池运行时间少于 5 分钟时关机

NETSERVER on - 启用网络服务供 NAS 连接

NISIP 0.0.0.0 - 监听所有网络接口
最后启用apcupsd服务:
  1. service apcupsd enable
  2. service apcupsd start
复制代码
  1. root@ImmortalWrt:~# apcaccess status
  2. APC      : 001,036,0866
  3. DATE     : 2025-09-23 15:21:18 +0800
  4. HOSTNAME : ImmortalWrt
  5. VERSION  : 3.14.14 (31 May 2016) unknown
  6. UPSNAME  : apc-ups
  7. CABLE    : USB Cable
  8. DRIVER   : USB UPS Driver
  9. UPSMODE  : Stand Alone
  10. STARTTIME: 2025-09-23 15:21:17 +0800
  11. MODEL    : Back-UPS BK650M2-CH
  12. STATUS   : ONLINE
  13. LINEV    : 230.0 Volts
  14. LOADPCT  : 19.0 Percent
  15. BCHARGE  : 28.0 Percent
  16. TIMELEFT : 9.4 Minutes
  17. MBATTCHG : 20 Percent
  18. MINTIMEL : 5 Minutes
  19. MAXTIME  : 0 Seconds
  20. SENSE    : Low
  21. LOTRANS  : 160.0 Volts
  22. HITRANS  : 278.0 Volts
  23. ALARMDEL : 30 Seconds
  24. BATTV    : 13.2 Volts
  25. LASTXFER : No transfers since turnon
  26. NUMXFERS : 0
  27. TONBATT  : 0 Seconds
  28. CUMONBATT: 0 Seconds
  29. XOFFBATT : N/A
  30. SELFTEST : NO
  31. STATFLAG : 0x05000008
  32. SERIALNO : 9B2238A00880
  33. BATTDATE : 2001-01-01
  34. NOMINV   : 220 Volts
  35. NOMBATTV : 12.0 Volts
  36. NOMPOWER : 390 Watts
  37. FIRMWARE : 294803G -292804G
  38. END APC  : 2025-09-23 15:21:22 +0800
复制代码
NUT配置
群辉和绿联云通过nut实现UPS共享功能,所以需要在immortalwrt中安装配置nut,需要安装 luci-app-nut 和 nut-driver-apcupsd-ups 。nut-driver-apcupsd-ups 顾名思义就是nut与刚才配置好的apcupsd进行通信的驱动程序,luci-app-nut提供了配置nut的LUCI界面以及一些/etc/init.d脚本用来管理nut服务。这个界面不怎么直观,更推荐直接修改配置文件。

修改/etc/config/nut_server,完成后内容如下:
  1. config listen_address
  2.         option address '0.0.0.0'
  3.         option port '3493'

  4. config user
  5.         option username 'monuser'
  6.         option password 'secret'
  7.         option upsmon 'master'
  8.         list actions 'fsd'

  9. config driver 'ups'
  10.         option driver 'apcupsd-ups'
  11.         option port 'localhost:3551'
  12.         option desc 'APC UPS via apcupsd'

  13. config user
  14.         option username 'nut'
  15.         option password 'nut'
  16.         list actions 'fsd'
  17.         option upsmon 'slave'

  18. config driver 'ups0'
  19.         option driver 'apcupsd-ups'
  20.         option port 'localhost:3551'
复制代码

第一节声明了nut服务器的监听地址和端口,一般不需要修改。
第二、第四节声明了nut用户,分别对应群辉和绿联云。此部分与NAS系统中硬编码内容保持一致。可见不同厂商nut用户名、密码、配置模式不同,所以无法实现直接共享。
第三、五节声明了2个UPS,名称分别为ups和ups0。这两台UPS通过apcupsd-ups驱动连接到localhost:3551。这个操作实际上为一台UPS起了两个名字,因为作为nut客户端时,群辉只会寻找ups,而绿联云只会寻找ups0。

现在启动nut服务:
  1. service nut-server enable
  2. service nut-server start
复制代码

最后检验下nut配置是否生效。首先列出nut服务器:


  1. root@ImmortalWrt:~# upsc -l
  2. ups
  3. ups0
复制代码
再列出ups0具体信息:

  1. root@ImmortalWrt:~# upsc ups0@10.89.2.1
  2. battery.charge: 99.0
  3. battery.charge.low: 20
  4. battery.date: 2001-01-01
  5. battery.runtime: 1956.0
  6. battery.runtime.low: 300
  7. battery.voltage: 13.5
  8. battery.voltage.nominal: 12.0
  9. device.mfr: APC
  10. device.model: Back-UPS BK650M2-CH
  11. device.serial: 9B2238A00880
  12. device.type: ups
  13. driver.debug: 1
  14. driver.flag.allow_killpower: 0
  15. driver.name: apcupsd-ups
  16. driver.parameter.pollinterval: 10
  17. driver.parameter.port: localhost:3551
  18. driver.parameter.synchronous: auto
  19. driver.state: quiet
  20. driver.version: 2.8.1
  21. driver.version.internal: 0.71
  22. input.sensitivity: L
  23. input.transfer.high: 278.0
  24. input.transfer.low: 160.0
  25. input.transfer.reason: Low line voltage
  26. input.voltage: 230.0
  27. input.voltage.nominal: 220
  28. ups.date: 2025-09-24
  29. ups.firmware: 294803G -292804G
  30. ups.id: apc-ups
  31. ups.load: 20.0
  32. ups.mfr: APC
  33. ups.model: Back-UPS BK650M2-CH
  34. ups.realpower.nominal: 390.0
  35. ups.serial: 9B2238A00880
  36. ups.status: OL
  37. ups.test.result: NO
  38. ups.time: 14:07:07
复制代码
nut服务器运行正常,至此在群辉与绿联云管理页面中就能直接添加网络UPS了。

对于QNAP用户
我没有qnap设备无法测试,不过结合 https://forum.qnap.com/viewtopic.php?t=159585 来看,qnaq也支持nut,其配置信息如下:
用户名:admin

密码:123456

模式:slave

ups名称:qnapups


所以修改/etc/config/nut_server,照葫芦画瓢追加这一段然后重启nut服务应该就行了:

  1. config user
  2.         option username 'admin'
  3.         option password '123456'
  4.         list actions 'fsd'
  5.         option upsmon 'slave'

  6. config driver 'qnapups'
  7.         option driver 'apcupsd-ups'
  8.         option port 'localhost:3551'
复制代码





只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2025-10-9 11:15 | 显示全部楼层
排版乱了,半天调不过来,凑合看吧
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-10-15 14:20 | 显示全部楼层
all in one可以用吗,准备PVE当底层系统
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 19:07

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表