Du kannst die Timer schon vorab anlegen (also nicht Script Timer benutzen) und diesen Timern einen expliziten Namen geben.
Im Script kannst die Namen abfragen.
In diesem Script findest alles was du brauchst.
greez
bb
{
$myId= 16699 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri]*/;
$Sensor = "";
Switch ($_IPS['SENDER'])
{
Default:
break;
Case "RunScript":
break;
Case "Execute":
echo "Execute";
break;
Case "Variable":
$Sensor = IPS_GetName($IPS_VARIABLE);
$Sensor = IPS_GetName(IPS_GetParent($IPS_VARIABLE))."_".$Sensor;
echo $Sensor;
break;
Case "Execute":
Case "TimerEvent":
$Sensor = IPS_GetName($_IPS['EVENT']);
echo $Sensor;
$TimerId = (IPS_GetObjectIDByName($Sensor, $myId));
break;
};
Switch ($Sensor)
{
// --------- Flur EG------------------
Case "Bewegungssensor_EG_Status":
// If (GetValueBoolean(23751 /*[Wandschalter\Schalter_Haustüre\Taste1]*/) == false) {
FS20_SwitchDuration(36849 /*[Licht\Flur Erdgeschoß]*/,true,120);
myStartTimer(30138 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
//TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 2, true);
SetValueInteger(58697 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\Helligkeit]*/,100);
SetValueInteger(43676 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\DimTime]*/,20);
IPS_RunScript(12817 /*[Räume\Flur\Weinregal\Scripte\random]*/);
IPS_RunScriptEx(28613 /*[Räume\Flur\Weinregal\Scripte\Set_RGB]*/,Array("ChromoflexMode" => 0.0)); //Chromoflex setzen
// }
break;
Case "Timer_Flur1":
IPS_SetEventActive(30138 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
// FS20_SetIntensity(36849 /*[Licht\Flur Erdgeschoß]*/,0,15);
FS20_SwitchMode(36849 /*[Licht\Flur Erdgeschoß]*/, false);
IPS_RunScript(12817 /*[Räume\Flur\Weinregal\Scripte\random]*/);
SetValueInteger(43676 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\DimTime]*/,20);
SetValueInteger(58697 /*[Räume\Flur\Weinregal\SettlingTime & Brightness\Helligkeit]*/,5);
IPS_RunScriptEx(28613 /*[Räume\Flur\Weinregal\Scripte\Set_RGB]*/,Array("ChromoflexMode" => 0.0)); //Chromoflex setzen
break;
// --------- Flur OG------------------
Case "Bewegungssensor_OG_Status":
if (GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
FS20_SwitchDuration(50986 /*[Licht\Flur Obergeschoß]*/,true,60);
FS20_SwitchDuration(36849 /*[Licht\Flur Erdgeschoß]*/,true,120);
myStartTimer(16999 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
}
break;
Case "Timer_OG1":
IPS_SetEventActive(16999 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
// FS20_SetIntensity(50986 /*[Licht\Flur Obergeschoß]*/,0,15);
FS20_SwitchMode(50986 /*[Licht\Flur Obergeschoß]*/, false);
break;
// --------- Toilette------------------
Case "Bewegungssensor_Toilette_Status":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 5, true);
myStartTimer(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
IPS_SetEventCyclicTimeBounds(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,time(),0);
break;
Case "Timer_Toilette1":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 5, false);
IPS_SetEventActive(49718 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
break;
// --------- Kellerstiege------------------
Case "Bewegungssensor_Kellerstiege_Status":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 7, true);
myStartTimer(45818 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
break;
Case "Timer_Kellerstiege1":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 7, false);
IPS_SetEventActive(45818 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
break;
// --------- Keller------------------
Case "Bewegungssensor_UG_Status":
if (GetValueBoolean(17090 /*[Licht\ZK_Relaisgruppe\Licht Keller]*/) <>1) {
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 3, true);
myStartTimer(38895 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
}
break;
Case "Timer_Keller1":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 3, false);
IPS_SetEventActive(38895 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
break;
// --------- Terrasse------------------
Case "Bewegungssensor_Terrasse_Status":
if (GetValueBoolean(52664 /*[Licht\Terrasse\Status]*/) <> 1 && GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
FS20_SwitchDuration(27796 /*[Licht\Terrasse]*/,true,60);
FS20_SwitchDuration(14090 /*[Licht\Geräteschuppen Eingang]*/,true,60);
myStartTimer(35032 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
}
break;
Case "Timer_Terrasse1":
FS20_SwitchMode(27796 /*[Licht\Terrasse]*/,false);
FS20_SwitchMode(14090 /*[Licht\Geräteschuppen Eingang]*/,false);
IPS_SetEventActive(35032 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
break;
// --------- Parkplatz ------------------
Case "Bewegungssensor_Parkplatz_Status":
if (GetValueBoolean(57684 /*[Licht\ZK_Relaisgruppe\Außenbeleuchtung]*/)<> 1 && GetValue(22388 /*[Garten\Helligkeit]*/) <10) {
myStartTimer(48893 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/);
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 0, true);
}
break;
Case "Timer_Parkplatz1":
TMEX_F29_SetPin(14768 /*[Licht\ZK_Relaisgruppe]*/, 0, false);
IPS_SetEventActive(48893 /*[Programe\Lichtsteuerung\Lichtsteuerung Piri\]*/,false);
break;
}
};
function myStartTimer($dev) {
IPS_SetEventActive($dev,false);
IPS_SetEventCyclicTimeBounds($dev,time(),0);
IPS_SetEventActive($dev,true);
}
/***************************************************************************
* Function: myToggleFS20
* Description: Diese Funktion Toggelt Einen FS20 Switch
* Parameter: - $objid (ObjektID)
***************************************************************************/
function myToggleFS20($dev){
If (myGetObjectVariable($dev,'Status') == true) {
FS20_SwitchMode($dev, false);
}
else {
FS20_SwitchMode($dev, true);
}
}
/***************************************************************************
* Function: MY_ObjectVariable
* Description: Diese Funktion gibt den Wert einer Variablen eines Objektes
* zurück. Zum Beispiel den Wert MOTION des Devices PIRI.
*
* Parameter: - $objid (ObjektID)
* - $variable (Name der Variablen)
* Return: - Wert der Variablen
*
***************************************************************************/
function myGetObjectVariable($objid, $variable)
{
$obj = IPS_GetObject($objid);
foreach ( $obj['ChildrenIDs'] as $item )
{
if ( IPS_GetName($item) == $variable )
{
return GetValue($item);
}
}
return null;
}
?>