Beschattungsscript

Hallo zusammen,
möchte folgendes realisieren : Beschattung mit Ereignisauslöser Temperaturgrenzwert in einem Zimmer, den Auslöser habe ich soweit schon ans laufen gebracht nur mein Script welches erst alle Rolläden auf 0 setzt (komplett öffnet) und dann auf eine bestimmte Position fährt scheitert noch etwas, die Fehlermeldung spuckt mir aus das meine Pause in der Mitte zu lange war diese hatte ich ursprünglich auf 29 jetzt habe ich sie auf 25 kann es aber im moment nicht testen da jetzt es ist dunkel und die Kinder schlafen die Rolläden verrückt spielen würden :wink: gibt es eigentlich auch eine Möglichkeit ein script zu testen in einer art Sandbox ohne das die Befehle physisch ausgeführt werden? anbei mein script als Screenshot eventuell hat jemand eine bessere idee das umzusetzen? als Hinweis noch : meine größten Rollos benötigen wenn sie komplett geschlossen sind 30Sek. um ganz zu öffnen also ich glaube das ich mit der maximalen Ausführunszeit eines scripts von 30 Sekunden in Bedrängnis komme, das möchte ich irgendwie umgehen?

Sleep ist niemals eine gute Idee. Die maximale Ausführungszeit eines Skripts liegt bei 30 Sekunden. Ausserdem blockiert das Skript mit Sleep einen von meistens insgesamt 10 PHP Threads.

Setze einen Skript Timer der das Skript wieder aufruft, zähle bei jedem Aufruf eine Variable um eins hoch und frage diese Variable bei jedem Aufruf ab, z.B. mit Switch.

puh ok das ist mir mal wieder zu hoch und hört sich ziemlich kompliziert an gibt es da eventuell noch eine einfachere Methode bzw. kann mir das jemand detaillierter erklären bin leider nicht so der Code-Schubser :wink:

Ich würde mir zwei Scripte anlegen, eines das alle Rolläden hochfährt und eines das alle Rolläden runterfährt.
Beim Script zum hochfahren setzt du ans Ende

IPS_SetScriptTimer($ScriptID, 30);

$ScriptID ersetzen durch die ID von deinem Script welches alle Rolläden runterfährt. Das wird dann nach 30 Sekunden aufgerufen, fährt alle Rolläden runter und dort ans Ende dann

IPS_SetScriptTimer($ScriptID, 0);

Damit beendest Du den Timer für dieses Script wieder, es soll ja nur ein mal ausgeführt werden. Ist die einfachste Lösung die mir zu später Stunde eingefallen ist :wink:

wow danke hab das mal so eingestellt mal sehen was morgen passiert :wink: werde bereichten.
Gute Nacht

Und wenn man im letzten Skript anstatt

IPS_SetScriptTimer($ScriptID, 0);  

folgendes verwendet:

IPS_SetScriptTimer($_IPS['SELF'], 0);  

, dann hat man gleich noch was über Systemvariablen gelernt. Cool, oder?:loveips:

Hi also script läuft wohl noch nicht siehe fehlermeldung in dem screenshot die ID ist aber definitiv korrekt!?

Das $ muss weg.

perfekt man lernt nie aus :wink: muss das Dollar hier auch weg oder passt das?

Da passt es, denn es ist eine Variable.

Schau Dir meinen Link bezüglich der Systemvariablen noch mal an.

also läuft soweit perfekt, nur habe ich heute festgestellt das wenn das Beschattungsszenario eintritt bei Grenzwertüberschreitung 22.8 Grad fahren die Rollläden wie gewünscht runter, daraufhin kühlt der Raum natürlich aus :wink: und wird dann später wieder warm sodass nochmals eine Grenzüberschreitung von 22.8 Grad erfolgt und das ganze Szenario logischerweise nochmal durchläuft :wink: gibt es eine Möglichkeit das an einem Tag nur einmal bei Grenzüberschreitung laufen zu lassen? Danke euch.

weiß da noch jemand Rat oder hat eine Idee? :wink: danke euch

Du kannst bei der erstmaligen Grenzüberschreitung am Tag eine Variable setzen. Wenn die gesetzt ist, finden keine weiteren Aktionen statt. Die Variable musst Du dann natürlich zu einer sinnvollen Zeit zurücksetzen.

