Bewässerungs script

Hallo zusammen

ich habe vor ein paar Wochen im Forum ein Sricpt für Gardena Bewässerung gefunden und dies noch ein wenig geändert. Es funktioniert soweit klasse, ich habe nur ein Problem beim Erstellen der neue Ereigniszeit. Wenn ich eine Wiederholen von jeden Tag eingeben dann klappt alles. Wenn ich aber alle 2 Tage bewässern will, wird nach dem ausführen die nächstest Startzeit auf 1970 gesetzt. Die Ereignisse werden im Script mit erstellt. Ich komme aber nicht auf den Fehler. Könnt ihr mir hier weiterhelfen? Ich lasse das Event über Timebound und cyle anlegen. und durch eine Variable gebe ich die nächste Laufzeit vor.

<?


$ID_HMInstanz                     = 11776 /*[Garten\Gartenhaus\Pumpe Manuell]*/;
$ID_HMInstanz_Status       = 51336 /*[Garten\Gartenhaus\Pumpe Manuell\Pumpe Manuell]*/;
$ID_Evapotranspiration        = 38683 /*[Wetter\Verdunstung]*/;
$ID_Regenmelder                = 42639 /*[Regenzisterne\Regensensor]*/;
$ID_Niederschlag           = 41030 /*[Wetter\Regenmenge letzte 24 Stunden]*/;
//================================================================
//---Variable erstellen-------------------------------------------
$ID_zeit1_aktiv             = CreateVariableByName($IPS_SELF, "Zeit 1 aktiv", 0, "", "false");
$ID_zeit2_aktiv             = CreateVariableByName($IPS_SELF, "Zeit 2 aktiv", 0, "", "true");
$ID_zeit1                     = CreateVariableByName($IPS_SELF, "Zeit 1", 3, "", "11:00");
$ID_zeit2                     = CreateVariableByName($IPS_SELF, "Zeit 2", 3, "", "03:05");
$ID_laufzeit_MIN         = CreateVariableByName($IPS_SELF, "Laufzeit Minimum", 1, "Zeit_MIN", 2);
$ID_laufzeit_MAX         = CreateVariableByName($IPS_SELF, "Laufzeit Maximum", 1, "Zeit_MIN", 15);
$ID_laufzeit_tage        = CreateVariableByName($IPS_SELF, "Laufzeit Wiederholung Tage", 1, "", 2);
$ID_laufzeit_ges_SEC     = CreateVariableByName($IPS_SELF, "Laufzeit Dauer gesamt (sec)", 1, "Zeit_SEC", 0);
$ID_laufzeit_ges_MIN     = CreateVariableByName($IPS_SELF, "Laufzeit Dauer gesamt", 1, "Zeit_MIN", 0);
$ID_laufzeit_aktuell     = CreateVariableByName($IPS_SELF, "Laufzeit Dauer aktuell", 1, "Zeit_SEC", 0);
$ID_laufzeit_faktor         = CreateVariableByName($IPS_SELF, "Laufzeit Faktor", 1, "", 60);
$ID_laufzeit_letzte         = CreateVariableByName($IPS_SELF, "Laufzeit Letzte", 3, "", "");
$ID_laufzeit_next         = CreateVariableByName($IPS_SELF, "Laufzeit Nächste", 3, "", "");
$ID_Regenmelder_aktiv     = CreateVariableByName($IPS_SELF, "Regenmelder Überwachung aktiv", 0, "~Switch", "true");
//---Variable einlesen---------------------------------------------
$zeit1_aktiv             = getValue($ID_zeit1_aktiv);
$zeit2_aktiv             = getValue($ID_zeit2_aktiv);
$laufzeit_MIN        = getValue($ID_laufzeit_MIN);
$laufzeit_MAX        = getValue($ID_laufzeit_MAX);
$laufzeit_tage       = getValue($ID_laufzeit_tage);
$Evapotranspiration     = getValue($ID_Evapotranspiration);
$laufzeit_faktor     = getValue($ID_laufzeit_faktor);
$laufzeit_ges_SEC    = getValue($ID_laufzeit_ges_SEC);
$HMInstanz_Status        = getValue($ID_HMInstanz_Status);
$Regenmelder           = getValue($ID_Regenmelder);
$Regenmelder_aktiv   = getValue($ID_Regenmelder_aktiv);
$Niederschlag        = (INT)getValue($ID_Niederschlag);


