Script nur in Bestimmten monaten Ausführen

Folgende Situation
Ich habe einen Taster der z.b. vom 15. April bis 31. August jeden Jahres Script A ausführen soll und vom 1.9. bis 14.April Script B ausführen soll.
Die Scripte werden durch ein Ereignis (Taster) ausgelöst.
Habe das gefunden: aber wie bekomme ich den Monat deklariert?

if ((date(„d“) >= 1) AND (date(„d“) <= 15)) {
echo "Der heutige Tag liegt zwischen dem 1. und 15. des Monats
";
}
else {
echo "Der heutige Tag liegt zwischen dem 16. und letzten Tag des Monats

";
}

PHP: date - Manual

Also sinngemäß so:


if (date("m") >= 5 && date("m") <= 8) {
....

Danke für die Antwort. Aber ich bin leider kein Profi… wie sieht der Richtige Syntax aus für den Zeitraum den ich haben will? Wäre sehr lieb von euch wenn ihr mir das zeigen könntet.
LG

Titus hat Dir doch alles an die Hand gegeben um Deinen Anforderung lösen zu können. Wie hast Du seine Tipps umgesetzt, was hast Du probiert und was funktioniert nicht? Poste Deinen Lösungsansatz und dann wird man Dir hier helfen können.

Ja das mag ja sein…Ich hab aber keine Ahnung wie ich das machen soll:(
Wäre das hier in diesem Sinne?
Wie deklariere ich jetzt den Tag des Monats für den Beginn und wie den Tag des Monats für das Ende der Bedingungen?

<?
if ((date(„d“) >= 1) AND (date(„d“) <= 15)) {
echo "Der heutige Tag liegt zwischen dem 1. und 15. des Monats
";
}
else {
echo "Der heutige Tag liegt zwischen dem 16. und letzten Tag des Monats

";

if (date(„m“) >= 5 && date(„m“) <= 8)

ZW_DimSet(13318 /[Erdgeschoss\Rolladen\Küche Fenster]/, 10);
?>

Hallo tom376,

vorweg: bitte schließe PHP Beispiele immer in PHP-Tags ein. So ist es leichter lesbar.

Es ist einfacher, wenn du direkt das Datum im Format MMTT vergleichst, also:

if ((date("md") >= "0415") && (date("md") <= "0831")) { 
echo "Der heutige Tag liegt zwischen dem 15.4. und 31.8. des Monats
"; 
} 

Gruß

Burkhard

Danke für den Hinweis…hab mich schon gefragt wieso das bei mir anders aussieht. Wird ich mir merken.
Danke für dein Beispiel. Das hast du super erklärt! Wird es gleich testen wenn ich heute Zeit habe. Danke dir!

if ((date("md") >= "0901") && (date("md") <= "0414")) {  
echo "Der heutige Tag liegt zwischen dem 01.9. und 14.4. des Monats
";  
}  

Dies wäre dann der Restliche Zeitraum?

Wenn du keine Lust hast Skripte zu bearbeiten, dann kannst du auch die zusätzlichen Bedingungen eines Ereignisses benutzen. Du kannst dein altes Ereignis duplizieren und für jedes deiner beiden Skripte anpassen. Als Ziel wählst du dann bei jedem Ereignis das entsprechende Skript und bei den Bedingungen sagst du einmal Datum >= 15.3 und Datum <= 31. 8. (Ignoriere Jahr) und beim anderen entsprechend Datum <= 14.3 oder Datum >= 1.9. .

Die Option mit Jahr ignorieren gibt es aktuell nur in der 5.0er Version und kann nur in der webbasierten Konsole oder per Skript eingestellt werden. Falls du noch nicht die 5.0er benutzt, kannst du ja aber erst einmal das Jahr mit drin lassen und das Ignorieren beim Stable Release nachrüsten.

Fast :), die Bedingung wäre nie erfüllt. Es muss hier „oder“ heißen:

if ((date("md") >= "0901") || (date("md") <= "0414")) {  
echo "Der heutige Tag liegt zwischen dem 01.9. und 14.4. des Monats
";  
}  

… oder du nimmst den else - Zweig in meinem Beispiel.

Ich nutze die 5er Version. Bei den Zusätzlichen Bedingungen lässt sich kein Datum ignorieren!? Meine das probiert zu haben…

Danke übrigens für eure Hilfe!!

So,
hab mir jetzt noch ein Paar Gedanke gemacht um mein Vorhaben zu vereinfachen. Hab mein Ein Testscript erstellt.
Dies soll zwischen 15.4. und 31.8. den Rollo auf 5 Prozent fahren und den Rest vom Jahr auf 50 Prozent…Nur als Beispiel:) Würde das exakt so gehen wie unten erstellt?

<?
if ((date("md") >= "0415") && (date("md") <= "0831")) {  
echo "Der heutige Tag liegt zwischen dem 15.4. und 31.8. des Monats
";  
}  
{
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 5);
}
else
{
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 50);
?>

Würde eher sagen so.

<?
if ((date("md") >= "0415") && (date("md") <= "0831")) {  
echo "Der heutige Tag liegt zwischen dem 15.4. und 31.8. des Monats
";  
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 5);
} 
else 
{
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 50);
echo "Der heutige Tag liegt NICHT zwischen dem 15.4. und 31.8. des Monats
"; 
} 
?>

Super… Danke euch!
Hab jetzt mal das ganze Script geändert und angehängt… Passt das so? Ich frage wegen den geschweiften klammern, oder muss da noch was verändert werden.?

