Projekt: NUT-Server installieren und konfigurieren

Ich habe nun schon seit längerem eine USV in meinem Rack verbaut. Diese hat zwar munter die ganzen Synology-Diskstations über einen bevorstehenden Stromausfall informiert, nicht aber meine fhem-Installation. Um noch flexibler sein zu können, habe ich also einen separaten USV-Server neben der Synology DS aufgesetzt, welcher auch wirklich 24/7 läuft (denn das tun meine NAS aktuell nicht). In diesem Beitrag zeige ich, wie man einen NUT-Server installiert und konfiguriert, sodass dieser rund um die Uhr läuft. Die anderen Clients können sich dann gegen dieses System verbinden und den Status abfragen.

Was wird benötigt?

  • Ein Raspberry Pi mit Raspbian Stretch
  • Eine USV (Unterbrechungsfreie Stromversorgung) mit USB-Anschluss

Video

Node-Red-Kurs

Befehle

Server konfigurieren

sudo apt-get install nut usbutils
sudo vi /etc/nut/ups.conf

[cyberpower]
    driver = "usbhid-ups"
    port = "auto"
    desc = "CyberPower"
    pollinterval = 15

Diese Datei beschreibt die angeschlossene USV. Also wie sie heißt und was für ein Treiber genutzt wird um mit dieser zu sprechen. Theoretisch könnten hier natürlich mehrere Einträge enthalten sein.

sudo upsdrvctl start
sudo cp /lib/udev/rules.d/62-nut-usbups.rules /etc/udev/rules.d/
sudo reboot

sudo upsdrvctl start
sudo vi /etc/nut/nut.conf

MODE=netserver
sudo upsd
sudo upsc cyberpower@localhost
sudo vi /etc/nut/upsd.conf

LISTEN 127.0.0.1 3493
LISTEN 192.168.178.31 3493

Neustart des Dienstes erforderlich

sudo upsd -c stop
sudo upsd

Benutzer anlegen

sudo vi /etc/nut/upsd.users

[upsmaster]
        password = XWwsQXeC9DdAMD9Rk
        actions = SET
        instcmds = ALL
        upsmon master

[monuser]
    password = secret
    upsmon slave

Synology-NAS

Um ein Synology-NAS mit unserem NUT-Server zu verbinden, muss der Name der USV "ups" sein. Leider kann man in der Oberfläche des DSM nicht konfigurieren, nach welcher USV die Synology fragen soll. Daher passen wir uns diesem Standard an. Hat man kein Synology-NAS welches man an den Server koppeln möchte, nutzt man einfach weiter einen beliebigen Namen.

sudo vi /etc/nut/ups.conf

[ups]
    driver = "usbhid-ups"
    port = "auto"
    desc = "CyberPower"
    pollinterval = 15

(wichtig ist hier der Name "ups" - danach sucht die DiskStation)

in fhem

define USV NUT ups 192.168.178.31
attr USV asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.power,ups.realpower,ups.model
attr USV disable 0
attr USV event-on-change-reading .*
attr USV icon power
attr USV pollState 10
attr USV pollVal 60
attr USV stateFormat load: ups.load %
attr USV userReadings runtime-minutes {ReadingsNum($NAME, "battery.runtime", 0) / 60}

Docker

    nutserver:
        restart: always
        expose:
            - "3493"
        ports:
            - "3493:3493"
        image: instantlinux/nut-upsd
        privileged: true
        environment:
            - NAME=ups
            - DRIVER=usbhid-ups
            - PORT=auto
            - DESCRIPTION=CyberPower
            - API_USER=monuser
            - SERVER=master
            - SECRET=nut-upsd-password
        volumes:
            - ./nutserver/nut-upsd-password:/run/secrets/nut-upsd-password
        networks:
            - fhem-network
define USV NUT ups nutserver

Weitere Clients

sudo apt-get install nut-client
sudo vi /etc/nut/nut.conf

MODE=netclient
sudo vi /etc/nut/upsmon.conf

MONITOR ups@192.168.178.11 1 upsmon secret slave
sudo systemctl restart nut-client.service
sudo systemctl restart nut-monitor.service


upsc -c ups@192.168.178.11

upscmd

upscmd -l ups
upscmd -u upsmaster -p XWwsQXeC9DdAMD9Rk ups beeper.disable

Shutdown-Test

sudo upsmon -c fsd

Zusammenfassung

  • upsd: Stellt die Verbindung zu der USV her, nutzt dafür die Treiber und beantwortet Anfragen der Clients
  • upsmon: UPS monitor, behält den Status der USV im Auge und handelt entsprechend Konfiguration wenn Batterielevel knapp
  • upscmd: Admin-Tool um Befehle zu senden und die USV zu konfigurieren

Newsletter

Trage Dich jetzt in meinen Newsletter ein und genieße dadurch viele Vorteile. Als Dankeschön erhältst Du Zugang zu exklusiven Inhalten!

Über diesen Weg verpasst Du keine Inhalte, bekommst jede Menge wertvolle Tipps und Informationen um Dein Zuhause smarter zu gestalten.

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.