Meldesystem

Hallo zusammen,

ich möchte euch meine kleines Meldessystem für Ereignisse vorstellen.
Das Meldesystem versendet eine E-Mail bei Ereignissen.

Skript einfach im Root-Ordner anlegen.
Und die Werte im Skript anpassen.
Der Rest sollte selbst erklärend sein.

<?
//Meldesystem by meike0_0 V0.2
//Skript in Root-Ordner erzeugen
//Werte anpassen
//Skript einmal starten    Kategorie, Instanz und Variablen werden angelegt
//EMail-Adresse          EMail_Empfänger einfügen
//E-Mail Kommentar   noch ohne Verwendung
//E-Mail Ein/Aus     EIN/AUS
//Dem Skript ein Ereignis hinzufügen
//Bei Ereignisbeschreibung Meldungstext einfügen wird als EMail-Text versendet
//Ergeinis auslösen Variablen für Meldung werden erzeugt
//ID                 ohne Verwendung
//Name               ohne Verwendung
//EMail              Meldung Ein/Aus
//Fertig


//Diese Werte anpassen
$CatName                    = "Störmeldungen by meike0_0";                                       //Kategoriename
$EMail_InstanzID             = 27908 /*[Störmeldesystem\E-Mail senden (SMTP)]*/;      //ID-EMail
$EMail_Absender_Name        = 'Stoermeldung';                                        //EMail Absendername
$Anzahl_Empfaenger      = 2;                                                     //Anzahl von EMail Empfänger
//Ende der Anpassung



//Nichts mehr ändern
$MeldungenType = array(3,3,0);
$Meldungen       = array("E-Mail Adresse ","E-Mail Kommentar ","E-Mail Ein/Aus ");

//Eigene SkriptID
$ParentID = IPS_GetObject($IPS_SELF);
$ParentID = $ParentID['ParentID'];

// nur wenn bei "Ausführen"
if($IPS_SENDER == "Execute")
     {
     $CatID = @IPS_GetCategoryIDByName($CatName, 0);
    if ($CatID == 0)
       {
       $CatID = @IPS_CreateCategory();       // Kategorie anlegen
        if ($CatID)
           {
            IPS_SetName($CatID, $CatName); // Kategorie benennen
            $ParentID = $CatID;
            IPS_SetParent($IPS_SELF, $ParentID);

            }
        }
    else
          echo "Die Kategorien-ID lautet: ". $CatID."
";


    //echo $IPS_SELF."  ".$ParentID."  ".$CatID."
";
    IPS_SetHidden($IPS_SELF,true);
    IPS_SetPosition($IPS_SELF,250);

     // DummyInstancen und E-MailAdressen Variablen anlegen
    for ($e=0;$e<3;$e++)
    {
    $ID = @IPS_GetObjectIDByName($Meldungen[$e], $ParentID);
   if ($ID == 0)
        {
      $dummy=IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
      IPS_ApplyChanges($dummy);
      IPS_SetName($dummy,$Meldungen[$e]);
      IPS_SetParent($dummy,$ParentID);
      IPS_SetPosition($dummy, $e);


      for ($i=0;$i<$Anzahl_Empfaenger;$i++)   //Anzahl Meldeempfänger
         {
          $ID = @IPS_GetObjectIDByName($Meldungen[$e].$i, $dummy);
           if ($ID == 0)
                {
                $IDVar = IPS_CreateVariable($MeldungenType[$e]);
                IPS_SetParent($IDVar, $dummy);
                IPS_SetName($IDVar,$Meldungen[$e].$i);
            IPS_SetPosition($IDVar, $i);
            if ($MeldungenType[$e] == 3)
                IPS_SetVariableCustomProfile($IDVar, "~String");

               if ($MeldungenType[$e] == 0)
                   IPS_SetVariableCustomProfile($IDVar, "~Switch");

                IPS_SetInfo($IDVar, "This Variable was created by Script");
                }
            }
         }
    }
echo "Erfolgreich eingerichtet";
}

