「LinkStation」カテゴリーアーカイブ

ネットワーク経由のシャットダウン

UPSのランタイムも正常になったのでネットワーク経由で
バックアップ用のNASにもapcupsdをインストールし
ネットワーク経由でのシャットダウン環境を構築します。

設定に関しては詳しいサイトがあったのでそちらを参考にしました。
http://tejix.jp/cgi-bin/tex/wiki.cgi?APCUPSD
※既にリンク先のサイトはなくなっているようです

ただここに書いてある設定では私の環境では動かなかったので少しだけ補足を。
マスターもスレーブも以下の設定にしないと動きませんでした。

NETIP 0.0.0.0
NISPORT 3551 (参考サイトではマスターは3552となっていました)

とりあえずこれで正常に動いているようです。

また、MRTGにUPSのロードキャパシティとバッテリー電圧の項目も追加しました。
あとは同じUPSに繋がってるWindowsXPも同じようにスレーブ設定してあげれば
ネット経由でのUPS電源連動は完了となります。
(マシン完のハブもUPSに繋がないと停電時は全く意味を持たないので注意が必要です)

※追記
Windows版も導入してみました。
Windows版はインストール先をC直下にしないとうまくconfファイルを読んでくれないようです・・・
またNETPORTがdebian版と違って6666になっているので忘れずに変更しましょう。
私は忘れて暫くconfファイルとにらめっこしてしまいました(笑)

#—————————————————————–
# UPS Load Capacity & Battery Voltage
#—————————————————————–
Target[upsLoadcapacity]: `/sbin/apcaccess status | awk ‘/^LOADPCT/ {print $3*10} /^BATTV/{print $3*10}’ && uname -n`
Maxbytes[upsLoadcapacity]: 1500
Options[upsLoadcapacity]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsLoadcapacity]: 0.1
Factor[upsLoadcapacity]: 0.1
YLegend[upsLoadcapacity]: UPS LCapa BVolt
ShortLegend[upsLoadcapacity]:
LegendI[upsLoadcapacity]: Capa(%)
LegendO[upsLoadcapacity]: Volt(V)
Legend1[upsLoadcapacity]: Load Capacity [LOADPCT]
Legend2[upsLoadcapacity]: バッテリー電圧 [BATTV]
Unscaled[upsLoadcapacity]: ymwd
Title[upsLoadcapacity]: UPS Load Capacity & Battery Voltage
PageTop[upsLoadcapacity]:

UPS Load Capacity & Battery Voltage for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

ランタイム時間の較正

ランタイム較正を数度行うもUPSの残時間は変わらず・・・
(バッテリーに負荷が掛かって痛むんですよね)

色々調べてみたんですがとにかくコアな部分の情報が少ないですね。
APC smart protocolを隅々まで読んでいくとBatteryConstantsという項目があります。
このBatteryConstantsを使用して残時間を計算するらしいです。
SU700Jのデフォルト値は96みたいなのですがacptestで見てみると36になってます・・・
これが原因ですね。

しかしBatteryConstantsの変更方法が分かりません。
コマンドから0を打っても36が表示されるだけで変更は出来ません。
原因が特定出来たのに変更方法が分からないとは。
(このUPS中古で買ったんですが色々と値が変になってる。前の持ち主はどんな使い方してたのか(笑))

更に色々と調べてみるとapc-fixというソフトで規定値に戻せるそうです。
apc-fixをダウンロードしてWindowsから動かしてみるとメニューにoption項目があり
その中に書き戻してくれるオプションがあったのでチェックしてみる。
あれ、何も動かない・・・
何か良く分からないが一旦apc-fixを終了して再起動するとパラパラと36から96まで数字が変わっていった。
起動時に有効になる仕様ですか!!

本当に変わってるのか疑わしかったのでLinuxマシンに繋ぎ変えてapctestで再確認してみたらちゃんと変わっているようです。
ランタイム時間もload10%程度で120分と正常になったようです。
これでやっとランタイム時間の計算も正常になりました。
めでたし、めでたし。

