mein problem ist, was muss ich eintragen wenn ich zwischen den Anweisungen (Pause) eine Wartezeit von,wie oben genannt, eine pause benötige bevor die nächste Anweisung ausgeführt wird?
Hoffe das mir jemand helfen kann.
Der Befehl setzt die Abarbeitung des Skripts für Wartezeit Millisekunden aus. Nach Ablauf dieser Zeit wird das Skript fortgesetzt. Mit Hilfe dieses Befehls lassen sich kurze (!) Wartezeiten realisieren. IPS_Sleep hat keinen Einfluss auf andere, gleichzeitig laufende Skripts
Dachte es wäre für Millisekunden, kurze Wartezeiten, wie kurz maximal?
Das funktioniert auch bei vielen Millisekunden, bis zum Anschlag aus der php.ini (150 Sekunden). Dann schießt IPS das Script ab.
IPS_Sleep() ist das Gegenstück zum PHP sleep(), allerdings ohne IPS so stark zu behindern. Mit sleep() steht das Script und blockiert eine „Ausführungsslot“. Wenn du also genug sleep() Scripte parallel hast, steht alles :eek:.
habe auf der grünen Wiese mal ein Skript für Dich zusammen gebastelt. Der Grundsatz ist der selbe wie bei ralf´s Skript.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Rolladen_Uwe.ips.php
Trigger : Taster, Temp-Sensor
Interval : OnChange & Timer-Event
*/
$debug = true; // Ausgabe der debug-Texte im Custom-Log
$shutter = 61092; // Deine Shutter-Instanz
$zeithoch = 25; // Laufzeit hoch in Sekunden
$zeitrunter = 15; // Laufzeit runter in Sekunden
$letzte_richtung_hoch = 1; // Letzte Laufrichtung des Moeller-Shutters HOCH
$letzte_richtung_runter = 2; // Letzte Laufrichtung des Moeller-Shutters HOCH
switch($IPS_SENDER) // Durch wen wurde Skript gestartet (Variable oder Timer)
{
case "Variable": // Wenn duch Variable (Taster oder Temp) aufgerufen
MXC_ShutterMoveUp($shutter);
IPS_SetScriptTimer($IPS_SELF, $zeithoch); // Timer für 25 Sekunden hochfahren
if ($debug) IPS_LogMessage("Rollladenskript","Rollladen fährt hoch");
break;
case("TimerEvent"): // Wenn durch Timer aufgerufen
switch(GetValueInteger("Shutter_Letzte_Richtung")) //Variable des Shutters für letzte Richtung
{
case $letzte_richtung_hoch: // Letzte Richtung Hoch evtl. 1 mit 2 tauschen
MXC_ShutterStop($shutter);
MXC_ShutterMoveDown($shutter);
IPS_SetScriptTimer($IPS_SELF, $zeitrunter); // Timer für 15 Sekunden runterfahren
if ($debug) IPS_LogMessage("Rollladenskript","Rollladen stoppt oben und fährt runter");
break;
case $letzte_richtung_runter: // Letzte Richtung runter evtl. 2 mit 1 tauschen
MXC_ShutterStop($shutter); // Shutter-Instanz ändern
IPS_SetScriptTimer($IPS_SELF, 0); // Timer stoppen
if ($debug) IPS_LogMessage("Rollladenskript","Rollladen stoppt endgültig");
}
break;
}
?>
Skript ist komplett durchkommentiert.
Das einzige wo ich mir nicht sicher bin ist der Rückgabewert des Moeller-Jalousieaktors
für die letzte Laufrichtung (Last Move). War jetzt 1 rauf oder runter bzw. umgekehrt. Evtl. noch anpassen.
Die Debug-Meldungen die ins Custom-Log von IPS laufen kannst Du bei Bedarf mit $debug = false; ausschalten.
War nur zum entwickeln des Skriptes gedacht.
Falls denoch Fragen auftauchen sollten kannst Du mich morgen per Messenger erreichen.