//---Ereignis erstellen-----------------------------------------
$IDe_zeit1 = @IPS_GetEventIDByName("Startzeit 1", $IPS_SELF);                    // == Startzeit 1 ==
If ($IDe_zeit1 === false){                                                          // Üperprüfen ob Ereignis gibt
      $IDe_zeit1 = IPS_CreateEvent(1);                                                            // Ausgelöstes Ereignis
      IPS_SetName($IDe_zeit1, "Startzeit 1");                                                   // Namen zuordenen
    IPS_SetParent($IDe_zeit1, $IPS_SELF);                                                       // Eregnis zuordnen
    IPS_SetEventActive($IDe_zeit1, true);                                                       // Ereignis aktivieren
}
$IDe_zeit2 = @IPS_GetEventIDByName("Startzeit 2", $IPS_SELF);                    // == Startzeit 2 ==
If ($IDe_zeit2 === false){                                                          // Üperprüfen ob Ereignis gibt
      $IDe_zeit2 = IPS_CreateEvent(1);                                                            // Ausgelöstes Ereignis
      IPS_SetName($IDe_zeit2, "Startzeit 2");                                                   // Namen zuordenen
    IPS_SetParent($IDe_zeit2, $IPS_SELF);                                                       // Eregnis zuordnen
    IPS_SetEventActive($IDe_zeit2, true);                                                       // Ereignis aktivieren
}
$IDe_Laufzeit = @IPS_GetEventIDByName("STOP Laufzeit", $IPS_SELF);               // == Laufzeit ==
If ($IDe_Laufzeit === false){                                                      // Üperprüfen ob Ereignis gibt
      $IDe_Laufzeit = IPS_CreateEvent(1);                                                        // Ausgelöstes Ereignis
      IPS_SetName($IDe_Laufzeit, "STOP Laufzeit");                                           // Namen zuordenen
    IPS_SetParent($IDe_Laufzeit, $IPS_SELF);                                                   // Eregnis zuordnen
    IPS_SetEventActive($IDe_Laufzeit, true);                                                   // Ereignis aktivieren
}
$IDe = @IPS_GetEventIDByName("Überwachung EVA Wert", $IPS_SELF);                    // == Überwachung ==
If ($IDe === false){
    $IDe = IPS_CreateEvent(0);                                                                    // Ausgelöstes Ereignis
    IPS_SetName($IDe, "Überwachung EVA Wert");                                               // Namen zuordenen
    IPS_SetEventTrigger($IDe, 1, $ID_Evapotranspiration);                                 // Bei Änderung von Variable
    IPS_SetParent($IDe, $IPS_SELF);                                                                 // Ereignis zuordnen
    IPS_SetEventActive($IDe, true);                                                                // Ereignis aktivieren
}
$IDe = @IPS_GetEventIDByName("Überwachung Regenmelder", $IPS_SELF);                // == Überwachung ==
If ($IDe === false){
    $IDe = IPS_CreateEvent(0);                                                                    // Ausgelöstes Ereignis
    IPS_SetName($IDe, "Überwachung Regenmelder");                                           // Namen zuordenen
    IPS_SetEventTrigger($IDe, 1, $ID_Regenmelder);                                                     // Bei Änderung von Variable
    IPS_SetParent($IDe, $IPS_SELF);                                                                 // Ereignis zuordnen
    IPS_SetEventActive($IDe, true);                                                                // Ereignis aktivieren
}

//---Tastatur / Bottom abfrage-------------------------------------
If (!isset($IPS_COMPONENT)) $IPS_COMPONENT ="";                                  // Dashboard Bottom abfrage
//---Zeiten ändern-------------------------------------------------
If($IPS_COMPONENT == "Zeit1 AUS"){
    If ($zeit1_aktiv == true){                                                               // Zeit 1 AUS
      $zeit1_aktiv = false;
    }
    ElseIf ($zeit1_aktiv == false){                                                            // Zeit 1 EIN
      $zeit1_aktiv = true;
    }
    SetValue($ID_zeit1_aktiv,$zeit1_aktiv);
}
If($IPS_COMPONENT == "Zeit2 AUS"){
    If ($zeit2_aktiv == true){                                                               // Zeit 2 AUS
      $zeit2_aktiv = false;
    }
    ElseIf ($zeit2_aktiv == false){                                                           // Zeit 2 EIN
      $zeit2_aktiv = true;
    }
    SetValue($ID_zeit2_aktiv,$zeit2_aktiv);
}

