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);
}
?>