<? 
if ((date("md") >= "0415") && (date("md") <= "0831")) {   
echo "Der heutige Tag liegt zwischen dem 15.4. und 31.8. des Monats
";   
ZW_DimSet(13318 /*[Erdgeschoss\Rolladen\Küche Fenster]*/, 10);
$StatusTürgriff = GetValueInteger(13473 /*[Erdgeschoss\Fenster\Küchentür\Status]*/);
if ( ($StatusTürgriff  === 1) or ($StatusTürgriff  === 3) )
{
ZW_DimSet(35895 /*[Erdgeschoss\Rolladen\Küche Tür]*/, 40);
}
$StatusTürgriff = GetValueBoolean(20055 /*[Erdgeschoss\Fenster\Schiebetür\Status]*/);
if ( ($StatusTürgriff  === True) )
{
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 40);
}
ZW_DimSet(12496 /*[Erdgeschoss\Rolladen\Wohnzimmer Couch]*/, 20);
ZW_DimSet(53161 /*[Erdgeschoss\Rolladen\Wohnzimmer Garage]*/, 40);
ZW_DimSet(57527 /*[Obergeschoss\Rolladen\Rolladen Bad]*/, 25); 
}  
else  
{ 
ZW_DimSet(13318 /*[Erdgeschoss\Rolladen\Küche Fenster]*/, 7);
$StatusTürgriff = GetValueInteger(13473 /*[Erdgeschoss\Fenster\Küchentür\Status]*/);
if ( ($StatusTürgriff  === 1) or ($StatusTürgriff  === 3) )
{
ZW_DimSet(35895 /*[Erdgeschoss\Rolladen\Küche Tür]*/, 5);
}
$StatusTürgriff = GetValueBoolean(20055 /*[Erdgeschoss\Fenster\Schiebetür\Status]*/);
if ( ($StatusTürgriff  === True) )
{
ZW_DimSet(27975 /*[Erdgeschoss\Rolladen\Esszimmer]*/, 5);
}
ZW_DimSet(12496 /*[Erdgeschoss\Rolladen\Wohnzimmer Couch]*/, 7);
ZW_DimSet(53161 /*[Erdgeschoss\Rolladen\Wohnzimmer Garage]*/, 7);
ZW_DimSet(57527 /*[Obergeschoss\Rolladen\Rolladen Bad]*/, 25);
ZW_SwitchMode(39941 /*[Erdgeschoss\Beleuchtung\Beleuchtung Strauch]*/, true);
ZW_SwitchMode(27834 /*[Erdgeschoss\Beleuchtung\Beleuchtung Vase]*/, true);
ZW_SwitchMode(41854 /*[Obergeschoss\Beleuchtung\Deko Oben]*/, true);
ZW_DimSet(16667 /*[Erdgeschoss\Beleuchtung\Wohnwand]*/, 17);
HUE_SetValue(41815 /*[Erdgeschoss\Philips Hue\Hue bloom 2]*/,'STATE',true );
HUE_SetValue(20119 /*[Erdgeschoss\Philips Hue\Hue bloom 1]*/,'STATE',true );
HUE_SetValue(41815 /*[Erdgeschoss\Philips Hue\Hue bloom 2]*/,'COLOR',hexdec('DEE0FF'));
HUE_SetValue(20119 /*[Erdgeschoss\Philips Hue\Hue bloom 1]*/,'COLOR',hexdec('DEE0FF'));
IPS_RunScript(44825);
ZW_SwitchMode(59253 /*[Erdgeschoss\Beleuchtung\Greennode Steckdose1]*/, true);
echo "Der heutige Tag liegt NICHT zwischen dem 15.4. und 31.8. des Monats
";  
}  
?> 

Dein Code lässt sich sehr schlecht lesen. Du solltest Dich mit dem Thema „Einrücken“ beschäftigen.

Beispiel:

if ((date("md") >= "0415") && (date("md") <= "0831")) {   
  echo "Der heutige Tag liegt zwischen dem 15.4. und 31.8. des Monats
";   
  ZW_DimSet(13318 /*[Erdgeschoss\Rolladen\Küche Fenster]*/, 10);
  $StatusTürgriff = GetValueInteger(13473 /*[Erdgeschoss\Fenster\Küchentür\Status]*/);
  if ( ($StatusTürgriff  === 1) or ($StatusTürgriff  === 3) ){
    ZW_DimSet(35895 /*[Erdgeschoss\Rolladen\Küche Tür]*/, 40);
  } 
  $StatusTürgriff = GetValueBoolean(20055 /*[Erdgeschoss\Fenster\Schiebetür\Status]*/); 
}

Ich vermute mal, dass du mittlerweile beim Skript bleiben wirst, da du das soweit schon ausgearbeitet hast, aber so könnte man das mit Bedingungen lösen.

Beim erstellen der einzelnen Bedingung klickst du auf „Jahr ignorieren“, damit du den Zeitraum nicht nur auf 15.3. - 31.8.2017 einschränkst, sondern das gleiche Intervall jedes Jahr wieder gilt:
date-condition-001.png

Und wenn du deine beiden Bedingungen eingestellt hast, dann sieht das halt so aus und das dazugehörige Ereignis löst halt nur im eingeschränkten Zeitraum aus:

Aha… super zu sehen… Ich bediene noch über die Legacy Konsole. Ich finde das Strukturierter und übersichtlicher. Die Funktion mit Jahr ignorieren gibt es dort nämlich nicht. Das man das so lösen kann wusste ich, jedoch hätte ich dann für jedes Jahr eine seperate Zeile machen müssen:(
Danke für deine Tipps!