FS20 Ausdimmen dann Ausschalten

Hallo

Ich habe ein paar FS20 Dimmer. Nach dem Herunterdimmen auf 0 sollten diese noch Auf Switch False geschalten werden. Um eben auch den Status im iPSymcon auf Off zu haben.

zur zeit mach ich das so. mit ner wartezeit, die nach dem ablauf des dimmvorgang den Schalter auf false setzt. dann läuft aber das script auch 20 sekunden. geht das auch anders?


// Schaltet den Sternehimmel in 20 Sekunden auf 0%
FS20_SetIntensity(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, 0, 20);
sleep (20);
FS20_SwitchMode(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, false);

im forum hab gelesen, dass man den wert bool einfach auf false setzen soll. das geht aber nicht, da dieser wert nur gelesen werden kann.

Ich mach es genau so wie Du …

Bevor ich meine SPS hatte ich das mit FS 20 auch genauso
Leider wollte unser IPS Team das nicht automatisch so umsetzen.

Warum macht Du nicht ein Event-Skript welches ausgelöst wird wenn der Status auf 0% geht und welcher das FS20-Gerät auf False setzt?

Hatte mich auch schon mit diesem Thema beschäftigt:

Warum macht Du nicht ein Event-Skript welches ausgelöst wird wenn der Status auf 0% geht und welcher das FS20-Gerät auf False setzt?

Das wäre auch eine Idee. Mit Event Skripts bin ich aber noch nicht so weit. Muss dann für jeden Dimmer ein eigenes Skript geschrieben werden oder?

Ja, da kommst Du dann nicht drumm herum. Ist aber besser als für jeden Aktor für 20 Sekunden einen PHP-Thread zu blockieren und meiner Meinung nach eine saubere Lösung.

Das klappt irgendwie bei mir so nicht.

Folgendes Habe ich gemacht:

  • Ereignis angelegt
  • Variable: Aktoren\Schlafzimmer\Schlaf Sterne\Intensität
  • Bei Bestimmten Wert
  • Wert 0
  • Nachfolgende Atkion ausführen
    Danach
  • Gerät ausführen
  • Aktoren\Schlafzimmer\Schlaf Sterne
  • FS20 Switch Mode
  • False

Jetzt wird aber das Gerät sofort ausgeschalten…

Dann habe ich da einen Denkfehler eingebaut. Der FS20-Aktor dimmt das innerhalb von 20 Sekunden selbstständig runter, richtig? Und es fehlt ein Rückkanal zu IPS, also weiss IPS die Zwischenstände nicht sondern kennt nur den Zielwert „0“. Und damit ist die Triggerbedingung sofort erfüllt und er schaltet ganz aus. Blöd.

Probier es mal so:


<?

FS20_SetIntensity(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, 0, 20);

IPS_SetScriptTimer($IPS_SELF, 20);

switch ($IPS_SENDER)
{
	case "TimerEvent":
	FS20_SwitchMode(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, false);
	IPS_SetScriptTimer($IPS_SELF, 0);
	break;
}

?>

Grüsse.

Wow Saustark!!!

Das funktioniert Perfekt!!! :D:D genau richtig.
so jetzt noch ein kleines Problem. Zum Startvorgang warte ich noch 5 sekunden, bis der Dimbefehl ausgefürht wird. So dass ich drauf drück und dann das licht erst verspätet gedimmt wird.
Das mach ich zur zeit auch noch mit sleep 5. Gibts da noch was?

Ech nochmals vielen vielen DANK!! Super Forum. Jeder ist nett und man wird bestens gehofen!

Im Prinzip hat Dein eigenes Script ja auch funktioniert. Aber man sollte zu lange Zeitspannen beim Sleep-Befehl vermeiden da für diese Zeit ein PHP-Thread von IPS blockiert bleibt. Und standardmäßig sind maximal 10 eingestellt. Deswegen die kompliziertere Version mit dem Timer-Event.

5 Sekunden ist grenzwertig, könnte man aber noch so stehen lassen. Ich weiss nicht wie ausgelastet Dein System ist.

Ansonsten vielleicht so:


<? 

$TimerWert = IPS_GetScriptTimer($IPS_SELF);

switch ($TimerWert)
{
    case "0":
    IPS_SetScriptTimer($IPS_SELF, 5);
    break; 
    case "5":
    FS20_SetIntensity(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, 0, 20); 
    IPS_SetScriptTimer($IPS_SELF, 20);
    break; 
}

switch ($IPS_SENDER) 
{ 
    case "TimerEvent": 
    FS20_SwitchMode(20156 /*[Aktoren\Schlafzimmer\Schlaf Sterne]*/, false); 
    IPS_SetScriptTimer($IPS_SELF, 0); 
    break; 
} 

?> 

Aber nicht hauen wenn es nicht funktioniert - ist Trockenübung und ungetestet.

Grüsse.

klingt gut und logisch.

…mal ebenso trocken durch reines Lesen debuggt :smiley:

Gruß Gerd