群晖与威联通在UPS方面都支持NUT,但两家的设备名、用户名、密码都不一样,导致不能互通。本文简要介绍在UPS使用USB方式与群晖连接,威联通通过网络与群晖UPS服务器进行通讯的方法。

问题背景

之前家中总是间歇性停电,次数频繁,于是购置UPS,型号为BK650M2-CH,并且通过WinNut成功将台式机与群晖的UPS服务器进行绑定。后续添置威联通,也想连在同一个UPS上,经过多方借鉴终于成功,将经验分享给大家。

解决方案

首先要在群晖UPS的设置界面勾选启用UPS网络服务器,在其中填写允许设备的IP地址。这里强烈建议将要连接至UPS的设备手动指定IP地址,以避免DCHP获得的地址总在变动,被群晖UPS服务器拒绝。
群晖UPS服务器允许IP.png
接着用WinSCP通过SSH进入威联通,找到/etc/config/ups/upsd.users文件,将其中关于admin的部分注释掉,即:

#[admin]
#        password = 123456
#        allowfrom = localhost
#        actions = SET
#        instcmds = ALL
#        upsmon master           # or upsmon slave

然后在文档最后添加用户monuser,保存关闭。

[monuser]
    password  = secret
    upsmon slave

复制一份/etc/config/ups/upsmon.conf配置文件为 /etc/config/ups/upsmon_syno.conf,以免在在威联通控制台设置UPS后被覆盖。
修改upsmon_syno.conf中的MONNITOR一行为:

MONITOR ups@192.168.1.102 1 monuser secret slave

192.168.1.102为群晖的ip地址。

修改upsmon_syno.conf中的SHUTDOWNCMD一行为:

SHUTDOWNCMD "/sbin/poweroff"

保存后关闭。
新建/etc/config/ups/upsmon.sh文件。
写入如下内容:

#! /bin/bash
UPSMONSH="/usr/sbin/upsmon"

case "$1" in
  start)
        # Start demons.
        if upsc -c ups@192.168.1.102 | grep -q "192.168.1.101"; then
                echo "ups already run"
        else
                rm /etc/config/ups/upsmon.conf
                cp /etc/config/ups/upsmon_syno.conf /etc/config/ups/upsmon.conf
                killall upsutil
                killall upsmon
                $UPSMONSH
        fi
        ;;
  stop)
        # Stop demons.
        $UPSMONSH -c stop
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

注意,102为群晖的ip地址,101为威联通的ip地址,要根据自己的实际情况进行替换。

由于威联通crontab -e命令在重启后失效,所以需要直接修改/etc/config/crontab文件,在其中加入:

* * * * * /etc/config/ups/upsmon.sh start

保存后关闭。
使用命令/etc/init.d/crond.sh restart重启crontabd
使用命令upsc -c ups@192.168.1.102观察返回列表中是否有威联通的ip(102为群晖的ip地址),如有则设置成功。
威联通UPS设置成功.png


版权属于:Edward Kong

本文链接:https://kong.ink:666/archives/Qnap-Synology-Share-UPS

转载时请注明出处及本文链接

最后修改:2020 年 12 月 11 日 09 : 55 AM
如果觉得我的文章对你有用,请随意赞赏