APC RS 550Gを2台使っていて、そのモニタリングをRaspberry piから行いたくなったので、そのメモ書きです。
lsusbを確認すると、2個、APCのUPSが見えています。
$ lsusb Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Bus 001 Device 009: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
BusとDeivceを-sで指定しつつ、-vで詳細を出力します。
$ lsusb -v -s 001:005 Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Couldn't open device, some information will be missing 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 550G FW:855.L4 -P.A USB FW:L4 -P iSerial 3 J11550xxxxxx bNumConfigurations 1
詳細からiSerialをみて、udevルールを作ります。
$ sudo echo 'KERNEL=="hiddev*", ATTRS{idVendor}=="051d", ATTRS{idProduct}=="0002", ,ATTRS{serial}=="J11550xxxxxx", SYMLINK+="apcups1"' > /etc/udev/rules.d/90-ups.rule $ sudo echo 'KERNEL=="hiddev*", ATTRS{idVendor}=="051d", ATTRS{idProduct}=="0002", ,ATTRS{serial}=="J11550yyyyyy", SYMLINK+="apcups2"' >> /etc/udev/rules.d/90-ups.rule
udevルールを適用しなおすと、/dev/apcups1と2が作成されています。これで/dev/apcups1でアクセスすると必ず”J11550xxxxxx”のUPSの情報が取得できます。
$ sudo udevadm trigger $ ls -al /dev/apc* lrwxrwxrwx 1 root root 11 Mar 13 12:57 /dev/apcups1 -> usb/hiddev1 lrwxrwxrwx 1 root root 11 Mar 13 12:57 /dev/apcups2 -> usb/hiddev0
次に設定ファイルをコピーし、DEVICEをそれぞれ/dev/apcups1と/dev/apcups2を指定します。他差分もdiffの通りにします。
$ sudo cp -p /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd-1.conf $ sudo cp -p /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd-2.conf diff /etc/apcupsd/apcupsd-1.conf /etc/apcupsd/apcupsd-2.conf 18c18 < UPSNAME UPS1 --- > UPSNAME UPS2 90c90 < DEVICE /dev/apcups1 --- > DEVICE /dev/apcups2 220c220 < EVENTSFILE /var/log/apcupsd-1.events --- > EVENTSFILE /var/log/apcupsd-2.events 255c255 < STATFILE /var/log/apcupsd-1.status --- > STATFILE /var/log/apcupsd-2.status
設定ファイルを分けたのでそれぞれのデーモンを起動します。
# apcupsd -f /etc/apcupsd/apcupsd-1.conf # apcupsd -f /etc/apcupsd/apcupsd-2.conf
最後にapcaccessで確認します。シリアルがそれぞれ別になっており、状態が取得できています。
$ apcaccess -f /etc/apcupsd/apcupsd-1.conf APC : 001,036,0863 DATE : 2024-03-13 13:45:10 +0000 HOSTNAME : rp3b-01 VERSION : 3.14.14 (31 May 2016) debian UPSNAME : UPS1 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2024-03-13 13:44:39 +0000 MODEL : APC RS 550G STATUS : ONLINE LINEV : 100.0 Volts LOADPCT : 45.0 Percent BCHARGE : 100.0 Percent : STATFLAG : 0x05000008 SERIALNO : J11550xxxxxx BATTDATE : 2024-01-21 NOMINV : 100 Volts NOMBATTV : 12.0 Volts NOMPOWER : 330 Watts FIRMWARE : 855.L4 -P.A USB FW: END APC : 2024-03-13 13:45:37 +0000
$ apcaccess -f /etc/apcupsd/apcupsd-2.conf APC : 001,036,0866 DATE : 2024-03-13 13:03:30 +0000 HOSTNAME : rp3b-01 VERSION : 3.14.14 (31 May 2016) debian UPSNAME : rp3b-01 CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2024-03-13 12:49:46 +0000 MODEL : APC RS 550G STATUS : ONLINE LINEV : 101.0 Volts LOADPCT : 51.0 Percent BCHARGE : 100.0 Percent : SERIALNO : J11550yyyyyy BATTDATE : 2024-01-21 NOMINV : 100 Volts NOMBATTV : 12.0 Volts NOMPOWER : 330 Watts FIRMWARE : 855.L4 -P.A USB FW: END APC : 2024-03-13 13:03:34 +0000