Folgende Funktion soll erreicht werden, wie ich sie mir wünsche:
Es sollen vier Scripte jeweils nach Ablauf des Times aufgerufen und abgearbeitet werden.
Das passiert auch, das zweite Script wird nach 20 sec aufgerufen.
Das dritte und vierte Script werden hintereinander abgearbeitet ohne das der Timer zwischendurch läuft.
Übersteigt das Skript vielleicht die maximale Ausführungszeit die in der php.ini angegeben ist? Nur so eine Vermutung… Eigentlich müsste das Ergenis dann anderst aussehen aber wer weis…
Vielleicht mal ohne …Wait und statdessen mit RunScript und IPS_Sleep realisieren? Vielleicht hilft das oder grenzt das ganze etwas ein…
Grundsätzlich ist der ganze Scriptaufbau etwas seltsam oder unverständlich.
Außerdem kann ich Dir so auch nicht recht helfen, da ich die Scriptlaufzeiten der anderen Scripte nicht kenne. Bitte beschreibe mal etwas besser was Du möchtest.
ich versuche das mal aufzudröseln. Es sieht so aus, als wolltest Du der Reihe nach was bewässern ? So wie Du schreibst, willst du wohl vier Scripte nacheinander mit unterschiedlicher Verzögerung und Laufzeit durch ein Script gesteuert laufen lassen ?
Ich habe mal versucht, Dein „Haupt“-Script zu analysieren:
Wenn Du das Script mit der Hand oder per IPS_RunScript aus einem anderen Script heraus aufrufst, wird das Script "Ventil1-1_Pumpe_Ein aufgerufen und Dein TimerScript 20 Sekunden später erneut gestartet - soweit so gut
20 Sekunden später:
($IPS_SENDER == „TimerEvent“) ist True und Dein Script arbeitet die 3 folgenden If-Bedingungen GLEICHZEITIG ab:
Falls die Variable „STATUS_TERASSE“ true ist, wir das Script Ventil1-2_Pumpe_Ein sofort gestartet.
(Hast Du mit „//“ vor dem "IPS_SetScriptTimer($IPS_SELF, 30) absichtlich die Ausführung der Programmzeile in PHP unterbunden ?)
Falls die Variable „Status_Apfelbäume“ true ist, wir das Script „Ventil1-3_Pumpe_Ein“ sofort gestartet.
(Hast Du mit „//“ vor dem "IPS_SetScriptTimer($IPS_SELF, 30) absichtlich die Ausführung der Programmzeile in PHP unterbunden ?)
Falls die Variable „Status_Rasen1“ true ist, wir das Script „Pumpe_VentileX_X_Aus“ sofort gestartet UND Gleichzeitig der Timer mit
„IPS_SetScriptTimer($IPS_SELF, 0);“ auf 0 gesetzt, spricht neimals wieder aufgerufen.
Der Programmabruf hängt wesentlich davon ab, wie Du die Variablen in den aufgerufenen anderen Scripts änderst !
Hallo Rolf,
ja genau so ist es. --In der Theorie–
die Auskommentierung ist Absicht gewesen. Das bedeutet meiner Meinung nach das immer 20s zw. den Scripts sind.
Hat es vielleicht etwas mit meiner IPS-Version zu tun?
Ich arbeite mit V2.1
tausche die echo 1 bis echo 4-Einträge gegen die RunScript-Einträge aus, die jeweils in der Reihenfolge passieren sollen (das Wait kannst du dir sparen)
die Laufzeit der einzelnen Scripts ist jeweils zwischen 25 und 35ms angezeigt.
Ja, natürlich ändert sich dann der Abstand zwischen den einzelnenScripten.
Ich kann ehrlich gesagt nichtunlogischen an der Sache sehen, gebe aber zu , daß ein erfahrener Programmierer die Sache sicher anders löst.
Nochmal-- es werden vier Scripts nacheinander mit 20s Abstand ausgelöst.
Danke für eure Hinweise und Hilfe.
Ich habe jetzt IPS_RunScriptWait gegen IPS_RunScript getauscht und schon funktionierts.
Warum kann ich mir allerdings noch nicht erklären, aber vielleicht finde ich es noch raus.
@Hagbard
ja so sieht alles etwas eleganter aus, aber ich habe es aber noch nicht hinbekommen, muß noch einwenig darüber nachdenken.
… da bin ich ja ein bissl „eitel“… , funktioniert tut mein Script (hab es wegen deinem Kommentar extra nochmal laufen lassen), aber zugegeben ist deins ein wenig hübscher, weil Counter-Erhöhung nicht notwendig und fester Wert setzen ein paar Zeilen spart