andere Möglichkeit für IPS_Sleep

Hallo,
mit folgenden Script möchte ich 2 Relais ein und nach 70 Sekunden wieder ausschalten. Leider ist der Befehl „IPS_Sleep“ für so eine lange Zeit nicht geeignet. Gibt es da eine andere Möglichkeit?

Die Relais sind nur eine Übergangslösung (ca. 3/4 Jahr) bis ich die Shuttermodule habe.

Gruß


<?

if ($IPS_SENDER == 'WebFront'){
	SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, true);
	IPS_RunScript($IPS_SELF);

	}else{

ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, true); //Gerät einschalten
ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, true); //Gerät einschalten
IPS_Sleep(6000);
ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, false); //Gerät ausschalten
ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, false); //Gerät ausschalten
IPS_Sleep(500);
SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, false);
}
?>

IPS_SetScriptTimer.

Hier mal ein Anfang.

switch($IPS_SENDER)
{
    case "WebFront":
    // code
    break;
    case "TimerEvent":
    //code
    break;
}

und hier das Ergebnis. :slight_smile:

switch($IPS_SENDER)
{
    case "WebFront":
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, true);
   IPS_RunScript($IPS_SELF);
    break;
    case "TimerEvent":
    ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, false); //Gerät ausschalten
    ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, false); //Gerät ausschalten
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
    break;
}
ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, true); //Gerät einschalten
ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, true); //Gerät einschalten
IPS_SetScriptTimer($IPS_SELF, 70);

…danke für die Hilfe,
aber ich glaube Du hast mich falsch verstanden. Dein Vorschlag wird jetzt alle 70 Sekunden augeführt. Das soll so ja nicht sein.
Ich möchte ein (2) Relais einschalten und erst nach ca. 70 Sekunden wieder ausschalten.

Gruß

Beim case „TimerEvent“ einfach noch ein „IPS_SetScriptTimer($IPS_SLEF, 0)“ einfügen. Damit wird´s nur einmal ausgeführt. :slight_smile: (und der ScriptTimer deaktiviert).

Edit: Hat Rainer ja oben schon drin, sollte also nur einmal ausgeführt werden.

steht doch drinnen. setz die drei letzten Befehle nach ganz oben oder füge noch ein return; im Timerevent ein.

Ich sollte doch die Beiträge vorher besser lesen… :rolleyes:


switch($IPS_SENDER)
{
    case "WebFront":
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, true);
    ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, true); //Gerät einschalten
    ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, true); //Gerät einschalten
    IPS_SetScriptTimer($IPS_SELF, 70);
    break;
    case "TimerEvent":
    ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, false); //Gerät ausschalten
    ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, false); //Gerät ausschalten
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
    break;
} 

das geht so auch nicht, da er das Script noch vom iphone aus startet. Er braucht nur tauschen. :slight_smile: oder wegen mir auch ein else.

iPhone? :eek: Wo? :eek:

Grmbl, wenn einem hier Infos vorenthalten werden… :smiley:

Du weisst doch, ich wohne hier im Forum. Da weis man so was. :smiley:

…mein Gott, ihr seid ja schnell.
Aber das ist es auch nicht.
Richtig, ich möchte es auch mit dem iPhone nutzen. AAAAAber , aus dem Webfront geht es auch nicht. Sobald es über das Webfront gestartet wird, ist der alle 70sec. Timer aktiv.

Liest Du eigentlich was ich geschrieben habe. :confused:

…na klar lese ich. Als das auch nicht funktioniert hatte, habe ich den Vorschlag von „dfhome“ ausprobiert.


<?
ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, true); //Gerät einschalten
ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, true); //Gerät einschalten
IPS_SetScriptTimer($IPS_SELF, 70);

switch($IPS_SENDER)
{
    case "WebFront":
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, true);
   IPS_RunScript($IPS_SELF);
    break;
    case "TimerEvent":
    ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, false); //Gerät ausschalten
    ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, false); //Gerät ausschalten
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
    break;
}
?>

und was funktioniert daran nicht. Das Webfont startet das Script und dein Timer. Iphone startet das Script und den Timer, wenn die Zeit abgelaufen ist, wird ausgeschaltet und der Timer auf 0 gesetzt. Das ist der Ablauf.

Wenn es so nicht geht, triggerst Du noch irgendwas.

…es erscheint immer wieder das „alle 70 Sekunden Ereignis“

sorry, versteh nicht was du meinst. Das ist dein Scripttimer mit der Zeit. Die Zeit bleibt da immer drin stehen. Der wechselt nicht auf 0.

Das Script läuft einwandfrei, so wie es soll.

Ja, aber es ist deaktiviert und wird nicht ausgeführt. Das erkennst du an der grauen Schattierung. Die 70 Sekunden sind der letzte Wert.

… Sorry Rainer, hat sich überschnitten … Mit dem IPad bin ich nicht so schnell :smiley:

…ja sorry, ich habe mich von der verwirrenden Anzeige „Täglich Alle 70 Sekunden“ im Fenster „Scriptereignisse“ verleiten lassen.

Dankeschön :slight_smile:

switch($IPS_SENDER)
{
    case "WebFront":
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, true);
   IPS_RunScript($IPS_SELF);
    break;
    case "TimerEvent":
    ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, false); //Gerät ausschalten
    ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, false); //Gerät ausschalten
    SetValueBoolean(13427 /*[Rollladen\Rollladen Wohnzimmer\Rollladen rauf]*/, false);
    IPS_SetScriptTimer($IPS_SELF, 0);
    return;
    break;
}
ModBus_WriteCoil(11682 /*[Wago\DigitalOut 2DO 230V\Relais 1.1]*/, true); //Gerät einschalten
ModBus_WriteCoil(27098 /*[Wago\DigitalOut 2DO 230V\Relais 2.1]*/, true); //Gerät einschalten
IPS_SetScriptTimer($IPS_SELF, 70);  

Hallo,
danke nochmal für die Hilfe!
Nun habe ich ein weiteres Problem. Leider wird dieses Script durch das Astroprog. nicht mehr ausgeführt obwohl ein Ereignis angezeigt wird. Manuell funktioniert es.

Gruß