Bessere Lösung als IPS_Sleep?

Hallo zusammen,

ich möchte alle 10? Sekunden überprüfen, ob alle Rollos geschlossen sind. Damit ich wenn ich aus dem Haus gehe vorne an der Tür sehe, das auch wirklich alle Rollos zu sind. Dazu überprüfe ich alle Positionsvariablen in IPS. Da ich die Variablen jedoch nachführe (da mein Rollosystem nicht standardmäßig in IPS eingebunden werden kann), kann ich mir erst 100% sicher sein, dass die Rollos unten sind, sobald das Skript um den aktuellen Status abzurufen ausgeführt wurde.

Jetzt habe ich folgendes überlegt:

  • Ich setze max_execution_time auf 60 Sekunden
  • Ich schaue vor wievielen Sekunden das Skript das letzte mal ausgeführt wurde
  • Ziehe diese Zeit von 30 ab (Skript wird alle 30 Sekunden ausgeführt)
  • Addiere nochmal 200ms zur Sicherheit
  • Und lege das Skript dann schlafen

JEtzt bin ich über die Seite von Raketenschnecke gestolpert:
IPS Tipps&Tricks – Scriptlaufzeiten in IP-Symcon | Raketenschnecke.net

Gibt es denn eine bessere Lösung als meine ausgedachte?

Beispielskript;


$childID = 51790;  /*[Schnittstellen\HomePilot\HomePilot Aktionsskript]*/;

$lastExecution = time() - IPS_GetScript(51790)['LastExecute'];
echo $lastExecution."
";
IPS_Sleep((30 - $lastExecution) * 1000 + 200);
echo time() - IPS_GetScript(51790)['LastExecute']."
";

Vielen Dank!

Gruß Basti

Abend Basti!

Ich kann dir nicht wirklich helfen, denn ich verstehe nicht wirklich was du mit dem 1. Absatz meinst. Und ich befürchte, dass ich nicht der einzige sein werde, der dir an der Stelle nicht so ganz folgen kann.

Könntest du diesen Teil bitte nochmal genauer erläutern und vlt. nochmal mit eigenen Worten beschreiben, über welche Wege du was machen willst?

ich möchte alle 10? Sekunden überprüfen, ob alle Rollos geschlossen sind. Damit ich wenn ich aus dem Haus gehe vorne an der Tür sehe, das auch wirklich alle Rollos zu sind. Dazu überprüfe ich alle Positionsvariablen in IPS. Da ich die Variablen jedoch nachführe (da mein Rollosystem nicht standardmäßig in IPS eingebunden werden kann), kann ich mir erst 100% sicher sein, dass die Rollos unten sind, sobald das Skript um den aktuellen Status abzurufen ausgeführt wurde.

Wie genau fragst erhälst du die Position deiner Rollläden? Stehen da % Werte in Variablen? Wie werden die Variablen gefüllt?

Ich verstehe es so, dass die Variablen von extern gefüllt werden. Und wenn alle Variablen z.B. bei 100% sind, dann soll ein Script ausgeführt werden und eine Variable „Alle Rollläden unten“ auf TRUE gesetzt werden? Dann könntest du mir Ereignissen arbeiten, welche die Variablen überwachen und einem bestimmten Wert das Script ausführen!?

Grüße,
Chris

Ja, etwas blöd geschrieben…, aber du hast es richtig verstanden. Das wäre schonmal eine bessere Lösung, als meine oben genannte.

Ich habe aber noch was einfacheres herausgefunden: Das Skript, welches die Variablen verändert, ruft direkt mit ScriptExecute() das mein Skript auf, so brauche ich auch die Variablen nicht überwachen :slight_smile:

Vielen Dank!

Gruß Basti