+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    Oct 2008
    Beiträge
    1,033

    Standard Kennt jemand NUT und hat das in IPS?

    Hallo,

    ich habe schwer mit Stromausfällen zu kämpfen, dia auch mal deutlich über eine Stunde dauern und daher die Geräte "geordnet" in einer bestimmten Reihenfolge runter gefahren werden müssen.

    Bezüglich des NAS weiss ich, dass dieses "NUT" "spricht" und darüber wohl gesteuert werden kann.

    Hat damit jemand schon rumgebastelt?

    Danke
    jwka

  2. #2
    Registriert seit
    Feb 2009
    Ort
    Hamburg
    Beiträge
    2,094

    Moin...

    hat Dein NAS eine Weboberfläche!? Würde mir mal den Quelltext anschauen bzw. die Befehle mitlesen wenn Du den Shutdown Button drückst!

    Bei meinem HP NAS muss ich nur ein http Befehl senden und es fährt runter!! Ohne Login etc....

    Checken ob es runtergefahren ist mach ich über ein Ping der IP!

    Gruß,

    Peter
    -MacMini(2011) =>Parallels 11=>Win7, FB7390, EIB-KNX, DMX-ArtNet, 2x EM24 DIN, SONOS ZP100/120/Play:1/Play:5/Sub, 1Wire=>Wiregate, xbee=>ROOMBA, Dreambox, DENON 2313, 8x Philips HUE -

  3. #3
    Registriert seit
    Oct 2008
    Beiträge
    1,033

    Hi Peter,

    macht Sinn und ich werde das mal checken. Via Weboberfläche muss ich aber noch ok-button etc. drücken.

    Wäre natürlich schon interessant, ob es auch auf einzelne Befehle direkt reagiert (wie Deins). Ich habe ein Netgear ReadyNas Duo. Ich werd' mal suchen gehen.

    Danke auf jeden Fall für den Tip!

    NUT Know How wäre aber trotzdem interessant, weil darüber auch das UPS abgefragt werden kann, und sich damit eine bessere "Load Balancing" Steurung ergeben könnte.

    jwka

  4. #4
    Registriert seit
    Feb 2006
    Ort
    Riyadh, KSA
    Beiträge
    262

    Zitat Zitat von jwka Beitrag anzeigen
    NUT Know How wäre aber trotzdem interessant, weil darüber auch das UPS abgefragt werden kann, und sich damit eine bessere "Load Balancing" Steurung ergeben könnte.
    Hallo jwka,

    Bist Du da inzwischen weiter gekommen?

    Ich frage bei meinem APC UPS den Status über NUT aus. Bei den meisten Komponenten benutze ich SNMP aber beim UPS, der nur USB Anschluss hat, musste ich mich mit NUT anfreunden. Ist jedoch relativ einfach. Du musst in IPS ein Client Socket auf Port 3493 (falls dein UPS oder NAS den standard NUT port nutzten) einrichten, darauf die NUT Befehle senden und dann mit einer Register Variable die Antworten abfangen.

    Eine ausführliche Beschreibung des NUT protocols findest Du hier: Network UPS Tools - Documentation. Ich frage nur die Werte von Variablen ab aber steuern ist sicherlich auch möglich.

    Gruß,

    Zapp

    Anhang 10784
    Geändert von zapp (28.01.11 um 00:26 Uhr)

  5. #5
    Registriert seit
    Oct 2008
    Beiträge
    1,033

    Es steht noch auf der schier unendlich langen Liste meiner ToDo's.

    Daher hoffte ich ja hier auf eine fertige Lösung ...

    Die Seite mit dem Protokoll etc. hatte ich auch schon gefunden, aber das ist ja ert nur die halbe Miete. Ausprobieren ist das zeitraubende.

    Könntest Du vielleicht Dein Script einstellen? Das würde mir schonmal die Bürde abnehmen, die Befehle raus zu suchen, die ich brauche, denn in Deinem Screenshot habe ich gesehen, dass Du auch das abfragst, was ich gerne tun würde.

    Steuerst Du auch in abhägigkeit des Batteriestands Geräte? Bei mir ist es z.B. so, dass ich in meiner "Infrastruktur" ein paar Server auf Notebooks betreibe und die würde ich bei Batteriestand "X" schonmal vom Netz nehmen (ich denke da an bistabile Aktoren), um den Stand-PCs im Falle des Falls ein paar Minuten mehr Zeit zu geben.

    Hintergrund ist, dass in meinem Gebiet Stromausfälle an der Tagesordnung sind und das die auch schonmal zwei Stunden dauern könnenen - ober, was fast schlimmer ist, 5 oder sechs mal 10-15 min., sodass sich der Ladezustand nicht wirklich weit genug aufbauen kann.

    Danke
    jwka

  6. #6
    Registriert seit
    Feb 2006
    Ort
    Riyadh, KSA
    Beiträge
    262

    Zitat Zitat von jwka Beitrag anzeigen
    Könntest Du vielleicht Dein Script einstellen? Das würde mir schonmal die Bürde abnehmen, die Befehle raus zu suchen, die ich brauche, denn in Deinem Screenshot habe ich gesehen, dass Du auch das abfragst, was ich gerne tun würde.
    Klar. Hier sind die Scripts.

    Der NUT Server läuft bei mir auf meinem QNAP NAS (ist auf dem NAS vorinstalliert). Der kommuniziert mit dem UPS und hat schon standardmässig eine Shutdown funktion integriert. Es erlaubt auch die Einrichtung von NUT Clients, an die er informationen vom UPS weiterleiten kann. Zum Runterfahren des PCs, auf dem IPS läuft, nutze ich WinNUT. Also keine direkte steuerung von IPS aus. Ist sicherlich möglich, aber WinNUT macht das ganz gut.

    RequestNUT script (Alle paar Minuten via Timer ausführen). Instanz IDs ersetzen.
    PHP-Code:
    // NUT device key in den NUT Server Settings
    $nut_device_key "qnapups";  

    // Beispiel (andere Variablen auf http://www.networkupstools.org/docs/developer-guide.chunked/apas01.html)
    requestNUTVar("ups.status");
    requestNUTVar("battery.charge");

    function 
    requestNUTVar($data_request) {
        global 
    $nut_device_key;

        
    $TX_BUF "GET VAR " $nut_device_key " " $data_request ."\n"

         
    // send request to NUT server
         
    $nut_response CSCK_SendText(22823 /*[UPS NUT]*/ $TX_BUF);

        
    IPS_Sleep(200);

    Vorher musst du ein ClientSocket in IPS einrichten mit der IP deines NUT Servers (bei mir der NAS) und port 3493. Dann eine RegisterVariable einrichten mit dem Client Socket als "Parent Instanz" und folgendem Target Script (bei mir heist der GetNUTResponse). Das Script richtet automatisch die Variablen in IPS ein, wenn diese nicht existieren.

    PHP-Code:
    $NUT_Response trim($IPS_VALUE);

    decodeNUTVar($NUT_Response);

    function 
    decodeNUTVar($NUT_Response) { 
        
    // use regex to locate the requested data

        // for numeric data
        
    if (preg_match("/^VAR \S+ (\S+) \"(\d*\.?\d*)\"$/"$NUT_Response$scratch) != 0) { // from cacti-nut by Eric A. Hall
          
    $UPSvarName  $scratch[1];
          
    $UPSvarValue trim($scratch[2]);
          
    // create or fill variable
          
    $UPSvarID = @IPS_GetVariableIDByName($UPSvarName35113  /*[UPS]*/);
          if(
    $UPSvarID === false)
            {
                
    // The variable does not exist. Create and fill it.
                
    $UPSvarID IPS_CreateVariable(1);  // Create new Integer Variable
                
    IPS_SetParent ($UPSvarID35113  /*[UPS]*/);
                
    IPS_SetName($UPSvarID"$UPSvarName");
                
    SetValue($UPSvarID$UPSvarValue);
            } else {
                   
    // The Variable already exists. Just update it.
                 
    SetValue($UPSvarID$UPSvarValue);
            }
        }
        
    // if not numeric
        
    elseif (strpos($NUT_Response"ERR") === false) {
          
    preg_match("/^VAR \S+ (\S+) \"(.*)\"$/"$NUT_Response$scratch);

          
    $UPSvarName  $scratch[1];
          
    $response trim($scratch[2]);
          
    $UPSvarValue getUPSStatus($response);

          
    // create or fill variable
          
    $UPSvarID = @IPS_GetVariableIDByName($UPSvarName35113  /*[UPS]*/);
          if(
    $UPSvarID === false)
            {
                
    // The variable does not exist. Create and fill it.
                
    $UPSvarID IPS_CreateVariable(3);  // Create new String Variable
                
    IPS_SetParent ($UPSvarID35113  /*[UPS]*/);
                
    IPS_SetName($UPSvarID"$UPSvarName");
                
    SetValue($UPSvarID$UPSvarValue);
            } else {
                
    // The Variable already exists. Just update it.
                 
    SetValue($UPSvarID$UPSvarValue);
            }
        }
       
    // if error
        
    else {
           
    $text explode(" "$NUT_Response);
           
    $NUTError "ERROR: $text[1]\n";  // \"$data_request\"
           
    IPS_LogMessage("NUT Response""$NUTError");
        }

    function 
    getUPSStatus($status) {
       
    //Possible values for status (NUT protocol):
        
    $replace = array(    'OL'         => 'On line (mains is present)',
                    
    'OB'         => 'On battery (mains is not present)',
                    
    'LB'         => 'Low battery',
                    
    'RB'         => 'The battery needs to be replaced',
                    
    'CHRG'     => 'The battery is charging',
                    
    'DISCHRG'=> 'The battery is discharging (inverter is providing load power)',
                    
    'BYPASS' => 'UPS bypass circuit is active - no battery protection is available',
                    
    'CAL'     => 'UPS is currently performing runtime calibration (on battery)',
                    
    'OFF'     => 'UPS is offline and is not supplying power to the load',
                    
    'OVER'     => 'UPS is overloaded',
                    
    'TRIM'     => 'UPS is trimming incoming voltage (called "buck" in some hardware)',
                    
    'BOOST'     => 'UPS is boosting incoming voltage'
        
    );
        return 
    str_replace_assoc($replace$status);
    }

    function 
    str_replace_assoc(array $replace$subject) {
       return 
    str_replace(array_keys($replace), array_values($replace), $subject);

    Zitat Zitat von jwka Beitrag anzeigen
    Steuerst Du auch in abhägigkeit des Batteriestands Geräte?
    Zur Zeit nicht über IPS aber mit WinNUT. Wenn ich mehr Zeit habe, mach ich das mal über IPS.

    Zitat Zitat von jwka Beitrag anzeigen
    Hintergrund ist, dass in meinem Gebiet Stromausfälle an der Tagesordnung sind und das die auch schonmal zwei Stunden dauern könnenen - ober, was fast schlimmer ist, 5 oder sechs mal 10-15 min., sodass sich der Ladezustand nicht wirklich weit genug aufbauen kann.
    Geht mir auch so. Deshalb habe ich mir das UPS geholt. Ausserdem habe ich hier im Haus ein sehr altes und schlechtes Stromnetzwerk (Ist ein Miethaus ) und da gibt es regelmässig Probleme. Tat mir einfach weh, NAS und PC 3 mal hintereinander abrupt stoppen und wieder starten zu sehen.

    Gruss,

    Zapp
    Geändert von zapp (29.01.11 um 23:49 Uhr)

  7. #7
    Registriert seit
    Aug 2011
    Ort
    Sachsen
    Beiträge
    883

    Zitat Zitat von zapp Beitrag anzeigen
    Der NUT Server läuft bei mir auf meinem QNAP NAS (ist auf dem NAS vorinstalliert). Der kommuniziert mit dem UPS und hat schon standardmässig eine Shutdown funktion integriert. Es erlaubt auch die Einrichtung von NUT Clients, an die er informationen vom UPS weiterleiten kann. Zum Runterfahren des PCs, auf dem IPS läuft, nutze ich WinNUT. Also keine direkte steuerung von IPS aus. Ist sicherlich möglich, aber WinNUT macht das ganz gut.
    Danke für die Idee, ich hab es mit meinem Synology NAS auf demselben Weg auch umgesetzt bekommen, allerdings mit diesem Skript.

    Die USV lässt also den NAS runterfahren, der wiederum fährt dabei via NUT den IPS-Server runter. Sobald der Strom wieder da ist, fährt der NAS ja automatisch hoch. Damit sich auch der IPS-Server wieder einschaltet, löst der NAS bei seinem Neustart ein Wake on Lan aus. Funktioniert.

    Grüße
    galleto

Ähnliche Themen

  1. Newbie hat eine Frage! Mail per IPS?
    Von Xanon im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 14.10.10, 18:40
  2. IPS 2. Anlauf Installationsprobleme
    Von edison im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 03.09.10, 13:07
  3. IPS hängt sich auf nach SSL aktivieren
    Von pleibling im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 26.10.08, 20:18
  4. IPS runterfahren während Designer noch läuft !
    Von guyabano im Forum Dashboard
    Antworten: 11
    Letzter Beitrag: 14.01.07, 22:42

Stichworte