Einleitung
(Zurück zum Inhaltsverzeichnis)
Die S.USV (hier die advanced) ist relativ einfach auszulesen.
Alle wichtigen Werte kann hier als reinen Zahlenwert bekommen.
Auf die Real Time Clock wird hier nicht weiter eingegangen.
Es handelt sich dabei um eine DS1307, die man leider nicht abschalten kann.
Voraussetzung ist, das SNMP, MRTG und die S.USV bereits eingerichtet sind.
Insgesamt kann man von der S.USV 5 Werte bekommen, die mit der angehängten "0 " als reiner Zahlenwert zurückgegeben wird.
- vin 0 Auslesen der Eingangsspannung
- pwrext 0 Auslesen des externen Stromverbrauchs.
- pwrbat 0 Auslesen des Stromverbrauchs der Batterie
- capbat 0 Auslesen der Batteriespannung und der Restkapazität
Auch hier wird die S.USV alle 5 min mit einem Bash-Script mit Hilfe von Cron ausgelesen und in Einzeldateien in /tmp hinterlegt.
Das Auslesen der S.USV auf dem Client
mittels eines (sehr) einfachen Bashscript
#!/bin/bash
# S.USV Abfrage fuer eine Abfrage ueber cron fuer SNMP
# Incl. Zwischenspeicherung der Ausgabe da die mehrmalige Abfrage meistens ein "unerwartendes" Ergebnis liefert
# 20170423 Neue Version, wurde noetig, nachdem Teile der S.USV nicht mehr von SNMP ausgelesen werden konnten. Weiss der Geier warum;-(
DATEI=/tmp/susv_data.txt
DATEI_0=/tmp/SUSV_VIN.snmp
DATEI_1=/tmp/SUSV_PWRBAT.snmp
DATEI_2=/tmp/SUSV_PWREXT.snmp
DATEI_3=/tmp/SUSV_CAPBAT.snmp
DATEI_4=/tmp/SUSV_UBAT.snmp
#echo $SUSV_DATA
SUSV_VIN='/opt/susvd/susv -vin 0'
SUSV_PWRBAT='/opt/susvd/susv -pwrbat 0'
SUSV_PWREXT='/opt/susvd/susv -pwrext 0'
SUSV_CAPBAT='/opt/susvd/susv -capbat 0'
#echo $SUSV_VIN
#echo $SUSV_PWRBAT
#echo $SUSV_PWREXT
#echo $SUSV_CAPBAT
$SUSV_VIN > $DATEI
$SUSV_PWRBAT >> $DATEI
$SUSV_PWREXT >> $DATEI
$SUSV_CAPBAT >> $DATEI
mapfile -t -n 0 ZEILEN < "$DATEI"
tmp_0=`echo "${ZEILEN[0]} * 1000" | bc`
tmp_1=${ZEILEN[1]}
tmp_2=${ZEILEN[2]}
tmp_3=${ZEILEN[3]}
tmp_4=`echo "${ZEILEN[4]} * 1000" | bc`
#echo $tmp_0
#echo $tmp_1
#echo $tmp_2
#echo $tmp_3
#echo $tmp_4
echo $tmp_0 > $DATEI_0
echo $tmp_1 > $DATEI_1
echo $tmp_2 > $DATEI_2
echo $tmp_3 > $DATEI_3
echo $tmp_4 > $DATEI_4
Alles anzeigen
Die auskommentierten Zeilen sind nur fürs Debuggen.
Das Script ist nicht sehr einfallsreich, funktioniert aber bei mir.
Nicht vergessen ausführbar machen:
Die Aufgabe für CRON
und dem Inhalt:
Das erzeugt dann alle 5 min folgende Dateien in /tmp:
-rw-r--r-- 1 root root 7 Apr 23 01:15 SUSV_CAPBAT.snmp
-rw-r--r-- 1 root root 31 Apr 23 01:15 susv_data.txt
-rw-r--r-- 1 root root 7 Apr 23 01:15 SUSV_PWRBAT.snmp
-rw-r--r-- 1 root root 7 Apr 23 01:15 SUSV_PWREXT.snmp
-rw-r--r-- 1 root root 8 Apr 23 01:15 SUSV_UBAT.snmp
-rw-r--r-- 1 root root 8 Apr 23 01:15 SUSV_VIN.snmp
Alles mit der Endung .snmp wird mittels der nachfolgenden Scripts ausgelesen:
Die Scripte für SNMP
#!/bin/bash
tmp=`cat /tmp/SUSV_UBAT.snmp`
echo .1.3.6.1.2.1.25.1.20
echo gauge
echo $tmp
exit 0
#!/bin/bash
tmp=`cat /tmp/SUSV_PWREXT.snmp`
echo .1.3.6.1.2.1.25.1.24
echo gauge
echo $tmp
exit 0
#!/bin/bash
tmp=`cat /tmp/SUSV_PWRBAT.snmp`
echo .1.3.6.1.2.1.25.1.25
echo gauge
echo $tmp
exit 0
#!/bin/bash
tmp=`cat /tmp/SUSV_CAPBAT.snmp`
echo .1.3.6.1.2.1.25.1.26
echo gauge
echo $tmp
exit 0
Anpassung der snmpd.conf
pass .1.3.6.1.2.1.25.1.23 /bin/bash /usr/local/bin/snmp-susv-vin.sh
pass .1.3.6.1.2.1.25.1.24 /bin/bash /usr/local/bin/snmp-susv-pwrext.sh
pass .1.3.6.1.2.1.25.1.25 /bin/bash /usr/local/bin/snmp-susv-pwrbat.sh
pass .1.3.6.1.2.1.25.1.26 /bin/bash /usr/local/bin/snmp-susv-capbat.sh
pass .1.3.6.1.2.1.25.1.20 /bin/bash /usr/local/bin/snmp-susv-ubat.sh
und den SNMPD neustarten
Nun sollte bei einem Test folgendes herauskommen (IP und "public" anpassen):
pi@raspiXX:~ $ snmpget -v1 -c public 192.168.2.14 .1.3.6.1.2.1.25.1.20
iso.3.6.1.2.1.25.1.20 = Gauge32: 4200
Der Serverteil mit der MRTG-Anpassung
Hier wird die Konfiguration um diesen Teil ergänzt:
#---------------------------------------------------------------
# Raspberry Pi - S.USV U_rasp
#---------------------------------------------------------------
Target[raspi-S.USV_-_U_rasp]: .1.3.6.1.2.1.25.1.23&.1.3.6.1.2.1.25.1.7.0:public@raspi14
Title[raspi-S.USV_-_U_rasp]: raspi14 - S.USV U rasp
PageTop[raspi-S.USV_-_U_rasp]: <H1>raspi14 - S.USV U rasp</H1>
Include: raspi-S.USV_-_U_rasp.inc
#---------------------------------------------------------------
# Raspberry Pi - S.USV I_ext / I_batt
#---------------------------------------------------------------
Target[raspi-S.USV_-_I_ext]: .1.3.6.1.2.1.25.1.24&.1.3.6.1.2.1.25.1.25:public@raspi14
Title[raspi-S.USV_-_I_ext]: raspi14 - S.USV I ext / I batt
PageTop[raspi-S.USV_-_I_ext]: <H1>raspi14 - S.USV I ext / I batt</H1>
Include: raspi-S.USV_-_I_ext.inc
#---------------------------------------------------------------
# Raspberry Pi - S.USV U_batt
#---------------------------------------------------------------
Target[raspi-S.USV_-_U_batt]: .1.3.6.1.2.1.25.1.20&.1.3.6.1.2.1.25.1.7.0:public@raspi14
Title[raspi-S.USV_-_U_batt]: S.USV U_batt for raspi14
PageTop[raspi-S.USV_-_U_batt]: <H1>raspi14 - S.USV U batt</H1>
Include: raspi-S.USV_-_U_batt.inc
#---------------------------------------------------------------
# Raspberry Pi - S.USV CAP_batt
#---------------------------------------------------------------
Target[raspi-S.USV_-_CAP_batt]: .1.3.6.1.2.1.25.1.26&.1.3.6.1.2.1.25.1.7.0:public@raspi14
Title[raspi-S.USV_-_CAP_batt]: raspi14 - S.USV CAP batt
PageTop[raspi-S.USV_-_CAP_batt]: <H1>raspi14 - S.USV CAP batt</H1>
Include: raspi-S.USV_-_CAP_batt.inc
Alles anzeigen
Ich habe hier die Ströme I_ext und I_batt zusammengefasst.
Die Include-Dateien
AbsMax[raspi-S.USV_-_U_rasp]: 6000
MaxBytes1[raspi-S.USV_-_U_rasp]: 4900
MaxBytes2[raspi-S.USV_-_U_rasp]: 5100
Options[raspi-S.USV_-_U_rasp]: gauge, nopercent, unknaszero, noo, pngdate, growright
YLegend[raspi-S.USV_-_U_rasp]: S.USV U rasp (V)
ShortLegend[raspi-S.USV_-_U_rasp]: V
kMG[raspi-S.USV_-_U_rasp]: ,
Factor[raspi-S.USV_-_U_rasp]: 0.001
YTicsFactor[raspi-S.USV_-_U_rasp]: 0.001
LegendI[raspi-S.USV_-_U_rasp]: U rasp (V):
LegendO[raspi-S.USV_-_U_rasp]: U rasp (V):
Legend1[raspi-S.USV_-_U_rasp]: U RASP (V)
Legend2[raspi-S.USV_-_U_rasp]: U RASP (V)
Legend3[raspi-S.USV_-_U_rasp]: max. U RASP (V)
Legend4[raspi-S.USV_-_U_rasp]: max. U RASP (V)
Alles anzeigen
AbsMax[raspi-S.USV_-_I_ext]: 10000
MaxBytes1[raspi-S.USV_-_I_ext]: 1000
MaxBytes2[raspi-S.USV_-_I_ext]: 2000
Options[raspi-S.USV_-_I_ext]: gauge, nopercent, unknaszero, pngdate, growright
YLegend[raspi-S.USV_-_I_ext]: S.USV I ext / I batt (mA)
ShortLegend[raspi-S.USV_-_I_ext]: mA
kMG[raspi-S.USV_-_I_ext]: ,
Factor[raspi-S.USV_-_I_ext]: 1
YTicsFactor[raspi-S.USV_-_I_ext]: 1
LegendI[raspi-S.USV_-_I_ext]: I ext (mA):
LegendO[raspi-S.USV_-_I_ext]: I batt (mA):
Legend1[raspi-S.USV_-_I_ext]: I ext (mA)
Legend2[raspi-S.USV_-_I_ext]: I batt (mA)
Legend3[raspi-S.USV_-_I_ext]: max. I ext (mA)
Legend4[raspi-S.USV_-_I_ext]: max. I batt (mA)
Alles anzeigen
AbsMax[raspi-S.USV_-_U_batt]: 5000
MaxBytes1[raspi-S.USV_-_U_batt]: 3000
MaxBytes2[raspi-S.USV_-_U_batt]: 4200
Options[raspi-S.USV_-_U_batt]: gauge, nopercent, unknaszero, noo, pngdate, growright
YLegend[raspi-S.USV_-_U_batt]: S.USV U batt (V)
ShortLegend[raspi-S.USV_-_U_batt]: V
kMG[raspi-S.USV_-_U_batt]: ,
Factor[raspi-S.USV_-_U_batt]: 0.001
YTicsFactor[raspi-S.USV_-_U_batt]: 0.001
LegendI[raspi-S.USV_-_U_batt]: U batt (V):
LegendO[raspi-S.USV_-_U_batt]: U batt (V):
Legend1[raspi-S.USV_-_U_batt]: U batt (V)
Legend2[raspi-S.USV_-_U_batt]: U batt (V)
Legend3[raspi-S.USV_-_U_batt]: max. U batt (V)
Legend4[raspi-S.USV_-_U_batt]: max. U batt (V)
Alles anzeigen
AbsMax[raspi-S.USV_-_CAP_batt]: 110
MaxBytes1[raspi-S.USV_-_CAP_batt]: 50
MaxBytes2[raspi-S.USV_-_CAP_batt]: 80
Options[raspi-S.USV_-_CAP_batt]: gauge, nopercent, unknaszero, noo, pngdate, growright
YLegend[raspi-S.USV_-_CAP_batt]: S.USV CAP batt (%)
ShortLegend[raspi-S.USV_-_CAP_batt]: %
kMG[raspi-S.USV_-_CAP_batt]: ,
Factor[raspi-S.USV_-_CAP_batt]: 1
YTicsFactor[raspi-S.USV_-_CAP_batt]: 1
LegendI[raspi-S.USV_-_CAP_batt]: CAP batt (%):
LegendO[raspi-S.USV_-_CAP_batt]: CAP batt (%):
Legend1[raspi-S.USV_-_CAP_batt]: CAP batt
Legend2[raspi-S.USV_-_CAP_batt]: CAP batt
Legend3[raspi-S.USV_-_CAP_batt]: max. CAP batt
Legend4[raspi-S.USV_-_CAP_batt]: max. CAP batt
Alles anzeigen
Dann noch ein neues Indexfile erstellen:
Und 10 - 15 min warten bis sich die ersten Diagramme aus der rechten Ecke trauen