Mehrere Scripttimer möglich?

Hallo zusammen,

eigentlich habe ich nur eine ganz einfache Frage: Ist es möglich, einem Script mehrere ScriptTimer zuzuweisen? Mehrere Ereignisse funktioniert, aber ich finde gerade keine Möglichkeit, mehrere Scripttimer zuzuordnen.

Hintergrund ist folgender:
Hier wird beim Lüften gerne mal vergessen, das Fenster wieder zu schließen. Es soll also nach 10 Minuten ein kurzer Hinweis kommen, z.B. „Fenster im Schlafzimmer kann geschlossen werden“.
Ich würde das mit einem Scripttimer lösen, der losläuft, wenn das Fenster geöffnet wird. Funktioniert mit einem Fenster wunderbar. Aber wie löse ich es für alle Fenster? Mit nur einem Scripttimer kann es nicht funktionieren. Mit einem Ereignis „alle 10 Minuten“ funktioniert es auch nicht, denn das Ereignis geht z.B. um 22:20 Uhr los, auch wenn es um 22:18 Uhr erst angelegt wurde.

Ich hoffe, mein Problem ist verständlich. Irgendwie habe ich gerade ein Brett vorm Kopf und hoffe auf Lösungsvorschläge.

Grüße,
Christoph

Alle Funktionen für Scripttimer bearbeiten immer das gleiche Ereignis. Mehrere gehen also so nicht. Dann musst du schon die ganz normalen Befehle zur Ereignis Steuerung nutzen.
Oder einfach bei jeder Öffnung/Schließung die kleinste Zeit berechnen bis zum Lüften Alarm und damit den ScriptTimer füttern.
Alternativ gibt es noch das hier für Windows-IPS, welches du nutzen könntest.
IP-Symcon Community Forum
Michael

Hi,

nein.

Aber es steht Dir natürlich frei für gesammelte Werke einen eigenen zu erstellen und den dort dann zugehörigen Timer nach Belieben zu setzen, …zu verlängern, … auf null zu setzen; samt zugehöriger Aktionen oder Setzen von anderen Timern.

mfg

BerndJ

Moin Christoph,

auch auf die Gefahr hin, dass ich dich falsch verstanden habe. Ich hatte ein ähnliches Problem mit den Script-Timern bei meiner AktorSteuerung. Um das zu umgehen, bin ich auf Events umgestiegen. Die Events werden mit dem passenden Namen angelegt und beim Script-Aufruf durch Events, wird der Name des Events abgefragt und dementsprechend dann weiter damit im Skript gearbeitet. So machen auch „normale ScriptTimer“ in den Scripts, wo ich die AktorSteuerung verwende, keine Probleme :slight_smile:

Hier mal ein Beispiel (Script - AktorSteuerung_Timer):

<?
include 'AktorSteuerung.ips.php';
if ($_IPS['SENDER'] == 'TimerEvent') {
	$EAktor = IPS_GetName($_IPS['EVENT']);
	AktorSteuerung($EAktor , 'AUS');
}
?>

Screenshot dazu:
aktor.steuerung.timerevent.jpg

Und in der eigentlichen Aktor-Steuerung erstelle ich die Events wie folgt:

$eid = @IPS_GetEventIDByName($Aktor, $SkriptID_AktorSteuerung_Timer);
if (is_numeric($eid) == false) {
	$eid = IPS_CreateEvent(1);
	IPS_SetParent($eid, $SkriptID_AktorSteuerung_Timer);
	IPS_SetName($eid, $Aktor);
}
$eventtime = time() + $Zeit;
IPS_SetEventCyclicTimeBounds($eid, $eventtime, 0);
IPS_SetEventLimit($eid, 1);
IPS_SetEventActive($eid, true);

Nochmal kurz erklärt…ein Aktor braucht ein Event, z.B. wegen ON_TIME bei HomeMatic, dann wird unter dem Namen vom Aktor ein Event mit der entsprechenden Zeit erstellt und wenn das Event dann das Timer-Script aufruft, dann wird der Name herangezogen und damit dann weiter gearbeitet…

Eventuell hilft dir das ja weiter, wenn nicht, dann einfach ignorieren :smiley:

Grüße,
Chris

Vielen Dank an Euch. Ich erstelle jetzt einfach mehrere Events!

Das Modul von Nall Chan sieht allerdings auch gut aus. Das werde ich mir bei Gelegenheit mal genauer ansehen.

Grüße,
Christoph