Wir kommen nun zu Teil 2 meiner USV-Serie. Dieser Post beschäftigt sich rein mit der Installation der Network UPS Tools auf Raspbian.
Ich habe für meinen Fall hier auf einen Raspberry Pi 4 Model B in der kleinsten Konfiguration mit 1GB RAM und einer 16GB Micro-SD-Karte zurückgegriffen. Preiswert und trotzdem noch völlig überdimensioniert für mein Vorhaben. Der Raspberry Pi ist in meinem Fall noch einen PoE-HAT ausgestattet welcher es mir ermöglicht den Pi direkt über das Netzwerkkabel mit Strom zu versorgen. Als Betriebssystem hab ich hier Raspbian ohne GUI gewählt, mehr wird hier auch nicht benötigt.
Meine Setup dafür besteht aus
- Raspberry Pi 4 Model B mit 2GB RAM
- Raspberry PoE HAT
- Micro-SD-Karte mit 16GB
- Eaton Ellipse ECO 1200
Installation am Pi
Ausgehend davon das der Pi läuft und via SSH erreichbar ist, hier nun die Konfigurationsschritte für die Network UPS Tools.
Als erstes installieren wir nun mal die benötigten Pakete
sudo apt-get install nut usbutils
Für die Konfiguration müssen wir natürlich unsere USP am Pi anschließen. Wenn das erledigt ist checken wir mal ob wir das USB-Device schon am Pi sehen.
lsusb
Hier sollte ein ähnlicher Output kommen wie bei mir:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0463:ffff MGE UPS Systems UPS
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
So, die UPS wurde erkannt und ist bereit für die Konfiguration. Dafür öffnen wir die Konfigurationsdatei /etc/nut/ups.conf
sudo nano /etc/nut/ups.conf
In dieser Datei müssen wir unsere UPS/USV jetzt hinterlegen.
[ups01] driver = usbhid-ups port = auto vendorid = 0463 desc = "Eaton Ellipse ECO 1200"
Zur Erläuterung:
[ups01] ist der technische Name der UPS. Kann frei gewählt werden, muss aber in den eckigen Klammern stehen.
driver = usbhid-ups gibt an welcher Treiber für die USV verwendet werden soll. Eine vollständige Liste der unterstützen Geräte und deren Treiber findet man in der Hardware Compatibility List von Network-UPS-Tools.
port = auto gibt den Hardware-Port an, bei USB ist das in der Regel auto. Bei einer seriell angebundenen USV benötigt man hier dann den jeweiligen COM-Port
vendorid = 0463 ist bestandteil der USB-Device-ID. Meine UPS hat z.B. die ID 0463:ffff. Die Vendor-ID sind die ersten vier Stellen, also 0463.
desc = „Eaton Ellipse ECO 1200“ ist eine freie textuelle Bezeichnung der jeweiligen UPS.
Ist die Konfiguration erledigt müssen wir den Driver-Controller starten. Das sollte bei der Erstkonfiguration, sofern die Konfiguration ok ist, einwandfrei durchlaufen.
sudo upsdrvctl start
Anschließend können wir uns den Status der UPS mittels dem UPS-Client (upsc) abfragen und wir sollten alle notwendigen Parameter der UPS aufgelistet bekommen.
sudo upsc ups01
Init SSL without certificate database battery.charge: 100 battery.charge.low: 20 battery.runtime: 3000 battery.type: PbAc device.mfr: EATON device.model: Ellipse ECO 1200 device.serial: 000000000 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.parameter.vendorid: 0463 driver.version: 2.7.4 driver.version.data: MGE HID 1.39 driver.version.internal: 0.41 input.transfer.high: 264 input.transfer.low: 184 outlet.1.desc: PowerShare Outlet 1 outlet.1.id: 2 outlet.1.status: on outlet.1.switchable: no outlet.2.desc: PowerShare Outlet 2 outlet.2.id: 3 outlet.2.status: on outlet.2.switchable: no outlet.desc: Main Outlet outlet.id: 1 outlet.power: 25 outlet.switchable: no output.frequency.nominal: 50 output.voltage: 230.0 output.voltage.nominal: 230 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.delay.start: 30 ups.firmware: 02 ups.load: 8 ups.mfr: EATON ups.model: Ellipse ECO 1200 ups.power.nominal: 1200 ups.productid: ffff ups.serial: 000000000 ups.status: OL ups.timer.shutdown: -1 ups.timer.start: -1 ups.vendorid: 0463
Sehr gut, die USP ist erfolgreich am Raspi angeschlossen und die Kommunikation funktioniert. Nun müssen wir den Server noch aktivieren. Hierzu muss zunächste, wer hätte es gedacht, das Config-File /etc/nut/nut.conf adaptiert werden.
sudo nano /etc/nut/nut.conf
Die einzige Änderung hier: der Parameter MODE muss auf netserver gestellt werden.
MODE=netserver
Nächstes File: /etc/nut/upsd.conf muss dahingehend adaptiert werden, dass auch externer Zugrifff von anderen Netzwerkgeräten zugelassen wird.
sudo nano /etc/nut/upsd.conf
Hier im Bereich LISTEN die Server-IP zusätzlich zur localhost-IP zu hinterlegen. Wichtig hier: entweder dem Server eine fixe IP geben oder im jeweiligen DHCP-Server eine fixe Zuweisung hinterlegen.
LISTEN 127.0.0.1 3493 LISTEN 192.168.0.100
Ein Config-File noch dann haben wir es (fast) geschafft. /etc/nut/upsd.user beinhaltet die Definition für verschiedene Benutzer welche sich mit den darin hinterlegten Zugangsdaten am Network-UPS-Server anmelden dürfen.
sudo nano /etc/nut/upsd.user
Hier legen wir nun zumindest einen User mit der Master-Rolle und einen mit einer Slave-Rolle an.
[upsmaster] password = yoursecret upsmon master [upsremote] password = yoursecret upsmon slave
Ups, da war doch noch ein weiters File. In /etc/nut/upsmon.conf muss natürlich noch hinterlegt werden welche UPS gemonitored werden soll.
sudo nano /etc/nut/upsmon.conf
Dazu benötigen wir hier nun schonmal unseren User upsmaster. Wir hängen einfach folgende Zeile an das File an um das Monitoring für unsere UPS zu aktivieren,
MONITOR ups01@localhost 1 upsmaster yoursecret master
Im Anschluss daran starten wir den Service einfach mal neu bzw. können wir auch einen kompletten Reboot durchführen.
sudo systemctl restart nut-server
Wenn wir dann den Status des Services abfragen sollten wir ungefähr folgende Ausgabe bekommen.
● nut-server.service - Network UPS Tools - power devices information server Loaded: loaded (/lib/systemd/system/nut-server.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-05-06 12:49:17 CEST; 2h 43min ago Process: 579 ExecStart=/sbin/upsd (code=exited, status=0/SUCCESS) Main PID: 580 (upsd) Tasks: 1 (limit: 1599) Memory: 1.5M CGroup: /system.slice/nut-server.service └─580 /lib/nut/upsd May 06 12:49:17 raspberrypi systemd[1]: Starting Network UPS Tools - power devices information server… May 06 12:49:17 raspberrypi upsd[579]: fopen /var/run/nut/upsd.pid: No such file or directory May 06 12:49:17 raspberrypi upsd[579]: listening on 192.168.0.100 port 3493 May 06 12:49:17 raspberrypi upsd[579]: listening on 127.0.0.1 port 3493 May 06 12:49:17 raspberrypi upsd[579]: listening on 192.168.0.100 port 3493 May 06 12:49:17 raspberrypi upsd[579]: listening on 127.0.0.1 port 3493 May 06 12:49:17 raspberrypi upsd[579]: Connected to UPS [ups01]: usbhid-ups-ups01 May 06 12:49:17 raspberrypi upsd[579]: Connected to UPS [ups01]: usbhid-ups-ups01 May 06 12:49:17 raspberrypi upsd[580]: Startup successful May 06 12:49:17 raspberrypi systemd[1]: Started Network UPS Tools - power devices information server.
Nice-to-have: NUT-CGI
Mann mit wenigem Aufwand auch eine Weboberfläche zum visuellen Monitoring aktivieren. Das sieht dann ungefähr so aus:

Was brauchen wir dafür? Lediglich die Packages apache2 und nut-cgi
Außerdem müssen wir CGI am Webserver als Modul aktivieren.
sudo apt-get install apache2
sudo apt-get install nut-cgi
sudo a2enmod cgi
In altbekannter Weise müssen wir natürlich wiedermal das eine oder andere Config-File ändern. Wir beginnen mit /etc/nut/hosts.conf
Hier wird hinterlegt welche UPS gemonitored werden soll. Man kann somit hier auch mehrere Geräte von einem Server aus überwachen.
sudo nano /etc/nut/hosts.conf
Hier hinterlegen wir einfach die USV und den Host sowie eine Bezeichnung, welche dann im Web angezeigt wird.
MONITOR ups01@localhost "UPS01: Eaton Ellipse ECO 1200"
Aus Sicherheitsgründen ist der Zugriff via CGI standardmäßig im File /etc/nut/upsset.conf deaktiviert.
sudo nano /etc/nut/upsset.conf
Um den Zugriff zu aktivieren müssen wir den auskommentierten Bereich ### I_HAVE_SECURED_MY_CGI_DIRECTORY die # entfernen.
### I_HAVE_SECURED_MY_CGI_DIRECTORY ###
Das wars. Nun noch den Webserver neu starten und die Tools sollten laufen
systemctl restart apache2
Die URLs zu den unterschiedlichen Weboberflächen
- upsstats.cgi
Übersicht/Statistiken/Einzelwerte/Diagramme
http://your_server_hostname_or_ip/cgi-bin/nut/upsstats.cgi
- upsset.cgi
Oberfläche zum Ändern verschiedener Parameter. Hier wird dann ein User aus unserem Config-File /etc/nut/upsd.user benötigt
http://your_server_hostname_or_ip/cgi-bin/nut/upsset.cgi
Zusammenfassung:
Soweit läuft unser physicher Server nun. Er sollte nun auch die Parameter der UPS in Echtzeit anzeigen. Wenn ihr das testen wollt zieht einfach mal den Netzstecker der USV. Im NUT-CGI sollte die USV dann sofort auf den STATUS ON BATTERY switchen.
Der nächste Post wird sich mit der Anbindung des Network-UPS-Servers an das QNAP-NAS beschäftigen. Lassen wir uns mal überraschen was da noch alles auf mich zukommt.