Wochenplan - falsche Aktion wurde ausgeführt

Ich generiere automatisiert für jeden Tag der Woche - immer am aktuellen Tag für den nächsten Tag - einen Wochenplan zum Laden vom Auto. Rein optisch sieht es in Ordnung aus. Da ich es gestern scharf geschalten habe, war heute um 0:00 der erste Schaltpunkt. Nämlich „Laden ein“. Ausgeführt wurde aber die Aktion „Laden aus“.
image
image


Man sieht es auch bei der Analyse vom Ablaufplan.
Muss ich, wenn das Laden theoretisch um 0:00 beginnen sollte, die Zeit auf 0:01 stellen oder hat es andere Gründe?
Wie könnte ich der Ursache auf den Grund gehen?

Ich bin gespannt was heute um 12:00 passiert.

Ist das nicht die Analyse vom Ablaufplan?
Vielleicht liegt dort der Fehler?
Michael

Natürlich vom Ablaufplan. Habs geändert.


Der Ablaufplan sieht so aus. Nicht wirklich was besonderes.
Ich hab es auch so in meinem Log stehen

Der Ladevorgang wurde zwei mal beendet.

Das sieht bei dir eigentlich alles richtig aus und ich hätte da auch die andere Ausführung erwartet. Ich habe das gerade mal versucht mit einem Wochenplan und zwei Aktionen nachzustellen. Das klappt aber wie vorgesehen. Auch im Code konnte ich nichts auffälliges entdecken, was Probleme machen sollte.
Magst du mir mal die JSON-Datei deines Ablaufplans schicken? Dann schaue ich mir das mal genauer an.

Mach ich. Die Schaltzeit um 12:00 (eben) hat er korrekt ausgeführt. Ich werde für morgen (sollte es da wieder einen um 0:00 geben) nicht 0:00, sondern 0:01 eintragen.

Hier der json-File vom Ablaufplan
27027.ips.json (4,1 KB)

//Wochentag Gruppe Montag=0, Dienstag=1, Mittwoch=2, Donnerstag=3, Freitag=5, Samstag=5, Sonntag=6
$gruppe=$wochentag-1;
//Sonntag
if ($gruppe == -1) $gruppe=6;

//Schaltpunkte löschen
for ($i=0;$i<=23;$i++)
{
	//löschen für Laden ein
	IPS_SetEventScheduleGroupPoint (37039, $gruppe, $i, -1, -1, -1,2);
	//lsöchen für Laden aus 
	IPS_SetEventScheduleGroupPoint (37039, $gruppe, $i, -1, -1, -1,1);
}
$schaltpunkt=0;
$minute=0;
foreach ($ladezeit as $block)
{
	reset($block);
	$start=current($block);
	$ende=end($block);
	//Ende nächste Stunde
	$ende=$ende+1;
    //bei Start um 0:00 erst eine Minute später starten
    if ($start==0) $minute=1; else $minute=0;
	//Ladestart
	IPS_SetEventScheduleGroupPoint (37039, $gruppe, $schaltpunkt, $start, $minute, 0,2); 
	$schaltpunkt++;
	if ($ende<24)
	{
		IPS_SetEventScheduleGroupPoint (37039, $gruppe, $schaltpunkt, $ende, 0, 0,1); 
		$schaltpunkt++;
	}
}

Der Teil von dem Skript, mit dem ich die Zeiten im Wochenplan pro Tag erstelle. Ich hab das da schon geändert, dass er bei einer Startzeit von 0:00 als Minute 1 einträgt.
Ich denke das Phänomen tritt nur bei 0:00 auf, wenn es nicht die Aktion mit der ID=1 ist.

Hier noch die Daten aus ips_getevent von dem Wochenplan. Das schaut eigentlich auch ganz gut aus
ACHTUNG: 0:00 wurde da schon auf 0:01 geändert. Aber die Logik vom Skript ist ident.

