收起左侧

为fnOS的UPS添加“关闭fnOS系统后完全关闭UPS”的功能

26
回复
2349
查看
[ 复制链接 ]

2

主题

16

回帖

5

牛值

初出茅庐

2024-12-24 14:21:50 显示全部楼层 阅读模式

[i=s] 本帖最后由 vanlea 于 2025-2-4 20:09 编辑 [/i]<br /> <br />

一、需求简述

飞牛系统更新后可以支持UPS了,使用的程序是nut,其实群晖的UPS支持也是基于nut。而飞牛的UPS功能只支持关闭飞牛自身,不可以关闭UPS,这样,有市电来之后NAS不会自动开机(只支持来电自启的主板),市电来电后想要开NAS,只能加支持远程控制的开关,或者只能网络唤醒,或者手动开机。

关闭系统后关闭UPS,这个选项在群晖是有的(如下图),飞牛没有这个功能。

有这个需求的,可以参考本教程。

image.png

二、本教程测试的设备

主板:豆希B250 6盘位(主板提前进BIOS配置好来电自启)

UPS:雷迪斯H1000M

其他:理论上使用USB和NAS通讯的UPS都可以使用

三、教程开始

教程开始前:

所有配置文件和脚本,使用sudo或者root账户编辑,编辑前请自行进行备份!!!

所有配置文件和脚本,使用sudo或者root账户编辑,编辑前请自行进行备份!!!

所有配置文件和脚本,使用sudo或者root账户编辑,编辑前请自行进行备份!!!

1、在飞牛OS的web,启用UPS支持

image.png

2、登录SSH后修改upssched配置文件

文件位置:/etc/nut/upssched.conf

文件内容:

CMDSCRIPT /usr/trim/bin/upssched_cmd.sh

PIPEFN /run/nut/upssched.pipe
LOCKFN /run/nut/upssched.lock

AT ONBATT * EXECUTE onbatt
AT ONBATT * START-TIMER power-off 60  #自行手动添加
AT ONLINE * CANCEL-TIMER power-off    #自行手动添加
AT ONLINE * EXECUTE online
AT COMMBAD * EXECUTE commbad
AT COMMOK * EXECUTE commok
AT LOWBATT * EXECUTE lowbatt

添加以下2行:

AT ONBATT * START-TIMER power-off 60
AT ONLINE * CANCEL-TIMER power-off

第一行:UPS进入电池供电状态时,开始一个60秒的计时器,如果计时器结束后没有恢复市电供电,就执行/usr/trim/bin/upssched_cmd.sh脚本下“power-off”函数。

第二行:如果UPS从电池供电恢复到市电供电,就取消60秒的计时器,并且不会执行/usr/trim/bin/upssched_cmd.sh脚本下“power-off”函数。

其他注意事项:

这个60秒,要比第1步设置的“关机等待时间”快,否则只会关机但不关闭UPS!

这个60秒,要比第1步设置的“关机等待时间”快,否则只会关机但不关闭UPS!

这个60秒,要比第1步设置的“关机等待时间”快,否则只会关机但不关闭UPS!

3、登录SSH后修改upssched_cmd.sh脚本

文件位置:/usr/trim/bin/upssched_cmd.sh

a、只需要关机并关闭UPS,不需要邮件通知,则

#!/usr/bin/bash

set -ex

exec 1> >(logger -t upssched-cmd) 2>&1

/usr/bin/curl --unix-socket /var/run/ups_device.socket -X POST -d "eventType=$1" http://localhost/event

if [ "$1" == "power-off" ]; then      #自行添加
        /sbin/upsmon -c fsd           #自行添加
fi                                    #自行添加

也就是在文件最后添加这3行:

if [ "$1" == "power-off" ]; then
        /sbin/upsmon -c fsd
fi

b、如果需要发送邮件通知,则按照如下修改

#!/usr/bin/bash

set -ex

exec 1> >(logger -t upssched-cmd) 2>&1

/usr/bin/curl --unix-socket /var/run/ups_device.socket -X POST -d "eventType=$1" http://localhost/event

