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@localhostWenn 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…
