Aktuelle Aktion im Wochenplan herausfinden

Hallo Matze,

wie verwendest du das Skript denn? Wenn du uns deinen aktuellen Ansatz verrätst, dann können wir ja einmal darauf schauen und deinen Fehler erkennen.

Unbenannt.PNG

Gelb = Handbetrieb (Actionname)
Ogange = Autobeschattung (Actionname)

Das ist z.B. Meine Wochenplan für die Jalousie und heute mogen
(Montag) hatte ich Folgendes Problem: Der Actionname den
das Getweekplanstate um 6 Uhr hätte liefern müssen wäre "Handbetrieb
Jalousie 1 " gewesen. Es lieferte mir aber den Actionname vom Wochenende
wo um 6Uhr „Autobeschattung Jalousie 1“ verplant ist.

Ich meinte die Verwendung des Skriptes. Wie rufst du es auf und mit welchen Parametern?


include ('14606 /*[Scripts\Script_Wochenplan_Auslesen\Get_WeekplanState_V6]*/.ips.php');


//---------------------------Betriebsart auslesen------------------------------------

$Wochenplan_Daten_Jalousie_1 = GetWeekplanState(26110 /*[Variablen_Ordner\Jalosie_var\Wohnzimmer Jalousie 

1\Wochenplan]*/,time()-24*3600);

//---------------------------Betriebsart in var schreiben------------------------------------

$Betriebsart_Jalousie_1 = $Wochenplan_Daten_Jalousie_1["ActionName"];



//---------------------------Wochenplan Check Jalousie 1 Wohnzimmer------------------------------------

if    ($Betriebsart_Jalousie_1 == "Handbetrieb") {
       IPS_RunScript(41969 /*[Variablen_Ordner\Jalosie_var\Wohnzimmer Jalousie 1\Handbetrieb Wochenplan]*/ );
	  }
	  if    ($Betriebsart_Jalousie_1 == "Auto Beschattung") {
       IPS_RunScript(32587 /*[Variablen_Ordner\Jalosie_var\Wohnzimmer Jalousie 1\Beschattung Wochenplan Script]*/ );
	  }
if    ($Betriebsart_Jalousie_1 == "Nachtschliesung") {
       IPS_RunScript(33366 /*[Variablen_Ordner\Jalosie_var\Wohnzimmer Jalousie 1\Nacht Wochenplan Script]*/ );
	  }	  
	  

Auf diese Art lese ich den Wochenplan aus

Habe es nochmal getestet, Getweekplanstate liefert mir um 13 Uhr , Montags, den
Actionname des grauen Zeitraums.
IPS hat bei mir aber schon den Richtigen Tag erkannt

Ich habe mich jetzt nicht wirklich mit dem GetWeekplanState beschäftigt, aber der graue Bereich war gestern um 13:00 Uhr aktuell. Bei deinem Aufruf von GetWeekplanState verwendest du den Zeitparameter time() - 24 * 3600, also jetzt vor 24 Stunden. Musst du vielleicht einfach nur die aktuelle Zeit benutzen, also stattdessen einfach nur time() ohne den Abzug von 24 Stunden?

:slight_smile:

Super, das wars jetzt funktioniert es vielen vielen Dank

$Wochenplan_Daten_Jalousie_1 = GetWeekplanState(26110 /[Variablen_Ordner\Jalosie_var\Wohnzimmer Jalousie 1\Wochenplan]/,time());

Meganützliches Script, hat mir Nächte gespart. Und auch noch mit genialer Doku. Vielen lieben Dank :slight_smile:

Das Skript von mir aus dem 3. Beitrag hatte noch einen kleinen Fehler, den @Dr.Niels entdeckt hat beim Überprüfen der Zuständigkeit der Tage. Der ist jetzt korrigiert. Wir bringen diesen Schnippsel auch als Aktion für den Ablaufplan zur 6.3 :slight_smile:

paresy

Ich kann zwar den Wocheplan Aktiv/Inaktiv setzen:

image

Aber kann der Status über Aktiv/Inaktiv des Wochenplans im Ablaufplan abgefragt werden?

Aktuell gibt es dazu keine passende Aktion. Aktuell müsstest du dir da mit einem Schnipsel PHP-Code helfen. Wir wollen aber demnächst eine neue Aktion „Objekteigenschaft auslesen“ implementieren, mit der man dann unter anderem Aktiv/Inaktiv eines Ereignisses in eine Variable schreiben kann. Und von der Variable aus kannst du die dann ja wunderbar weiternutzen.

function GetCurrentActiveAction($ID_Wochenplan) {
  $e = IPS_GetEvent($ID_Wochenplan);
  $actionID = false;
  if ($e["EventActive"]) {	
    //Durch alle Gruppen gehen
    foreach($e['ScheduleGroups'] as $g) {
      //Überprüfen ob die Gruppe für den aktuellen Wochentag zuständig ist
      if(($g['Days'] == pow(2,date("N")-1))) {
           //Aktuellen Schaltpunkt suchen. Wir nutzen die Eigenschaft, dass die Schaltpunkte immer aufsteigend sortiert sind.
       	  foreach($g['Points'] as $p) {
       	  	$Start = mktime ($p['Start']['Hour'], $p['Start']['Minute'], $p['Start']['Second']);
     	  	if(time() >= $Start) {
     	  		$actionID = $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.
      }
    }
  }
  return $actionID;	
}
1 „Gefällt mir“