case $1 in
        onbatt)
                echo "UPS已经进入电池供电模式!" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com
                ;;
        online)
                echo "UPS已经恢复市电供电!" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com
                ;;
        power-off)
                echo "UPS已经使用电池供电超过60秒,开始关闭fnOS并且关闭UPS!" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com
                /sbin/upsmon -c fsd
                ;;
        commok)
                echo "UPS连接成功!" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com
                ;;
        commbad)
                echo "UPS已断开连接!" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com
                ;;
        *)
                logger -t upssched-cmd "Unrecognized command: $1"
                ;;
esac

echo "UPS已经恢复市电供电" | s-nail -s "UPS告警" 你的QQ邮箱@qq.com 就是邮件提醒使用的命令,echo 后面双引号的内容是邮件正文, -s 后面双引号是邮件标题,内容可以自行修改。想要使用的话,首先百度一下s-nail怎么配置。

/usr/bin/curl --unix-socket /var/run/ups_device.socket -X POST -d "eventType=$1" http://localhost/event

这一行是飞牛用来将UPS事件显示到web的。

至于第1步设置的“关机等待时间”,这里触发的关机事件定义的配置文件在哪还没空研究,先用着upssched.conf配置文件的计时器

重点看power-off函数内:/sbin/upsmon -c fsd ,实现关机后关闭UPS的重点就是将关机命令执行换成这个。

全部设置完后,就可以实现“关闭fnOS系统后完全关闭UPS”功能。

4、开机自动复制upssched_cmd.sh

复制一份upssched_cmd.sh到用户文件夹下,或者/etc/nut/下,我这里放在/etc/nut

在/etc/init.d/下新建一个脚本文件,我这里取名为cp-upsconf.sh,内容如下(全部复制粘贴,自行修改16行,15行的配置文件自己按需配置,如果不用,就直接删掉):

#!/bin/sh
#  
### BEGIN INIT INFO
# Provides:cp-upsconf
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: cp upsconf to Folder
# Description: Cp upssched.conf to /etc/nut. Cp upssched-cmd to /usr/trim/bin/.
### END INIT INFO

sleep 120

cp /etc/nut/upssched.conf.bk  /etc/nut/upssched.conf
cp /etc/nut/upssched_cmd.sh /usr/trim/bin/upssched_cmd.sh

exit 0

赋予执行权限

chmod +x /etc/init.d/cp-upsconf.sh

将复制配置文件的脚本添加到启动执行

update-rc.d cp-upsconf.sh defaults 90

四、成果展示-20241218

image.png

五、其他注意事项

1、想验证你的UPS是否支持完全关闭,可以直接执行 /sbin/upsmon -c fsd ,看NAS关机后,UPS是否继续为其他设备供电。

2、全部脚本和配置文件修改好后,不能再在fnOS的web上操作任何关于UPS的选项,否则upssched.conf配置文件会重新被覆盖恢复初始状态。如果不小心操作了,需要重新编辑/etc/nut/upssched.conf 配置文件添加那2行。

可以按照第三大点第4小点,第15行代码,配置开机自动覆盖upssched.conf。

六、后续-20241224

研究了一下飞牛OS网页有关UPS的JS源码,可惜当初大学时(本人网络工程专业)没好好学java,也没有接触过JavaScript,没找到操作后台的java方法,以下都是本人根据自己其他编程预言进行的猜测。

路径:/usr/trim/www/assets/Setting-BWu1KWhI.js,在33390~33423行之间,shutdownPolicyType,飞牛官方只做了 LOWBATTONBATT这2个的判定,相关内容可见 /etc/nut/upsmon.conf,如果能将 shutdownPolicyType的值从 LOWBATT或者 ONBATT倒计时X分钟后,最终设定为 FSD,应该就可以实现“关闭fnOS系统后完全关闭UPS”。

需要这个功能的还是先用本教程改脚本的方式,如需飞牛官方适配,大家多在建议区提建议。

image.png

image.png

收藏
送赞 8
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

8

主题

122

回帖

60

牛值

fnOS系统内测组

社区上线纪念勋章社区共建团荣誉勋章

