
ioBroker: USV – Der erste Schritt zur Hochverfügbarkeit
Hallo zusammen,
wie im letzten Video bereits angekündigt, möchte ich mich in der nächsten Zeit mehr mit Hochverfügbarkeit meines Smart Home Systems beschäftigen. Das heißt, dass auch wenn eine Komponente oder gar der Strom mal ausfällt, die Umgebung so gut es geht weiter zur Verfügung steht und sich auch im Falle eines Stromausfalles mindestens sauber beenden kann, damit nach dem Stromausfall alles wieder seinen geregelten Lauf nimmt ohne manuelles Eingreifen.
Was ist eine USV?
Hier kommt als Grundkomponente eine Unterbrechungsfreie Stromversorgung (USV, engl. UPS) ins Spiel. Dies ist eine Art Steckdosenleiste mit integriertem Akku, der also dafür sorgt, dass selbst wenn die Netzspannung verloren geht, wir weiterhin Strom aus der USV beziehen können. Ebenfalls können die meisten Mittelklasse USVs per USB konfiguriert und ausgelesen werden. Dies machen wir uns zur Nutze um im Falle eines knappen Akkus unseren ioBroker sauber herunter zu fahren.Ein kurzer Überblick über die Vor- und Nachteile einer USV.
Vorteile:
- Verhindert Beschädigung von Hardware durch Überspannungsschutz und plötzlichen Stromverlust
- Auch bei Stromausfall werden Prozesse korrekt beendet und können danach ohne sich in potentiell undefinierten Zustand zu befinden (z. B. noch existente PID-Dateien) die Arbeit fortfahren
- Auch bei Stromausfall können noch Batteriebetriebene Komponenten gesteuert werden, vor allem dann wenn auch noch Router und evtl. vorhandene Switches abgesichert sind und somit ein Zugriff durch z. B. Smartphones gewährleistet ist
- Ermöglicht es über einen Stromausfall informiert zu werden
Nachteile:
- Stromverbrauch von ca. 8 - 15 Watt je nach USV
- Akkus sind Verbrauchsgut und müssen ca. alle 3 - 5 Jahre getauscht werden
Ziel dieses Tutorials
In diesem Tutorial werdet ihr am Ende eine Client Server Umgebung haben, zu der mehrere Leistungsabnehmer der USV sich verbinden können. Der Server ist das System, welches via USB mit der USV verbunden ist und so direkten Zugang zu den Informationen besitzt. Ebenfalls werden am Ende dieses Tutorials alle eure Clients als auch der Server bei niedriger Batteriekapazität sauber heruntergefahren. In einem Folgetutorial werden wir noch den nut-Adapter einrichten um die Daten der USV im ioBroker zu visualisieren und über Ausfälle sowie Akkuwechsel benachrichtigt zu werden.In diesem Tutorial gehe ich auf zwei Situationen ein. Die erste ist, dass wir von einer ioBroker Installation innerhalb einer VM bzw. auf einem anderen Server als dem der mit der USV verbunden ist ausgehen. Die zweite Situation ist eine klassische Installation, auf welcher der ioBroker direkt auf dem System läuft und mit der USV verbunden ist. Die beiden Setups unterscheiden sich von der Konfiguration nur marginal. Randnotiz: Für eine richtige Hochverfügbarkeit im Sinne von Übernahme des Systems durch einen anderen Server ist es nötig, dass der ioBroker in einer VM/LXC Container läuft, weshalb ich dieses Szenario hier mit berücksichtige. Jedoch werde ich in folgenden Tutorial noch mehr darauf eingehen und euch bei der Einrichtung unterstützen, weshalb hier auch die klassische Variante gezeigt wird.
Ich nutze in diesem Tutorial eine USV von Eaton, genauer gesagt die Eaton Ellipse ECO 650 USB DIN, welche ich aufgrund des Formfaktors und des lt. Bewertung niedrigen Stromverbrauches (8 Watt) gewählt habe. Jedoch könnt ihr auch beliebig andere und auch höher dimensionierte USVs nutzen, insofern diese via USB angeschlossen werden können. So sind die Produkte von APC auch sehr beliebt wie z. B. das folgende Einsteigermodell mit deutlich mehr Leistung als die Eaton. Hier sollte berücksichtigt werden wie lange ihr das System bei Stromausfall am Leben halten möchtet oder ob es euch nur um sauberes Herunterfahren geht. Einen Rechner findet ihr z. B. auf der APC Webseite.
Wir gehen wie immer von einer ioBroker Installation unter Linux aus. Verbindet euch via ssh
auf euren ioBroker Host, bzw. im VM Fall auf den Host (nicht in die VM).
Der Host wird den nut-Server bereitstellen, während sich die ioBroker VM als Client verbinden wird. Im klassischen Fall laufen Client und Server lokal.
Server Konfiguration
Nun installieren wir den nut-server via1 | sudo apt install nut-server |
1 | lsusb |
1 2 3 4 5 6 7 8 | 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family] Bus 001 Device 003: ID 10c4:8c07 Cygnal Integrated Products, Inc. Bus 001 Device 005: ID 8087:0026 Intel Corp. Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub |
1 | Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS |
1 | sudo nano /etc/nut/ups.conf |
serverups
1 2 3 4 | [serverups] driver = usbhid-ups port = auto desc = "Eeaton UPS" |
desc
könnt ihr ebenfalls beliebig wählen. Habt ihr die Daten eingegeben, speichert die Datei mit Strg + o und schließt diese mittels Strg + x (Angaben für nano
)
Nun testen wir ob die Konfiguration lauffähig ist, mittels:
1 | sudo upsdrvctl start |
1 2 3 4 | 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 Using subdriver: MGE HID 1.39 |
Nun können wir die Server Konfiguration mittels
sudo nano /etc/nut/nut.conf
vornehmen.
Hier fügen wir die folgende Konfiguration hinzu:
1 | MODE=netserver |
standalone
wählen, jedoch schadet es in erster Linie nicht den Network-Server zu nutzen um diesen Später durch Clients zu ergänzen. Strg + o gefolgt von Strg + x zum speichern und schließen.
Nun müssen wir den Zugriff für die externen Clients erlauben, via sudo nano /etc/nut/upsd.conf
. Für die klassische Variante gebt ihr hier
1 | LISTEN 127.0.0.1 |
1 | LISTEN 0.0.0.0 |
sudo nano /etc/nut/upsd.users
Hier fügt ihr die folgenden Nutzer hinzu
1 2 3 4 5 6 7 8 | [monmaster] password = test upsmon master actions = SET instcmds = ALL [monremote] password = test upsmon slave |
monmaster
. Die Passwörter entsprechend eurer Wünsche vergeben. Der erste Nutzer hat alle Rechte, während der zweite Nutzer nur den Status auslesen darf.
Nun folgt der Schritt um auch auf dem Server einen Client zur Überwachung zu Starten. Für die klassiche Variante ist dies bereits der letzte Schritt.
Hierzu editieren wird die Monitoring Konfiguration via sudo nano /etc/nut/upsmon.conf
und fügen folgende Zeile hinzu
1 | MONITOR serverups@localhost 1 monmaster test master |
test
durch euer Passwort des Nutzers nonmaster
ersetzt werden.
Startet jetzt noch den Systemdienst des Servers neu damit die aktuelle Konfiguration sicher angezogen wird, dies geschieht mittels
1 | sudo systemctl restart nut-server |
Client Konfiguration
Nun verbindet euch viassh
zu eurer VM um auch dort den Client zu installieren. Dies geschieht via
1 | sudo apt install nut-client |
sudo nano /etc/nut/nut.conf
und fügt folgende Zeile hinzu
1 | MODE=netclient |
sudo nano /etc/nut/upsmon.conf
und fügen folgende Zeile hinzu
1 | MONITOR serverups@192.168.145.144 1 monremote test slave |
test
durch euer Passwort, diesmal durch das des Nutzers monremote
. Die IP 192.168.145.144
muss durch die IP eures nut-Servers ausgetauscht werden.
Startet nun noch den Client Systemdienst neu via
1 | sudo systemctl restart nut-client |
ssh
mit beiden Geräten (VM + Host), trennt die USV testweise vom Strom und ihr solltet in beiden Fenstern eine Meldung über den geänderten Zustand der USV erhalten.
Nächste Schritte
Im nächsten Tutorial werde ich euch zeigen wie ihr auf dem Client, bzw. im klassischen auf dem Host selbst den nut-Adapter im ioBroker einrichtet, neben dem Polling, Änderungen direkt gepusht bekommt und per E-Mail oder diversen Notifikationsdiensten über Stromausfall, Batteriewechsel sowie Shutdown informiert werdet.Falls Ihr Fragen, Wünsche, Videoideen oder andere Anregungen habt, stellt diese gerne in Form eines Kommentars oder schreibt eine Mail an info@iot-blog.net.
Seit Anfang 2018 Nutzer und Entwickler der Open Source Smart Home Lösung ioBroker, mit dem Ziel, alle gängigen Systeme zentral unter einen Hut zu bekommen. Auch beruflich bin ich im Bereich der Informatik unterwegs. Als promovierter Informatiker arbeite ich derzeit in der Fullstack-Entwicklung für Nintendo sowie leidenschaftlich für ioBroker. Dieses Know-How möchte ich gerne in diesem Blog mit euch teilen.
[…] wichtig: Proxmox, GlusterFS, Postfix, USV. Für die USV wird ist eine Neueinrichtung analog zu diesem Beitrag nötig. Je nachdem ob es ein Nut-Server war oder lediglich ein Client sind unterschiedliche […]
Hallo,
ich wäre sehr interessiert am Folgetutorial zum ioBroker Nut-Adapter. Ist das schon veröffentlicht? Ich kann es leider nicht finden.
VG
Alex