Ok Manuel
für deinen Fall wäre es noch beser wenn du im LCN Bereich gepostet hättest. Deine Problemstellung ist nämlich nicht wirklich ein Script problem, sondern eher ein Thema welche Funktionalitäten dir deine Aktoren bieten.
Aber egal.
Nun ich hab bei mir genau sowas laufen wie du benötigst, allerdings verwende ich das FS20 System von ELV.
Die Dimmer können von sich aus schon innerhalb einer programierbaren Zeit Rauf und Runterdimmen. Ob die LCN Aktoren das auch können weiß ich leider nicht.
Als Denkanstoß wie dies prinzipiell umzusetzen wäre hier mein Script:
<?
{
$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;
}
?>
Im Objektbrowser sieht das so aus:
Ich hab jetzt mal das Script für meine ganzen Piris reingestellt. Dich dürfte der Bereich „Flur OG“ interessieren. Da passiert in etwa das was du suchst.
Aber wie gesagt, das ist für FS20, für LCN könnte das ggfls. ganz anders aussehen.
gruß
bb