BAKの日記: UPS
今朝,雷で瞬電が起きる. PC は大丈夫だったのだが,OpenBlockS がリブートする. 電源弱いなぁ…
というわけで,パソコンショップに UPS を買いに行く. 濃いショップではないので,個人ユーザ向けの UPS しか置いてない. 良くわからんメーカと,オムロンと,APC の UPS がある. 交換用バッテリの入手性とか考えて,APC のを選ぶ (とは言っても,実際に交換するかどうかは謎). 型番は APC ES 500 という,平型のやつである.
で,おうちに帰って箱を開けてみる.
で,でかい…
何となくイメージしてたより一回り大きい. 気を取り直してセットアップを始める.
蓋を開けてバッテリを接続し(危険防止のため,出荷時にはマイナス端子を接続してないそうである),充電する. ステータス検出は USB で,Windows 用のユーティリティが附属している.
やはりここは Linux で,と思い,おもむろに Linux マシンにつないでみる.
hiddev0: USB HID v1.10 Device [APC APC ES 500 FW:803.p4.A USB FW:p4] on usb1:17.0
と認識される.hiddev を使うようである. USB のひゅーまんいんたーふぇーすでばいす,というのは,キーボード・ジョイスティックのようなほんとの「ヒューマンインターフェース」だけではなく,電圧計などの低速測定機器を接続することが想定されている. というわけで,これは正しいのである.
さて,どうやって使うのかな,と /usr/src/linux/Documentation/usb/hiddev.txt を読む. とりあえず,デバイスファイルを作って open(), read() してやれば,デバイス側が能動的に送ってくる hid と value のペアは取得できるようである. というわけで,C でこちょこちょとプログラムしてみる.
とりあえず動いているようである. どの hid がどういう意味かいまいち不明. まぁ,何となく,というレベルでは見当はつくのだけどね. コンセントから AC プラグを抜くと,ある hid の値が変化し,カウントダウンしていく hid があるな,というぐらい.
とかやってると,いつまでたっても使えないので,適当なところで諦めて,ステータス監視は Windows で使うことにするかしらん.
追記: と思ったら apcupsd でサポートしてるようである. ただ,configure 時に --with-usb とか,USB まわりのオプションを追加してやらないと,うまく動かないようだ.
更に追記: apcupsd でうまく動くようです. AC プラグを抜くと power fail するし(init にイベントが送られて),差し込むと power return する. ステータスもちゃんと取得できる. あっさり動いてラッキー,という反面,プログラムいぢりのネタが無くなってしまってがっかり,という気分も.
更に更に追記: apcupsd であるが,web インターフェースでのステータス監視もできるようなので晒してみる. 実は,UPS の USB ケーブルは Eden 800MHz のマシンに接続してあるのだが,web サーバは OpenBlockS266 だったりする. CGI 自身がリモートマシンのステータスを取得できるようである.
UPS More ログイン