Nachdem neulich der FI-Schutzschalter ausgelöst hatte und damit die komplette Wohnung inklusive aller Server aus war habe ich beschlossen dass eine USV her muss. Habe mich für ein günstiges Modell, der APC BackUSV 950 entschieden.
Habe bisher noch nicht herausgefunden wie diese extremen Preisunterschiede bei den USV zustandekommen. Dieses Modell hier ist, was das Gehäuse angeht, ziemlich spartanisch. Keine Anzeige wie lang der Akku noch hält noch sonst irgendwelche Informationen. Lediglich die Betriebsanzeigeleuchte und eine Akku-Tauschen Leuchte. Sämtliche Informationen über das Gerät sind nur über USB abzufragen, was für mich OK ist.
Um sicherzustellen dass die USV tatsächlich erkannt wurde kann man nach dem Einstecken des USB Kabels die Ausgabe von
ansehen. Dort sollte dann sowas stehen wie:
Bus 002 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Wenn nicht hilft manchmal die Ausgabe von dmesg weiter.
Für Windows liefert APC Software für die USV mit, unter Linux benötigt man dafür das Paket apcupsd. Dieses kann man folgendermaßen aus dem Paketquellen installieren:
Konfiguriert wird der Dienst über die Datei /etc/apcupsd/apcupsd.conf.
Folgede Einstellungen habe ich für die Back-UPS 950 an dem Rechner an dem die USV direkt angeschlossen ist verwendet:
UPSNAME Back-UPS 950
UPSCABLE usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 5
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 folgende Zeile ändern:
ISCONFIGURED=yes
Nach der Konfiguration kann der Dienst gestartet werden.
Es gibt eine Web-GUI um den aktuellen Status der USV anzuzeigen. Installiert wird die UI mittels:
Damit das CGI Script ausgeführt werden kann muss das Apache-Modul installiert und aktiviert sein. Dies macht man mit:
Die Web-UI ist anschließend unter http://myserver/cgi-bin/apcupsd/multimon.cgi erreichbar.
Um die USV zu testen gibt es da kleine Kommandozeilenwerkeug apctest. Bevor man das Programm ausführen kann muss allerdings der Dienst angehalten werden.
Das Prorgamm meldet sich mit einer Auswahl an Tests:
2018-06-07 19:18:37 apctest 3.14.10 (13 September 2011) debian
Checking configuration ...
Attached to driver: usb
sharenet.type =
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
Select function number:
Nicht vergessen den Dienst anschließend wieder zu starten.
Wenn man den NIS Server wie in der Konfig weiter oben aktiviert hat (NETSERVER on), kann man die NAS Daten auch mit dem Programm apcaccess abfragen.
Der Befehl liefert folgende Ausgabe:
APC : 001,037,0896
DATE : 2018-06-07 19:30:30 +0200
HOSTNAME : SRV
VERSION : 3.14.10 (13 September 2011) debian
UPSNAME : Back-UPS 950
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE :
STARTTIME: 2018-06-07 19:21:53 +0200
SHARE :
MODEL : Back-UPS XS 950U
STATUS : ONLINE
LINEV : 228.0 Volts
LOADPCT : 12.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 50.4 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 5 Minutes
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 155.0 Volts
HITRANS : 280.0 Volts
ALARMDEL : 30 seconds
BATTV : 13.4 Volts
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : 1A5383P33551
BATTDATE : 2018-03-12
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 480 Watts
FIRMWARE : 925.T2 .I USB FW:T2
END APC : 2018-06-07 19:30:34 +0200
Damit das Programm eine Ausgabe liefert muss der Dienst aktiv sein.
Hat man die Batterie gewechselt, kann man in der USV das Datum des Tauschs eintragen. Dazu den Service stoppen und als root das Programm apctest ausführen. Dann den Punkt 4 auswählen und das neue Datum im Format MM/DD/YYYY eingeben.
Wenn apcupsd eine Änderung an der USV feststellt wird das Script /etc/apcupsd/apccontrol ausgeführt und als Parameter wird der Eventname an das Script übergeben.
Möchte man eigene Scripte zu bestimmten Events ausführen, so legt man im Verzeichnis /etc/apcupsd/ eine Datei mit dem Namen des gewünschten Events an und fügt dort die Anweisungen ein die ausgefürt werden sollen. Für manche Events existieren auch schon Scripte.
Interessant sind z.B. die folgenden Scripte:
- /etc/apcupsd/onbattery
- /etc/apcupsd/offbattery
- /etc/apcupsd/doshutdown
Wenn einer dieser Events eintritt möchte man sicherlich gerne davon erfahren.
Ich habe die Scripte so angepasst dass ich eine Pushmessage aufs Handy bekomme wenn einer der genannten Events eintritt. Dazu habe ich z.B. das onbattery Script folgendermaßen angepasst:
Sehr interessant finde ich die Möglichkeit den Daemon mit einem Daemon auf einem anderen Rechner zu verbinden.
Da da der USV auch noch die Raspberries hängen wäre es natürlich toll wenn diese auch herunterfahren wenn die Kapazität der Akkus bei einem Stromausfall erschöpft ist.
Folgende Einstellungen habe ich in der /etc/apcupsd/apcupsd.conf auf den Raspberrys gesetzt:
Ob Daten von dem entsprechenden Server empfangen werden können kann man wieder mit apcaccess testen.