array(26) {
  ["EventID"]=>
  int(37039)
  ["EventType"]=>
  int(2)
  ["EventActive"]=>
  bool(true)
  ["EventLimit"]=>
  int(0)
  ["EventConditions"]=>
  array(0) {
  }
  ["TriggerType"]=>
  int(0)
  ["TriggerVariableID"]=>
  int(0)
  ["TriggerValue"]=>
  string(0) ""
  ["TriggerSubsequentExecution"]=>
  bool(true)
  ["CyclicDateType"]=>
  int(0)
  ["CyclicDateValue"]=>
  int(0)
  ["CyclicDateDay"]=>
  int(0)
  ["CyclicDateDayValue"]=>
  int(0)
  ["CyclicDateFrom"]=>
  array(3) {
    ["Day"]=>
    int(0)
    ["Month"]=>
    int(0)
    ["Year"]=>
    int(0)
  }
  ["CyclicDateTo"]=>
  array(3) {
    ["Day"]=>
    int(0)
    ["Month"]=>
    int(0)
    ["Year"]=>
    int(0)
  }
  ["CyclicTimeType"]=>
  int(0)
  ["CyclicTimeValue"]=>
  int(0)
  ["CyclicTimeFrom"]=>
  array(3) {
    ["Hour"]=>
    int(0)
    ["Minute"]=>
    int(0)
    ["Second"]=>
    int(0)
  }
  ["CyclicTimeTo"]=>
  array(3) {
    ["Hour"]=>
    int(0)
    ["Minute"]=>
    int(0)
    ["Second"]=>
    int(0)
  }
  ["ScheduleActions"]=>
  array(2) {
    [0]=>
    array(6) {
      ["ID"]=>
      int(1)
      ["Name"]=>
      string(9) "Laden aus"
      ["Color"]=>
      int(16711680)
      ["ScriptText"]=>
      string(0) ""
      ["ActionID"]=>
      string(38) "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}"
      ["ActionParameters"]=>
      array(0) {
      }
    }
    [1]=>
    array(6) {
      ["ID"]=>
      int(2)
      ["Name"]=>
      string(9) "Laden ein"
      ["Color"]=>
      int(65280)
      ["ScriptText"]=>
      string(0) ""
      ["ActionID"]=>
      string(38) "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}"
      ["ActionParameters"]=>
      array(0) {
      }
    }
  }
  ["ScheduleGroups"]=>
  array(7) {
    [0]=>
    array(3) {
      ["ID"]=>
      int(0)
      ["Days"]=>
      int(1)
      ["Points"]=>
      array(4) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(1)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(2)
        }
        [1]=>
        array(3) {
          ["ID"]=>
          int(1)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(6)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
        [2]=>
        array(3) {
          ["ID"]=>
          int(2)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(12)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(2)
        }
        [3]=>
        array(3) {
          ["ID"]=>
          int(3)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(15)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [1]=>
    array(3) {
      ["ID"]=>
      int(1)
      ["Days"]=>
      int(2)
      ["Points"]=>
      array(1) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [2]=>
    array(3) {
      ["ID"]=>
      int(2)
      ["Days"]=>
      int(4)
      ["Points"]=>
      array(1) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [3]=>
    array(3) {
      ["ID"]=>
      int(3)
      ["Days"]=>
      int(8)
      ["Points"]=>
      array(1) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [4]=>
    array(3) {
      ["ID"]=>
      int(4)
      ["Days"]=>
      int(16)
      ["Points"]=>
      array(1) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [5]=>
    array(3) {
      ["ID"]=>
      int(5)
      ["Days"]=>
      int(32)
      ["Points"]=>
      array(1) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
    [6]=>
    array(3) {
      ["ID"]=>
      int(6)
      ["Days"]=>
      int(64)
      ["Points"]=>
      array(4) {
        [0]=>
        array(3) {
          ["ID"]=>
          int(0)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(0)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(2)
        }
        [1]=>
        array(3) {
          ["ID"]=>
          int(1)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(8)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
        [2]=>
        array(3) {
          ["ID"]=>
          int(2)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(12)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(2)
        }
        [3]=>
        array(3) {
          ["ID"]=>
          int(3)
          ["Start"]=>
          array(3) {
            ["Hour"]=>
            int(17)
            ["Minute"]=>
            int(0)
            ["Second"]=>
            int(0)
          }
          ["ActionID"]=>
          int(1)
        }
      }
    }
  }
  ["EventScript"]=>
  string(0) ""
  ["EventActionID"]=>
  string(0) ""
  ["EventActionParameters"]=>
  array(0) {
  }
  ["LastRun"]=>
  int(1676286000)
  ["NextRun"]=>
  int(1676296800)
}

Guten Morgen
Es dürfte tatsächlich mit der Schaltzeit 0:00 zu tun haben. Es gab heute wieder einen Ladestart um 0:00. Im Wochenplan wurde statt 0:00, 0:01 eingetragen. Und siehe da, der Ladevorgang wurde gestartet.

Ich denke ich habe den Fehler gefunden.
In meinem Skript werden, bevor die neuen Schaltpunkte rein kommen, alle vorhandenen gelöscht.

//Schaltpunkte löschen
for ($i=0;$i<=23;$i++)
{
	//löschen für Laden ein
	IPS_SetEventScheduleGroupPoint (37039, $gruppe, $i, -1, -1, -1,2);
	//lsöchen für Laden aus 
	IPS_SetEventScheduleGroupPoint (37039, $gruppe, $i, -1, -1, -1,1);
}

Das gibt zwar viele Fehlermeldungen, aber das ist egal.
Was ich allerdings nicht beachtet habe, ist, dass dann gar nichts mehr für den Tag vorhanden ist.
Sieht dann so aus, wenn man sich das im WF ansieht


Werden jetzt Schaltpunkte eingetragen, dann fehlt etwas vorher.

Um das zu verhindern, wird nach dem Löschen eine Aktion „Laden aus“ für den ganzen Tag eingetragen.

IPS_SetEventScheduleGroupPoint (37039, $gruppe, $schaltpunkt, 0 ,0, 0,1);

Dann passt auch die Anzeige
image

Sehr gut, dann funktioniert ja alles wieder wie geplant :slight_smile:

Ja, ich muss nur prüfen, ob es auch dann funktioniert, wenn ich einen Startpunkt mit 0:00 anstatt 0:01 eintrage. Aber das kann ich probieren.

Schau dir dann am besten auch nochmal die Ausgabe von IPS_GetEvent auf den Wochenplan an nachdem dein Skript durchgelaufen ist. Nicht dass da irgend etwas unerwartetes bei 00:00 Uhr landet