IPS_SetEventCyclic ich bekomme es nicht hin

Hallo, ich versuche mit den Befehlen ein Timer Ereignis zu programieren.
Sobald ich die LAUFZEIT Wiederholung der TAGE > 2 setzte, läuft der Timer nicht mehr an.
Schaue ich mir das Timer Ereignis an steht da (sei 31.12.1899). Stelle ich das Datum dann mannuell auf das heutige datum geht der Timer wieder.

Es soll ein Timer programiert werden, der sich alle x (einstellbar) Tage wiederholt.

Was mache ich da noch falsch.

	IPS_SetEventCyclic($IDe_zeit2, 2, $laufzeit_tage, 0, 0, 0, 0);   					//Zeittyp einstellen
//	IPS_SetEventCyclicDateBounds($IDe_Laufzeit,time(),0); 								// Startdatum
	IPS_SetEventCyclicTimeBounds($IDe_zeit2, mktime($zeit2_STD, $zeit2_MIN, 0),0);//Startzeit
	IPS_SetEventActive($IDe_zeit2, true);

Hi, ich habe vorhin meine Aufrufe der Funktion mal geprüft (ich starte aber nichts im Tageszyklus, sondern eher mehrmals pro Tag) und die Doku. gelesen - so wie ich das lese sollte es wie von Dir gedacht laufen.

Vielleicht erhälst Du noch eine Rückmeldung von Jemandem, der den Timer so am Laufen hat, ansonsten kannst Du über den Punkt „Projekte“ auch einen Fehler (ist ja egal ob in der Doku oder der Funktion) melden.

Viele Grüße, Benjamin

Ist ein Bug. Fix kommt mit der 2.4.

paresy

Hallo paresy ,

danke für die Info, wann kommt ca. die V2.4

Gruß Uwe

Siehe hier : IP-Symcon 2.4 Release Party - Seite 5 - IP-Symcon Community Forum

Also Pfingsten ^^

Hallo,

ich habe es jetzt mit der V2.4 probiert, es scheint aber auch hier nicht zu gehen.

Gruß Uwe

paresy hat den Fix wieder raus genommen, da dadurch andere Timerfunktionen nicht mehr richtig funktionierten. Musst dich also noch ein bischen gedulden.

solange du nur einen Bruchteil deines Codes veröffentlichst ist das Supporten nur mit Glaskugel möglich (kein Mensch weis was in Deinen Variablen drin steht). Vorschlag: nähere dich schrittweise an deine „Ideallösung“ an, zunächst so;

Zyklischer Timer alle 5 Minuten:


IPS_SetEventCyclic($timer_id, 0, 0, 0, 0, 1, 5*60); // alle 5 Minuten
IPS_SetEventCyclicTimeBounds($timer_id, time(), 0);
IPS_SetEventActive($timer_id, true);

Hallo, was soll in der Variable stehen?

mein Code


IPS_SetEventCyclic($IDe_zeit2, 2, $laufzeit_tage, 0, 0, 0,0);           
IPS_SetEventCyclicTimeBounds($IDe_zeit2, mktime($zeit2_STD, $zeit2_MIN, 0),0);
IPS_SetEventActive($IDe_zeit2, true);  

$zeit2_MIN = zahl der Minuten
$zeit2_STD = zahl der Stunden
$laufzeit_tage = zahl der Tage

Ereignis wird auch erstell, nur es läuft nicht wenn $laufzeit_tage > 2.

Könnt ihr ja mal testen wenn Ihr das ein gibt.


IPS_SetEventCyclic($IDe_zeit2, 2, 5, 0, 0, 0,0);           
IPS_SetEventCyclicTimeBounds($IDe_zeit2, mktime(12, 0, 0),0);
IPS_SetEventActive($IDe_zeit2, true);  

Wie Paresy schon sagte: => Ist ein Bug. Fix kommt mit der 2.4.

Habe jetzt v2.4 drauf, es geht bei mir aber noch nicht.

… und darauf bezeiht sich Rainer’S Antwort oben.

Fix ist nicht drin. RWN nennt sogar den Grund. Bevor ich da einen Fix fertig habe werden einige Wochen vergehen. Ist komplizierter als erwartet.

paresy

Hallo,

ich hatte die Antwort von Rainer übersehen. Sorry.

Gruß Uwe

Hi,

als Abhilfe hilft eventuell das Prüfen auf gerade und ungerade Tage, damit das Event alle 2 Tage eintreten kann. Und das Skript dann täglich einmal triggern.

Ist nur so ne Idee, bis der BUG beseitigt wurde.

Gruss
Björn
:slight_smile:

hallo uh368,

ich hatte das problem auch mal.
ich hab dann einfach noch das datum setzen lassen mit:


IPS_SetEventCyclicDateBounds($id_weckskript,
mktime(0, 0, 0, date("m"), date("d"), date("Y")),
mktime(0, 0, 0, date("m"), date("d")+$einmalig1datum, date("Y")));

durch die obere „mktime“ setzt du den anfang (=heute).
durch die untere „mktime“ setzt du den letzten tag + die variable $einmalig1datum, sprich du setzt 18.06.2011 + $einmalig1datum = 19.06.2011.

Ich lasse mein ereignis immer einmal am tag neu schreiben, dadurch wird der endtag immer um eins weiter verschoben.

hier der link zu dem ganzen skript:

http://www.ip-symcon.de/forum/f53/php-sonos-klasse-ansteuern-einzelner-player-7676/index9.html

gruß iamking

Hallo,
ich habe das Problem bei einer Wasserbewässerung im Garten wo 6 Ventile am Tag einmal angesteuert werden. Vielleicht helfen meine Untersuchungen bei der Bugbeseitigung weiter.

Die Zeiten wurden von der neuen Weckerfunktion in Version 2.4 im Webfront gesetzt (Mo-Fr, täglich 18:00 Uhr). Die Timerfunktion wird genau einmal ausgeführt. Danach nie mehr, ausser man setzt die Zeit neu.
Der Workaround von uh368 tuts auch nicht.

Dazu habe ich mir mal per
$StartZeitInfo = IPS_GetEvent($EventID);
print_r($StartZeitInfo);

den Inhalt des Events ausgeben lassen.

Array
(
[CyclicDateDay] => 127
[CyclicDateDayValue] => 0
[CyclicDateFrom] => 1311458400
[CyclicDateTo] => 1311544800
[CyclicDateType] => 3
[CyclicDateValue] => 0
[CyclicTimeFrom] => 1311523200
[CyclicTimeTo] => 0
[CyclicTimeType] => 0
[CyclicTimeValue] => 0
[EventActive] => 1
[EventID] => 46110
[EventLimit] => 0
[EventScript] =>
[EventType] => 1
[LastRun] => 1311102842.528
[NextRun] => 0
[TriggerSubsequentExecution] => 1
[TriggerType] => 0
[TriggerValue] =>
[TriggerVariableID] => 0

Bei den Timern die noch nicht gelaufen sind ist [CyclicDateValue] => 1 . Bei denen, die schon gelaufen sind ist [CyclicDateValue] => 0
Das lässt sich auch nicht durch IPS_SetEventCyclicDateBounds setzen.

Ich habe auch keine Idee wie man diese Variable direkt setzt.

Als Bild habe ich die Ansicht im Baum angehängt. Dort taucht genau diese Variable als „Ereignis. Alle 0 Wochen…“ oder „Ereignis. Alle 1 Wochen…“ auf.

Ich hoffe das ist eine Hilfe beim Bugfixen

Hat jemeand eine Idee für einen Workaround?

Gruss emil

Timer.PNG