2024-12-24 15:05:35 显示全部楼层
写的够细

1

主题

697

回帖

170

牛值

热心解答组

社区共建团荣誉勋章

2024-12-24 15:47:02 显示全部楼层
雷迪斯的显示剩余多少电量不
刚看了一下,显示剩余百分比,但是不显示型号和预估供电时间  详情 回复
2024-12-24 16:11
不显示的  详情 回复
2024-12-24 15:52

2

主题

16

回帖

5

牛值

初出茅庐

2024-12-24 15:52:43 楼主 显示全部楼层
不显示的

2

主题

16

回帖

5

牛值

初出茅庐

2024-12-24 16:11:20 楼主 显示全部楼层
刚看了一下,显示剩余百分比,但是不显示型号和预估供电时间

2

主题

3

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2024-12-27 09:25:02 显示全部楼层
同UPS插上没反应啊  设备选项直接是空的
先拔掉USB,然后ssh登录系统切换到root账户卸载nut apt --purge remove nut apt autoremove 重启之后 apt install nut 然后接上USB,然后再进飞牛的网页,就应该看到设备了  详情 回复
2025-1-19 14:09

0

主题

1

回帖

0

牛值

江湖小虾

2024-12-30 16:02:38 显示全部楼层
等fnOS把关闭UPS的功能加上

46

主题

48

回帖

0

牛值

初出茅庐

2025-1-5 13:58:56 显示全部楼层
就是这个,飞牛官方还没适配,做不到无人值守开机,等于白瞎

4

主题

23

回帖

0

牛值

江湖小虾

2025-1-17 21:58:45 显示全部楼层
我买的cyberpower 650那个,这个ups好像就不支持usb通知ups关机
直接ssh进系统切换到root账户,执行 /sbin/upsmon -c fsd 看下nas关机后,ups有没有关闭,ups多接一个其他设备判断有没有断 电,比如电灯啥的  详情 回复
2025-1-19 14:03

2

主题

16

回帖

5

牛值

初出茅庐

2025-1-19 14:03:06 楼主 显示全部楼层
直接ssh进系统切换到root账户,执行
/sbin/upsmon -c fsd
看下nas关机后,ups有没有关闭,ups多接一个其他设备判断有没有断 电,比如电灯啥的

2

主题

16

回帖

5

牛值

初出茅庐

2025-1-19 14:09:28 楼主 显示全部楼层
先拔掉USB,然后ssh登录系统切换到root账户卸载nut
apt --purge remove nut
apt autoremove
重启之后
apt install nut
然后接上USB,然后再进飞牛的网页,就应该看到设备了
感谢 后来更新系统后直接就有了  详情 回复
2025-1-22 14:32

1

主题

6

回帖

0

牛值

江湖小虾

2025-1-22 11:03:37 显示全部楼层
很好的实践!

2

主题

3

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-1-22 14:32:17 显示全部楼层
vanlea 发表于 2025-1-19 14:09
先拔掉USB,然后ssh登录系统切换到root账户卸载nut
apt --purge remove nut
apt autoremove

感谢  后来更新系统后直接就有了

0

主题

6

回帖

0

牛值

江湖小虾

2025-2-2 15:04:39 显示全部楼层
不知道为什么,我的upssched_cmd.sh文件修改完了以后,重启就自动恢复了。
正常,可以自行添加开机运行脚本,覆盖掉,迟点我再更新帖子加上  详情 回复
2025-2-2 15:34

2

主题

16

回帖

5

牛值

初出茅庐

2025-2-2 15:34:20 楼主 显示全部楼层
正常,可以自行添加开机运行脚本,覆盖掉,迟点我再更新帖子加上

0

主题

1

回帖

0

牛值

江湖小虾

2025-3-2 14:08:26 显示全部楼层
请问下你这款ups支持关机后来电自动开机吗(我问卖家说不支持),不然只是关掉了ups,它也没法自动打开呀,那也就没法启动nas
可以支持来电自动关机。来电后不会马上开机,会等待3分钟,UPS判定市电稳定了才开机。  详情 回复
2025-3-7 12:24

