PCEVA,PC绝对领域,探寻真正的电脑知识
开启左侧

关于普通后备式UPS实现停电后PC服务器自动关机功能的探讨

[复制链接]
红色狂想 发表于 2021-7-11 16:36 | 显示全部楼层 |阅读模式
点击数:1337|回复数:16
大家知道,即便是普通后备式UPS,也是可以实现停电后让PC或服务器自动关机的,方法无外乎写个每间隔一段时间就ping下网关,如果能ping通,就证明没有停电,如果连续几次都ping不通,就证明已经停电了,此时可以执行shutdown命令关机。

还有一种方法是借助windows任务计划程序,通过网卡端口链接断开事件来触发执行关机脚本,比如HP的博通网卡因掉电链接断开时会在windows事件查看器中出现一条来源: q57nd60a 事件ID: 4 描述: HP Ethernet 1Gb 2-port 332i Adapter: The network link is down. 的警告日志,我们可以新建任务计划程序捕捉这个事件来执行关机脚本shutdown.exe -s -t 420 -c "The mains power supply has been lost, the server will shutdown in 420 seconds." -d p:4:1

但是以上方法都存在一个不完美的地方,就是当停电发生后马上又恢复了供电,或者是间隙性闪断,这种情况下如何编写脚本程序实现Cancel automatic shutdown after power is restored(恢复供电后取消自动关机)功能呢?
eikeime 发表于 2021-7-11 17:11 | 显示全部楼层
本帖最后由 eikeime 于 2021-7-11 17:28 编辑

ping 通之后 shutdown -a 取消就行了
补充下:
windows 有 网络连接的 事件
Microsoft\Windows\NetworkProfile\Operational
10000是 连接
10001是 断开
计划任务里面可以用来触发


尊称 发表于 2021-7-11 19:54 | 显示全部楼层
可以,但可靠性不行,我关了
长时间停电十年也没有一次,防止出故障的重点是跳闸,一两秒钟的那种,ups才管用。
红色狂想  楼主| 发表于 2021-7-11 22:20 | 显示全部楼层
eikeime 发表于 2021-7-11 17:11
ping 通之后 shutdown -a 取消就行了
补充下:
windows 有 网络连接的 事件

嗯,找到这个Microsoft\Windows\NetworkProfile\Operational事件了,尚需要测试观察一下,不知道这两个事件是只要网卡端口从交换机上断电就会触发,还是只有DHCP获取配置时才会触发,如果本地连接是静态IP呢?
关于脚本的循环控制,ping通之后固然可以使用shutdown -a撤销当前关机任务,但脚本是在不断反复执行的,如果没有全局变量作为循环判断的标记,shutdown -a命令会被反复地执行,这么做不科学呀
红色狂想  楼主| 发表于 2021-7-11 22:26 | 显示全部楼层
尊称 发表于 2021-7-11 19:54
可以,但可靠性不行,我关了
长时间停电十年也没有一次,防止出故障的重点是跳闸,一两秒钟的那种,ups才管 ...

这本来就是建立在普通后备式UPS基础上的应用啊,甭管哪种方式的停电,没有UPS你怎么玩儿
eikeime 发表于 2021-7-11 23:20 | 显示全部楼层
本帖最后由 eikeime 于 2021-7-11 23:46 编辑
红色狂想 发表于 2021-7-11 22:20
嗯,找到这个Microsoft\Windows\NetworkProfile\Operational事件了,尚需要测试观察一下,不知道这两个事 ...

这个东西 要是我就直接上 单片机了,发现电压变成 0 超过 x时间 就 发信号给ps-on 关机就行了,交流光耦看电压有无也行还便宜,互感器也可以 , 你这种检测网络的方案对我来说行不通,我路由那些 也都有电池,检测电更直接
红色狂想  楼主| 发表于 2021-7-12 23:46 | 显示全部楼层
eikeime 发表于 2021-7-11 23:20
这个东西 要是我就直接上 单片机了,发现电压变成 0 超过 x时间 就 发信号给ps-on 关机就行了,交流光耦看 ...

测试观察了Microsoft\Windows\NetworkProfile\Operational事件,每次都会触发一堆日志,事件ID还都是重复的,捕获处理很麻烦,看来这个是行不通了。。。我当然也想上单片机呀,可X宝找了一圈儿也没有类似的产品,我甚至想买个已拆解的APC UPS BK650-CH控制板模块,可惜都找不到,如果买单片机自己开发又必须从0学起,没这个时间和精力啊,最好是一个开发好的成品小模块,一端可以接入RJ-45以太网络,当市电停电或恢复供电时它能向局域网UDP广播两条命令,这样用户就能借助脚本语言编程控制主机了
eikeime 发表于 2021-7-13 14:42 | 显示全部楼层
本帖最后由 eikeime 于 2021-7-13 14:45 编辑
红色狂想 发表于 2021-7-12 23:46
测试观察了Microsoft\Windows\NetworkProfile\Operational事件,每次都会触发一堆日志,事件ID还都是重复 ...

我说的这种东西有现成的,x 宝 搜 “ups 断电 关机 模块”。
我自己做的主要原因是,我的仓库nas不是长期开机的,开关按钮本来就是通过一个esp32控制的,我可以用手机远程启动和关机,如果我的路由没电池的话 完全可以写成 esp32 wifi 断开 超过x秒 自动关机。
ym221479 发表于 2021-7-15 08:34 | 显示全部楼层
探讨的都是好高级的事情啊~
红色狂想  楼主| 发表于 2021-7-15 17:08 | 显示全部楼层
eikeime 发表于 2021-7-13 14:42
我说的这种东西有现成的,x 宝 搜 “ups 断电 关机 模块”。
我自己做的主要原因是,我的仓库nas不是长期 ...

昨天忽然想起来X宝上有很多帮客户做单片机开发项目的平台,只要提供项目需求和预算资金,就能帮客户完成各种项目

于是抱着试试的心态,火速找了一家,填写好项目需求等相关书面文本,等待后台工程师的报价

捕获项目需求.JPG

谁曾想,就这么简单的一个小玩样儿,报价竟然要上千,我以为撑死200还搞不定吗?实现这些功能在硬件层面上超级简单吧,相关元器件不值几个钱,成本也就在客户端软件这一块上,罢啦罢啦,这个方案果断放弃了。。。

你说的“UPS 断电 关机 模块”是下图这货吗?以前就见人推荐esp32,但它是wifi无线网络,没有有线网络的稳定吧

捕获UPS管理通断电自动控制板电脑开关机模块博物馆科技馆断电关机.JPG.jpg
捕获UPS管理通断电自动控制板电脑开关机模块博物馆科技馆断电关机2.JPG.jpg
红色狂想  楼主| 发表于 2021-7-15 17:17 | 显示全部楼层
ym221479 发表于 2021-7-15 08:34
探讨的都是好高级的事情啊~

这篇帖子主要探讨的就是,在不显著增加成本的前提下,可以借助其它改造装置配合普通后备式UPS,实现局域网内多机的自动关机功能。
eikeime 发表于 2021-7-15 18:50 | 显示全部楼层
本帖最后由 eikeime 于 2021-7-15 18:53 编辑
红色狂想 发表于 2021-7-15 17:08
昨天忽然想起来X宝上有很多帮客户做单片机开发项目的平台,只要提供项目需求和预算资金,就能帮客户完成 ...

嗯 就是这种东西 ,你的那个单片机方案 有个问题吧,断电之后 路由没电了 通过什么网络发送信号,专门建个不间断的 局域网?esp32 和 esp8266 很多工业产品 都有用,挺成熟的,可靠性主要还是看你自己的代码,或者干脆tasmota 自己写规则。我用tasmota + 公共 mqtt服务器 控制的家电 比 狗东的京鱼还要稳。狗东的京鱼 现在可靠性真的不怎么样
红色狂想  楼主| 发表于 2021-7-15 23:10 | 显示全部楼层
eikeime 发表于 2021-7-15 18:50
嗯 就是这种东西 ,你的那个单片机方案 有个问题吧,断电之后 路由没电了 通过什么网络发送信号,专门建个 ...

我有台内网交换机是必须接在UPS上的,停电时不会断电,所以也就不存在你说的那个问题,单片机上用个CR2032电池就足以应对发送信号的事情了。。。关键是esp32 和 esp8266需要自己写代码调试烧录,还要买一堆设备,门槛儿太高了吧
ym221479 发表于 2021-7-16 09:52 | 显示全部楼层
红色狂想 发表于 2021-7-15 17:17
这篇帖子主要探讨的就是,在不显著增加成本的前提下,可以借助其它改造装置配合普通后备式UPS,实现局域 ...

没有那么多机器,只要自己动动手指就能搞定了~
eikeime 发表于 2021-7-16 13:57 | 显示全部楼层
红色狂想 发表于 2021-7-15 23:10
我有台内网交换机是必须接在UPS上的,停电时不会断电,所以也就不存在你说的那个问题,单片机上用个CR203 ...

0基础的话 难,有点编程经验的话不难,esp8266的 串口就可以了,esp32 可以指直接microusb 的板很多,30元基本都能搞定,不过 tasmota esp32的还在beta 阶段
红色狂想  楼主| 发表于 2021-7-16 16:36 | 显示全部楼层
ym221479 发表于 2021-7-16 09:52
没有那么多机器,只要自己动动手指就能搞定了~

可大半夜你睡得真香,UPS叫道声嘶力竭白目失色也喊不醒你,你怎么去动手指搞定呢?
红色狂想  楼主| 发表于 2021-7-16 17:11 | 显示全部楼层
eikeime 发表于 2021-7-16 13:57
0基础的话 难,有点编程经验的话不难,esp8266的 串口就可以了,esp32 可以指直接microusb 的板很多,30 ...

编程我只懂一点入门级的VB6/VC6/JS/ASP,脱离了windows gui就无从下手了,我认为我这个项目的关键就在于侦测到停电事件后,预关机的处理策略上,这显然从硬件层面去实现要比软件复杂得多。所以我还是想写个win32托盘程序,通过定时ping一个特定网关,来分别调用shutdown -s -t 420 -c命令实现自动关机
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部