Die Twitter Anfrage meines lieben Kollegen @vmw_rguske brachte mich dazu mich mal wieder um meine USVs zu kümmern. Dabei muss wohl irgendwas schief gegangen sein, denn keine meiner USVs war mehr vernünftig erreichbar.
Daher setze ich nun die USVs neu auf.
Der Ansatz ist, die APC USVs (XS 1400) mittels je eines Raspberry Pis remote fähig zu machen.

Ich nutze zwei dieser Modelle, da ich sowohl meine Server, als auch mein Netzwerk Rack Puffern möchte. Diese Geräte sind preislich interessant, bieten aber nur USB Anschlüsse. Daher muss für das Remote Management eine Lösung her. Der einfachste Ansatz ist, dies via NUT zu machen, da hier viele USVs unterstützt werden und der Aufsatz einfach geht.
Raspi Vorbereitung
Zunächst wird der Raspi mit dem aktuellen Raspien OS Image bespielt. Die Lite Version reicht hier völlig aus. Die SD Karte wird wie bekannt mittels BalenaEtcher bespielt. Der Raspi steckt in einem selbst gedruckten Gehäuse.

Erste Amtshandlung nach der Installation ist natürlich das Upgrade mittels „sudo apt update;sudo apt -y upgrade“. Danach folgen einige obligatorische Einstellungen:
- SSH aktivieren
- Lokalisation auf de_DE (eigentlich optional, da Zugang via SSH)
- Zeitzone auf Europe/Berlin
- WLAN via dtoverlay=disable-wifi in /boot/config.txt deaktivieren (der Raspi hängt am LAN)
- Fixe IP setzen (DNS Eintrag nicht vergessen, bzw. überprüfen) (/etc/dhcpcd.conf)
- Login via SSH; ändern des standard PW
- Ändern des Hostname (/etc/hostname)
- NTP installieren
- ntp.conf auf lokalen NTP Server umbiegen (/etc/ntp.conf)
- Syslog Meldungen an Loginsight Server schicken (/etc/rsyslog.conf)
NUT Konfigurieren
Nachdem die vorarbeiten erledigt sind, werden die USVs an den Raspi angeschlossen.
In meiner früheren Konfiguration konnte NUT nicht mit zwei identischen USVs umgehen. Ich habe mir vorgenommen, dieses mal mit einem USV Server beide USVs zu verwalten.
Also, erstmal die USVs mittels USB anschliessen und schauen, ob sie gefunden wurden:
root@usv1:/home/pi# lsusb Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Bus 001 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Voilá. Nun nochmals das Kommando im verbose mode, damit man an die Seriennummern kommt, da diese für die Unterscheidung benötigt wird.
root@usv1:/home/pi# lsusb -d 051d:002 -v Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x051d American Power Conversion idProduct 0x0002 Uninterruptible Power Supply bcdDevice 1.06 iManufacturer 3 American Power Conversion iProduct 1 Back-UPS XS 1400U FW:926.T2 .I USB FW:T2 iSerial 2 4B1935P13171 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0022 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 24mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.10 bCountryCode 33 US bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 1028 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0006 1x 6 bytes bInterval 10 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered) Bus 001 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x051d American Power Conversion idProduct 0x0002 Uninterruptible Power Supply bcdDevice 1.06 iManufacturer 3 American Power Conversion iProduct 1 Back-UPS XS 1400U FW:926.T2 .I USB FW:T2 iSerial 2 4B1838P40056 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0022 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 24mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.10 bCountryCode 33 US bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 1028 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0006 1x 6 bytes bInterval 10 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0000 (Bus Powered)
Nun können wir NUT installieren. Für den Raspi existiert bereits ein Paket, daher können wir direkt mit „apt install nut
“ die software installieren.
Die Konfiguration liegt in /etc/nut
.
Es gibt folgende Dateien (Der default Inhalt beschreibt den Zweck und die Syntax genauer):
Datei | Zweck |
nut.conf | Modus von NUT. In unserem Fall: MODE=netserver |
ups.conf | Anbindung der USVs. Näheres hier -> Treiber auswählen (oder Modell) und dem Treiber Link für Details folgen. |
upsd.conf | Zugriffskontrolle für den NUT Deamon |
upsd.users | Definition der User mit Berechtigungsschema für uspsd.conf. Hier können für verschiedene Zwecke unterschiedliche Benutzer angelegt werden. |
upsmon.conf | Konfiguration des UPS Monitor |
upssched.conf | Tasks, die in den verschiedenen USV Stati durchgeführt werden (z.B. Shutdown der Slaves) |
Nachdem die Konfigurationen durchgeführt sind, sind sowohl der Server als auch der Client zu starten (service nut-server start; service nut-client start
).
Mittels upsc
kann die aktuelle Konfiguration und der Zustand der USV geprüft werden.
Der wichtige Schritt ist bei mir, dass die Synology NAS die USV, von der sie Strom bekommt auch erreicht. Hierzu ist folgendes in den Konfigurationsdateien zu definieren:
ups.conf
[ups]
driver = usbhid-ups
port = auto
serial = Seriennummer
desc = "Netzwerk und Storage UPS"
upsd.conf
LISTEN "IP des NUT Servers" 3493
LISTEN 127.0.0.1 3493
upsd.users
[monuser]
password = secret
upsmon master
Synology verlangt eine UPS, die via ups@nutserver erreichbar ist und den user „monuser“ das Passwort „secret“ nutzt. Daher diese fixen Einstellungen. Damit die Synology auch an den Server ran kommt, sind die IP Adressen, auf denen der upsd
startet, zu definieren. Damit der NUT Server auch selbst Maßnahmen ergreifen kann, sind sowohl 127.0.0.1, als auch die öffentliche IP des Systems zu definieren.
Wichtig ist, dass über upssched
die detaillierten Actions definiert werden, die ausgeführt werden, wenn ein Stromausfall eintritt.
Der nächste Schritt ist , den Zustand der USVs via Web sichtbar zu machen und auch die USV Einstellungen via Web ändern zu können.
Comments