+ Antworten
Ergebnis 1 bis 1 von 1
  1. #1
    Registriert seit
    Aug 2017
    Ort
    Schorndorf
    Beiträge
    26

    Standard Störmeldeskript / Alarmverwaltung

    Hallo Ihr da draußen,
    da wir schon so viele unzählige male von dieser absolut geilen Community gezährt haben, möchten wir auch mal eine kleinen Beitrag zur Weltverbesserung leisten.
    Das nachfolgende Skript ist für Anlagen mit vielen Störungsvariablen gedacht.
    Da dies bei unseren Kunden häufig der Fall ist haben wir nach und nach dieses Skript entwickelt (für die entwicklung eines Moduls fehlt einfach die nötige Zeit und Kompetenz).

    Also was macht das Ding:
    Es überwacht einen Boolschen Wert. Ist dieser "true" wird irgendeine Aktion ausgeführt z.B. eine Meldung abgesetzt.
    Diese kann Pro angelegter Variable dann als Info, Störung, Alarm oder Warnung deklariert werden. Es kann auf jede Art von Meldung unterschiedlich reagiert werden. Die überwachte Variable wird in einem "Merker" als Child zwischengespeichert um auf ein "Flackern" eines Eingang zum Beispiel nicht zweimal zu reagieren.
    Alle angelegten Alarme werden zum Schluss in eine Html Tabelle übergeben, um auf dem Webfrnt eine Übersicht zu haben. Zusätzlich wird noch eine Textdatei mit Meldung und Datum auf dem C:/ Laufwerk erstellt (wollte mal ein Kunde so haben).

    Wir sind jederzeit für Verbesserungen usw offen. Fragen beantworten wir natürlich so schnell es geht.

    PHP-Code:
    /*Alarmhandlingskript by SCS-Showtec GbR
    Jakob-Degen-Straße 64
    73614 Schorndorf
     Autor :Johannes Holzwarth
    Verison 2.1 08.01.2019*/

    //die Funktion für das anlegen der Child Variablen
    function CreateVariableByName($id$name$type$profile ""$icon ""$pos 0$hidden=true)
    {
      global 
    $_IPS;
      
    $vid = @IPS_GetVariableIDByName($name$id);
      if(
    $vid === false)
      {
        
    $vid IPS_CreateVariable($type);
        
    IPS_SetParent($vid$id);
        
    IPS_SetName($vid$name);
        
    IPS_SetPosition($vid$pos);
        
    IPS_SetIcon($vid$icon);
        
    IPS_SetHidden($vid$hidden);
        
    IPS_SetVariableCustomProfile($vid$profile);
        
    IPS_SetInfo($vid"diese Variable wurde von Nerds aus einer weit entfernten Galaxie mit folgender Nummer angelegt #".$_IPS['SELF']);
      }
      return 
    $vid;
    }

    //die Funktion fürs Alarmhandling an sich
    function SmTrigger($trigid$smname$opt$webfrontid$wfcnot$pushnot$telnot$mail)
    {

            switch (
    $opt) { //verschiedene Arten von Meldungen definieren
                    
    case 0
                        
    $art "Anlagenname | Störung:";
                        
    $ico "Flame";
                        break;
                    case 
    1
                        
    $art "Anlagenname | Warnung:";
                        
    $ico "Warning";
                        break;
                    case 
    2:
                        
    $art "Anlagenname | Info:";
                        
    $ico "Information";
                        break;
                    case 
    100:
                        
    $art "Anlagenname | Alarm:";
                        
    $ico "Flame";
                        break;
                            }

        
    $smid CreateVariableByName($_IPS['SELF'], $smname0$profile ""$icon ""$pos 0$hidden=true);
        
        if (
    $trigid && GetValueBoolean($smid))  {
            
            
    SetValueBoolean($smidfalse);
                    
                    
    //Hier einmalig (bei High-Flanke) auszuführende  Aktion eintragen!!!
                    
    $datum date("d.m.Y");
                    
    $uhrzeit date("H:i");
        
                    
    $filename 'c:\\AlarmsAndNotifications.txt'//Pfad zur Speicherung als Textdatei
                    
    $wert = ($datum ."-".$uhrzeit ." --> "$art ." "$smname ."\r\n");
                    
    $datei fopen($filename"a+");
                    
    fwrite($datei$wert);
                    
    fclose($datei);    
                    
            if (
    $telnot)    { //als Telegrammessage versenden
            //Telegram_SendText(, "".$art." ".$smname, /*deine Telegram ID*/);
            
    };
            
            if (
    $wfcnot){ //Ans Webfront senden // Wer mehrere Webfronts hat einfach die nachfolgende Zeile kopieren
            
    WFC_SendNotification($webfrontid$art$smname$ico0);
            
            
            }

            if (
    $pushnot){        //Pushnotification
            
    WFC_PushNotification($webfrontid$art$smname""0);
            }
            
            if (
    $mail){        //Als Mail versenden
            //SMTP_SendMail(12345, $art,  $smname);
            
    }
            
            }
            elseif (
    $trigid == false) {
            
    SetValueBoolean($smidtrue);
            }
            
    }


    /// Die ID des zu benachrichtigenden Webfronts
     
    $WebfrontId 123456;

    $ids IPS_GetChildrenIDs($_IPS['SELF']);
    //Alle Childobjekte abholen


    foreach($ids as $id) { //Alle Childs durchgehen

     
    $names[$id] = IPS_GetName($id);
     
    $werte[$id] =! GetValue($id);
     
    $both[$id]['Value'] =  $werte[$id];
     
    $both[$id]['Name'] =  $names[$id];
    }  

    foreach(
    $both as $bot) {

    if (
    $bot['Value'] == 1) { // Farbe und Text der Html Tabelle erstellen
    $color 'red';
    $bot['Value'] = 'Störung';
    }
    else
    {
    // Farbe und Text fürOK
    $color 'lightgreen';
    $bot['Value'] = 'OK'
    }

        
    $tdhtml .= '<tr><td>'.$bot['Name'].'</td><td bgcolor='.$color.'>'.$bot['Value'].'</td></tr>'//Werte in Tabelle schreiben

     
    }
     
    $html '<table width=100%><tr><th>Name</th><th>Status</th></tr>'.$tdhtml.'</table>'//html Tabelle erstellen

       
    SetValueString(123456$html); // in Html Box schreiben


    SmTrigger (GetValueBoolean(), ""0$WebfrontIdtruetruetruefalse); //Pro Störung einmal anlegen 
    Angehängte Grafiken Angehängte Grafiken  
    Geändert von ScsShowtec (10.01.19 um 10:18 Uhr)
    Symcon 5.0 Unlimited | pfSense community Edition | 3x Wago 750-841 2x 750-881 1x 758-870 3x 750-8202 1x 750-842 1x 750-830 | 2x Siemens LOGO! 8 | Codesys 3 Runtime on Raspberry | Buderus Km100