+ Antworten
Ergebnis 1 bis 1 von 1
  1. #1
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Lightbulb APC USV-Daten einlesen

    Hallo,

    In Lübeck gibt es des öfteren Stromschwankungen, die dann bei ungesicherten Servern den einen oder anderen Absturz verursachen. Mein Bruder hat in seinem Ladengeschäft daher seine IT-Anlage ordentlich mit einer USV gesichert. Bei der USV handelt es sich um eine APC Smart-UPS SC450 RM. Da ich natürlich diese Daten gerne in IP-Symcon haben wollte um Graphen zu erstellen habe ich ein Script geschrieben, das die Logdatei des beigelegten Programmes APC PowerChute Business Edition auswertet. Da die USV zu den kleineren Varianten gehört werden einige Felder mit N/A in die Logdatei geschrieben. Die habe ich daher auskommentiert, aber für die Benutzer mit einer größeren Variante mit reingestellt.

    Eine passende Seite fürs WebFront gibt es unter http://www.ip-symcon.de/forum/f56/ap...webfront-6839/ zu sehen.
    Für die V1 hat gwanjek unter http://www.ip-symcon.de/forum/f7/usv...einlesen-4575/ ein Script mit identischer Funktionalität bereit gestellt.

    PHP-Code:
    <?
    /*
    Einlesen der Logfile aus APC PowerChute Business Edition
    ========================================================

    Anleitung:
    - LogFile und LogInterval anpassen
    - Bei Bedarf auskommentierte Zeilen aktivieren und Positionen anpassen
    - Execute drücken, um den automatischen Timer zu erstellen
    */

    $LogFile     "C:\\Programme\\APC\\PowerChute Business Edition\\agent\\DataLog";
    $LogInterval 20;    // Minuten (Standard: 20)

    if(file_exists($LogFile))
    {
        
    $lines file($LogFile);
        
    $data explode("\t"$lines[count($lines) - 1]);
        
    $ts strtotime($data[0]);

        if(
    date("d.m.Y H:i:s"$ts) != GetValueString(CreateVariableByName($IPS_SELF"Last Time"3)))
        {
            
    SetValueString(CreateVariableByName($IPS_SELF"Last Time"3), date("d.m.Y H:i:s"$ts));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Maximum Line Voltage"2), strToFloat($data[1]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Minimum Line Voltage"2), strToFloat($data[2]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Line Voltage"2), strToFloat($data[3]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Output Voltage"2), strToFloat($data[4]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Battery Voltage"2), strToFloat($data[5]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"Output Frequency"2), strToFloat($data[6]));
            
    SetValueFloat(CreateVariableByName($IPS_SELF"UPS Load"2), strToFloat($data[7]));
            
    //SetValueFloat(CreateVariableByName($IPS_SELF, "UPS Internal Temperature", 2), strToFloat($data[8]));
            //SetValueFloat(CreateVariableByName($IPS_SELF, "Probe 1 Temperature", 2), strToFloat($data[8]));
            //SetValueFloat(CreateVariableByName($IPS_SELF, "Probe 1 Humidity", 2), strToFloat($data[8]));
            //SetValueFloat(CreateVariableByName($IPS_SELF, "Probe 2 Temperature", 2), strToFloat($data[8]));
            //SetValueFloat(CreateVariableByName($IPS_SELF, "Probe 2 Humidity", 2), strToFloat($data[8]));
        
    }
        
        
    // Offset berechnen und Timer stellen
       
    IPS_SetScriptTimer($IPS_SELF, ($ts $LogInterval 60 10) - time());
    }

    function 
    strToFloat($value)
    {
        return (float)(
    str_replace(",""."$value));
    }

    function 
    CreateVariableByName($id$name$type)
    {
       global 
    $IPS_SELF;
       
    $vid = @IPS_GetVariableIDByName($name$id);
       if(
    $vid===false) {
          
    $vid IPS_CreateVariable($type);
          
    IPS_SetParent($vid$id);
          
    IPS_SetName($vid$name);
          
    IPS_SetInfo($vid"This Variable was created by Script #$IPS_SELF");
       }
       return 
    $vid;
    }
    ?>
    Geändert von Horst (12.03.09 um 22:23 Uhr)
    Horst

Ähnliche Themen

  1. Neues Interface FHT 8I
    Von RWN im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 108
    Letzter Beitrag: 11.01.12, 00:27
  2. USV-Datenlog in IPS einlesen
    Von gwanjek im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 15
    Letzter Beitrag: 07.06.10, 12:32
  3. Daten über Com-Port einlesen
    Von computerpap im Forum Allgemeine Diskussion
    Antworten: 40
    Letzter Beitrag: 25.12.09, 12:43
  4. IPS-Werte via SNMP-Protokoll ermitteln
    Von winni im Forum Allgemeine Diskussion
    Antworten: 6
    Letzter Beitrag: 31.05.09, 12:54
  5. APC USV im WebFront
    Von Horst im Forum WebFront
    Antworten: 0
    Letzter Beitrag: 12.03.09, 21:45