NEWS
[HowTo] USV: NUT Server auf SBC installieren
-
@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 ?mein Poll-Intervall ist aktuell:
[ups] driver = "usbhid-ups" port = "auto" desc = "APC Black USB" pollinterval = 30Der 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 ?
-
mein Poll-Intervall ist aktuell:
[ups] driver = "usbhid-ups" port = "auto" desc = "APC Black USB" pollinterval = 30Der 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 ?
@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. -
@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.@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?
-
@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?
@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 .
-
@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 .
@klassisch dann stelle ich das mal zum test um und prüfe morgen mal, ob die fehler wieder auftauchen.
vielen dank bis hier her :-)
-
@klassisch dann stelle ich das mal zum test um und prüfe morgen mal, ob die fehler wieder auftauchen.
vielen dank bis hier her :-)
-
Wenn du die nur Tools an der Kommandozeile zum Auslesen nutzt .. was bekommst du sannst an Daten?
root@nut:~# upsc ups@localhost Init SSL without certificate database Error while connecting to localhost, disconnect Error: Server disconnected -
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
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.96Bleibt wohl nichts anderes übrig. als per Cron den Treiber und den Dienst regelmäßig neuzustarten:
upsdrvctl stopWie stoppe ich upsd ?
upsd -c stop -
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.96Bleibt wohl nichts anderes übrig. als per Cron den Treiber und den Dienst regelmäßig neuzustarten:
upsdrvctl stopWie stoppe ich upsd ?
upsd -c stop -
Super Anleitung, danke @klassisch und natürlich auch an @apollon77 für den Adapter.
Kleiner Hinweis: Ich musste bei mir die Rechte der Datei/dev/bus/usb/001/005(bzw. entsprechend lt.lsusb) von 664 auf 666 ändern, sowohl in der Container-Installation als auch auf Proxmox pve, sonst gab es eine Fehlermeldung bezüglich Zugriffsrechte.Problem:
Ich hatte zunächst eine Eaton 3S 550 (USB) am Container über Proxmox erfolgreich eingebunden (USB durchgereicht). Dann aber realisiert, die "nut usbutils" besser auf dem Proxmox-Hauptsystem, also der pve, zu installieren, da dann bei längerem Stromausfall direkt der komplette Server (Zotac) heruntergefahren wird.
Allerdings kommt da dann eine Fehlermeldung beim Zugriff vom ioBroker-Container aus:io@ctioBroker:/opt/iobroker/node_modules/iobroker.nut/test$ node test_upslist.js X.X.X.X 3493 eaton There was an error: Error: connect ECONNREFUSED X.X.X.X:3493 Connection closed.Also Zugriffsrecht-Problem auf den Server. Wie kann man das denn lösen? User/Passwort etc. habe ich geprüft.
-
Super Anleitung, danke @klassisch und natürlich auch an @apollon77 für den Adapter.
Kleiner Hinweis: Ich musste bei mir die Rechte der Datei/dev/bus/usb/001/005(bzw. entsprechend lt.lsusb) von 664 auf 666 ändern, sowohl in der Container-Installation als auch auf Proxmox pve, sonst gab es eine Fehlermeldung bezüglich Zugriffsrechte.Problem:
Ich hatte zunächst eine Eaton 3S 550 (USB) am Container über Proxmox erfolgreich eingebunden (USB durchgereicht). Dann aber realisiert, die "nut usbutils" besser auf dem Proxmox-Hauptsystem, also der pve, zu installieren, da dann bei längerem Stromausfall direkt der komplette Server (Zotac) heruntergefahren wird.
Allerdings kommt da dann eine Fehlermeldung beim Zugriff vom ioBroker-Container aus:io@ctioBroker:/opt/iobroker/node_modules/iobroker.nut/test$ node test_upslist.js X.X.X.X 3493 eaton There was an error: Error: connect ECONNREFUSED X.X.X.X:3493 Connection closed.Also Zugriffsrecht-Problem auf den Server. Wie kann man das denn lösen? User/Passwort etc. habe ich geprüft.
@Mic sagte in [HowTo] USV: NUT Server auf SBC installieren:
Also Zugriffsrecht-Problem auf den Server. Wie kann man das denn lösen? User/Passwort etc. habe ich geprüft.
Das Problem saß vor dem Bildschirm :grin: Ich hatte in der
/etc/nut/upsd.confzwar IPs und Port eingetragen, aber die einleitende Kommentierung durch#nicht entfernt. Also alles gut und funktioniert auch im ioBroker. -
@Mic sagte in [HowTo] USV: NUT Server auf SBC installieren:
Also Zugriffsrecht-Problem auf den Server. Wie kann man das denn lösen? User/Passwort etc. habe ich geprüft.
Das Problem saß vor dem Bildschirm :grin: Ich hatte in der
/etc/nut/upsd.confzwar IPs und Port eingetragen, aber die einleitende Kommentierung durch#nicht entfernt. Also alles gut und funktioniert auch im ioBroker. -
Vielleicht hilft es, wenn Du im Script zuerst in das Verzeichnis wechselst. also
cd /etc/nutvorneweg
Vielleicht brauchts auch ein sudo vor den Anweisungen? -
Vielleicht hilft es, wenn Du im Script zuerst in das Verzeichnis wechselst. also
cd /etc/nutvorneweg
Vielleicht brauchts auch ein sudo vor den Anweisungen?@klassisch habe beide Tipps mal eingebaut.
Ich melde mich...
-
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:

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.

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.

