APC USV mit apcupsd unter Ubuntu

Last Updated on: 21st Februar 2022, 12:57 pm

Mich hat es einige Zeit gekostet herauszufinden, welche Kommunikation eigentlich eingestellt sein muss, damit der apcupsd Daemon richtig mit der USV kommuniziert. Damit es bei anderen schneller geht, hier kurz notiert wie ich die Config ans Laufen bekommen habe. Meine USV ist die APC Back-UPS Pro 1500. Angeschlossen ist sie mit dem Kabel Serial to USB direkt an dem Server, den sie schützen soll. Dies lässt sich entsprechend prüfen:

~$ lsusb
Bus 002 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04d9:1400 Holtek Semiconductor, Inc. PS/2 keyboard + mouse controller
Bus 001 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Der erste Eintrag zeigt, die USV ist verbunden.

Installation und Konfiguration des Daemons

sudo apt install apcupsd

Konfiguriert wird der Dienst über die Datei /etc/apcupsd/apcupsd.conf.

Wichtig dabei war bei mir die Einstellung UPSCABLE usb und vor allem das device nicht auf /dev/ttyS0, sondern einfach leer lassen, also einfach DEVICE.

UPSNAME Back-UPS BR1500GI
UPSCABLE usb
UPSTYPE usb
DEVICE
BATTERYLEVEL 25
MINUTES 10
TIMEOUT 0
ANNOY 0
ANNOYDELAY 0
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
STATTIME 0
LOGSTATS off
DATATIME 0
[...]

Anschließend muss man noch in der Datei /etc/default/apcupsd für den automatischen Systemstart auf yes ändern:

# Defaults for apcupsd initscript (unused with systemd as init).
# Set to "yes" to enable startup of apcupsd.
ISCONFIGURED=yes

Jetzt mal den Service starten

sudo systemctl restart apcupsd.service

Ereignisse abfragen:

cat /var/log/apcupsd.events
2019-12-23 17:48:51 +0100 apcupsd 3.14.14 (31 May 2016) debian startup succeeded

Sollte also geklappt haben.

Web-GUI installieren

Voraussetzung für die Web-GUI ist, dass der Apache Webserver installiert wurde. Falls dies nicht der Fall ist, zumindest die Grundinstallation durchführen:

sudo apt install apache2 apache2-doc

Die GUI für den Daemon dann mit

sudo apt install apcupsd-cgi apcupsd-doc 

installieren und direkt Apache anweisen, cgi-Scripte auszuführen:

sudo a2enmod cgi 

Erreichbar ist das Webinterfce dann unter Die Web-UI ist anschließend unter http://127.0.0.1/cgi-bin/apcupsd/multimon.cgi .

Wenn alles geklappt hat, sollte es etwa so aussehen:

beim Klick auf Local Host öffnet sich dann der Detailstatus:

APC USV testen

Für den Test der USV gibt es ein kleines Werkzeug namens apctest. Damit lassen sich Stromausfälle simmulieren und das System prüfen. Dafür muss der Daemon aber gestoppt sein, weil sich Daemon und Testprogramm sonst in die Haare bekommen, wenn sie beide auf die gleiche USV zugreifen wollen.

sudo systemctl stop apcupsd
sudo apctest


2019-12-23 18:37:20 apctest 3.14.14 (31 May 2016) debian
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = USB Cable
mode.type = USB UPS Driver
Setting up the port ...
Doing prep_device() ...

You are using a USB cable type, so I'm entering USB test mode
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.

Getting UPS capabilities...SUCCESS

Please select the function you want to perform.

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

Viel Spaß beim Testen.

Zugriff auf den integrierten Server der USV

Das Tool apcaccess ist dazu gedacht, auf den internen Server der USV zuzugreifen:

~$ apcaccess status
APC      : 001,036,0874
DATE     : 2019-12-23 19:46:45 +0100
HOSTNAME : elmo
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : Back-UPS BR1500GI
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2019-12-23 18:41:15 +0100
MODEL    : Back-UPS RS 1500G
STATUS   : ONLINE
LINEV    : 235.0 Volts
LOADPCT  : 4.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 156.2 Minutes
MBATTCHG : 25 Percent
MINTIMEL : 10 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 176.0 Volts
HITRANS  : 294.0 Volts
ALARMDEL : No alarm
BATTV    : 27.2 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : 4B1937P13686
BATTDATE : 2019-09-11
NOMINV   : 230 Volts
NOMBATTV : 24.0 Volts
NOMPOWER : 865 Watts
FIRMWARE : 878.L5 .I USB FW:L5
END APC  : 2019-12-23 19:47:07 +0100

Ein englische Anleitung, wie man zwei oder mehr PCs steuern kann, findet sich unter https://www.pontikis.net/blog/apc-ups-master-slave-setup-apcupsd