试试看 CyberPower UPS
因为机房和家里 之前发生过一些停电的问题,因此这两处我都放了UPS。
UPS使用的铅酸电池是有一定寿命的,机房这台UPS是2016年5月上线的(当时是觉得已经到了5年,应该换掉了;而当时查看价格发现购买一个UPS电池自己更换的原材料价值和买一个新的差不多,于是就直接整体换成了APC BE600)。
1月10日,突然收到了来自apcupsd的报警说机房这台的电池必须更换了,考虑到这一台已经服役了六年多,我就查了一下此UPS的电池,结果发现APC官方已经在去年愚人节停止销售这款产品了。这次的电池价格比购买一台新同品牌换代产品要便宜接近一半,但与此同时发现CyberPower也有一款规格类似且便宜接近一半的产品。之前在UPS见过这个牌子的产品,考虑到现在经济形势不好应该消费降级,于是下了一单CyberPower SX650G。需要注意的是它的电池比APC BE 600G要小一些,并且设计也没有考虑用户自行更换这件事,但由于我的这台机器相当省电,权衡之下最终我还是选择了这台。
周五休假,收到快递之后就去机房换UPS了。机房并没出现我之前设想的可能出现的电池漏液一类的问题,只是UPS在不停地报警(此前apcupsd也在每隔半天发一封邮件敦促我赶快换电池)。
CyberPower SX650G和APC BE600G类似,也是使用了USB Type B接口,并提供了一根USB Type B和USB Type A的转接线。由于电池没有设计为用户可以自行更换,因此也不像APC那样需要自己连接电池(我认为对用户来说这个区别不太大),直接插上电源以后启动即可。
根据说明书,该UPS需要大约8个小时完成充电,但我到家想要拿 nut 去读一下的时候发现电池已经充满了。由于之前很少用nut,因此可能还得找时间再跑一趟去测试断电的情况。
在 FreeBSD 上,这个UPS会被识别为由 ugen(4) 支持的USB未注册设备 (generic device)。插上以后可以看到:
| |
此处的 iSerialNumber 一项居然啥也没有(与之不同,APC的每一台设备都有一个自己的序列号),此外看起来CyberPower的 “ST” 系列共享了同一个产品id (0x0501),果然便宜不是没有便宜的道理。
接下来用 nut-scanner 来扫描USB总线上的设备:
| |
把上面扫描获得的 nutdev1 写入 /usr/local/etc/nut/ups.conf 即可。nutdev1 可以改成任何名字。
需要注意的是, nut-scanner 是以当前用户(上面的例子中是sudo得到的 root)的身份运行的,而正常情况下nut是以 uucp 的身份运行的(我提了一个 PR),但默认情况下所有的设备都只能由 root 进行操作。为此,nut的package会安装一个
/usr/local/etc/devd/nut-usb.conf,其中包含了针对上述Vendor ID和Product ID的识别。
如果不幸在启动之后才安装了nut,则 devd 不会根据这些配置进行正确的权限配置,如果不愿意重启的话,可以拔插一次,或用 devctl detach 掉对应的uhub设备,然后再用 usbconfig
把对应的USB总线重置一下来强制产生一个 ATTACH 事件,或是手工用 chown 把设备的 group 改为
uucp,否则nut服务会无法访问该设备。
用 upscmd <upsname>@localhost test.battery.start.quick 可以让UPS进行一次快速自测。除此之外,此UPS也可以做深度自测(相当于切断电源,耗到low battery为止),由于机器不在身边因此我只是测试了一下耗到75% 需要的时间,而没有完成这个测试。从测试数据来看,该UPS的容量可以坚持10-15分钟,不过关于断电通知的问题看来只能哪天再跑一趟测试了。