Sorry habe einen Hänger

Wer kann mir helfen ?

Will ein Skript welches einen FS20 Schalter mehrmals am Tag ein und ausschaltet. Habe mich irgendwie verrannt.


 
<?
/***********************
Weihnachtsbeleuchtung schalten
 
Trigger: Zyklisch alle 15 Minute
***********************/
 
define("VarWBFlag", 31875 /*[Zeitsteuerung\Weihnachtsbeleuchtung\VarWBFlag]*/, true); // 12345 durch die ID der BOOLEAN-Var. ersetzen (siehe Text unten)
 
$OnTime = GetValue (21448 /*[.Astronomische Zeitsteuerung\Astronomische Zeitsteuerung\Sonnenuntergang]*/); //Einschaltzeitpunkt - Abends
$OnTime_1 = "06:15:00"; //Einschaltzeitpunkt - Morgens
$Offset = 0; // Offset zu Sunset in Minuten
$OffTime = "22:45:00"; // Ausschaltzeitpunkt - Abends
$OffTime_1 = GetValue (22076 /*[.Astronomische Zeitsteuerung\Astronomische Zeitsteuerung\Sonnenaufgang]*/); // Ausschaltzeitpunkt - Morgens
 
// Ein- und Ausschaltzeitpunkt in Unix-Timestamp umwandeln
$ot = explode(":", $OffTime);
$ot_1 = explode(":", $OffTime_1);
$nt = explode(":", $OnTime);
$nt_1 = explode(":", $OnTime_1);
$ontime = mktime((int)$nt[0], (int)$nt[1], (int)$nt[2]) + ($Offset * 60);
$ontime_1 = mktime((int)$nt_1[0], (int)$nt_1[1], (int)$nt_1[2]) + ($Offset * 60);
$offtime = mktime((int)$ot[0], (int)$ot[1], (int)$ot[2]);
$offtime_1 = mktime((int)$ot_1[0], (int)$ot_1[1], (int)$ot_1[2]);
 
// Weihnachtsbeleuchtung Abens schalten
 
if (GetValue(VarWBFlag) == false AND time() >= $ontime AND time() <= $offtime) {
// Einschalten
FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, true);
SetValue(VarWBFlag, true); // Wir haben eingeschaltet...
} elseif (GetValue(VarWBFlag) == true AND time() >= $offtime); {
// Ausschalten
FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, false);
SetValue(VarWBFlag, false); // Wieder bereit machen für den nächsten Tag
}
// Weihnachtsbeleuchtung Morgens schalten
if (GetValue(VarWBFlag) == false AND time() >= $ontime_1 AND time() <= $offtime_1) {
// Einschalten
FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, true);
SetValue(VarWBFlag, true); // Wir haben eingeschaltet...
} elseif (GetValue(VarWBFlag) == true AND time() >= $offtime_1) {
// Ausschalten
FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, false);
SetValue(VarWBFlag, false); // Wieder bereit machen für den nächsten Tag
}
 
Echo $OffTime_1;
Echo "_ _";
Echo $OnTime;
Echo "_ _";
Echo $ontime;
Echo "_ _";
Echo $ontime_1;
Echo "_ _";
Echo $offtime;
Echo "_ _";
Echo $offtime_1;
Echo "_ _";
Echo time();
?>


Grüße Ralf

:confused:

Hallo Ralf,

ich würde das mit 2 Timern und Sonnenauf/untergang lösen.

1 Script für ein und eins für aus.

Script für ein, Timer 6:15 Uhrzeit und Trigger Sonnenuntergang

FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, true);

Script für aus, Timer 23:15 und Trigger Sonnenaufgang

FS20_SwitchMode(53160 /*[Funk-Schalter-Mobil\Funk-Schalter-S2]*/, false);

@Ra-Be

noch einfacher kannst du dir’s machen, wenn du eine (Boolean)-Variable für Tag/Nacht setzt, denn da ist bestimmt nicht das einzigste u. letzemal, dass du die Funktion brauchst :wink:

Mein stark gekürztes Beispiel (setzt die Uhrzeit für Sonnenauf/untergang u. die entsprechende BoolVar):

<?
/*
******************************************************************
Sonnenauf- u. untergang berechnen und Var schreiben
******************************************************************
File     : Sonnenauf-Untergang.ips.php
Trigger  : minütlich

*/

   $longitude = "11.49";                              		// Longitude (geografische Länge)
   $latitude = "50.24";                               		// Latitude (geografische Breite)
   $uhrzeit = date("H:i");                            		// aktuelle Uhrzeit
   $offsetgmt = (date("Z")/3600);                     		// Offset zur GMT in Stunden


if (date("I") == 1) $daylight = 2;       // Sommerzeit
if (date("I") == 0) $daylight = 1;       // Winterzeit

// *** Sonnenaufgang des heutigen Tages berechnen ***
$sunrise = date(date_sunrise(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, 90.8333, $daylight));
// echo "Sonnenaufgang um ",date($sunrise)," Uhr"."
";


// *** Sonnenuntergang des heutigen Tages berechnen ***
$sunset = date(date_sunset(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, 90.8333, $daylight));
// echo "Sonnenuntergang um ",date($sunset)," Uhr"."
";
// echo "Der Offset zur GMT beträgt ",date($offsetgmt)," Stunden";


// Variablen schreiben für Sonnenauf- u. untergang
SetValueString(42186 /*[.Steuerung\Sonnenaufgang]*/ , $sunrise);
SetValueString(48950 /*[.Steuerung\Sonnenuntergang]*/ , $sunset);

// Variable für Tag/Nacht setzen
if ( ($uhrzeit < $sunrise) or ($uhrzeit > $sunset) )
{
SetValueBoolean(32178 /*[.Steuerung\Es ist Tag]*/ , false);
	}
	else
	{
	SetValueBoolean(32178 /*[.Steuerung\Es ist Tag]*/ , true);
	}
?>

Damit ersparst du dir komplizierte Berechnungen in verschiedenen Scripts.
Einfach die Boolean-Variable auswerten :wink: Damit lässt sich einfacher „hantieren“.

Danke für Eure Tips es funktioniert gut
:smiley: