Problem beim Schalten einer Variable, Anbhängigkeit von Wochenplan (aktuelle Aktion)

Ich bin gerade dabei ein Script zu schreiben, das folgendes macht:

  • Es liest den die atuelle Aktion des Wochenplans aus.
  • Es setzt je nach ausgelesener Aktion eine Variable.

Eins vorweg:
Das Skript funktioniert eigentlich und tut was es soll, wenn ich es laufen lasse, nur die Ausgabe ist Meiner Meinung falsch, aktueller Wert der ausgegeben wird: int(2)

Warum wird diser Wert ausgegeben? Eigentlich müsste das Skript den Wert „int(1)“ ausgeben?
Da wir uns ja im Orangenen Bereich befindenund dieser mit „ID 1“ hinterlegt ist und nicht mit „ID 2“.

Mein Wochenplan sieht wie folgt aus:
wochenplan.png
(Heizen von 06:30 - 16 Uhr (Rot) Grundwärme von 16:00 - 06:30 Uhr (Orange).)

Wochenplan Ereignisse:
wochenplan_ereignisse.png

Skript zum auslesen und setzten:


<?

// Holt den Status des Buttons "Heizmodus"
$geblaeseautomatik = GetValueBoolean(15156 /*[Heizlüftersteuerung\Gebläseautomatik]*/);

// Holt den Status des Buttons "
$wochenendmodus_status = GetValueBoolean(54966 /*[Heizlüftersteuerung\Wochenendmodus]*/);

// Aktuelle Aktion im Wochenplan herausfinden
$e = IPS_GetEvent(29165 /*[Heizstatus\Heizmodus\]*/);
$actionID_Wochenplan = 0;
//Durch alle Gruppen gehen
foreach($e['ScheduleGroups'] as $g) {
    //Überprüfen ob die Gruppe für heute zuständig ist
    if($g['Days'] & date("N") > 0) {
        //Aktuellen Schaltpunkt suchen. Wir nutzen die Eigenschaft, dass die Schaltpunkte immer aufsteigend sortiert sind.
        foreach($g['Points'] as $p) {
           if(time() % 86400 >= $p['Start']['Hour'] * 3600 + $p['Start']['Minute'] * 60 + $p['Start']['Second']) {
              $actionID_Wochenplan = $p['ActionID'];
           } else {
              break; //Sobald wir drüber sind, können wir abbrechen.
           }
       }
        break; //Sobald wir unseren Tag gefunden haben, können wir die Schleife abbrechen. Jeder Tag darf nur in genau einer Gruppe sein.
    }
}
var_dump($actionID_Wochenplan);



if ($geblaeseautomatik == true)
	{
		IPS_SetEventActive (29165 /*[Heizstatus\Heizmodus\]*/, true);
		
         	switch ($actionID_Wochenplan) {
    				case 1:
						SetValueInteger(14820 /*[Heizstatus\Heizmodus]*/, 1);
        				break;
    				case 2:
						SetValueInteger(14820 /*[Heizstatus\Heizmodus]*/, 2);
						break;
				}
	}
else
	{
		IPS_SetEventActive (29165 /*[Heizstatus\Heizmodus\]*/, false);
		SetValueInteger(14820 /*[Heizstatus\Heizmodus]*/, 0);
	}
	



if ($wochenendmodus_status == true)
	{
		SetValueInteger(14820 /*[Heizstatus\Heizmodus]*/, 3);

	}
else
echo $wochenendmodus_status;
?>

Magst du den Vergleich mal wie folgt ändern? Ich vermute da sowas…


 if(date("H") * 3600 + date("i") * 60 + date("s") >= $p['Start']['Hour'] * 3600 + $p['Start']['Minute'] * 60 + $p['Start']['Second']) { 

paresy

Kurze Rückmeldung:
Mit dieser Änderung funktioniert das ganze wie es soll. :slight_smile:

Kann es sein, das bei der anderen Version, mit der es nicht ging, ein Problem bezüglich der Zeitumstellung war?

Genau daran lag es :slight_smile:

paresy