Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [HowTo] USV: NUT Server auf SBC installieren

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [HowTo] USV: NUT Server auf SBC installieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      klassisch Most Active last edited by Homoran

      Was macht NUT?
      Mit NUT (Network UPS Tools) kann man eine unterbrechungsfreie Stromversorgung (USV, UPS) mit Computern verbinden und Daten von den UPS bekommen.
      Für ioBroker gibt es den nut Adapter von @Apollon77, Github und ioBrokerForum . Dieser Adapter stellt einen NUT-Cient bereit und legt eine Datenstruktur im Objektbereich an.
      Ich nutze den Adapter hauptsächlich zum mitloggen der Daten wie verbleibende Akuulaufzeit und zur Detektion von Netzspannungsausfällen.

      Geeignete UPS (USV)
      Die meisten UPS unterstützen diesen Datenaustausch. Entweder per serieller Schnittstelle (nur noch selten anzutreffen), meist per USB oder die edleren direkt über Ethernet.
      Luxus: UPS mit eingebauter Netzwerkkarte
      Die Luxuslösung sieht dann so aus:
      Nut-integratef-in-UPS.jpg
      Man kann dann z.B. den NAS einige Minuten nach einem Spannungsausfall herunterfahren und die anderen Geräte wie ioBroker, Router, Switches, Homematic weiter betreiben.
      Im ioBroker nut-Adapter trägt man die IP-Adresse der Netzwerkkarte der UPS, deren Port (i.d.R 3493), den Namen der UPS sowie Benutzernamen und Passwort, die auf der Netzwerkkarte der UPS festgelegt sind.
      Ein konkretes Beispiel kann ich hier leider nicht geben, da ich leider eine andere Lösung habe.

      Einfache Lösung mit Haken: NAS als NUT-Server
      Wer über ein geeignetes NAS-Gerät verfügt - in meinem Beispiel Synology - kann das USB-Kabel der UPS direkt dort einstecken und den eingebauten NAS-Server nutzen.
      Nut-via-NAS-1.jpg
      In diesem Fall detektiert die Synology die angeschlossene UPS. Im Menue Hardware & Energie, Tab USV kann man den NUT Server aktivieren und die IP-Adressen der Clients - also auch des ioBroker-Rechners - einstellen.
      Im ioBroker Adapter gibt man die IP Adresse der Synology an, sowie wieder Port 3493. Bei Synology muß der Name der UPS sowie dessen Benutzername ups lauten und das password secret .
      Das funktioniert recht problemlos und stabil, hat aber einen Haken. Wenn die Synology bei einem Stromausfall heruntergefahren wird, stellt auch deren NUT Server den Dienst ein und der ioBroker wird nicht mehr mit den Daten der UPS versorgt. Also gerade dann, wenn es eigentlich am interessantesten ist.
      Um das zu vermeiden, kann man den NUT-Server auf einem (eigenen) Kleinrechner betreiben. Alle anderen Geräte werden dann als Cient betrieben.

      NUT-Server auf einem Kleinrechner (SBC)
      In meinem Fall ist der SBC ein Orange Pi Plus 2e, der für diese Aufgabe zwar viel zu groß ist, aber durch Migration von ioBoker auf einen Windows Rechner frei wurde.
      Nut-via-SBC1.jpg
      Das Aufsetzen des NUT-Server erfolgt auf den Spuren von Haus-Automatisierung und Wiki Ubuntuusers
      Zuerst System aktualisieren bzw. neu aufsetzen mit µSD Karte

      apt update
      apt upgrade
      

      Edit: Den NUT-Rechner mit der USV per USB verbinden. Darauf hat @Homoran hingewiesen.
      Nut installation:

      sudo apt install nut usbutils
      

      Bei älteren Systemen sudo apt-get install nut usbutils

      sudo nano /etc/nut/ups.conf
      

      Einfügen:

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

      Bei Verwendung einer Synology muß [ups] verwendet werden.

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

      Eintragen:

      MODE=netserver
      

      Danach den Dienst starten:

      sudo upsd
      

      Wenn alles funktioniert hat, kann man jetzt Daten ausgeben:

      sudo upsc ups@localhost
      

      Hier muss eine sinnvolle Liste gelistet werden: Beispiel:

      root@opi2e_reserve:~# sudo upsc ups@localhost
      Init SSL without certificate database
      battery.charge: 100
      battery.charge.low: 10
      battery.charge.warning: 20
      battery.mfr.date: CPS
      battery.runtime: 6690
      battery.runtime.low: 300
      battery.type: PbAcid
      battery.voltage: 24.0
      battery.voltage.nominal: 24
      device.mfr: CPS
      device.model: CP1500EPFCLCD
      device.serial: CRABCD12345678
      device.type: ups
      driver.name: usbhid-ups
      driver.parameter.pollfreq: 30
      driver.parameter.pollinterval: 30
      driver.parameter.port: auto
      driver.parameter.synchronous: no
      driver.version: 2.7.4
      driver.version.data: CyberPower HID 0.4
      driver.version.internal: 0.41
      input.transfer.high: 260
      input.transfer.low: 170
      input.voltage: 235.0
      input.voltage.nominal: 230
      output.voltage: 267.0
      ups.beeper.status: enabled
      ups.delay.shutdown: 20
      ups.delay.start: 30
      ups.load: 5
      ups.mfr: CPS
      ups.model: CP1500EPFCLCD
      ups.productid: 0501
      ups.realpower.nominal: 900
      ups.serial: CRABCD12345678
      ups.status: OL
      ups.test.result: No test initiated
      ups.timer.shutdown: -60
      ups.timer.start: -60
      ups.vendorid: 0764
      root@opi2e_reserve:~#
      

      Weiter gehts

      sudo nano /etc/nut/upsd.conf
      

      Eintragen:

      LISTEN 127.0.0.1 3493
      LISTEN 192.168.178.123 3493
      

      Also IP-Adresse der eigenen (Nut-Server) Eth Schnittstelle
      Starten und stoppen, damit das conf-file wieder eingelesen wird

      sudo upsd -c stop
      sudo upsd
      

      Jetzt werden Benutzerkonten angelegt, unter denen man von anderen Geräten auf den NUT-Server zugreifen kann. In meinem Beispiel:

      Drei user werden erstellt
      - upsmaster für den Administrator, der damit aber nichts macht
      - monuser für die Synology
      - upsmon_remote für den ioBroker

      Dazu:

      sudo nano /etc/nut/upsd.users
      

      Eintragen:

      [upsmaster]
              password = irgendwasabergutmerken
              actions = SET
              instcmds = ALL
              upsmon master
      
      [monuser]
      	password = secret
      	upsmon slave
      
      [upsmon_remote]
              password  = secret
              upsmon slave
      

      Wieder übernehmen

      sudo upsd -c stop
      sudo upsd
      

      Jetzt müssen wir das Ganze auch noch reboot-fest machen.

      Bei neueren Linux-Systemen geschieht das über systemd. @Thomas-Braun und @David-G haben diese Anpassung dankenswerterweise ausgearbeitet und getestet (siehe dort mit Nutzung dieser Fundstelle):
      Zuerst mit

      cat /etc/systemd/system/multi-user.target.wants/nut-server.service
      

      prüfen, ob diese Datei vorhanden ist und nut bereits die Vorkehrungen für systemd getroffen hat.
      Falls diese Datei existiert, Mit nano öffnen:

      sudo nano /etc/systemd/system/multi-user.target.wants/nut-server.service
      

      Diese Datei sieht dann erst mal so aus:

      [Unit]
      Description=Network UPS Tools - power devices information server
      After=local-fs.target network.target nut-driver.service
      # We don't Require drivers to be successfully started! This would be
      # a change of behavior compared to init SysV, and could prevent from
      # accessing successfully started, at least to audit a system.
      Wants=nut-driver.service
      Before=nut-monitor.service
      
      [Service]
      ExecStart=/sbin/upsd
      Type=forking
      
      [Install]
      WantedBy=multi-user.target
      
      

      Damit genügend Zeit zur Installation der USB Treiber bleibt, nach der Zeile [Service] noch die Verzögerung

      ExecStartPre=/bin/sleep 30
      

      eintragen und die geänderte Datei abspeichern.
      Die Datei sollte nun so aussehen

      [Unit]
      Description=Network UPS Tools - power devices information server
      After=local-fs.target network.target nut-driver.service
      # We don't Require drivers to be successfully started! This would be
      # a change of behavior compared to init SysV, and could prevent from
      # accessing successfully started, at least to audit a system.
      Wants=nut-driver.service
      Before=nut-monitor.service
      
      [Service]
      ExecStartPre=/bin/sleep 30
      ExecStart=/sbin/upsd
      Type=forking
      
      [Install]
      WantedBy=multi-user.target
      
      

      {
      Hier die Methode für alte Systeme, bei denen die Datei /etc/systemd/system/multi-user.target.wants/nut-server.service nicht existiert. Darf nicht verwendet werden, wenn diese Datei vorhanden ist und die vorherigen Schritte schon ausgeführt wurden

      sudo nano /etc/rc.local
      

      Hier VOR exit=0 einfügen

      #additions  for nut server
      upsdrvctl start
      upsd
      #end additions for nut server
      

      } Ende der Einstellungen für Altsysteme. Bei neueren Sytsemen nicht mehr verwenden]

      Jetzt wird noch der ioBroker Adapter eingestellt. Beispiel

      IP des NUT Servers: 192.168.178.123 #Beispiel
      Port des NUT Servers: 3493
      NUT Name der UPS: ups
      Aktualisierungsintervall 300s
      Username der UPS: upsmon_remote
      Passwort der UPS: secret
      

      Bei der Synology wird eingestellt (Hardware & Energie, Tab USV):
      Anhaken: USV-Unterstützung aktivieren
      Netzwerk-USV-Typ: Synology USV Server
      Netzwerk-USV-Server-IP: 192.168.178.123 #Beispiel

      Die Zeit einstellen, nach der die Synology heruntergefahren werden soll + anhaken.

      NUT-Server und ioBroker auf einem Rechner
      Diese Konfiguration hatte ich nie in Betrieb. Sie müßte aber mit den o.g. Installationsschritten möglich sein. Als IP-Adresse des NUT Servers kann innerhalb des Host Rechners dann localhost oder 127.0.0.1 verwendet werden.
      Nut-on-ioBroker-Computer.jpg

      Edit:
      Welcher Treiber passt zu meiner USV?
      Auswahltabelle Treiber auf der Seite des NUT-Projekts

      M Homoran David G. qqolli gelberlemmy 9 Replies Last reply Reply Quote 9
      • apollon77
        apollon77 last edited by

        @klassisch Geile Anleitung. Danke! Darf ich Die in die Doku übernemen? 🙂

        Die Profi Ergänzung wären dann noch die ups monitor shell skripte die ipBroker triggern ... 8https://github.com/Apollon77/ioBroker.nut#ups-monitor-notifies) nutzt du die auch?

        K 1 Reply Last reply Reply Quote 0
        • K
          klassisch Most Active @apollon77 last edited by

          @apollon77 sagte in [HowTo] USV: NUT Server auf SBC installieren:

          @klassisch Geile Anleitung. Danke! Darf ich Die in die Doku übernemen? 🙂

          Danke für die Blumen, ist ja auch Dein klasse Adapter! Kann man gerne in eine Doku übernehmen. Habe mittlerweile in den Bildern bei den ioBroker Clients noch durchgängig NUT Client/Adapter geschrieben, weil der Client ja in ioBroker nicht als Client, sondern als Adapter sichtbar wird.
          Kann Dir gerne die LibreOffice Datei zukommen lassen, dann kannst Du noch modifizieren.

          @apollon77 sagte in [HowTo] USV: NUT Server auf SBC installieren:

          Die Profi Ergänzung wären dann noch die ups monitor shell skripte die ipBroker triggern ... (https://github.com/Apollon77/ioBroker.nut#ups-monitor-notifies) nutzt du die auch?

          Leider nein. Ich habe die leider erst beim Erstellen dieser Anleitung im Github gesehen. Und da war ich schon mit den Tests "durch". Und ich bin kein Linux Profi und werde es wohl nicht mehr werden.
          Ich hatte vor geraumer Zeit ein, zwei Anläufe genommen, den NUT-Server parallel zum ioBroker auf meinem OPi laufen zu lassen. Leider bin ich damals aber an den Einstellungen, Benutzerkonten etc. gescheitert und wollte auch nichts am stabilen OPi/ioBroker Produktivsystem riskieren. Nach der Migration von ioBroker auf ein Win Notebook habe ich einen OPi frei und konnte risikoarm experimentieren. Habe dazu den OPi komplett platt gemacht und mit einem aktuellen armbian build neu aufgesetzt. Danach hatte er nur noch 1GB statt 2GB RAM. Für den NUT-Server reichen die 1GB locker, aber blöd ist so etwas schon.
          Was bin ich froh, mit dem Produktivsystem auf Windows zu sein. Da ist mir sowas noch nie passiert.

          Habe auch kein Runterfahren des ioBroker implementiert. Ich schicke mir bei Zustandswechseln Mails und logge die Daten. Die Einstiegs-Synology wird nach einigen Minuten in Schlafmodus geschickt, was sie aber leider auch nicht immer zuverlässig tut. Auch so ein mickriges embedded System unter einem Linux-Derivat.
          ioBroker läuft bei mir jetzt auf einem Notebook mit Akkus und wird damt länger durchhalten als alles andere und danach auch von Win ordentlich in den Ruhezustand gebracht.

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Brauche Libre nicht, da die Doku auch "MD" ist übernehme ich es einfach von hier 🙂 Da kann ich viel "copy paste" machen 🙂

            Ich habe eine meienr USVs auch per Synology angebunden, überlege es aber zu ändern. Die Synology schicke ich auch sofort schlafen wenn was ist, aber dann kommen von NUT teilweise keine Daten mehr ... aber die Linux server sollen noch länger laufen 🙂 Also werde ich denke demnächst umstellen ...

            Was meinst Du mit "Nur noch 1GB"?

            K 1 Reply Last reply Reply Quote 0
            • K
              klassisch Most Active @apollon77 last edited by klassisch

              @apollon77 sagte in [HowTo] USV: NUT Server auf SBC installieren:

              Ich habe eine meiner USVs auch per Synology angebunden, überlege es aber zu ändern. Die Synology schicke ich auch sofort schlafen wenn was ist, aber dann kommen von NUT teilweise keine Daten mehr ...

              Wenn die Synology immer wie befohlen runterfahren würde, dann würden danach keine weiteren Daten mehr kommen. Deshalb habe ich jetzt den OPi dafür eingesetzt. Und der läuft immer weiter und gibt die Daten an den ioBroker-Host weiter. Test:
              UPS-Test.JPG

              @apollon77 sagte in [HowTo] USV: NUT Server auf SBC installieren:

              Was meinst Du mit "Nur noch 1GB"?

              1GB RAM verfügbar, statt der tatsächlich montierten und früher auch nutzbaren 2GB: So sieht free -m jetzt aus:

              root@orangepiplus2e-NUT-server:~# free -m
                            total        used        free      shared  buff/cache   available
              Mem:            999          83         721          11         193         881
              Swap:           499           0         499
              root@orangepiplus2e-NUT-server:~#
              

              Und so sieht es am baugleichen OPi, der piVCCU trägt, aus:

              root@opi2e_piVCCU3:~# free -m
                            total        used        free      shared  buff/cache   available
              Mem:           2013         235        1345          24         432        1692
              Swap:          1006           0        1006
              root@opi2e_piVCCU3:~#
              

              999MByte statt 2013MByte total Mem

              1 Reply Last reply Reply Quote 0
              • K
                Kuddel last edited by

                Hallo zusammen,

                ich habe meine Debian VM gestern komplett neu aufgesetzt und NUT installiert.

                Lief einwandfrei. Soeben habe ich ins Log vom ioBroker geschaut und bekomme seit 05:25 Uhr folgende Fehlermeldung:

                2019-07-24 05:25:25.634 - error: nut.0 Err while getting NUT values: DATA-STALE
                

                Was genau hat das zu bedeuten und wie kann ich den Fehler beheben ?

                Ich habe die VM jetzt einmal komplett gebootet.

                Der Adaoter ist jetzt wieder verbunden.

                K 1 Reply Last reply Reply Quote 0
                • K
                  klassisch Most Active @Kuddel last edited by

                  @Kuddel es gibt einige Hinweise dazu im Netz. Manche konnten das Problem durch Änderung von Parametern wie MAXAGE oder der Pollfrequenz beheben. man sollte wohl die USV nicht zu häufig anpingen.
                  Andere konnten die Ursache nicht beheben und haben an den Symptomen angesetzt und NUT zyklisch neue gestartet.
                  Was machen deine Daten im ioBroker? Werden die aktualisiert oder sind Sie eingefroren ?

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kuddel @klassisch last edited by

                    @klassisch

                    mein Poll-Intervall ist aktuell:

                    [ups]
                            driver = "usbhid-ups"
                            port = "auto"
                            desc = "APC Black USB"
                            pollinterval = 30
                    
                    

                    Der Adapter aktualisiert alle 20 Sekunden.

                    Wenn die Fehlermeldung auftritt, bleiben die Daten eingefroren.

                    Generell hätte ich kein Problem per cron den nut regelmäßig neu zu starten.

                    wie genau lauter der nefehl zum stoppen von nut ?

                    /etc/init.d/nut stop ?

                    Soll ich ggf. die Aktualisierungswerte anpassen ?

                    K 1 Reply Last reply Reply Quote 0
                    • K
                      klassisch Most Active @Kuddel last edited by klassisch

                      @Kuddel das hängt von deiner Konfiguration ab. hast du einen eigenen Server aufgesetzt oder sprichst du mit dem ioBroker als Client direkt die UPS an? Ich habe im ioBroker Client die Aktualisierung auf 300 Sekunden eingestellt.
                      Was ich beim Server eingestellt habe weiß ich leider nicht auswendig und kann es jetzt auch nicht nachschauen .
                      Im IoBroker in der Instanzen Ansicht kann man ein zyklisches neustarten des Adapters einstellen.

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kuddel @klassisch last edited by

                        @klassisch NUT läuft auf einer extra VM.

                        An dieser VM hängt die USV per USB.

                        Der ioBroker spricht dann mit der NUT-VM.

                        Wenn ich im Adapter das Intervall auf 300 Sekunden stelle, heißt es dann, dass der ioBroker erst nach 5 Minuten merkt, dass die USV auf Batteriebetrieb umgeschaltet hat?

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          klassisch Most Active @Kuddel last edited by

                          @Kuddel bei mir hat er es bisher immer schneller gemerkt. Ich weiß allerdings nicht, ob das Zufall war oder ob der Server in einem solchen Fall seine Clients außerplanmäßig verständigt. und das vermute ich, weil es bei mir immer recht schnell funktioniert hat. Wenn sich der Status ändert, schicke ich mir per ioBroker eine Mail zu. Die 300 Sekunden sind die Zeit, mit der der ioBroker auf den Server zugreift und die Daten abholt . Also auch die Zeit, mit der er sich den Füllstand von dem Server holt .

                          K 1 Reply Last reply Reply Quote -1
                          • K
                            Kuddel @klassisch last edited by

                            @klassisch dann stelle ich das mal zum test um und prüfe morgen mal, ob die fehler wieder auftauchen.

                            vielen dank bis hier her 🙂

                            K 1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 last edited by

                              Also ein Neustart des Adapters sollte bei der Meldung Nichts bringen, weil scheinbar das selber schon keine Daten vom Gerät bekommt. Das bedeutet diese Meldung, dass die Daten veraltet sind.

                              1 Reply Last reply Reply Quote 0
                              • K
                                klassisch Most Active @Kuddel last edited by

                                @Kuddel gern. Habe gerade gesehen, dass im Eingangspost einiges von meiner Serverkonfiguration aufgelistet ist. Polling ist bei mir auf 30 eingestellt.

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kuddel last edited by

                                  Bis 15:03 Uhr war alles prima.

                                  Seit dem bekomme ich wieder alle 5 Minuten die o.g. Fehlermeldung

                                  1 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 last edited by

                                    Wenn du die nur Tools an der Kommandozeile zum Auslesen nutzt .. was bekommst du sannst an Daten?

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      Kuddel @apollon77 last edited by

                                      @apollon77

                                      root@nut:~# upsc ups@localhost
                                      Init SSL without certificate database
                                      Error while connecting to localhost, disconnect
                                      Error: Server disconnected
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • apollon77
                                        apollon77 last edited by

                                        Dann liegt da dein problem ... irgendwas ist mit dem nut server oder dem Device oder der Verbindung. AM besten da ansetzen. Der Adapter nutzt nur den angegebenen Nut server ... Wenn der Weg ist hat auch der Adapter verloren

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          Kuddel @apollon77 last edited by Kuddel

                                          @apollon77

                                          ich wollte gerade den upsd dienst starten:

                                          root@nut:~# upsd
                                          Network UPS Tools upsd 2.7.4
                                          Fatal error: A previous upsd instance is already running!
                                          Either stop the previous instance first, or use the 'reload' command.
                                          

                                          Der Treiber scheint auch gestartet zu sein

                                          root@nut:~# upsdrvctl start
                                          Network UPS Tools - UPS driver controller 2.7.4
                                          Network UPS Tools - Generic HID driver 0.41 (2.7.4)
                                          USB communication driver 0.33
                                          Duplicate driver instance detected! Terminating other driver!
                                          Using subdriver: APC HID 0.96
                                          

                                          Bleibt wohl nichts anderes übrig. als per Cron den Treiber und den Dienst regelmäßig neuzustarten:

                                          upsdrvctl stop
                                          

                                          Wie stoppe ich upsd ?

                                          upsd -c stop
                                          
                                          apollon77 1 Reply Last reply Reply Quote 0
                                          • apollon77
                                            apollon77 @Kuddel last edited by

                                            @Kuddel Kann ich leider nichts zu sagen. Ich nutze "nut" und nicht "upsd"

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            970
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            nut usv ups
                                            29
                                            233
                                            32887
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo