Automatische Anlage Ereignisse

Hallo zusammen,

ich habe mir ein Script gebastelt, welches mir eine Nachricht schickt,
wenn TFK sich meldet (öffnet/schliesst)

Weiters legt mir das Script die Ereignisse automatisch an, das geht auch.

ABER wie kann ich verhindern, dass die Ereignisse mehrfach anglegt werden?

hier das Script

<?
if (($IPS_SENDER=='TimerEvent') or ($IPS_SENDER=='Execute'))
{
#echo "manuell";
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
   if(IPS_StatusVariableExists($id, "STATE"))
    {
        $var = IPS_GetStatusVariable($id, "STATE");
        $profID = IPS_GetVariable($var['VariableID']);
        $prof = $profID['VariableCustomProfile'];

  		if($prof == "tkf") // Profil eintragen
  			{
				$value = GetValue($var['VariableID']);
				echo $var['VariableID']." ".(int)$value."
";

					#Ereignis erstellen
					$ereignis = IPS_CreateEvent(0);
					IPS_SetEventTrigger($ereignis, 4, $var['VariableID']);
					IPS_SetEventTriggerValue($ereignis, true);  //true,false
					IPS_SetEventTriggerSubsequentExecution($ereignis, false);
					IPS_SetParent($ereignis, $IPS_SELF);
					IPS_SetName($ereignis, 'Event '.$var['VariableID']);
                    IPS_SetEventActive($ereignis, true);

				#	$eid = IPS_CreateEvent(0);        //Ausgelöstes Ereignis
				#	IPS_SetEventTrigger($eid, 1, $var['VariableID']); //Bei Änderung von Variable mit ID 15754
				#	IPS_SetParent($eid, $IPS_SELF); //Ereignis zuordnen
				#	IPS_SetEventActive($eid, true);    //Ereignis aktivieren

			}
    }
}
}


//Wenn eine Variable ein Ereignis auslöst, wird die Message erzeugt und verschickt
if ($IPS_SENDER=='Variable')
{
$MSG = 'IPS Info: Variable '.$IPS_VARIABLE.' '.IPS_GetLocation($IPS_VARIABLE).' hat den Wert '.GetValue($IPS_VARIABLE).' ('.GetValueFormatted($IPS_VARIABLE).').';
setValueString (23230 /*[Push\Message]*/ , "$MSG");
}
?>

besten Dank im Vorraus

Hi Andyt,
Du kannst per GetEventIDByName auf ein bereits vorhandenes Object prüfen.

$eid = @IPS_GetEventIDByName($objParent['ObjectName'] .": " . $obj['ObjectName'], $id_alarm_error); 
    if($eid == false){    $eid = IPS_CreateEvent(0); 
// weiteres zum erzeugen des Elements
}

Schau auch in diesen Thread

Grüße, Benjamin

Danke für die Antwort,

ich habe so gelöst (vieleicht kanns wer brauchen)

<?
if (($IPS_SENDER=='TimerEvent') or ($IPS_SENDER=='Execute'))
{
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
   if(IPS_StatusVariableExists($id, "STATE"))
    {
        $var = IPS_GetStatusVariable($id, "STATE");
        $profID = IPS_GetVariable($var['VariableID']);
        $prof = $profID['VariableCustomProfile'];

  		if($prof == "tkf") // Profil eintragen
  			{
				$value = GetValue($var['VariableID']);
  				if(@IPS_GetEventIDByName('Event '.$var['VariableID'], $IPS_SELF) === false)
                    {
                    
								#Ereignis erstellen
								$ereignis = IPS_CreateEvent(0);
								IPS_SetEventTrigger($ereignis, 4, $var['VariableID']);
								IPS_SetEventTriggerValue($ereignis, true);  //true,false
								IPS_SetEventTriggerSubsequentExecution($ereignis, false);
								IPS_SetParent($ereignis, $IPS_SELF);
								IPS_SetName($ereignis, 'Event '.$var['VariableID']);
        		            IPS_SetEventActive($ereignis, true);
							}
			}
    }
}
}


//Wenn eine Variable ein Ereignis auslöst, wird die Message erzeugt und verschickt
if ($IPS_SENDER=='Variable')
{
$MSG = 'IPS Info: Variable '.$IPS_VARIABLE.' '.IPS_GetLocation($IPS_VARIABLE).' hat den Wert '.GetValue($IPS_VARIABLE).' ('.GetValueFormatted($IPS_VARIABLE).').';
setValueString (23230 /*[Push\Message]*/ , "$MSG");
}
?>