If($IPS_COMPONENT == "Zeit1 +" and $zeit1_aktiv == true){                              // Zeit 1 höher
   $zeit1 = ZeitEdit($ID_zeit1, +15);
   SetValue($ID_zeit1, $zeit1);
}
If($IPS_COMPONENT == "Zeit1 -" and $zeit1_aktiv == true){                               // Zeit 1 tiefer
   $zeit1 = ZeitEdit($ID_zeit1, -15);
   SetValue($ID_zeit1, $zeit1);
}
If($IPS_COMPONENT == "Zeit2 +" and $zeit2_aktiv == true){                              // Zeit 2 höher
   $zeit2 = ZeitEdit($ID_zeit2, +15);
   SetValue($ID_zeit2, $zeit2);
}
If($IPS_COMPONENT == "Zeit2 -" and $zeit2_aktiv == true){                               // Zeit 2 tiefer
   $zeit2 = ZeitEdit($ID_zeit2, -15);
   SetValue($ID_zeit2, $zeit2);
}

If($IPS_COMPONENT == "Faktor +"){                                                              // Faktor höher
   $laufzeit_faktor = WertEdit($ID_laufzeit_faktor, +10, 700);
   SetValue($ID_laufzeit_faktor, $laufzeit_faktor);
}
If($IPS_COMPONENT == "Faktor -"){                                                               // Faktor tiefer
   $laufzeit_faktor = WertEdit($ID_laufzeit_faktor, -10, 10);
   SetValue($ID_laufzeit_faktor, $laufzeit_faktor);
}

If($IPS_COMPONENT == "Laufzeit MIN +"){                                                      // Laufzeit Minimum höher
   $laufzeit_MIN = WertEdit($ID_laufzeit_MIN, +1, $laufzeit_MAX - 1);
   SetValue($ID_laufzeit_MIN, $laufzeit_MIN);
}
If($IPS_COMPONENT == "Laufzeit MIN -"){                                                      // Laufzeit Minimum tiefer
   $laufzeit_MIN = WertEdit($ID_laufzeit_MIN, -1, 0);
   SetValue($ID_laufzeit_MIN, $laufzeit_MIN);
}
If($IPS_COMPONENT == "Laufzeit MAX +"){                                                      // Laufzeit Maximum höher
   $laufzeit_MAX = WertEdit($ID_laufzeit_MAX, +1, 60);
   SetValue($ID_laufzeit_MAX, $laufzeit_MAX);
}
If($IPS_COMPONENT == "Laufzeit MAX -"){                                                      // Laufzeit Maximum tiefer
   $laufzeit_MAX = WertEdit($ID_laufzeit_MAX, -1, $laufzeit_MIN + 1);
   SetValue($ID_laufzeit_MAX, $laufzeit_MAX);
}

If($IPS_COMPONENT == "Laufzeit Tage +"){                                                      // Laufzeit Wiederholong Tage höher
   $laufzeit_tage = WertEdit($ID_laufzeit_tage, +1,14);
   SetValue($ID_laufzeit_tage, $laufzeit_tage);
}
If($IPS_COMPONENT == "Laufzeit Tage -"){                                                      // Laufzeit Wiederholong Tage tiefer
   $laufzeit_tage = WertEdit($ID_laufzeit_tage, -1, 1);
   SetValue($ID_laufzeit_tage, $laufzeit_tage);
}

If($IPS_COMPONENT == "Start"){                                                                  // Manueller Start
   $manuell_start = true;}
Else {$manuell_start = false;}

If($IPS_COMPONENT == "Ein"){                                                                      // Manuelle Dauer
   $manuell_ein = true;}
Else {$manuell_ein = false;}