UPSと通信してみる!

UPSの通信ケーブルが届いたので実際に通信を行ってみました。

まずは設定済みのconfでapctesが実行できるか?です。
apctestを実行してみるとあっさりと繋がりました。
EEPROMのバッテリー交換日付を書き換えてランタイム較正を実行。
ランタイム較正が終わってもランタイム時間が短い・・・
バッテリーの不良かと思い実際にUPSのコンセントを抜いてみる。
確かにバッテリーメーターの最低目盛までは4分程度で到達(負荷40%程度)
しかしそこから実際に電源が落ちるまでは20分近く持つのでした。

これってバッテリーの電圧低下が実残量があっても早いってことなんだろうな。
純正に使われているメーカーではなくFiam社製のバッテリーと交換したのが仇になったのだろうか?
UPSがバッテリーの残量を電圧で検知している以上はどうしようもないのだろうか・・・
負荷10%程度だと40分くらいと表示されるが実際は1時間半くらい持つんですが。

とりあえずUPSとの通信は正常に行われるのでこの辺は今後の課題ということにして終了。
apcupsdを実行するとwebから見るCGIもMRTGも正常に値が取得出来ています。

UPSの状態をMRTGで表示する!

まだUPSのケーブルは届いてません・・・
しかし先に設定しちゃいます(笑)

とりあえずUPS監視に必要なパッケージをインストールします。
今回はapcupsdを使用します。
apt-get install apcupsd
apt-get install acpupsd-cgi
二つ目の奴はUPSの状態をCGIで表示するためのものです。
debianではapache2のCGIディレクトリにうまくインストールされました。

apcupsdの設定は沢山サイトがあるのでそれを参考にさせてもらいました。

そしてMRTGの設定に入ります。
こちらもサイトを参考に設定しました。
実際にMRTGのページを表示してみましたがまだUPSとケーブルで繋がっていないので
当然ながら全て0で表示されます・・・
あとはUPSのケーブルが届くのを待つばかりです。

#—————————————————————–
# UPS温度、容量
#—————————————————————–
Target[upsTemperature_Charge]: `/sbin/apcaccess status | awk ‘/^ITEMP/ {print $3*10} /^BCHARGE/ {print $3*10}’ && uname -n`
MaxBytes[upsTemperature_Charge]: 1200
Options[upsTemperature_Charge]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsTemperature_Charge]: 0.1
Factor[upsTemperature_Charge]: 0.1
YLegend[upsTemperature_Charge]: UPS Capa.&Char.
ShortLegend[upsTemperature_Charge]:
LegendI[upsTemperature_Charge]: 容量(%)
LegendO[upsTemperature_Charge]: 温度(deg.)
Legend1[upsTemperature_Charge]: バッテリィ容量 [BCHARGE]
Legend2[upsTemperature_Charge]: 温度 [ITEMP]
Title[upsTemperature_Charge]: UPS温度、容量
PageTop[upsTemperature_Charge]:

UPS温度、容量 for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

#—————————————————————–
# UPS入、出力電圧
#—————————————————————–
Target[upsVoltage]: `/sbin/apcaccess status | awk ‘/^LINEV/ {print $3*10} /^OUTPUTV/ {print $3*10}’ && uname -n`
Maxbytes[upsVoltage]: 1200
Options[upsVoltage]: gauge, growright, absolute, nopercent, noinfo, unknaszero
YTicsFactor[upsVoltage]: 0.1
Factor[upsVoltage]: 0.1
YLegend[upsVoltage]: UPS Voltage(v)
ShortLegend[upsVoltage]: V
LegendI[upsVoltage]: IN
LegendO[upsVoltage]: OUT
Legend1[upsVoltage]: 入力電圧 [LINEV]
Legend2[upsVoltage]: 出力電圧 [OUTPUTV]
Title[upsVoltage]: UPS入、出力電圧
PageTop[upsVoltage]:

