如何在 FreeBSD 上使用 UPS

UPS 在跳电之时大约能撑个十来分钟以上,但是如果你人不在电脑旁,
最後还是面临 UPS 没电,电脑被迫 shutdown 的情形 。
飞瑞的 UPS 有贩卖一种叫电掌柜的软体来帮你自动 shutdown,
但是电掌柜是 for Win95 的,而 FreeBSD 或是 Linux 都还没有类似的软体,
我想到一个方法,实作上也已经成功了 。兹将步骤列在以下,
有需要的网友自己动手做吧!! ^_^

目前就同学手边有的 UPS,已经做出 飞瑞 和 Upsonic 的 。
底下是给飞瑞的 A-8941 500VA 用的 。
我们这边的测试目前是没发现问题,如果你在使用上有问题,欢迎向我们提出 。

【 零件清单 】
9公 一个
25母 一个
单心线 四条
电阻 1K 二只


【 飞瑞 UPS 的 output 规格 】
可迳自参考飞瑞 UPS 手册的 第 6 页 -- 1-5 介面通讯埠 。
Pin Meaning
-----------------------------------------------------------------------
 2 市电异常时 ON (close)
3 市电正常时 ON (close)
 5 Battery Low 时 ON (close) 距 Shutdown 剩一分钟
6 Remoto ShutDown 用
 7 Common 共接点 (以上接脚接和这个共接)

=======================================================================

【 实作 】
其中,我选接 UPS 的 2、5、7 三条线,
分别对应 COM2 的 DSR、CTR、Vcc 脚 。
而 COM2 的 DTR 脚(20) 则维持 High 提供 Vcc 的讯号 。
(RS-232规格上是写 3~15V,实测为 10V 左右) 。

将 9公的 pin7 连 Com2 的 pin 20,
pin 2 连 pin 6,pin 5 连 pin 5 (见下图) 。
其中再将 COM2 的 pin 7 (Gnd) 和 COM2 的 pin 6 和 pin 5 跨接 1 K 的电阻 。

UPS COM2
output( 9公) Input(25母)
=========================================
Pin 7 ------------------------ 20 Vcc

Pin 2 ----- ------------------ 6 DSR (跳电时为 1 )
>
< R (电阻 1K)
----------------- 7 Gnd
<
> R (电阻 1K)
Pin 5 ----- ------------------ 5 CTR (Battery Low 时为 1 )

【 source 何处寻 】

您可以到 ftp://kavalan.csIE.nctu.edu.tw/pub/Unix/source/UPS_deamonPT.tar.gz
抓回来,直接打 make 就可以执行 。
目前只做 for FreeBSD 的 。Linux 应该很好 port 。

【 How To Run it 】
将 9公接 UPS 後方的 output,25母接主机後面的 COM2,然後执行这个程式,
执行时,请用 sudo,否则 access COM2 时会 permission denied 。
目前预设的情形,只有显示 UPS 的状态,如果你要加入 shutdown 的功能,
在 source 中第 52 行 :

case 2:
case 3:
printf("UPS 电力不足 ......n");

 <<< ---------insert here

break;

把 system("shutdown -h now"); 加入 insert here 的地方,再重新 make 就可以了
这程式直接跑就可以用了,不用加参数,
% sudo serial_port
这样就可以了 。

附上一些东西给 COM1 用的,更详细的资料,如果有人需要,我们再贴出来 。

【 Device Name 】
在 FreeBSD 中,device 的名称如下:
/dev/cuaa0 COM1 port
/dev/cuaa1 COM2 port

【 COM Port 接脚名称 】
接脚名称 9 pins 25 pins 讯号意义
---------------------------------------------------------------------------
DCD (Data Carrier Detect) 1 8 载波侦测 。表示modem和对方连上
RxD (Received Data) 2 3 接收资料的接脚 。
TxD (transmit Data) 3 2 传送资料的接脚 。
DTR (Data Terminal Ready) 4 20 告诉 modem,PC 已经备妥 。
GND (Signal Ground) 5 7 接地脚 。
DSR (Data Set Ready) 6 6 Modem 已经开启且准备好 。
RTS (Reguest To Send) 7 4 叫 Modem 准备接收资料 。
CTS (Clear to Send) 8 5 Modem 已经准备好接收资料 。
RI (Ring Indicator) 9 22 电话铃响 。

推荐阅读