Dieses Skript legt 4 Variablen an, mit welchen man sieht, ob heute/morgen ein Feiertag/Wochenende/Werktag/Arbeitstag ist. Die Feiertage sind für Hessen gültig, für andere Bundesländer muss das Skript gegebenenfalls angepasst werden.
Nachdem das Skript einmal von Hand gestartet wurde, werden die 4 Variablen und der Timer angelegt. Jede Nacht um 0.01 Uhr wird das Skript durch den Timer aufgerufen und aktualisiert dann die entsprechenden Variablen.
> Skript habe ich mir aus verschiedenen Beiträgen, hier aus dem Forum, zusammengestellt.
<?
$jahr = date('Y');
$ostersonntag = date('Y-m-d',easter_date($jahr));
$ostermontag = date('Y-m-d',easter_date($jahr)+60*60*24*1);
$himmelfahrt = date('Y-m-d',easter_date($jahr)+60*60*24*39); // 39 Tage nach Ostersonntag
$pfingstsonntag = date('Y-m-d',easter_date($jahr)+60*60*24*49); // 49 Tage nach Ostersonntag
$pfingstmontag = date('Y-m-d',easter_date($jahr)+60*60*24*50);
$fronleichnam = date('Y-m-d',easter_date($jahr)+60*60*24*60); // 2. Donnerstag nach Ostersonntag
$arr_feiertage[$jahr.'-01-01'] = 'Neujahr';
$arr_feiertage[$ostersonntag] = 'Ostersonntag';
$arr_feiertage[$ostermontag] = 'Ostermontag';
$arr_feiertage[$jahr.'-05-01'] = 'Staatsfeiertag';
$arr_feiertage[$himmelfahrt] = 'Christi Himmelfahrt';
$arr_feiertage[$pfingstsonntag] = 'Pfingstsonntag';
$arr_feiertage[$pfingstmontag] = 'Pfingstmontag';
$arr_feiertage[$fronleichnam] = 'Fronleichnam';
$arr_feiertage[$jahr.'-12-25'] = 'Christtag';
$arr_feiertage[$jahr.'-12-26'] = 'Stefanitag';
$arr_feiertage[$jahr.'-10-03'] = 'Tag der deutschen Einheit';
$today = date('Y-m-d');
$tomorrow = date("Y-m-d", time()+86400);
$VarIDheute = @IPS_GetVariableIDByName("Feiertag - Heute", $_IPS["SELF"]);
if($VarIDheute === false) {
$VarIDheute = IPS_CreateVariable(0);
IPS_SetParent($VarIDheute, $_IPS["SELF"]);
IPS_SetName($VarIDheute, "Feiertag - Heute");
IPS_SetInfo($VarIDheute, "This variable was created by script #".$_IPS["SELF"]);
}
$VarIDmorgen = @IPS_GetVariableIDByName("Feiertag - Morgen", $_IPS["SELF"]);
if($VarIDmorgen === false) {
$VarIDmorgen = IPS_CreateVariable(0);
IPS_SetParent($VarIDmorgen, $_IPS["SELF"]);
IPS_SetName($VarIDmorgen, "Feiertag - Morgen");
IPS_SetInfo($VarIDmorgen, "This variable was created by script #".$_IPS["SELF"]);
}
// HEUTE
if(array_key_exists($today, $arr_feiertage)) {
SetValue($VarIDheute, true);
}
else {
SetValue($VarIDheute, false);
}
// MORGEN
if(array_key_exists($tomorrow, $arr_feiertage)) {
SetValue($VarIDmorgen, true);
}
else {
SetValue($VarIDmorgen, false);
}
$today = date("N");
$tomorrow = date("N", time()+86400);
$FeiertagHeute = GetValue($VarIDheute);
$FeiertagMorgen = GetValue($VarIDmorgen);
if (($today == 6) OR ($today == 7)) {
$VarIDArbeitstagHeute = @IPS_GetVariableIDByName("Arbeitstag - Heute", $_IPS["SELF"]);
if($VarIDArbeitstagHeute === false) {
$VarIDArbeitstagHeute = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagHeute, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagHeute, "Arbeitstag - Heute");
IPS_SetInfo($VarIDArbeitstagHeute, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagHeute, false);
}
elseif ($today <= 5) {
if ($FeiertagHeute == true) {
$VarIDArbeitstagHeute = @IPS_GetVariableIDByName("Arbeitstag - Heute", $_IPS["SELF"]);
if($VarIDArbeitstagHeute === false) {
$VarIDArbeitstagHeute = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagHeute, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagHeute, "Arbeitstag - Heute");
IPS_SetInfo($VarIDArbeitstagHeute, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagHeute, false);
}
else {
$VarIDArbeitstagHeute = @IPS_GetVariableIDByName("Arbeitstag - Heute", $_IPS["SELF"]);
if($VarIDArbeitstagHeute === false) {
$VarIDArbeitstagHeute = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagHeute, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagHeute, "Arbeitstag - Heute");
IPS_SetInfo($VarIDArbeitstagHeute, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagHeute, true);
}
}
if (($tomorrow == 6) OR ($tomorrow == 7)) {
$VarIDArbeitstagMorgen = @IPS_GetVariableIDByName("Arbeitstag - Morgen", $_IPS["SELF"]);
if($VarIDArbeitstagMorgen === false) {
$VarIDArbeitstagMorgen = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagMorgen, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagMorgen, "Arbeitstag - Morgen");
IPS_SetInfo($VarIDArbeitstagMorgen, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagMorgen, false);
}
elseif ($tomorrow <= 5) {
if ($FeiertagMorgen == true) {
$VarIDArbeitstagMorgen = @IPS_GetVariableIDByName("Arbeitstag - Morgen", $_IPS["SELF"]);
if($VarIDArbeitstagMorgen === false) {
$VarIDArbeitstagMorgen = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagMorgen, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagMorgen, "Arbeitstag - Morgen");
IPS_SetInfo($VarIDArbeitstagMorgen, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagMorgen, false);
}
else {
$VarIDArbeitstagMorgen = @IPS_GetVariableIDByName("Arbeitstag - Morgen", $_IPS["SELF"]);
if($VarIDArbeitstagMorgen === false) {
$VarIDArbeitstagMorgen = IPS_CreateVariable(0);
IPS_SetParent($VarIDArbeitstagMorgen, $_IPS["SELF"]);
IPS_SetName($VarIDArbeitstagMorgen, "Arbeitstag - Morgen");
IPS_SetInfo($VarIDArbeitstagMorgen, "This variable was created by script #".$_IPS["SELF"]);
}
SetValue($VarIDArbeitstagMorgen, true);
}
}
SetTimerByName_UhrzeitStunde($_IPS['SELF'], "Timer_0Uhr", 0, 1);
function SetTimerByName_UhrzeitStunde($parentID, $name, $Stunde, $Minute) {
Global ${$_IPS['SELF']};
$eid = @IPS_GetEventIDByName($name, $parentID);
if($eid === false) {
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $parentID);
IPS_SetName($eid, $name);
IPS_SetInfo($eid, "this timer was created by script #".$_IPS['SELF']);
}
IPS_SetEventCyclicTimeFrom($eid, $Stunde, $Minute, 0);
IPS_SetEventActive($eid, true);
return $eid;
}
?>