ich bastele gerade an meiner Rolladensteuerung und habe ein kleines Problem:
Für das Öffnen und Schliessen verwende ich die Funktionen DriveUp und DriveDown.
Wenn ich nun die Rolladen einzeln hiermit steuere, dann funktioniert das ganz gut. Wenn ich aber versuche, mehrere Rolladen hinter einander z.B. zu schliessen (Timer Event), dann bekomme ich die o.g. Fehlermeldung angezeigt und der Timerevent versucht jede Minute diesen Event neu zu starten, jedoch ohne Erfolg.
php.ini existierte bereits u.a. mit diesem Eintrag. Habe die Originaldatei wegkopiert und eine neue nach Deinen Angaben erstellt. Leider kein Erfolg. Das System „hängt“ dann so stark (es versucht minütlich diesen Befehl auszuführen) so daß ansonsten keine Bedienung mehr möglich ist.
ja, dann hast Du eventuell eine Eigendynamik in Form einer Schleife o.a. eingebaut. Durchforste Dein Script mal aus rein logischer Sicht, nicht aus programmtechnischer.
Ansonsten musst Du das komplette Script mal zeigen…
Ich bekomme hier zwar nicht mehr diese Fehlermeldung, aber das 2. Driveup führt das System gar nicht mehr aus. Wenn ich die Time beispielsweise auf 15000 reduzierte, dann komme ich zumindest bis zum 3. Driveup. Reduziere ich die Time auf 100, dann führt das System alle Driveups aus.
Diese Funktion blockiert den PHP Parser, während sie ausgeführt wird
Könnte es sein, das dein Script einfach blockiert wird da zuviel „Drive Up“ befehle zusammen in einem Script?
Hast du schon mal versucht, das ganze in ein paar scripte zu verteilen?
Bin kein Experte darin, habe auch keine Markisen, sondern nur RST’s aber die steuere ich auch zeitversetzt an.
naja, das bedeutet zumindest schonmal, dass die php.ini die du bearbeitet hast auch ausgeführt wird…
Was es mit der ‚Local Value‘ aktuell auf sich hat kann ich dir im Augenblick auch nicht sagen - wenn ich Zeit finde schau ich mir das heute/morgen Abend mal an.
Evtl. Workaround:
Die aktuelle IPS-Beta ist Multithreading fähig. D.h. du kannst ein Script schreiben, in dem mit IPS_Execute() vier andere Scripte parallel gestartet werden (für jede deiner Rolladen ein Script mit einem Drive-up). Theoretisch müssten dann alle deine Rolladen (fast) gleichzeitig hochfahren und die max. Execution eines einzelnen Rolladen-Skriptes liegt dann bei 30 Sekunden. Theoretisch…
Die aktuelle IPS-Beta ist Multithreading fähig. D.h. du kannst ein Script schreiben, in dem mit IPS_Execute() vier andere Scripte parallel gestartet werden (für jede deiner Rolladen ein Script mit einem Drive-up). Theoretisch müssten dann alle deine Rolladen (fast) gleichzeitig hochfahren und die max. Execution eines einzelnen Rolladen-Skriptes liegt dann bei 30 Sekunden. Theoretisch…
probier ich schon die ganze Zeit zu sagen, nur keiner hört mir zu, grmpf ! Der Parser ist blockiert während einem „Drive up“ !
ich arbeite mit der aktuellen Produktiv-Version (bin lt. LiveUpdate aktuell).
Ich verstehe ja, daß DriveUp/Down den Parser blockieren. Wir schaffe ich es denn eine Verzögerung so einzubauen, daß die nachfolgenden Befehle ausgeführt werden? Habe es mit IPS_Sleep versucht: kein Erfolg. IPS_SetScriptTimer funktioniert beim ersten Mal ganz gut, hat aber leider den Effekt, daß das Skript immer wiederholt wird.
Wenn es aktuell hierfür keine Lösung gibt, dann muss ich halt warten bis das kommende Update das „Multithreading“ unterstützt.
das kann aber mit dem Update schon noch etwas dauern. Also nicht ungeduldig werden, denn es werden sicher erst mal weitere Betas erscheinen, bevor es ein neues Live Update geben wird.
Genaueres dazu koennen aber steiner und paresy sagen.
da deine Rolladen ja wahrscheinlich Endabschalter haben kannst du einfach die TX-Devices statt der Drive Befehle benutzen, dann hast du auch keine Probleme mehr.
Du mußt aber beachten, das du die TX Instanz-ID benutzt und nicht die von den Drive.
Auf diese Weise bremst du dich nicht aus und notfalls ruf einzelne scripte mit unterschiedlichen scripttimern auf. Bei mir klappen so 3 Rollos gleichzeitig.
Das einzige was dir dann helfen kann ist folgendes.
Du brauchst mehrere Scripte, und zwar:
Ein Schleifen-Script. Es ist ein Script, das z.B. im Minutentakt (oder die Zeit, die ein Rollo braucht, um hochzugehen) einen Zähler inkrementiert und bei einem gewissen Zählerstand (z.B. Anzahl Rollos die du hast) wieder von vorne, d.h. auf 0 anfängt.
Und bei jedem einzelnen Zählerstand startest du ein anderen Rollo (ein anderes Script indem nur ein Rollo angesteuert wird), dann funktionniert es sicherlich tadellos, ausser von aussen unschön, da ein Rollo eben nach dem anderen hochgeht.
PS: So mache ich es mit meinen FHT’s und meinen Rollors (RST’s) und das funktionniert tadellos.