Hallo Forum,
ich versuche ein Script zu schreiben, welches mir als Wecker dient.
Das heißt, wenn ich zur Arbeit muss soll das Licht im Schlafzimmer
über mehrere Minuten hochdimmen und mich so einigermasen sanft aus dem Bett treiben. :rolleyes:
Dieses Script soll allerdings nur ausgeführt werden
wenn auch wirklich ein Arbeitstag vor mir liegt
und es außen noch nicht hell geworden ist.
Die Variablen für Urlaub und Feiertag werden über ein Script auf der CCU erzeugt,
Sonnenauf- und -untergang mit dem Astron. Ereignisse-Script hier aus dem Forum.
Weiter unten findet Ihr mein Script.
Dieses funktioniert auch, allerdings nur wenn alle Bedingungen erfüllt sind.
Wenn eine Bedingung nicht erfüllt ist sollte der Schaltbefehl nicht ausgeführt werden.
In diesem Fall wird das Licht aber trotzdem eingeschaltet,
aber nicht mit der definierten Rampenzeit von 600 Sekunden sondern über 2 Sekunden.
Diese 2 Sekunden sind so auf der CCU bei der Direktverknüpfung eingestellt.
Ich bin mir fast sicher, dass es nur an einer Kleinigkeit liegt, ich finde aber leider den Fehler nicht.
Vielleicht könnt Ihr mir weiterhelfen.:o
Vielen Dank schon mal.
Viele Grüße
Darklord
<?
$id_Decke = 53407 /*[Homematic\Schlafzimmer\Dimmer_SZ_Decke\DIMMER]*/ ;
$ramp = 600;
$day = date("w"); // aktueller Wochentag
$uhrzeit = date("H:i"); // aktuelle Uhrzeit
$sunrise = GetValue(14246 /*[Sonstiges\Astronomische Ereignisse\Astronomische Ereignisse\zivile Morgendämmerung]*/);
$sunset = GetValue(37923 /*[Sonstiges\Astronomische Ereignisse\Astronomische Ereignisse\zivile Abenddämmerung]*/ );
$Feiertag = GetValue(28571 /*[Homematic\CCU_Variablen\Feiertag_heute]*/ );
$Urlaub = GetValue(27761 /*[Homematic\CCU_Variablen\Urlaub]*/ );
if (($day >= 1 and $day <= 5) && // Wenn heute Werktag...
($Feiertag == false) && // ... und heute kein Feiertag...
($Urlaub == false) && // ... und heute kein Urlaub...
( ($uhrzeit < $sunrise) or ($uhrzeit > $sunset) ) ) // ... und zwischen Abend- und Morgendämmerung...
// ...dann
HM_WriteValueFloat($id_Decke , "RAMP_TIME", $ramp); // X Sekunden Rampe
HM_WriteValueFloat($id_Decke , "LEVEL" , .6); // und ausführen auf x%
?>