Hallo
Blöde Überschrift, aber ich weiß nicht, wie es besser geht
folgendes:
Ich habe ein Script, welches mir einen Durchschnitt der Helligkeit im Haus errechnet (über Bewegungsmelder)
ausgelöst wird das Script, wenn sich die Helligkeit bei einem der Bewegungsmelder ändert.
dazu lege ich mir mit:
$variables[1] = 'BRIGHTNESS'; //BRIGHTNESS
//Nachts wird geprüft, ob es neue relevante Variablen gibt. Falls ja wird ein Ereignis angelegt.
if (($IPS_SENDER=='TimerEvent') or ($IPS_SENDER=='Execute'))
{
foreach(IPS_GetInstanceListByModuleType(3) as $id)
//foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
//echo IPS_GetName($id)."
";
//print_r (IPS_GetStatusVariableIdents($id));
foreach ($variables as $CurrentVarName)
{
if(IPS_StatusVariableExists($id, $CurrentVarName))
{
$var = IPS_GetStatusVariable($id, $CurrentVarName);
//Ereignis zum Skriptaufrufen anlegen
if(@IPS_GetEventIDByName($var['VariableID'], $IPS_SELF) === false)
{
$ereignis = IPS_CreateEvent(0); //Ausgelöstes Ereignis
IPS_SetEventTrigger($ereignis, 1, $var['VariableID']); //Bei Änderung von Variable mit ID
IPS_SetParent($ereignis, $IPS_SELF); //Ereignis zuordnen
IPS_SetName($ereignis, $var['VariableID']); // Name vergeben
IPS_SetEventActive($ereignis, true); //Ereignis aktivieren
}
}
}
}
}
die erreignise an.
Ich muss aber immer noch die ID des BRIGHTNESS manuell eintragen, damit dies errechnet wird.
//Wenn eine Variable ein Ereignis auslöst, wird die Message erzeugt und verschickt
if ($IPS_SENDER=='Variable')
{
$IDs = IPS_GetChildrenIDs(17322 /*[Scripts\Licht\Aktoren]*/); //ID der Kategorie mit Links zu den Booleans, Schlataktoren
####################
$HELL1 = getValue (27169 /*[Obergeschoss\Vorzimmer\Bewegungsmelder OG\BRIGHTNESS]*/ );
$HELL2 = getValue (39597 /*[Erdgeschoss\Vorhaus\Bewegungsmelder AB\BRIGHTNESS]*/ );
$HELL3 = getValue (39207 /*[Erdgeschoss\WC\Bewegungsmelder\BRIGHTNESS]*/ );
$HELL4 = getValue (24198 /*[Erdgeschoss\Aufgang\Bewegung\BRIGHTNESS]*/ );
#$HELL5 = getValue (39597 /*[Erdgeschoss\Vorhaus\Bewegungsmelder AB\BRIGHTNESS]*/ );
#$HELL6 = getValue (39597 /*[Erdgeschoss\Vorhaus\Bewegungsmelder AB\BRIGHTNESS]*/ );
$HELL = (($HELL1 + $HELL2 + $HELL3 + $HELL4) / 4);
setValueFloat (10332 /*[Scripts\Sonstiges\helligkeit\Helligkeit]*/ , $HELL);
}
Es muss doch eine möglichkeit geben, die Inhalte der LINKS in ein array zu bekommen, damit da den Durchschnitt errechnen kann, oder?