UPSを買った。APC RS550S, apcupsd
UPS を買った
家のブレーカーは気軽にトリップさせたい
これは UPS おすすめ記事とかではないので、UPS の導入を検討している方に有益な情報はありません。
10年以上前だけど APC SU700j 使ってたな。30Aのブレーカの家に二人で住んでいた頃、ドライヤーと電子レンジを同時に使って雑にトリップしてた。
そのあと引っ越したあともしばらく惰性でUPS付けてた。東日本大震災があり、しかしなぜか輪番停電は受けなかったので特に活躍はなかった。そのあと3度目くらいのバッテリ寿命を迎えて APC SU700j ごと廃棄した。
上の写真のEXIFは2007年だったけどどこで撮ったか覚えてない。落合の廃工場だったか。そもそもブレーカじゃないなこれ。
APC RS550S (BR550S-JP)
どうせ中開けて遊ぶならジャンクを買おう
機種選定の基準
- 家庭用
- apcupsd *1 とかのOSSが対応してる (must)
- 12V バッテリを2本使うのはだるいから1本のやつ (must)
- 出力 200~300W; 500VAくらい
- 正弦波
- 安い
- 改造、ハックの情報が存在する (should)
正直、APC でも SmartUPS シリーズはハックの情報がそれなりにあるけど Back-UPS BR シリーズのはあんまりない。SUシリーズは企業がリプレースで廃棄したリユース品が大量に出回っているのに対して、Back-UPS シリーズは業務用としてはあまり導入されないからだろうか。
バッテリが1本で動くモデルがSUにあるならSUでよかったけど多分ないよね。たいした出力いらないのにバッテリ2本使うのはだるい。
PCからはUSBシリアルとして認識されるもんだと思ってたら, USB HID だから驚いた。HID Power Deivces って subclass があるのを知らなかった。これによってOSが直接バッテリとして認識するみたい。Windows10 デスクトップパソコンに繋いだら、特にドライバやアプリをインストールすることもなくラップトップみたいにOSにバッテリー残量とかが認識された。まあこれのせいで後でビビるんだけど…。
ref. usb.org PDF Universal Serial Bus Usage Tables for HID Power Devices
Linux では以下のような感じ。Ubuntu Desktop からもラップトップのようにバッテリが認識された。
allen@vmx260: $ lsusb Bus 003 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
allen@vmx260: $ lsusb -v (タップして展開..)
Bus 003 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x051d American Power Conversion idProduct 0x0002 Uninterruptible Power Supply bcdDevice 0.90 iManufacturer 1 American Power Conversion iProduct 2 APC RS 550S FW:941.c6 .A USB FW:c6 iSerial 3 3B2022 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0022 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 2mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.00 bCountryCode 33 US bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 1049 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 100 Device Status: 0x0002 (Bus Powered) Remote Wakeup Enabled
dmesg
Apr 27 00:19:28 vmx260 kernel: [ 17.867416] hid-generic 0003:051D:0002.0002: hiddev0,hidraw1: USB HID v1.00 Device [American Po wer Conversion APC RS 550S FW:941.c6 .A USB FW:c6 ] on usb-0000:13:00.0-2/input0
apcaccess
allen@vmx260:~$ apcaccess status PC : 001,036,0863 DATE : 2023-04-27 03:12:57 +0900 HOSTNAME : vmx260 VERSION : 3.14.14 (31 May 2016) debian UPSNAME : vmx260 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2023-04-27 00:19:27 +0900 MODEL : APC RS 550S STATUS : ONLINE LINEV : 101.0 Volts LOADPCT : 0.0 Percent BCHARGE : 63.0 Percent TIMELEFT : 444.1 Minutes MBATTCHG : 10 Percent MINTIMEL : 5 Minutes MAXTIME : 0 Seconds SENSE : High LOTRANS : 85.0 Volts HITRANS : 120.0 Volts ALARMDEL : No alarm BATTV : 13.0 Volts LASTXFER : No transfers since turnon NUMXFERS : 0 TONBATT : 0 Seconds CUMONBATT: 0 Seconds XOFFBATT : N/A SELFTEST : NO STATFLAG : 0x05000008 SERIALNO : 3B2022 BATTDATE : 2023-04-25 NOMINV : 100 Volts NOMBATTV : 12.0 Volts NOMPOWER : 330 Watts FIRMWARE : 941.c6 .A USB FW:c6 END APC : 2023-04-27 03:13:09 +0900
なんか表示少なくない??? と思ったら
apcaccess(8): status info from apcupsd - Linux man page より引用::
Back-UPS RS 1500 (USB) LINEV : Current input line voltage LOADPCT : Percentage of UPS load capacity used (snip) *ITEMP : UPS internal temperature in degrees Celcius (snip) * presence dependant on USB firmware version.
* presence dependant on USB firmware version.
おーい! マジかよ。温度取れないとかはさすがにちょっと…。
テスト運転
バッテリがどれくらい生きてるか確認のためテストしてみた。
純粋な抵抗性負荷 (白熱電球など) があれば良かったんだけど、手元に500Wのアイランプとか大きいのしか無かったんで、適当なラップトップの USB-C ACアダプタをつないでる。負荷が揺れてるのはラップトップをいじってるせいです。あとLEDライトも足した。
datadog
apcupsd の apcaccess の標準出力を datadog に送って可視化した。datadog は私にとって手っ取り早いのでそうした。バッテリが死んでるかどうかだけ分かればいいんで急拵えのダッシュボードはすごく雑です。
バッテリ動作中
これは ONBATT 中の画像です。とりあえずバッテリ電圧と UPS の考えるバッテリ残量と残り時間を見たい。負荷は、まあ電池が12V/7Ahくらいだろうから 20W 程度で勘弁してやるか。残量20%で(測定中のOSを)自らシャットダウンさせるテストも兼ねておく (※これのせいで後でビビるんだけど)。
ジャンクだからバッテリ期待してなかったけど、結構生きてた。新品が分かんないけどまだ7割くらい生きてるんじゃないかな。
- いままでの APC 製の UPS は過充電気味でバッテリを短期間でダメにする印象があったけど、これは満充電後の運転中でも 13.64V (at 20℃) 程度しかかかっていなくて良い。この機種はバッテリ寿命がカタログスペック並に出るかも。満充電バッテリを外して数時間後のバッテリ開放電圧は 13.3V 程度。
- UPSの自己申告でいうバッテリ残量 0% まで使った直後 10.71V 。ちょっと使いすぎじゃない? もしそういう設計であればこの機種では 0% まで使い切らない方がいいと思う。それかこのバッテリの寿命か不明。
- 15-20W で1時間以上稼働した。Timeleft はけっこう正確。
これは20%まで放電後、15分程度充電したところ
- 商用電力復帰後、充電が始まってもバッテリ残量表示はしばらく (10分間ほど) 下がり続ける(良い)。
- 充電電流は 0.6A 前後 ? (直流クランプメータで見たから不正確だけど実際そんなものかな)。
- 充電 20% → 100% に6時間程度かかった。
- 温度の情報がとれず、ファンレスなので少し怖い
出力波形
一応見てみた。きれいな正弦波です(ここまで綺麗である必要もないんだけど)。無負荷から突然150W程度の抵抗性負荷かけても特に動じなかったのでいいと思います。50Hzの地域だけどコールドスタートしたせいか 60Hz で出てる。
他の感想
- 停電時(ONBATT時)の警告音を完全に off にもできる。というかいつ鳴るのか細かく設定できなくて、まるっとon/offになる(有償のPowerChuteで見てないから分からないけど)。バッテリが死んだときの警告音までoffになるかはまだ不明。
- バッテリはホットスワップできる
- 内部温度はとれないっぽい(マジかよ)
- 背面パネルを外すとき、商用電源から基板に行ってるファストン端子が簡単にスッコ抜けて、組み戻したとき気付かなかった。こわい! この個体がおかしくなってるのか元々そうなのか不明
- 内部のUART接続ポイントはまだ見てない。従来の APC SmartUPS Protocol *2が喋れるのか、っていうこの機種SUシリーズじゃないし出自もSUと関係ないはずだから喋れない気もするな。いや Cisco の元 Linksys 製品が, Cisco スタイルの running-config を見よう見まねで吐く製品みたいなのもあるけど…。
apcupsd の自動シャットダウン
ビビったって話
USBパススルーには気をつけよう。ビビる手順は以下の通りです
- apcupsd と datadog のテストに使う OS (Ubuntu22.04) は Windows 上の VM で動かしてて、UPS も USB パススルーで繋いだ。
- バッテリ残量 20% で OS の自己シャットダウンは正常に完了した (想定通り)。
- VM ゲスト OS がシャットダウンされたので USB パススルーが解除され、UPS は自動的にホスト OS に接続された(忘れてた)。
- ホストOSは突然バッテリ残量わずかなUPSを認識し、ホストOSはすぐサスペンドした(たぶん?)。
- ディスプレイは消え、UPS の電源も自らオフになり、負荷のために繋いでたLEDライトも消えて部屋ごと暗くなった。VM ゲスト内だけでやってたつもりが突然ホストごと落ち、部屋も暗くなり、俺はジャンプスケアを食らった。
小型UPSの需要
停電の可能性があるようなオフィスとかにサーバを置かない時代なので、小型~中型のUPS市場は縮小していそうだな とか思った。