Script funktioniert nur wenn alle Bedingungen erfüllt

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.:confused:
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%


?>

Mal so aus dem Bauch heraus, würde ich sagen, da fehlen geschweifte Klammern…probier es mal so:

<? 

$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% 
}

?>

When using if statements without the curly braces, remember than only one statement will be executed as part of that condition. If you want to place multiple statements you must use curly braces, and not just put them on the same line.

Viele Grüße
Martin

HI mcbelly,

vielen Dank für Deine schnelle Hilfe.
Das war, zumindest wie es auf das Erste aussieht, der Fehler.

Da, wo Du die geschweiften Klammern gesetzt hast hatte ich auch schon welche.
Allerdings KEINE geschweiften, sondern normale…:rolleyes:
Und damit kamen nur Fehlremeldungen.:frowning:

Danke für Deine Hilfe.:smiley:

Gruß

Darklord