Das Aufsetzen des NUT-Server erfolgt auf den Spuren von Haus-Automatisierung und Wiki Ubuntuusers
Zuerst System aktualisieren bzw. neu aufsetzen mit µSD Karteapt update apt upgradeEdit: Den NUT-Rechner mit der USV per USB verbinden. Darauf hat @Homoran hingewiesen.
Nut installation:sudo apt install nut usbutilsBei älteren Systemen sudo apt-get install nut usbutils
sudo nano /etc/nut/ups.confEinfügen:
[ups] driver = "usbhid-ups" port = "auto" desc = "CyberPower" pollinterval = 30Bei Verwendung einer Synology muß [ups] verwendet werden.
Sudo rebootsudo upsdrvctl start sudo cp /lib/udev/rules.d/62-nut-usbups.rules /etc/udev/rules.d/ sudo rebootsudo upsdrvctl start sudo nano /etc/nut/nut.confEintragen:
MODE=netserverDanach den Dienst starten:
sudo upsdWenn alles funktioniert hat, kann man jetzt Daten ausgeben:
sudo upsc ups@localhostHier 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.confEintragen:
LISTEN 127.0.0.1 3493 LISTEN 192.168.178.123 3493Also IP-Adresse der eigenen (Nut-Server) Eth Schnittstelle
Starten und stoppen, damit das conf-file wieder eingelesen wirdsudo upsd -c stop sudo upsdJetzt 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 ioBrokerDazu:
sudo nano /etc/nut/upsd.usersEintragen:
[upsmaster] password = irgendwasabergutmerken actions = SET instcmds = ALL upsmon master [monuser] password = secret upsmon slave [upsmon_remote] password = secret upsmon slaveWieder übernehmen
sudo upsd -c stop sudo upsdJetzt 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 mitcat /etc/systemd/system/multi-user.target.wants/nut-server.serviceprü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.serviceDiese 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.targetDamit genügend Zeit zur Installation der USB Treiber bleibt, nach der Zeile [Service] noch die Verzögerung
ExecStartPre=/bin/sleep 30eintragen 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 wurdensudo nano /etc/rc.localHier 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: secretBei 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 #BeispielDie 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.

Edit:
Welcher Treiber passt zu meiner USV?
Auswahltabelle Treiber auf der Seite des NUT-ProjektsIch versuche schon seit zwei Tagen eine 2. UPS ins iobroker zu integrieren.
UPS1 am IoBroker läuft auf localhost "192.168.0.230" (funktioniert)
erich@SmartHome:/opt/iobroker/node_modules/iobroker.nut/test$ service nut-client status ● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 11:07:58 CEST; 2h 17min ago Process: 8139 ExecStart=/sbin/upsmon (code=exited, status=0/SUCCESS) Main PID: 8148 (upsmon) Tasks: 2 (limit: 4915) CGroup: /system.slice/nut-monitor.service ├─8145 /lib/nut/upsmon └─8148 /lib/nut/upsmon Mai 07 11:07:58 SmartHome systemd[1]: Started Network UPS Tools - power device monitor and shutdown contr Mai 07 12:15:58 SmartHome upsmon[8148]: Poll UPS [powerwalkerWZ@192.168.0.246] failed - Server disconnect Mai 07 12:15:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 lost Mai 07 12:16:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 established Mai 07 12:19:58 SmartHome upsmon[8148]: Poll UPS [powerwalkerWZ@192.168.0.246] failed - Server disconnect Mai 07 12:19:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 lost Mai 07 12:20:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 established Mai 07 13:01:58 SmartHome upsmon[8148]: Poll UPS [powerwalkerWZ@192.168.0.246] failed - Server disconnect Mai 07 13:01:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 lost Mai 07 13:02:58 SmartHome upsmon[8148]: Communications with UPS powerwalkerWZ@192.168.0.246 establishedUPS2 läuft auf einem Raspi 192.168.0.246 (funktioniert local, aber in der 2. Instanz vom Adapter wird keine Verbindung aufgebaut).
pi@NUTServer:~ $ service nut-server status ● 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 Thu 2020-05-07 12:01:56 BST; 21min ago Process: 501 ExecStart=/sbin/upsd (code=exited, status=0/SUCCESS) Main PID: 504 (upsd) Tasks: 1 (limit: 2200) Memory: 1.5M CGroup: /system.slice/nut-server.service └─504 /lib/nut/upsd Mai 07 12:01:56 NUTServer upsd[501]: listening on 127.0.0.1 port 3493 Mai 07 12:01:56 NUTServer upsd[501]: listening on 192.168.0.246 port 3493 Mai 07 12:01:56 NUTServer upsd[501]: Connected to UPS [powerwalkerWZ]: usbhid-ups-powerwalkerWZ Mai 07 12:01:56 NUTServer upsd[501]: listening on 127.0.0.1 port 3493 Mai 07 12:01:56 NUTServer upsd[501]: Connected to UPS [powerwalkerWZ]: usbhid-ups-powerwalkerWZ Mai 07 12:01:56 NUTServer systemd[1]: Started Network UPS Tools - power devices information server. Mai 07 12:01:56 NUTServer upsd[504]: Startup successful Mai 07 12:01:56 NUTServer upsd[504]: User upsmaster@127.0.0.1 logged into UPS [powerwalkerWZ] Mai 07 12:02:58 NUTServer upsd[504]: User upsmaster@192.168.0.230 logged into UPS [powerwalkerWZ] Mai 07 12:04:05 NUTServer upsd[504]: User upsmaster@127.0.0.1 logged into UPS [powerwalkerWZ]Hat schon jemand 2 UPS in IoBroker integriert, oder kann mir wer weiterhelfen?
