Linux下监控的Santak MT-500pro系列UPS信息

本文介绍了如何在Linux系统下利用轻量级程序监控Santak MT-500pro UPS的信息,指出原厂Winpower软件的不足,并分享了一个原型程序的代码和制作过程,支持通过串口通讯获取UPS状态。
摘要由CSDN通过智能技术生成

本文镜像自作者Blog: http://www.csksoft.net/blog/post/santak_monitor.html

 

这段时间一直在"筹建"以前提到过的智能化家庭系统(IHES)。前不久购买并配置了500G的RAID 1存储阵列服务器,为了保证数据安全,同时又购买了Santak MT-500pro智能型UPS。

这里说智能型可能不是很专业,其实就是说该UPS提供了相关的接口允许从服务器上读取出UPS的相关状态信息。比如:

外部交流供电电压、负载端电压、负载功率、蓄电池电压等信息

不过,其实最需要关心的就是希望能够在发生断电情况下ups能即时告知。以便服务器机组能在UPS逆变供电实效前自动关机。毕竟不可能让我24小时监控家中服务器状况。

以上可以算是背景介绍了,现在面临的问题是,这个品牌的UPS虽然在官方提供了相关的监控和管理软件Winpower。不过使用后,存在许多不足:

  1. 程序采用java (1.14) 开发,甚至连与ups通讯的部分也完全采用java
  2. 该程序实现上十分低效,监控目模块间通讯需要采用java rmi
  3. 没有命令行接口,可制订性差

当然这些问题不是所有人都会抱怨的,不过目前考虑到家里的中央服务器还采用P3 CPU, 512mb内存,以及没有安装X Server环境。纯命令行下WinPower完全无法工作。同时采用java的实现虽然从厂家角度降低了porting成本,不过绝对是一个低效的实现。我测试过仅仅开启了Winpower中的监控模块,java进程就消耗了近20Mb的资源。同时还不考虑低效的实现(我逆向工程过其class文件,实现很糟糕)。仅仅为了监控ups信息而做出如此的资源消耗实在不值得。

另一方面,如果选用APC品牌的UPS,linux下则有现成的Apcupsd。当然东西都买下了,后悔也没用。于是,我实现一个满足我需求的ups监控程序。这里提供一个原形程序的代码以及整个整个制作过程的叙述。支持的型号是Santak MT-500pro。不过我相信通过源代码以及按照我的制作思路,其他型号也很容易做出对应的程序。原形程序是纯命令行的,很容易用bash shell写一个断电后一定时间内控制服务器自动关机的daemon脚本。

下面是制作介绍部分,没兴趣看得话代码在文章末尾给出了,请自行编译使用。Windows版本的也可以很容易修改而成。

MT-500pro的相关信息:

毕竟不是给人家做广告,这里什么技术参数就不给了。

该UPS采用串口(COM)提供自身的状态信息。串口的通讯采用2400bps速率,目前已知的状态信息有如下2种形式:

  • "#220.0 004 12.00 50.0/r" 
    "(231.4 231.0 231.4 011 50.1 13.9 25.0 00001001/r" 

这里先暂时不介绍相关的通讯协议。在上面的状态信息中,第一条应当为该UPS的标准参数(即正常情况下理论值)。这几个数据每次都是固定不变的。其含义依次为:

<输出(或输出电压)> <未知> <蓄电池电压> <输出(或输入)频率>

而第二项则为当前UPS的实际数据,这也是我需要关心的内容。其可能含义依次为:

<外部电压> <内部电压(具体未知)> <输出电压> <负载率%> <电源工作频率(Hz)> <蓄电池电压> <UPS机内温度(摄氏度)> <状态标志>

这里需要对状态标志做下介绍,因为我在逆向分析时无法重现所有可能情况,这里只给出我知道的几个标志位:

00001001
|     +--- UPS输出关闭位
+--------- 外部供电失效位

虽然只知道2个标志位含义,不过我想应该足够了,最高位表示当前交流供电是否异常,如果为1就表示断电了。UPS输出关闭位有效则表示当前UPS没有工作。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值