Monitoring Die PIUSV+

  • (Zurück zum Inhaltsverzeichnis)
    Einleitung:
    Die PIUSV+ ist eine USV die von der Fa. Ritter Elektronik hergestellt wird.
    Hier geht es darum, die elektrischen Werte der PIUSV+ mittels Diagramme grafisch darzustellen.
    Es lassen sich 5 Werte aus der PIUSV+ auslesen: U_Batt, U_Rasp, I_Rasp, U_USB, und U_Ext.
    Die Diagramme werden alle 5 min automatisch aktualisiert.
    Voraussetzung ist, das SNMP, MRTG und die PIUSV+ bereits eingerichtet sind.
    Der Client ist hier mit einer PIUSV+ ausgerüstet, die mit einem Python-Script ausgelesen wird.
    Die Daten werden dann mittels SNMP über Bash-Scripte abgefragt.
    Ein anderer Raspberry (Server) ruft die Daten mittels MRTG ab und liefert sie über einen Webserver (Apache) aus.


    Das Auslesen der PIUSV+
    Zum Einsatz kommt eine modifizierte Python-Software aus dem Raspberry-Forum:<br />
    Raspberry-Forum: (Beitrag 4) und einer Modifikation (Beitrag 14)
    Hier bereits zusammengefügt:

    Code
    1. sudo vi /usr/local/piusv.py



    Die Modifikation ist der Abschnitt zwischen "# SNMP-Abfrage" und "# Kommandozeilenausgabe komplett"
    Sie bewirkt, das die PIUSV+ nur einmal über den I2C-Bus ausgelesen wird, aber alle benötigten Werte liefert.
    Nun noch ausführbar machen und das Script mit:

    Code
    1. pisuv.py snmp


    aufrufen. Danach sollten sich 5 Dateien in /tmp befinden:

    Code
    1. I_Rasp.snmp
    2. U_Batt.snmp
    3. U_ext.snmp
    4. U_Rasp.snmp
    5. U_USB.snmp


    Die Angaben in diesen Files sind in mV bzw. in mA.
    Der Aufruf "pisuv.py SNMP" gibt diese Werte auch im Terminal aus.


    Der Cronjob
    Dieses Script sollte alle 5 min. aufgerufen werden:

    Code
    1. sudo vi /etc/cron.d/piusv


    Mit diesem Inhalt:

    Code
    1. */5 * * * * root python /usr/local/bin/piusv.py snmp 2>&1


    Die Bash-Scripte für SNMP
    Die Abfrage vom MRTG-Server greift auf die in /tmp abgespeicherten Dateien mittels dieser Bash-Scripte zu:
    Der Vorteil von dieser Vorgehensweise:
    a) Die Werte werden immer zu einem bestimmten Zeitpunkt ermittelt.
    b) Wann die Werte abgefragt werden ist ziemlich egal.
    Nachteil: Wenn die Abfrage der PIUSV+ schiefgeht, ändern sich die Werte nicht mehr.

    Code
    1. sudo vi /usr/local/bin/snmp-piusv_U_Batt.sh


    Shell-Script
    1. #!/bin/bash
    2. tmp=`cat /tmp/U_Batt.snmp`
    3. if test $tmp -gt 5000
    4. then
    5. tmp=5000
    6. fi
    7. echo .1.3.6.1.2.1.25.1.20
    8. echo gauge
    9. echo $tmp
    10. exit 0


    Code
    1. sudo vi /usr/local/bin/snmp-piusv_U_Rasp.sh


    Shell-Script
    1. #!/bin/bash
    2. tmp=`cat /tmp/U_Rasp.snmp`
    3. if test $tmp -gt 6000
    4. then
    5. tmp=6000
    6. fi
    7. echo .1.3.6.1.2.1.25.1.21
    8. echo gauge
    9. echo $tmp
    10. exit 0


    Code
    1. sudo vi /usr/local/bin/snmp-piusv_I_Rasp.sh


    Code
    1. !/bin/bash
    2. tmp=`cat /tmp/I_Rasp.snmp`
    3. if test $tmp -gt 1500
    4. then
    5. tmp=1500
    6. fi
    7. echo .1.3.6.1.2.1.25.1.22
    8. echo gauge
    9. echo $tmp
    10. exit 0


    Code
    1. sudo vi /usr/local/bin/snmp-piusv_U_USB.sh


    Shell-Script
    1. #!/bin/bash
    2. tmp=`cat /tmp/U_USB.snmp`
    3. if test $tmp -gt 6000
    4. then
    5. tmp=6000
    6. fi
    7. echo .1.3.6.1.2.1.25.1.23
    8. echo gauge
    9. echo $tmp
    10. exit 0


    Code
    1. /usr/local/bin/snmp-piusv_U_ext.sh


    Code
    1. !/bin/bash
    2. tmp=`cat /tmp/U_ext.snmp`
    3. if test $tmp -gt 26000
    4. then
    5. tmp=26000
    6. fi
    7. echo .1.3.6.1.2.1.25.1.24
    8. echo gauge
    9. echo $tmp
    10. exit 0


    Es sind hier mehrere "If Then" Abfragen zu sehen, sie begrenzen die $tmp Variable mit einen plausiblen Maximalwert.
    Hier ist es schon vorgekommen, das der Raspberry sich 56A genehmigt hatte und damit das Diagramm von MRTG wegen der dynamischen Anpassung unleserlich gemacht hatte.
    Ich vermute mal, das das Python-Script die PIUSV+ abgefragt hatte, während der Prozessor der PIUSV+ neue Daten in die Register abgelegt hat.


    SNMP-Erweiterung
    In der:

    Code
    1. /etc/snmp/snmpd.conf


    wird der pass-Abschnitt um folgende Einträge ergänzt:

    Code
    1. pass .1.3.6.1.2.1.25.1.20 /bin/sh /usr/local/bin/snmp-piusv_U_Batt.sh
    2. pass .1.3.6.1.2.1.25.1.21 /bin/sh /usr/local/bin/snmp-piusv_U_Rasp.sh
    3. pass .1.3.6.1.2.1.25.1.22 /bin/sh /usr/local/bin/snmp-piusv_I_Rasp.sh
    4. pass .1.3.6.1.2.1.25.1.23 /bin/sh /usr/local/bin/snmp-piusv_U_USB.sh
    5. pass .1.3.6.1.2.1.25.1.24 /bin/sh /usr/local/bin/snmp-piusv_U_ext.sh


    Die OID-Liste befinden sich in einem anderen Beitrag, aber Achtung, es handelt sich zum Teil um selbst definierte OIDs, nicht um offizielle.


    Die Software des Servers (MRTG-Erweiterung)
    Folgende Ergänzung fehlt noch zur in der /etc/mrtg/raspiXX_mrtg.cfg (raspiXX durch eigenen Namen oder IP-Adresse ersetzen).


    Und nun noch die Include-Dateien

    Code
    1. sudo vi /etc/mrtg/raspi_PIUSV_-_U_rasp.inc



    Code
    1. sudo vi /etc/mrtg/raspi_PIUSV_-_I_rasp.inc



    Code
    1. sudo vi /etc/mrtg/raspi_PIUSV_-_U_USB.inc



    Code
    1. sudo vi /etc/mrtg/raspi_PIUSV_-_U_ext.inc



    Code
    1. sudo vi /etc/mrtg/raspi_PIUSV_-_U_batt.inc



    Letzte Anweisung:

    Code
    1. sudo indexmaker --output=/var/www/mrtg/raspiXX/index.html /etc/mrtg/raspiXX_mrtg.cfg


    Und dann ein bißchen (ca. 10min.-15min.) warten...


    Edit: Fiptehler und Links eingefügt

    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wußte das nicht, und hat es dann einfach gemaccht.

    Meine Projekte

    Avatar


    Edited 4 times, last by Jürgen Böhm ().