Skript - nur ausführen in einem bestimmten Zeitfenster (bei Anfang und Ende)

Guten Tag,

ich möchte ein Logikskript Beschattung für 2 Fenster aus wenn Markise beschattet schreiben.

Das Skript funktioniert soweit gut.
Was ich aber nicht schaffe ist, das das Skript nur einmal bei Start des Zeitfensters und einmal bei Ende des Zeitfenster ausgeführt wird.

Sinn ist, das bei Ende Zeitfenster der Status der Beschattung der beiden Fenster wieder auf aktiv gesetzt wird.

Hier die Logik:

[b]<?php[/b]
// wenn Beschattung Markise Süd Aktiv > dann keine Beschattung Terrassentür Wohnen und Treppe UC_GetIconContent
// zwischen 10:00 und 15:00 Uhr

// 40527
// 29250
// 55619

$timestamp = time();
$uhrzeit = date("H:i", $timestamp);
$datum = date("d.m.Y", $timestamp);

$MarkiseSuedBeschattungAktiv = GetValueBoolean(40527);
$LogikAktiv = GetValueBoolean(43484);

// Zeitfenster
$actualZeitStartHour = GetValue(12415); 
$actualZeitStartMinute = GetValue(11282); 
$actualZeitStopHour = GetValue(25530); 
$actualZeitStopMinute = GetValue(11596); 

// Abfrage ob Uhrzeit im Tagbetrieb ist (Nach keine Durchsage)
$tagbetrieb = false;
$timeStart = mktime($actualZeitStartHour,$actualZeitStartMinute); 
$timeStop = mktime($actualZeitStopHour,$actualZeitStopMinute); 
    // Gibt den Timestamp für: 2006-04-05T01:02:03+00:00 
    // mktime(1, 2, 3, 4, 5, 2006) 
if ($timestamp > $timeStart && $timestamp < $timeStop) 
    { 
        $tagbetrieb = true;
    }

if ($LogikAktiv == true)
{   // Logik aktiv

    if ($MarkiseSuedBeschattungAktiv == true)
    {
        if($tagbetrieb == true)
        {
        // Markise beschattet > Auto auf AUS bei Treppe + TerrTür Wohnen
        EIB_Switch(12651, false);
        EIB_Switch(11222, false);  
        
        
       
        }
        else
        {
        // Beschattungszustand wieder normalisieren wenn Tagbetrieb zu Ende
        EIB_Switch(12651, true);
        EIB_Switch(11222, true); 
        }
    }
    else
    {   // Beschattungszustand bleibt wie er ist
            
    }

}
else
{ // Logik nicht aktiv
  // nichts machen

}

Ich vermute mal das Skript wird über Ereignisse ausgeführt. Dann kannst du dort die Zeitgrenzen als Erweiterte Bedingungen hinzufügen. Dein „LogikAktiv“ kannst du auch darüber einstellen.