If($IPS_COMPONENT == "Stop"){                                                                      // Manueller Stop
   $manuell_stop = true;}
Else {$manuell_stop = false;}


//---Variable einlesen--------------------------------------------
$zeit1_STD     = (INT) SubStr(GetValue($ID_zeit1),0,2);
$zeit1_MIN     = (INT) SubStr(GetValue($ID_zeit1),3,2);
$zeit2_STD  = (INT) SubStr(GetValue($ID_zeit2),0,2);
$zeit2_MIN  = (INT) SubStr(GetValue($ID_zeit2),3,2);

//---Zeit Ereignis setzten---------------------------------------------
If ($zeit1_aktiv == true){                                                       // StartZeit 1
    IPS_SetEventCyclic($IDe_zeit1, 2, $laufzeit_tage, 0, 0, 0, 0);                       // Zeittyp einstellen
    IPS_SetEventCyclicTimeBounds($IDe_zeit1, mktime($zeit1_STD, $zeit1_MIN, 0),0);// Startzeit
    IPS_SetEventActive($IDe_zeit1, true);
    }
Else{
    IPS_SetEventActive($IDe_zeit1, false);
}

If ($zeit2_aktiv == true){                                                         // StartZeit 2
    IPS_SetEventCyclic($IDe_zeit2, 2, $laufzeit_tage, 0, 0, 0, 0);                       // Zeittyp einstellen
    IPS_SetEventCyclicTimeBounds($IDe_zeit2, mktime($zeit2_STD, $zeit2_MIN, 0),0);// Startzeit
    IPS_SetEventActive($IDe_zeit2, true);
    }
Else{
    IPS_SetEventActive($IDe_zeit2, false);
}

//---Nächste Startzeit (INFO)------------------------------------
If ($Regenmelder_aktiv == true and $Regenmelder == true)
    {
    $Regen_AUS = true;
    SetValue($ID_laufzeit_next, "Regen AUS");
}
Else
    {
    $Regen_AUS = false;
    If ($zeit1_aktiv == false and $zeit2_aktiv == false)
        {
        SetValue($ID_laufzeit_next, "AUS");
    }
    Else
        {
        $EreignisZeitInfo1 = IPS_GetEvent($IDe_zeit1);                             // Ereignis Zeit1(Nächste Startzeit) auslesen
        $EreignisZeitInfo2 = IPS_GetEvent($IDe_zeit2);                             // Ereignis Zeit2(Nächste Startzeit) auslesen
        If (($EreignisZeitInfo1['NextRun']-time()) > ($EreignisZeitInfo2['NextRun']-time()))
            {
            $laufzeit_next = (date(("d.m.Y  H:i"),$EreignisZeitInfo1['NextRun']+1));
            SetValue($ID_laufzeit_next, $laufzeit_next);
        }
        Else
            {
            $laufzeit_next = (date(("d.m.Y  H:i"),$EreignisZeitInfo2['NextRun']+1));
            SetValue($ID_laufzeit_next, $laufzeit_next);
        }
    }
}

//---Berechung Laufzeit gesamt----------------------------------

If ($ID_Regenmelder_aktiv == true)
    {
    $laufzeit_ges_SEC = $laufzeit_faktor * ($Evapotranspiration - $Niederschlag);    // Berechung Laufzeit gesamt nach (Evapotranspiration)
}
Else
    {
    $laufzeit_ges_SEC = $laufzeit_faktor * $Evapotranspiration;                        // Berechung Laufzeit gesamt nach (Evapotranspiration)
}

If ($zeit1_aktiv == true and $zeit2_aktiv == true)                               // Berechung Laufzeit bei 2mal Täglich
    {
    $laufzeit_ges_SEC = $laufzeit_ges_SEC / 2;
    }

If ($laufzeit_ges_SEC < $laufzeit_MIN * 60 )                                      //Berechnung Laufzeit MIN / MAX überwachen
    {
   $laufzeit_ges_SEC = $laufzeit_MIN * 60 ;
}
If ($laufzeit_ges_SEC > $laufzeit_MAX * 60)
    {
   $laufzeit_ges_SEC = $laufzeit_MAX * 60;
}

