Good point.
Quick install procedure for anyone interested. I use a USB connected APC Smart-UPS 750 (SMT750RMI2U) on a completely patched test "XCP-ng 8.3" server. To install ci packages run:
yum install nut --enablerepo=xcp-ng-ci
Most important, check that your USV device is properly connected and found using
lsusb
it should show something like:
...
Bus 002 Device 002: ID 051d:0003 American Power Conversion UPS
...
Grab details then by:
lsusb -s 002:002 -v
which should give you something like
[12:53 xcp-test ~]# lsusb -s 002:002 -v
Bus 002 Device 002: ID 051d:0003 American Power Conversion UPS
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x051d American Power Conversion
idProduct 0x0003 UPS
bcdDevice 1.06
iManufacturer 1 American Power Conversion
iProduct 2 Smart-UPS 750 FW:UPS 15.1 / ID=18
iSerial 3 SERIALXXXXXXXX
bNumConfigurations 1
...
Remote Wakeup Enabled
Based upon this data you can add this information to your ups.conf
nano /etc/ups/ups.conf
[apc]
driver = "usbhid-ups"
port = "auto"
vendorid = "051D"
productid = "0003"
product = "Smart-UPS 750 FW:UPS 15.1 / ID=18"
serial = "SERIALXXXXXXXX"
vendor = "American Power Conversion"
bus = "002"
Now add users in nano /etc/ups/upsd.users. "upsmon" is for slave connected devices.
[admin]
password = PWXXXXXX
actions = SET FSD
instcmds = ALL
upsmon master
[upsmon]
password = SLAVEPW
upsmon slave
Now add/enable via nano /etc/ups/upsd.conf the required lines. If you want other servers to listen, you need to listen to a non-localhost IP of course.
LISTEN 127.0.0.1 3493
Now enable in nano /etc/ups/upsmon.conf the relevant line:
MONITOR apc@localhost 1 admin PWXXXXXX master
Now restart services:
upsdrvctl start
systemctl start nut-server.service
systemctl start nut-monitor.service
and you should be able to see the USV data by calling:
upsc apc@localhost
It should show:
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.runtime: 3900
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 27.3
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Smart-UPS 750
device.serial: SERIALXXXXX
device.type: ups
driver.name: usbhid-ups
driver.parameter.bus: 002
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.product: Smart-UPS 750 FW:UPS 15.1 / ID=18
driver.parameter.productid: 0003
driver.parameter.serial: SERIALXXXXX
driver.parameter.synchronous: auto
driver.parameter.vendor: American Power Conversion
driver.parameter.vendorid: 051D
driver.version: 2.8.0
driver.version.data: APC HID 0.98
driver.version.internal: 0.47
driver.version.usb: libusb-0.1 (or compat)
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: UPS 15.1 / ID=18
ups.mfr: American Power Conversion
ups.mfr.date: 2015/08/14
ups.model: Smart-UPS 750
ups.productid: 0003
ups.serial: SERIALXXXXX
ups.status: OL
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.vendorid: 051d
HINT#1: I experienced that the bus id of the usb device sometimes changes after reboot. Watch out if you restart the server and adapt your ups.conf accordingly!!!
HINT#2: You need to open firewall port 3493 if you want to access it from a monitor!