ok grob verstanden aber ich habe ja ein ereignis mit Grenzüberschreitung 22,9 Grad erstellt danach laufen die Scripte für ganz öffnen und danach das script für die Beschattungsstellung der Rolläden wo bringe ich dann die Variable unter? sorry für die Fragerei aber bin leider kein Code-Schubser :wink:

Hier das script für die komplett öffnung am Anfang :

<?
ENO_ShutterMoveUp(37394 /[EG\Rollos\Rollo * WC ]/);
ENO_ShutterMoveUp(47132 /
[EG\Rollos\Rollo * Büro Rosenstr. ]/);
ENO_ShutterMoveUp(41695 /[EG\Rollos\Rollo * Büro Wiesenweg ]/);
ENO_ShutterMoveUp(52501 /
[EG\Rollos\Rollo " neben Sofa ]/);
ENO_ShutterMoveUp(13306 /[EG\Rollos\Rollo * hinter Sofa]/);
ENO_ShutterMoveUp(12977 /
[EG\Rollos\Rollo * Esstisch ]/);
ENO_ShutterMoveUp(28376 /[EG\Rollos\Rollo * Küche ]/);
ENO_ShutterMoveUp(50969 /
[EG\Rollos\Rollo * Technikraum ]/);
ENO_ShutterMoveUp(27779 /[OG\Rollos\Rollo Empore]/);
ENO_ShutterMoveUp(21625 /[OG\Rollos\Rollo Kind 1]/);
ENO_ShutterMoveUp(46995 /[OG\Rollos\Rollo Kind 2]/);
ENO_ShutterMoveUp(12509 /[OG\Rollos\Rollo Zimmer 3]/);
ENO_ShutterMoveUp(15464 /[OG\Rollos\Rollo Schlafzimmer]/);
ENO_ShutterMoveUp(35093 /[OG\Rollos\Rollo Bad]/);
IPS_SetScriptTimer(21355 /[Alle Rollos in Beschattungsposition]/, 30);
//Start writing your scripts between the brackets

?>

…dann wir dieses Script ausgeführt für die Beschattung :

<?
ENO_ShutterMoveDownEx(41695 /[EG\Rollos\Rollo * Büro Wiesenweg ]/, 15);
ENO_ShutterMoveDownEx(52501 /
[EG\Rollos\Rollo " neben Sofa ]/, 16);
ENO_ShutterMoveDownEx(13306 /[EG\Rollos\Rollo * hinter Sofa]/, 16);
ENO_ShutterMoveDownEx(47132 /
[EG\Rollos\Rollo * Büro Rosenstr. ]/, 8);
ENO_ShutterMoveDownEx(21625 /[OG\Rollos\Rollo Kind 1]/, 16);
ENO_ShutterMoveDownEx(46995 /[OG\Rollos\Rollo Kind 2]/, 16);
ENO_ShutterMoveDownEx(50969 /[EG\Rollos\Rollo * Technikraum ]/, 8);
ENO_ShutterMoveDownEx(12509 /
[OG\Rollos\Rollo Zimmer 3]/, 16);
ENO_ShutterMoveDownEx(12977 /
[EG\Rollos\Rollo * Esstisch ]/, 10);
ENO_ShutterMoveDownEx(28376 /[EG\Rollos\Rollo * Küche ]/, 4);
ENO_ShutterMoveDownEx(27779 /
[OG\Rollos\Rollo Empore]/,8);
ENO_ShutterMoveDownEx(37394 /
[EG\Rollos\Rollo * WC ]/, 7);
IPS_SetScriptTimer($_IPS[‚SELF‘], 0);
//Start writing your scripts between the brackets

?>

Hallo,

du musst so etwas wie eine entprellung einbauen. Also einen Zähler, der alle fünf minuten hochgesetzt wird, und die Rolläden erst nach 30 Minuten wieder verfährt. Der Entpreller muss natürlich irgend wann sinnvoll wieder genullt werden.

Das gleiche entsteht nicht nur beim Thema Temperatur, sondern auch wenn man die Helligkeit mit einbezieht. Die Rolläden sollen janicht bei einer kurzen Wolke gleich hochfahren, und dann direkt wieder runter.

Gruß
Christian