SetValue($ID_laufzeit_ges_SEC, $laufzeit_ges_SEC);                               // Laufzeit speichern
SetValue($ID_laufzeit_ges_MIN, $laufzeit_ges_SEC / 60);

//---START über (IPS TIMER EREIGNIS)---------------------------
If($IPS_SENDER == "TimerEvent")                                                          // Start über Stratzeiten
    {
    If (($IPS_EVENT == $IDe_zeit1 and $zeit1_aktiv == true) or                    // == Ventil EIN ==
         ($IPS_EVENT == $IDe_zeit2 and $zeit2_aktiv == true) and
         ($Regen_AUS == false))
        {
        HM_WriteValueBoolean($ID_HMInstanz, "STATE", true);
        IPS_SetEventCyclic($IDe_Laufzeit, 1, 0, 0, 0, 0, 0);                               // Zeittyp einstellen
        IPS_SetEventCyclicDateBounds($IDe_Laufzeit,time()+$laufzeit_ges_SEC,0);     // Startdatum
        IPS_SetEventCyclicTimeBounds($IDe_Laufzeit,time()+$laufzeit_ges_SEC,0);     // Startzeit
        IPS_SetEventActive($IDe_Laufzeit, true);
        IPS_SetScriptTimer($IPS_SELF, 30);                                         // Dieses Skript nach ablauf der Zeit neu starten
        setValue($ID_laufzeit_letzte,(date(("d.m.Y  H:i"),Time())));               // Letzte Laufzeit speichern
        setValue($ID_laufzeit_aktuell, 1);                                         // Aktuelle Laufzeit 0 setzen
    }
    If ($HMInstanz_Status == true)                                                // == Aktuelle Laufzeit ==
        {
        $Variable = IPS_GetVariable($ID_HMInstanz_Status);
        $Variable = $Variable['VariableChanged'];
      $laufzeit_aktuell = round((time()- $Variable)) + 1;                        // Aktuelle Laufzeit berechnen speichern
        setValue($ID_laufzeit_aktuell, $laufzeit_aktuell);
    }
    If ($IPS_EVENT == $IDe_Laufzeit or $laufzeit_aktuell > $laufzeit_ges_SEC)       // == Ventil AUS ==
        {
        HM_WriteValueBoolean($ID_HMInstanz, "STATE", false);
        IPS_SetEventActive($IDe_Laufzeit, false);
        IPS_SetScriptTimer($IPS_SELF, 0);
        setValue($ID_laufzeit_aktuell, $laufzeit_ges_SEC);
    }
}

//---Manueller Start mit Auto STOP------------------------------
If($manuell_start == true and $HMInstanz_Status == false)
    {
    HM_WriteValueBoolean($ID_HMInstanz, "STATE", true);
    IPS_SetEventCyclic($IDe_Laufzeit, 1, 0, 0, 0, 0, 0);                                   // Zeittyp einstellen
    IPS_SetEventCyclicDateBounds($IDe_Laufzeit,time()+$laufzeit_ges_SEC,0);         // Startdatum
    IPS_SetEventCyclicTimeBounds($IDe_Laufzeit,time()+$laufzeit_ges_SEC,0);         // Startzeit
    IPS_SetEventActive($IDe_Laufzeit, true);
    IPS_SetScriptTimer($IPS_SELF, 30);                                             // Dieses Skript nach ablauf der Zeit neu starten
    setValue($ID_laufzeit_letzte,(date(("d.m.Y  H:i"),Time())));                   // Letzte Laufzeit speichern
   setValue($ID_laufzeit_aktuell, 1);                                            // Aktuelle Laufzeit 0 setzen
}