UPS入、出力電圧 for SmartUPS 700J

System:APC SmartUPS 700J
Maintainer:Root

USB-シリアル変換ケーブルを認識

前回の妄想から2日。
秋月電子からUSB・シリアル変換ケーブルが届きました。

kernelも前もってコンパイルしていたので早速USBに挿してみると・・・
認識しました!
usbserial_generic 2-1:1.0: usb_probe_interface – got id
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 2-1:1.0: usb_probe_interface
pl2303 2-1:1.0: usb_probe_interface – got id
pl2303 2-1:1.0: pl2303 converter detected
usb 2-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver

ただ色々調べてた時にkernel標準ドライバはコマンドの送信が出来なくてパッチが必要と複数のサイトに書いてあった。
なんでも秋月電子で売ってる変換ケーブルのチップはPL-2303ではなくPL-2303XとXが付くらしいです。
そこでkernel標準のPL-2303ドライバでコマンド送信が可能か試してみることに。
しかしクロスのシリアルケーブルが家にありません・・・
UPSのシリアルケーブルもまだ届いてません・・・
どうやって確認するか悩みましたがシリアル接続のモデムがあったのでそれで試すことに!

まずcuコマンドが使えるように apt-get install cu
ttyUSB0のパーミッションを変更しときます。
テストなので適当に・・・ chmod 777 /dev/ttyUSB0
モデムの電源を入れていざ接続開始!

# cu -l /dev/ttyUSB0
Connected.
at[ENTER]
OK
at+fmfr?[ENTER]
ROCKWELL

OK
at+fmdl?[ENTER]
AC/K56

OK
~.[ENTER]

Disconnected.

※参考:オモイノホカ日々徒然
※既にリンク先のサイトはなくなっているようです

ATコマンドの送受信が出来ますね。
kernel2.6.16.16のPL-2303ドライバはPL-2303Xでもパッチなしで動くようです。
USB-シリアル変換ケーブルの動作確認はこれにて終了!

LS-GLで電源管理

自宅のUPSにはACP製のSmart-UPS700Jを使用しています。
このUPSにはPCとの通信にシリアルポートを利用します。

ですがLS-GLはシリアルポートを持っていません。
またLS-GLは電源OFF状態で通電なし>通電状態にしても
電源復帰による自動起動は不可能なのでシャットダウン機能のみとなります。

※ここからは接続機器を購入するまでの妄想になります(笑)
とりあえずUSB機器は使用できるのでUSB-シリアル変換ケーブルでやろうと思います。
安いシリアル変換機器を探したところズバ抜けて安いのがありました!
みなさんもご存知の秋月電子にありますね。
USB・シリアル変換ケーブル
USB・シリアル変換ケーブル

この変換ケーブルはPL-2303というチップを使っているようです。
RedHat用のドライバソースもDL出来るようです。
PL-2303 Software and Drivers
•ld_pl2303_v0728.rar (Linux RH)
※Linux カーネルバージョン 2.4.31 以上は標準で組み込まれています。

試しにRedHat用のドライバをDLして中身のドキュメントを見てみました。
ドライバを使用するにはKernelの再構築が必要なようです。
そこでLS-GLのGPLソースに含まれるKernelのconfigにPL-2303があるか確認してみました。
なければとりあえずKernelでシリアルーUSB変換をモジュール扱いにして
上のサイトにあるドライバをコンパイル&インストールすれば使えるはずです。
しかしKernelのconfigにはしっかりとPL-2303が存在します!
これはKernelコンパイルと標準モジュールのインストールだけで動きそうですね。

とりあえずここまでは機器を購入したら試すつもりです。

その後はUPS管理のアプリを選定することになります。
また他のNASもLS-GLがシャットダウンする際にリモートで一緒にシャットダウンさせる計画もあります。
が、今はまだ妄想の段階です(笑)