Homeassistant - USV integrieren
Einleitung
Ich baue relativ viel an meiner Hausverteilung herum und bin auch
sonst jemand, der gerne an der Hauselektrik spielt. Ob es neue
Steckdosen, Individuelle Anschlusslösungen oder anderes ist, bei mir
wird fast wöchentlich die Hausinstallation angepasst.
Da ich aber
nicht nur Technikinteressiert sondern manchmal auch ein wenig dumm bin,
kann es passieren, dass mir hier und da mal der FI auslösen könnte, oder
ein LS den Stromkreis kappt (wenn ich das nicht eh getan habe). Aus
diesem Grund hatte ich mich bereits zu Anfang dazu entschienden, meinen
Virtualisierungsrechner hinter einer Online USV zu betreiben, welche es
mir ermöglicht, die Technik auch ohne Netzspannung für mindestens 30
Minuten zu betreiben. Das ist nicht viel, muss es aber auch garnicht, da
ich keinen Stromausfall überbrücken will (da in diesem Fall ohnehin
nichts funktionieren würde) sondern nur kurze Stromlücken abfedern will
und zuletzt auch die Technik schützen (ein netter Nebeneffekt der USV).
Dementsprechend habe ich mir eine günstige USV Anlage
gekauft, welche meine gesamte Haus IT betreibt (Router,
Virtualisierungshost, NAS, Switch usw.). Dabei ist aber zu sagen, dass
einen USV *NICHT* dazuverleiten sollte, weniger oder gar keine Backups
zu erstellen! – Eine gute Backup Strategie ist das wichtigste, gerade
auch bei Smarthome um im Falle eines Fehlers oder Hardware Ausfall das
System zeitnah wiederherstellen zu können.
Bei mir werden Backups täglich auf einer SSD gesichert, sodass die Daten immer zumindest doppelt verfügbar sind.
Wichtig
ist, dass eine USV nicht unbedingt gegen Datenverlust oder Schäden am
PC schützen soll, eine USV hat als Hauptsinn durchweg die
angeschlossenen Systeme mit Spannung zu versorgen und ggf. ein sicheres
Herunterfahren zu ermöglichen. Daten werden daurch jedoch nicht
geschützt, sobald die USV leer ist und die Systeme nicht
heruntergefahren worden sind, ist auch bei den Geräten das Licht aus.
Daher
zeige ich im folgenden Beitrag, wie man eine USB USV in Homeassistant
integrieren kann und auf die jeweilgen States reagieren kann.
Anbindung zu Homeassistant
In meinem Fall ist die USV per USB Kabel verbunden. Es gibt die
Möglichkeit per NUT (Network UPS Tools) die USV zu integrieren. Dank
breiter Treiberuntersützung sind sehr viele Geräte unterstützt.
In meinem Fall benötige ich den “Standard USB Treiber” – usbhid-ups.
Um
die Integration zu Verwenden benötigen wir zuerst den NUT-Server.
Dieser stellt eine Verbindung zu der USV her und kann die Werte dann
weitergeben.
Dafür installieren wir unter “Settings > Addons > Add-ON Store > “NUT”” das “NUT” Addon.
Vor
dem Start muss auf den reiter “Configuration” geklickt werden um die
notwendigen Daten einzutragen. Hier müsst ihr nach der Dokumentation die
für euch passenden Werte eintragen, die Konfiguration der jeweiligen
USV’s zzgl. der Trteiber findet ihr hier bzw. hier.
Meine Konfiguration mit einer EATON Eclipse ECO 650 sieht folgendermaßen aus:
devices:
- name: myups
driver: usbhid-ups
port: auto
host: a0d7b954-nut ;Diese Einstellung ermöglicht die direkte Kommunikation zwischen Addon und Integration!
config: []
pollfreq: 2
mode: netserver
shutdown_host: false ;Wenn true wird Homeassistant heruntergefahren
users:
- actions: []
instcmds:
- all
password: AUserPassword
username: AUsername
leave_front_door_open: false ;Username and Password is not required - do not use...
Nachdem die Konfiguration erstellt ist, kann das Addon gestartet werden und der zugehgörige Log sollte großteilig Grün sein und ca. so aussehen:
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/00-banner.sh
-----------------------------------------------------------
Add-on: Network UPS Tools
Manage battery backup (UPS) devices
-----------------------------------------------------------
Add-on version: 0.11.0
You are running the latest version of this add-on.
System: Home Assistant OS
Home Assistant Core: << none >>
Home Assistant Supervisor: << none >>
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
cont-init: info: /etc/cont-init.d/00-banner.sh exited 0
cont-init: info: running /etc/cont-init.d/01-log-level.sh
cont-init: info: /etc/cont-init.d/01-log-level.sh exited 0
cont-init: info: running /etc/cont-init.d/02-set-timezone.sh
[18:12:54] INFO: Configuring timezone
cont-init: info: /etc/cont-init.d/02-set-timezone.sh exited 0
cont-init: info: running /etc/cont-init.d/nut.sh
[18:12:54] INFO: Setting mode to netserver...
[18:12:54] INFO: Generating /etc/nut/upsd.users...
[18:12:54] INFO: Configuring user: AUsername
[18:12:55] INFO: Password is NOT in the Have I Been Pwned database! Nice!
[18:12:55] INFO: Configuring Device named myups...
[18:12:55] INFO: Starting the UPS drivers...
Using subdriver: MGE HID 1.40
Network UPS Tools - Generic HID driver 0.41 (2.7.4)
USB communication driver 0.33
Network UPS Tools - UPS driver controller 2.7.4
cont-init: info: /etc/cont-init.d/nut.sh exited 0
cont-init: info: running /etc/cont-init.d/nutclient.sh
cont-init: info: /etc/cont-init.d/nutclient.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun upsd (no readiness notification)
services-up: info: copying legacy longrun upsmon (no readiness notification)
s6-rc: info: service legacy-services successfully started
[18:13:00] INFO: Starting the UPS information server...
0.000000 fopen /run/nut/upsd.pid: No such file or directory
0.000248 listening on 0.0.0.0 port 3493
0.000418 Connected to UPS [myups]: usbhid-ups-myups
[18:13:01] INFO: Starting the UPS monitor and shutdown controller...
0.000000 fopen /run/nut/upsmon.pid: No such file or directory
0.000151 Using power down flag file /etc/killpower
0.000235 UPS: myups@localhost (master) (power value 1)
0.000300 debug level is '1'
0.000473 Init SSL without certificate database
0.001564 Trying to connect to UPS [myups@localhost]
0.499896 User upsmonmaster@127.0.0.1 logged into UPS [myups]
0.002174 Logged into UPS myups@localhost
Wenn das so ähnlich aussieht, dann ist die UPS Konfiguriert und werde können abgefragt werden. Nun muss das Gerät als “Device” hinzugefügt werden, dementsprechend wird als nächstes unter “Settings > Devices & Services > Add-Integration > “Nut” ” die Intergration installiert und danach als Host der vergebene Host bzw. “a0d7b954-nut” angegeben, damit die Integration direkt mit dem UPS Server sprechen kann. Ggf. wird noch Username und Password eingegeben und dann sollte die USV direkt angezeigt werden. Das kann je nach Modell dann folgendermaßen aussehen:
Für den Fall, dass das System zum Beispiel automatisch Herunterfahren soll (und das nicht in der Konfiguration aktiviert ist), kann man nun per Automation den Stand der Batterie abfragen und die Geräte nacheinander (inkl. Homeassistant) herunterfahren lassen oder andere Funktionen auslösen.
Back…