//---Manuelle EIN-----------------------------------------------
If($manuell_ein == true and $HMInstanz_Status == false)
    {
    HM_WriteValueBoolean($ID_HMInstanz, "STATE", true);
    IPS_SetEventActive($IDe_Laufzeit, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
}

//---Manueller AUS ---------------------------------------------
If($manuell_stop == true and $HMInstanz_Status == true)
    {
    HM_WriteValueBoolean($ID_HMInstanz, "STATE", false);
    IPS_SetEventActive($IDe_Laufzeit, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
}

//================================================================
//---Zahlen Wert ändern +/- --------------------------------------
function WertEdit($ID, $wert, $endwert){           // ID=ZeitString Wert(INT) , Wert(INT)= Änderungs Wert "+1" oder "-1" , Endwert(INT)
    $zahl = GetValue($ID);

    If ($wert > 0){                                                                          // Wert änder (höher)
        $zahl = $zahl + $wert;
        If ($zahl > $endwert) {
           $zahl = $endwert;
        }
    }

    If ($wert < 0){                                                                         // Wert änder (tiefer)
        $zahl = $zahl + $wert;
        If ($zahl < $endwert) {
           $zahl = $endwert;
        }
    }

      return $zahl;
}

//---Zeitwert ändern +/- -----------------------------------------
function ZeitEdit($ID, $wert){                     // ID=ZeitString "14:00" , Wert(INT)= Änderungs Wert "+1" oder "-1"
    $zeit_STD  = (INT) SubStr(GetValue($ID),0,2);
    $zeit_MIN  = (INT) SubStr(GetValue($ID),3,2);

    If ($wert > 0){                                                                          // Zeit änder (höher)
        $zeit_MIN = $zeit_MIN + $wert;
        If ($zeit_MIN > 59){
            $zeit_MIN     = $zeit_MIN - 60;
            $zeit_STD    = $zeit_STD + 1;
        }
        If ($zeit_STD > 23){
            $zeit_MIN     = 0;
            $zeit_STD     = 0;
        }
    }
    If ($wert < 0){                                                                         // Zeit änder (tiefer)
        $zeit_MIN = $zeit_MIN + $wert;
        If ($zeit_MIN < 0){
            $zeit_MIN     = 60 + $zeit_MIN;
            $zeit_STD     = $zeit_STD - 1;
        }
        If ($zeit_STD < 0){
            $zeit_MIN     = 60 + $wert;
            $zeit_STD     = 23;
        }
    }

   $zeit = STR_PAD($zeit_STD,2,"0",STR_PAD_LEFT).":".STR_PAD($zeit_MIN,2,"0",STR_PAD_LEFT);
    return $zeit;
}


//---Funktion Variablen anlegen ----------------------------------
function CreateVariableByName($id, $name, $type, $profile = "", $wert){
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $id);
   If($vid === false)
       {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
      If($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }

      SetValue($vid, $wert);                                                                      // Variabel, mit WERT füllen
      }
    return $vid;
}

?>

Hallo shorty111,

ich kann da gerade nichts böses entdecken. Ich habe das in einem Script bei mir ausprobiert.


$eid			         =  IPS_CreateEvent(1);
IPS_SetName($eid, "Timer");
IPS_SetParent($eid, $IPS_SELF);
IPS_SetEventCyclic($eid, 2, 2, 0, 0, 0, 0);
IPS_SetEventCyclicTimeBounds($eid, mktime(6, 0, 0), 0);


Da wird mir ein Event erzeugt das alle 2 Tage um 6 Uhr startet.

Hast Du das mal probiert?


IPS_SetEventCyclic($IDe_zeit1, 2, (INT) $laufzeit_tage, 0, 0, 0, 0);

Hallo shorty111,

welche IPS Version hast du.?
2.3? dann schau mal hier http://www.ip-symcon.de/forum/threads/14332-IPS_SetEventCyclic-ich-bekomme-es-nicht-hin

Gruß Uwe

Hallo Martin und Uwe

ja genau wenn ich das Script zum ersten mal ausführe erstellt es mir ein Event welches in 2 Tage um 3:00 ist. Wenn dieses Event dann durchrgeführt worden ist, bekomme ich die Zeit für das nächste Event im Jahr 1970. Das ist ja das was mich so verwundert, das es beim erstellen Funktioniert und nach der ersten Ausführung nicht mehr.

Ich habe die Version 2.6

Danke euch

mir ist gererade aufgefallen sobald ich eine ungerade Zahl an Wiederholungen eingebe schießt er mich ins Jahr 1970, bei geraden nicht.

Hallo shorty111,

jetzt fangen wir mal bei „a“ an.

Erzeuge mal ein neues Script und kopiere das hinein.


$eid			         =  IPS_CreateEvent(1);
IPS_SetName($eid, "Timer");
IPS_SetParent($eid, $IPS_SELF);
IPS_SetEventCyclic($eid, 2, 3, 0, 0, 0, 0);
IPS_SetEventCyclicTimeBounds($eid, mktime(6, 0, 0), 0);

Danach -> Speichern und ausführen.

Nun solltest Du unter dem Script ein Event haben mit dem Namen „Timer“ vom Typ „Alle 3 Tage um 06:00:00“.

Ist das so?

ja genau die Ereignisse erstellt er mit auch, wenn ich die jetzt aktiviere. dann läuft eins richtig und ein in der Vergangenheit
Unbenannt.PNG

das gleiche mache ich hier ja auch, nur das hier die 2 Tage in der Vergangenheit laufen und die 1 Tage richtig. Ich seh nicht mehr durch.

If ($zeit2_aktiv == true){                                                         // StartZeit 2
    IPS_SetEventCyclic($IDe_zeit2, 2, (INT) 2, 0, 0, 0, 0);                       // Zeittyp einstellen
    IPS_SetEventCyclicTimeBounds($IDe_zeit2, mktime($zeit2_STD, $zeit2_MIN, 0),0);// Startzeit
    IPS_SetEventActive($IDe_zeit2, true);

was macht diese eingabe?

IPS_SetParent($eid, $IPS_SELF);

danke dir für deine Geduld :slight_smile:

Hallo shorty111,

ich habe nichts gesagt. Es klappt bei mir auch nicht!! :o


IPS_SetParent($eid, $IPS_SELF);  

Das packt das Event unter dein Script.

wie es klappt bei dir auch nicht?

woran liegt es dann?
Kann es sein das der Bezug zum aktuellen Tag fehlt und es deswegen nur bei täglicher Wiederholung klappt.
Aber ich arbeite ja mit mktime.
da ich die Bewässerung über ein Regensensor aussetzte lasse, geht bei mir eine feste Tage Zuweisung nicht. Es müßte alle 2 Tage nach dem Regen bewässern.

Gruß Shorty111

Ich habe mit paresy gesprochen. Das ist ein Bug der wahrscheinlich erst zur Version 3.1 behoben sein wird. Sorry :o

Gesendet von meinem GT-I9100 mit Tapatalk 2

Das heizt warten, sollte schon mit der v2.4 behoben sein.

Gruß Uwe

UH368 wie hattest du das Problem gelöst, kann mann dann das script anders triggern das es läuft. Bin schon am überlegen aber ich komme immer auf die 2 TAge

Habe bis jetzt auch keine Lösung.

Hallo shorty111,

Du kannst das natürlich eigenverantwortlich machen indem Du ein Script alle Minute aufrufst und
Sollzeit mit Istzeit vergleichst. Und wenn Soll = Ist dann Regnet es halt.

Ich lasse es täglich regnen in Abhängigkeit vom Eva Prinzip, und nur dann wenn meine Virtuelle Regentonne leer ist.

uh das ist ein guter ansatz, das ich für den rasen den eva so berechen das es nur alle 2 tage beregnet wird.

danke dir ich werde mich da mal ransetzen.

Möglich wäre auch eine Variable BitMaske von den Wochentage, wo man angeben kann wann es Regnen soll, wie SO, DI, DO, und dann vergleichen ob der aktuelle Tag mit der BitMaske übereinstimmt.

GRuß Uwe

Warum in die Ferne schweifen wenn das Gute liegt so nah. :cool:

Hi Schablone,

da ist mein Problem, ist muß einige Zusatz Module in mein IPS installieren wo ich keine Lust zu habe, ich würde gerne den Überblick behalten was mein IPS macht und warum es das macht.

Ein einzelnes Script kommt mir da immer gelegen.

Gruß

Hallo uh368

Uh wie machst du das mit deinen virtuelen Regenfass. ich komm leider immer wieder an die grenze mit den 2 Tagen Event.

ich wollte mir jetzt den Verdunstungsfaktor jeden Tag speichern (Max 3 Tage), dann soll regen von den letzten 3 Tagen abgezogen werden. Wenn die Beregnung aktiv ist, soll eine wert addiert werden.

Kannst du mir hier weiterhelfen

Danke Gruß Shorty