Ok steueren wir ganz einfach die Rolladen sonnenaufgangs gesteuert ohne arbeit!!!
<?
//grundgrüst erstellung
$SkriptSonnenaufgangID = @IPS_GetObjectIDByName("Bei_Sonnenaufgang", $IPS_SELF);
if ($SkriptSonnenaufgangID == 0)
{
$SkriptSonnenaufgangID = IPS_CreateScript(0);
IPS_SetParent($SkriptSonnenaufgangID, $IPS_SELF);
IPS_SetName($SkriptSonnenaufgangID, "Bei_Sonnenaufgang");
}
$SkriptSonnenuntergangID = @IPS_GetObjectIDByName("Bei_Sonnenuntergang", $IPS_SELF);
if ($SkriptSonnenuntergangID == 0)
{
$SkriptSonnenuntergangID = IPS_CreateScript(0);
IPS_SetParent($SkriptSonnenuntergangID, $IPS_SELF);
IPS_SetName($SkriptSonnenuntergangID, "Bei_Sonnenuntergang");
}
$Variablesonnenaufgang = @IPS_GetObjectIDByName("Additivsonnenaufgangszeit", $IPS_SELF);
if ($Variablesonnenaufgang == 0)
{
$Variablesonnenaufgang = IPS_CreateVariable(1);
IPS_SetParent($Variablesonnenaufgang, $IPS_SELF);
IPS_SetName($Variablesonnenaufgang, "Additivsonnenaufgangszeit");
}
$Variablesonnenuntergang = @IPS_GetObjectIDByName("Additivsonnenuntergangszeit", $IPS_SELF);
if ($Variablesonnenuntergang == 0)
{
$Variablesonnenuntergang = IPS_CreateVariable(1);
IPS_SetParent($Variablesonnenuntergang, $IPS_SELF);
IPS_SetName($Variablesonnenuntergang, "Additivsonnenuntergangszeit");
}
$Sommerzeit = @IPS_GetObjectIDByName("Sommerzeit", $IPS_SELF);
if ($Sommerzeit == 0)
{
$Sommerzeit = IPS_CreateVariable(0);
IPS_SetParent($Sommerzeit, $IPS_SELF);
IPS_SetName($Sommerzeit, "Sommerzeit");
}
$zeitsonnenaufgang = @IPS_GetEventIDByName("Timer", $SkriptSonnenaufgangID);
if ($zeitsonnenaufgang == 0)
{
$zeitsonnenaufgang = IPS_CreateEvent(1);
IPS_SetParent($zeitsonnenaufgang, $SkriptSonnenaufgangID); //Ereignis zuordnen
IPS_SetName($zeitsonnenaufgang, "Timer");
}
$zeitsonnenuntergang = @IPS_GetEventIDByName("Timer", $SkriptSonnenuntergangID);
if ($zeitsonnenuntergang == 0)
{
$zeitsonnenuntergang = IPS_CreateEvent(1);
IPS_SetParent($zeitsonnenuntergang, $SkriptSonnenuntergangID); //Ereignis zuordnen
IPS_SetName($zeitsonnenuntergang, "Timer");
}
//grundgerüst erstellt
$sommerzeit = getValueBoolean ($Sommerzeit);
$longitude = 7.80;
$latitude = 50.47;
If ($sommerzeit == True )
{
if (date("I") == 1) $daylight = 5; // Sommerzeit
if (date("I") == 0) $daylight = 4; // Winterzeit
}
else
{
if (date("I") == 1) $daylight = 4; // Sommerzeit
if (date("I") == 0) $daylight = 3; // Winterzeit
}
// *** Sonnenaufgang des heutigen Tages berechnen ***
$var_sunrise = date(date_sunrise(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, 90.8333, $daylight));
// *** Sonnenuntergang des heutigen Tages berechnen ***
$var_sunset = date(date_sunset(time(), SUNFUNCS_RET_STRING, $longitude, $latitude, 90.8333, $daylight));
$alleEreignisse = IPS_GetEventListByType(1);
foreach ($alleEreignisse as $Ereignis) {
$event = IPS_GetObject($Ereignis);
$teile = explode("_",$event["ObjectName"]);
if ($teile[0]=="SUN"):
if ($teile[1]=="SET"):
// "Sonnenuntergang";
IPS_SetEventCyclicTimeBounds($Ereignis, mktime(substr($var_sunset,0,2),substr($var_sunset,3,2)+$teile[2]), 0);
Else:
// "Sonnenaufgang";
IPS_SetEventCyclicTimeBounds($Ereignis, mktime(substr($var_sunrise,0,2),substr($var_sunrise,3,2)+$teile[2]), 0);
Endif;
Endif;
}
$daten = explode(":", $var_sunrise);
$zeit1=$daten[0]*0+$daten[0];
$zeit2=$daten[0]*0+$daten[1];
$zeitvariable1 = getvalue ($Variablesonnenaufgang);
IF ($zeitvariable1 > 0 )
{
$zeit2 = $zeitvariable1+$zeit2 ;
If (60 < $zeit2 )
{
$zeit1=$zeit1+1;
$zeit2=$zeit2-60;
}
IF (60 < $zeit2)
{$zeit2=$zeit2-60;
}
IF ($zeit2 == 60)
{$zeit2=$zeit2-60;
$zeit1=$zeit1+1;
}
}
IF ($zeitvariable1 < 0 )
{
$zeitvariable1 = $zeitvariable1*-1 ;
$zeit21=$zeit2;
IF ($zeit2 > $zeitvariable1)
{$zeit21=$zeit2-$zeitvariable1;}
$zeit2 = $zeit21;
If ($zeitvariable1 > $zeit2 )
{$zeit1=$zeit1-1;
$zeit2=$zeit2+60;}
}
IF ($zeit2 == $zeitvariable1)
{$zeit2=$zeit2-$zeitvariable1;}
IPS_SetEventCyclic($zeitsonnenaufgang, 0, 0, 0, 0, 0, 0 );
IPS_SetEventCyclicTimeBounds($zeitsonnenaufgang,
mktime($zeit1, $zeit2, 0), 0);
$daten = explode(":", $var_sunset);
$zeit3=$daten[0]*0+$daten[0];
$zeit4=$daten[0]*0+$daten[1];
$zeitvariable2 = getvalue ($Variablesonnenuntergang);
IF ($zeitvariable2 > 0 )
{
$zeit4 = $zeitvariable2+$zeit4 ;
If (60 < $zeit4 )
{
$zeit3=$zeit3+1;
$zeit4=$zeit4-60;
}
IF (60 < $zeit4)
{$zeit4=$zeit4-60;
}
IF ($zeit4 == 60)
{$zeit4=$zeit4-60;
$zeit3=$zeit3+1;
}
}
IF ($zeitvariable2 < 0 )
{
$zeitvariable2 = $zeitvariable2*-1 ;
$zeit41=$zeit4;
IF ($zeit4 > $zeitvariable2)
{$zeit41=$zeit4-$zeitvariable2;}
$zeit4 = $zeit41;
If ($zeitvariable2 > $zeit4 )
{$zeit3=$zeit3-1;
$zeit4=$zeit4+60;}
}
IF ($zeit4 == $zeitvariable2)
{$zeit4=$zeit4-$zeitvariable2;}
IPS_SetEventCyclic($zeitsonnenuntergang, 0, 0, 0, 0, 0, 0 );
IPS_SetEventCyclicTimeBounds($zeitsonnenuntergang,
mktime($zeit3, $zeit4, 0), 0);
?>
Das Skript erstellt alles selbst man haben muß, nur noch in die sich selbst erstellenden Skripte, reinschreiben was getan werden soll. das Schalten zwichen Sommerzeit und Winterzeit erfolgt via Schalter manuell mann kann die zeiten um bis zu einer stunde vor oder nach stellen. Hierfür einen wert eingeben in die integer z.b. -30 bei Additivsonnenaufgangszeit um die rolladen 30min früher zu öffnen.
normaler weise muss in diesem Skript nix geaendert werden!!!
viel Spaß