Hallihallo!
Da ich ein wirklicher Anfänger in PHP und IPS bin, habe ich nochmals eine Frage:
Wie müsste der Quellcode aussehen bzw angepasst werden damit dieser AUTOMATISCH Zeitgesteuerte Ereignisse (Wenn Variable auf True steht) das Script ausgeführt wird? Die Ereignisse sollen dann logischerweise nur einmal angelegt werden und die Anzahl der beruht auf die Anzahl der „Kinder“ der angegebenen „Elternkategorie“.
Sprich: Gruppe Lichter hat 10 Instanzen. Jede Instanz den Status „Licht an“ oder „Licht aus“ (true oder false). Nun will ich das automatisch 10 Ereignisse auf mein Script verknüpft werden welche sich auf den Status der 10 Lampen beziehen. Hierbei sollte möglichst alles Dynamisch sein! Damit meine ich das man das Script dann zB auch bei Rauchmeldern (Anzahl X) einsetzen kann ohne große Änderungen durch zu führen.
Wenn sich der Status der Lichter dann ändert soll eine E-Mail versendet werden, aber nur, wenn die Alarmanlage schwarf ist!
Hier mal mein komplettes Script:
$parent = 20964; //IPS-Oberkategorie-ID (zB Bewegungsmelder)
$sendmail = 38541; //IPS- SMTP-Modul-ID
$betreff = "ALARM - EINBRUCH!"; //Betreff der E-Mail
$inhalt = "IP-Symcon meldet: ALARM - EINBRUCH! Folgende Bewegungsmelder haben Bewegung erkannt:"; //Inhaltstext der E-Mail OHNE Geräte (folgen nach dem :)
$alarmanlage = GetValueBoolean(12205); //ID der Alarmanlage bzw der Leuchte.
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//AB HIER NICHTS MEHR ÄNDERN!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if ($alarmanlage == true) //Ist Alarmanlage scharf?
{
$var_1 = (IPS_GetChildrenIDs($parent)); //IDs der Instanzen der angegebenen Kategorie rausfinden.
$Anzahl = count(IPS_GetChildrenIDs($parent)); //Instanzen zählen
$i = 0; // Zählervariable
while ($i < $Anzahl) //Solange i kleiner als Anzahl ist führe folgenden Quellcode aus:
{
$var2 = (IPS_GetChildrenIDs($var_1[$i]));
$wert = IPS_GetObjectIDByName("Bewegung", $var_1[$i]); $vergleich = GetValueBoolean($wert);
$i++;
if ($vergleich == true) //Überprüfung Rauchmelder
{
$bewegung = IPS_GetName(IPS_GetParent($wert));
$text[$i] = IPS_GetName(IPS_GetParent($wert));
}
}//while ($i < $Anzahl)
$ausgabe = implode(",
",$text); //Arrayinhalt in Variable $ausgabe schreiben
SMTP_SendMail("$sendmail, $betreff , $inhalt
$ausgabe"); //E-Mail Versand
}//if ($alarmanlage == 1)