+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Standard Batteriestatuskontrollskript mit WebFront-Ausgabe

    Batteriestatuskontrollskript für IP-Symcon 2.1:
    PHP-Code:
    <?php
        
    /*****
        *
        * Überprüfung aller Geräte auf Batterieprobleme
        *
        * Dieses Skript richtet beim Aufruf eine automatische Batterieprüfung ein.
        * Wird es über das WebFront aufgerufen erscheint eine Liste der problematischen
        * Geräte.
        *
        * Alle Geräte, deren Batteriestatus bereits ein Variablenprofil besitzet, werden
        * automatisch erkannt. Für alle anderen Variablen ist dies manuell nachzuholen.
        *
        * Anleitung:
        * - Intervall nach belieben anpassen.
        * - Bei entsprechender Kenntnis eventuell die Profilliste erweitern.
        * - Skript zur Ausführung bringen, um Timer und Warnungs-Variable zu erstellen.
        *
        *****/

        /***** Konfiguration *****/

        
    $Interval 5;    // Kontrollintervall in Minuten

        // Variablenprofile mit Werten, bei deren Erreichen oder Unterschreitung gewarnt wird
        
    $Profiles = array("~Battery" => true"~Battery.Reversed" => false"~Battery.100" => 25);


        
    /***** Programmcode (ab hier nichts mehr verändern) *****/

        
    $VariableWarningID CreateVariableByName($IPS_SELF"Warnung"0"~Battery");

        if (
    $IPS_SENDER == "WebFront")
        {
            
    $result "";

            
    $VariableIDs IPS_GetVariableList();
            foreach(
    $VariableIDs as $VariableID)
            {
               if (
    $VariableID != $VariableWarningID)
               {
                    
    $variableData IPS_GetVariable($VariableID);
                    
    $value GetValue($VariableID);
                    
    $profileName IPS_VariableProfileExists($variableData['VariableProfile']) ? $variableData['VariableProfile'] : "";
                    
    $profileName = (strlen($variableData['VariableCustomProfile']) > && IPS_VariableProfileExists($variableData['VariableCustomProfile'])) ? $variableData['VariableCustomProfile'] : $profileName;

                    
    $warning false;
                    if (
    strlen($profileName) > 0)
                    {
                        foreach (
    $Profiles as $pName => $pValue)
                        {
                            if (
    $profileName == $pName)
                            {
                                if (
    is_bool($pValue))
                                {
                                    if (
    $value == $pValue) { $warning true; }
                                }
                                else
                                {
                                    if (
    $value <= $pValue) { $warning true; }
                                }
                                break;
                            }
                        }
                    }

                    if (
    $warning)
                    {
                        
    $result .= "<em>".IPS_GetLocation($VariableID)."</em>: ".GetValueFormatted($VariableID)."<br />";
                    }
                }
            }

            if (
    $result == "")
            {
                echo 
    "Keine Probleme bekannt.";
                
    SetValueBoolean($VariableWarningIDfalse);
            }
            else
            {
                echo 
    "Geräte mit Batterieproblemen:<br /><br />".$result;
                
    SetValueBoolean($VariableWarningIDtrue);
            }
            
    IPS_SetScriptTimer($IPS_SELF$Interval 60);
        }
        else
        {
            
    $warning false;

            
    $VariableIDs IPS_GetVariableList();

            foreach (
    $VariableIDs as $VariableID)
            {
               if (
    $VariableID != $VariableWarningID)
               {
                    
    $variableData IPS_GetVariable($VariableID);
                    
    $value GetValue($VariableID);
                    
    $profileName IPS_VariableProfileExists($variableData['VariableProfile']) ? $variableData['VariableProfile'] : "";
                    
    $profileName = (strlen($variableData['VariableCustomProfile']) > && IPS_VariableProfileExists($variableData['VariableCustomProfile'])) ? $variableData['VariableCustomProfile'] : $profileName;

                    
    $warning false;
                    if (
    strlen($profileName) > 0)
                    {
                        foreach (
    $Profiles as $pName => $pValue)
                        {
                            if (
    $profileName == $pName)
                            {
                                if (
    is_bool($pValue))
                                {
                                    if (
    $value == $pValue) { $warning true; }
                                }
                                else
                                {
                                    if (
    $value <= $pValue) { $warning true; }
                                }
                                break;
                            }
                        }
                    }
                    if (
    $warning) { break; }
                }
            }

            
    SetValueBoolean($VariableWarningID$warning);
            
    IPS_SetScriptTimer($IPS_SELF$Interval 60);
        }

        function 
    CreateVariableByName($id$name$type$profile "")
        {
            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");
                if(
    $profile !== "") { IPS_SetVariableCustomProfile($vid$profile); }
            }
            return 
    $vid;
        }
    ?>
    Geändert von Horst (05.09.09 um 14:00 Uhr)
    Horst

  2. #2
    Registriert seit
    Jun 2007
    Ort
    Hockenheim
    Beiträge
    1,800

    Hallo Horst,

    meinst Du, dass Du dieses Script eventuell für die Version 2.1 umbauen können würdest ?

    Ich habe dies als sehr nützlich kennengelernt, aber aktuell ist dies leider nicht nutzbar.

    Gruss
    B71
    IP-Symcon V4.4,MAC mini mit Parallels 12 und W10 und PI 5.0 Testing,15" Touch Screen,iPADs,Sonos,FHZ1300,HM Gateways,Allnet 3691,USB-T 868,Homematic: 140 Instanzen, FS20: 6 Instanzen, Allnet: 1 Instanz

  3. #3
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Warum soll das Skrift bzw. der Notifier dort icht nutzbar sein?
    Du meinst bestimmt, weil die config.custom basic.php Funktion abgeschaltet wurde? Dann brauchst du es doch nur (in der neusten 2.1) in die webfront.php hinein zu kopieren. Sollte dann laufen.
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB

  4. #4
    Registriert seit
    Jun 2007
    Ort
    Hockenheim
    Beiträge
    1,800

    Hi,

    wegen der ganzen generierten Fehlermeldungen bei Aufruf des Batterie Scriptes.
    Im Meldungsfenster steppt dann immer der Punk.

    Der Notifier funktioniert bei mir ganz normal mit anderen Widgetkomponenten.
    Das ist nicht mein Problem.

    Die neueste BETA habe ich aufgrund der nötigen Änderungen meiner custom.php noch nicht angefasst.

    Gruss
    B71
    IP-Symcon V4.4,MAC mini mit Parallels 12 und W10 und PI 5.0 Testing,15" Touch Screen,iPADs,Sonos,FHZ1300,HM Gateways,Allnet 3691,USB-T 868,Homematic: 140 Instanzen, FS20: 6 Instanzen, Allnet: 1 Instanz

  5. #5
    Registriert seit
    Dec 2006
    Ort
    Leverkusen
    Beiträge
    613

    Oh, ok, gut zu wissen. Da ich die Beta Versionen bisher nur zum Test einsetze und nur ohne angeschlossene FHZ, dachte ich das läge bei mir daran, da (wie bei Dir) der Notifier soweit funktioniert. Jaja, ich weiß schon .. wenn man (also ich) keine Ahnung hat .. einfach mal ...

    Warten wir mal ab ob un was Hort dazu meint.
    Viele Grüße, Obi
    ___________________
    PC Ausstattung:

    Asus eee Top 1602 mit ipsymcon V4.x an FMZ 1300 USB

  6. #6
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Habe mal eine Version für die 2.1 angepasst. Ich hoffe mal, dass es so fehlerfrei läuft.
    Horst

  7. #7
    Registriert seit
    Jun 2007
    Ort
    Hockenheim
    Beiträge
    1,800

    DANKE !! Wird heute abend (spät) mal getestet.

    Gruss
    B71
    IP-Symcon V4.4,MAC mini mit Parallels 12 und W10 und PI 5.0 Testing,15" Touch Screen,iPADs,Sonos,FHZ1300,HM Gateways,Allnet 3691,USB-T 868,Homematic: 140 Instanzen, FS20: 6 Instanzen, Allnet: 1 Instanz

  8. #8
    Registriert seit
    Aug 2005
    Ort
    Fürstenfeldbruck-Aich (Bayern)
    Beiträge
    4,051

    Hallo Nutzer des Batterieskriptes.

    Sollte jemand das Batterieskript mit der neuesten V2.1 (17.08) nutzen und sich wundern warum die Variable "Warnung" ein benutzerdefiniertes Variablenprofil nicht behält muss im Skript (nur V2.1) die Zeile mit der Zuweisung des Variablenprofiles auf seine eigenes Profil umstellen.

    PHP-Code:
    IPS_SetVariableCustomProfile($VariableWarningID"~Battery"); 
    hier statt "~Battery" sein eigenes Profil eintragen.

    Das hat mich 15 Minuten Zeit gekostet bis ich auf das Problem kam das immer wieder das Profil auf Standard zurückgesetzt wurde.
    Gruß
    Werner

    Komponenten:: Homematic(CCU) 250DP, EATON-MOELLER, 1-Wire, WMRS200, 15" Touchdisplay
    Software::
    IPS V4.x, iMobile, WebFront, Logitech Media Server 7.8.x, SONOS
    Hardware:: IPS-Server: ESXi 6.x, Windows 10 Ent, 4 Kerne, 8GB RAM

  9. #9
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Damit man hinterher unbesorgt das Variablenprofil ändern kann, habe ich das Skript so angepasst, dass nur noch beim ersten Aufruf beim Erstellen der Statusvariable das Profil ~Battery zugewiesen wird.
    Horst

  10. #10
    Registriert seit
    Aug 2011
    Ort
    Sachsen
    Beiträge
    888

    Seitdem ich meine USV über NUT auswerte, meint das "Batteriestatuskontrollskript", dass die USV eine schwache Batterie hätte.

    Der Grund ist wohl, dass der ausgelesene USV-Wert "LoadPct" das Variablenprofil "~Battery.100" hat und unter 25% liegt. Das ist aber eigentlich in Ordnung.

    Kurz: Das Skript funktioniert zwar wie es soll, aber das Ergebnis ist trotzdem falsch. Lässt sich das irgendwie beheben?

    Die Idee, über ein weiteres Skript die Batterie-Meldung wieder zu neutralisieren, wenn sie nur durch die USV ausgelöst wurde, erscheint mir etwas holprig.

    Grüße
    galleto

Ähnliche Themen

  1. WebFront Retro™
    Von Horst im Forum WebFront
    Antworten: 80
    Letzter Beitrag: 06.09.09, 17:42
  2. Tür Kamera zur WebFront Anzeige in 2.0
    Von roadsterhh im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 22
    Letzter Beitrag: 25.02.09, 21:42
  3. Webfront - eigene Seite - Aktualisierungszeit
    Von epogo im Forum WebFront
    Antworten: 1
    Letzter Beitrag: 24.02.09, 16:48
  4. Antworten: 0
    Letzter Beitrag: 09.02.09, 23:59
  5. WebFront unter PS3
    Von Heidewinkler im Forum WebFront
    Antworten: 9
    Letzter Beitrag: 31.01.09, 22:46