2

主题

16

回帖

5

牛值

初出茅庐

2025-3-7 12:24:07 楼主 显示全部楼层
可以支持来电自动关机。来电后不会马上开机,会等待3分钟,UPS判定市电稳定了才开机。

24

主题

66

回帖

0

牛值

初出茅庐

2025-3-27 09:09:25 显示全部楼层
到现在还没适配。。。不会SSH配置,昨天停电另一台nas在ups电量耗尽之后直接断 电了,心疼硬盘,不知道什么时候飞牛能开发这一块
你的UPS不带通讯功能吗?  详情 回复
2025-4-17 09:13

4

主题

9

回帖

0

牛值

江湖小虾

2025-4-16 20:22:19 显示全部楼层

大佬你好,我的UPS是山特 TG-BOX850,我现在的问题就是 ,在nas里面能设置停电后nas 关机,但是来电后nas不会自动开机,请问我该怎么设置啊?

支持通讯的话,就按照帖子上的说明操作就行了  详情 回复
2025-4-17 09:14

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-17 09:13:09 显示全部楼层
blue335 发表于 2025-3-27 09:09
到现在还没适配。。。不会SSH配置,昨天停电另一台nas在ups电量耗尽之后直接断 电了,心疼硬盘,不知道什么 ...

你的UPS不带通讯功能吗?
群晖和飞牛同时在用,不太会两个同时生效  详情 回复
2025-4-17 10:06

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-17 09:14:03 显示全部楼层
alexleon20 发表于 2025-4-16 20:22
大佬你好,我的UPS是山特 TG-BOX850,我现在的问题就是 ,在nas里面能设置停电后nas 关机,但是来电后nas不 ...

支持通讯的话,就按照帖子上的说明操作就行了

24

主题

66

回帖

0

牛值

初出茅庐

2025-4-17 10:06:12 显示全部楼层
小迷糊 发表于 2025-4-17 09:13
你的UPS不带通讯功能吗?

群晖和飞牛同时在用,不太会两个同时生效
这个比较麻烦,飞牛目前不支持网络UPS,但是UPS功能本来基于NUT实现的,你也可以自己去改配置文件  详情 回复
2025-4-17 10:39

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-17 10:39:52 显示全部楼层
blue335 发表于 2025-4-17 10:06
群晖和飞牛同时在用,不太会两个同时生效

这个比较麻烦,飞牛目前不支持网络UPS,但是UPS功能本来基于NUT实现的,你也可以自己去改配置文件
基本0基础,改了一次,改的ups都不识别了,还好最后重装nut可以识别了,只能等更新支持了。  详情 回复
2025-4-17 10:45

24

主题

66

回帖

0

牛值

初出茅庐

2025-4-17 10:45:08 显示全部楼层
小迷糊 发表于 2025-4-17 10:39
这个比较麻烦,飞牛目前不支持网络UPS,但是UPS功能本来基于NUT实现的,你也可以自己去改配置文件 ...

基本0基础,改了一次,改的ups都不识别了,还好最后重装nut可以识别了,只能等更新支持了。
可以买一个ups搭档,B站搜一下,有介绍的  详情 回复
2025-4-17 13:07

0

主题

6

回帖

0

牛值

江湖小虾

2025-4-17 13:07:54 显示全部楼层
blue335 发表于 2025-4-17 10:45
基本0基础,改了一次,改的ups都不识别了,还好最后重装nut可以识别了,只能等更新支持了。 ...

可以买一个ups搭档,B站搜一下,有介绍的
好的 多谢  详情 回复
2025-4-17 14:03

24

主题

66

回帖

0

牛值

初出茅庐

2025-4-17 14:03:56 显示全部楼层
小迷糊 发表于 2025-4-17 13:07
可以买一个ups搭档,B站搜一下,有介绍的

好的 多谢

1

主题

9

回帖

0

牛值

江湖小虾

2025-4-26 18:55:18 显示全部楼层

楼主666

V0.8.47版本上线了“USB UPS 在断 电关机时支持同步通知 UPS 设备关机”

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

本版积分规则