USV Überwachung per MQTT

Was passiert wenn der Strom weg ist? Nix mehr , oder zumindest nicht mehr viel bzw nicht mehr lange. Da meine Infrastruktur durch mehrere USV abgesichert ist habe ich noch eine gewisse Reserve wenn der Strom weg ist. Diese Zeit nutze ich dazu alle Systeme nach ca 10min herunter zu fahren. da an einer USV mehrere Geräte hängen nutze ich hierzu NUT (https://networkupstools.org/) in einer Client Server Architektur , dazu kommt noch mal ein anderer Artikel.

Da ich aber gerne noch benachrichtigtwerden möchte, wenn Stromausfall ist und wissen möchte wann der Akku der USV getauscht werden muss möchte ich die Daten in OpenHAB (meiner Hausautomatisierung) haben . Das Mittel der Wahl ist hier MQTT. Die Installation finktioniert wie folgt:

sudo apt install python3 python3-pip nut
sudo pip install paho-mqtt
cd /etc
git clone https://github.com/dniklewicz/ups-mqtt.git
cd ups-mqtt
mkdir conf

das ist schon die halbe magie. Jetzt noch die config anpassen mit

nano config.ini 

auf dem Rechner auf dem der UPSD läuft muss noch der neue client noch freigeben werden. Das Skrippt kann man mit

 python3 ups-mqtt.py 

starten. Jetzt sollte am MQTT server etwas ankommen. Ich nehme da zum Testen übrigens den mqtt-explorer.

Wenn das ganze als Service laufen soll verweise ich mal auf diese Seite und packe hier nur die Code Schnipsel ohne viel Erklärung rein

useradd -r -s /bin/false pyserveruser
chown -R pyserveruser:pyserveruser /etc/pyserver

Die Unit datei (/etc/systemd/system/ups-mqtt.service) sieht so aus:

[Unit]
Description=ups2mqtt
After=syslog.target

[Service]
Type=simple
User=pyserveruser
Group=pyserveruser
WorkingDirectory=/etc/ups-mqtt
ExecStart=/etc/ups-mqtt/ups-mqtt.py
SyslogIdentifier=ups2mqtt
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Steuern kann man den Server nun mit den normalen systemd Kommandos:

systemctl status pyserver
systemctl start pyserver
systemctl stop pyserver
systemctl restart pyserver

Seine Logausgaben sieht man so:

journalctl -u pyserver

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.