// nur wenn bei "Variable"
if($IPS_SENDER == "Variable")
     {

    $Event         = $IPS_EVENT;
    $EventInfo     = IPS_GetObject($IPS_EVENT);
   $Info         = $EventInfo['ObjectInfo'];
    //print_r ($EventInfo);
    
    // Auslöse ID
    $Variable         = $IPS_VARIABLE;
    $VarInfo     = IPS_GetObject($IPS_VARIABLE);
    //$Info         = $VarInfo['ObjectInfo'];
    $Name         = $VarInfo['ObjectName'];
    $ParentID   = $VarInfo['ParentID'];

    //print_r($VarInfo);
    
    $CatID = @IPS_GetCategoryIDByName($CatName, 0);
    if ($CatID == 0)
       {
          echo "Instanz nicht gefunden!";
          }
    else
       {
       $ParentID = $CatID;
       //echo $ParentID;
       # DummyInstancen und Variablen anlegen
       Dummy_anlegen($ParentID,$Info,$Name,$IPS_SELF,$Variable);

       //E-Mail Meldung auswerten
       //print_r(IPS_GetObject($ParentID));
       $InstanzID = @IPS_GetInstanceIDByName($Info, $ParentID);                                  // E-Mail-ID EIN/Aus finden
        if ($InstanzID == 0)
           {
              echo "Instanz nicht gefunden!";
              }
        else
           {
             //echo "Test Instanz".$InstanzID."
";
            $EAus = @IPS_GetObjectIDByName("EMail", $InstanzID);                               // Meldung Ein/Aus
         //echo "EA Instanz: ".$EAus."
";
            if ($EAus == 0)
               echo "EAus nicht gefunden";
            else
               {
                if (GetValueBoolean($EAus) == 0)
                   echo "Meldung ausgeschaltet";
                else
                   {
                    $Text_Meldung = $Info."
".date ("H:i:s d.n.Y ")."
";
                    
                   //echo "Text_Meldung: ".$Text_Meldung."
";
                    $Stoermelde_Ordner = @IPS_GetObjectIDByName($CatName, 0);                              // E-Mail Adresse suchen
                    if ($Stoermelde_Ordner == 0)
                        echo "Kategorie nicht gefunden";
                    else
                       {
                       $OrdnerEMail = @IPS_GetObjectIDByName($Meldungen[0], $Stoermelde_Ordner);      // E-Mail Adresse Ordner suchen
                        if ($OrdnerEMail == 0 )
                          echo "Ordner E-Mail nicht gefunden";
                        else
                           {
                           //echo "OrdnerEMail ".$OrdnerEMail."
";
                           $OrdnerEA = @IPS_GetObjectIDByName($Meldungen[2], $Stoermelde_Ordner);      // E-Mail EIN/Aus Ordner suchen
                            if ($OrdnerEA == 0)
                                echo "Ordner EIN/Aus nicht gefunden";
                            else
                               {
                               //echo "Ordner Ein/Aus ".$OrdnerEA."
";
                               //print_r (IPS_GetChildrenIDs($OrdnerEA));
                          for ($i=0;$i<$Anzahl_Empfaenger;$i++)                                      // E-Mail an Empfänger versenden
                                 {
                                 $ID_EA = @IPS_GetObjectIDByName(($Meldungen[2].$i), $OrdnerEA);
                                 if  ($ID_EA == 0)
                                 echo "ID_EA nicht gefunden";
                                    else
                                       {
                                       $EA = GetValueBoolean($ID_EA);
                                     if ($EA)
                                        {
                                            $Name = $Meldungen[0].$i;
                                       $ID_Name = @IPS_GetObjectIDByName($Name, $OrdnerEMail);
                                         if  ($ID_Name == 0 )
                                            echo "EMail_Adresse nicht gefunden 
";
                                       else
                                          {
                                                $EMail_Adresse = GetValueString($ID_Name);
                                                if ($EMail_Adresse ==    "")
                                                   echo "Keine EMail-Adresse ".$i." vorhanden";
                                                else
                                                   {
                                                    if (EMail_senden ($EMail_Adresse,$Text_Meldung));
                                                        echo "
 E-Mail an ".$EMail_Adresse." versendet Meldung:
".$Text_Meldung."
";
                                                    }
                                                }
                                           }
                                        }
                                }
                            }
                         }
                       }
                    }
                }
            }
        }
     }


function Dummy_anlegen($ParentID,$Info,$Name,$ID_self,$Variable)
    {
    global         $CatName;
    
    $Var                   = array("ID","Name","EMail");
    $Vartype         = array(1,3,0);

   $ParentID = @IPS_GetCategoryIDByName($CatName, 0);
    if ($ParentID == 0)
       echo "Die Kategorien-ID nicht gefunden 
";
    else
          {
        $ID = @IPS_GetObjectIDByName($Info, $ParentID);
        if ($ID == 0)
            {
          $dummy=IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
          IPS_ApplyChanges($dummy);
          IPS_SetName($dummy,$Info);
          IPS_SetParent($dummy,$ParentID);
          IPS_SetPosition($dummy, 50);

          // Variablen Anlegen
          for ($i=0;$i<3;$i++)
             {
              $ID = @IPS_GetObjectIDByName($Var[$i], $dummy);
               if ($ID == 0)
                    {
                    $IDVar = IPS_CreateVariable($Vartype[$i]);
                    IPS_SetParent($IDVar, $dummy);
                    IPS_SetName($IDVar, $Var[$i]);
                    IPS_SetPosition($IDVar, $i);
                    IPS_SetInfo($IDVar, "This Variable was created by Script");
                    switch ($i)
                       {
                       case 0:
                          {
                          SetValue($IDVar,$Variable);
                            break;
                            }
                        case 1:
                           {
                          SetValue($IDVar,$Name);
                            break;
                            }
                        case 2:
                           {
                           IPS_SetVariableCustomProfile($IDVar, "~Switch");
                           break;
                           }
                      }
                    }
                }
          }
        }
    }
    
function EMail_senden ($EMail_Empfaenger,$Text_Meldung)
    {
    global $EMail_InstanzID;
    global $EMail_Absender_Name;

    SMTP_SetSenderName ($EMail_InstanzID,$EMail_Absender_Name);
    IPS_ApplyChanges($EMail_InstanzID);

    $OK    = SMTP_SendMail ($EMail_InstanzID,$EMail_Empfaenger,$Text_Meldung);
    if ($OK)
        echo "E-Mail versendet";

    return ($OK);
    }
    

?>