Script Timer über KNX auslösen

Hallo,

ich habe jetzt Stunden mit dem IPS Script Timer verbracht und bin zu blöd ihn zu kapieren.

Was möchte ich tun:

Ich habe ein Ereignis (Klingel), das über eine Tasterschnittstelle ausgewertet wird und mir eine GA ( 3/0/9) auf den Bus schickt. Über ein bisschen Logik schickt IPS dann eine Push Meldung auf mein iPhone und löst zugleich die Status LEDs eines Tastsensors und einen Summer aus (3/0/10).

Jetzt wird natürlich nur solange signalisiert wie der Klingeltaster gedrückt wird. Ich möchte gerne eine Abfallverzögerung von 5 Sekunden zufügen. Und genau hier scheitere ich.

Kann mir bitte jemand helfen und das Timer Skript so erklären, dass ich es auch endlich verstehe.

Danke und viele Grüße

Joerg

Sent from my iPad using Tapatalk

Moin…

…bau Dir 2 Skripte.

Skript 1 lässt Du durch die Klingel-Taster Gruppenadresse (3/0/9) triggern.
Dieses Skript schickt Dir die Push-Nachricht und aktiviert den Summer über ein TRUE auf die Gruppenadresse (3/0/10).
Im Skript 1 startest Du auch den ScriptTimer des 2. Skriptes.


$ScriptID = 12345; // ID des 2. Skriptes
IPS_SetScriptTimer($ScriptID, 5);

Das 2. Skript schickt auf die GA (3/0/10) ein FALSE wenn es durch den SkriptTimer nach 5 Sek. ausgeführt wird.
Dann musst Du im 2. Skript noch den eigenen ScriptTimer wieder deaktivieren.


$ScriptID = 12345; // ID des 2. Skriptes
IPS_SetScriptTimer($ScriptID, 0);

Thats it…
Das einzige Problem was jetzt passieren kann, ist, das Du 5 Pushnachrichten bekommst wenn 5x in kurzen abständen geklingelt wird. Ansonsten kannst Du die Push-Nachricht auch ins 2. Skript packen, sofern sie nur als eine Info ( wie z.B. Anruf in Abwesenheit ) gedacht war.

Gruß,
Peter

Hallo Peter,

Cool…, vielen Dank.

Werd ich morgen versuchen

Funtioniert leider nicht, kriege nur ne Dauer Schleife hin…

Paar Infos wären Hilfreich! Poste mal deine Skripte! Ne schleife kann das eigentlich nicht werden!

Halo Peter,

Skripte sind gelöscht, da es dauergepipst hat :frowning:

Ich muss jetzt erst mal am KNX bnoch Summer und LED splitten und dann Versuch ich es nochmals.

Halt dich auf dem Laufenden.

Viele Grüsse

Jorrg

Dazu musst Sie doch nicht löschen!? Egal…

Ich kann Dir gerne mal was mit den oben genannten Gruppenadressen basteln wenn Du willst? Gruß,
Peter

Doch ich hatte ja die Endlosschleife, die ich nicht mehr abschalten konnte. Es kämmen so geschätzte 50000 Push Nachrichten und der Summer stand kurz vor dem Exitus.

Sehr nett, dass Du basteln möchtest :slight_smile: Ich würde es ja selbst gern kapieren was hinter dem Timer Script steckt. Ich versuch mich morgen nochmals daran und poste dann meine Scripte, aber zuerst muss ich Summer und LED auf unterschiedliche GAs legen.

Schönen Abend!

Joerg

Dann hast Du den ScriptTimer nicht beendet/deaktiviert und alle 5 Sekunden wurde dein 2. Skript ausgeführt. Da steckt nix hinter dem ScriptTimer (Hexerei etc.).
Der ist wie ein zyklisches Ereignis. Mehr nicht. Heißt halt ScriptTimer und ist einfacher per Befehl zu erstellen! That’s all!
Sag bescheid wenn Du hilfe brauchst.

Viel Erfolg,
Peter

Hier mal der Link zur ScriptTimer-Doku…

Ich hab den Script Timer ein Paar mal im Einsatz, z. B. Für den Reset der tK Anlage. Aber die Auslöser liegen alle ausschließlich im Webfront.

Hier ist jetzt ja mein Problem, dass der Auslöser des Timer vom KNX kommt. Daran hänge ich primär.

Du hast doch ne Gruppenadresse die auf das Klingeln reagiert. Diese triggert dein erstes Skript per auslösenden Ereignis (Nur auf TRUE).
Im 1. Skript startest Du den ScriptTimer des 2. Skriptes mit dem Befehl aus der Doku oder wie oben beschrieben.
Nach der ScriptTimer-Zeit wird das 2. Skript durch den ScriptTimer das 1. mal ausgeführt.

Im 2. Skript deaktivierst Du den eigenen ScriptTimer beim ausführen des Skriptes, damit das Skript nicht nach 5 Sek. wieder durch den ScriptTimer gestartet wird. Ansonsten würde das Skript alle 5 Sek. gestartet und Du hast die besagte „Schleife“ ( ist ja eigentlich kein Schleife ).

Aktivieren tust den ScriptTimer mit einem Wert größer „0“ und deaktivieren mit „0“. Das ist alles.

Den Befehl…

IPS_SetScriptTimer($ScriptID, 10);

… kannst Du aus jedem beliebigen Skript ausführen. Musst halt die $ScriptID anpassen und unter dem Skript mit der angegeben ID wird ein ScriptTimer erstellt.

Nu aber los… :smiley:

Hey jetzt wird’s logisch.

Danke für die ausführliche Erklärung.

Heute komm ich nicht mehr zum Testen, aber morgen Vormittag nach ich mich dran.

Schönen Abend Dir

Hallo Peter,

hat ein wenig gedauert, sorry, das Wochenende war mal wieder voll mit Freizeitstress…

Die Skript tut dank Deiner Hilfe und ein bisschen Versuchen und Suchen in meinenanderen Skripten jetzt genau was es soll

<?

$var1 = GetValueBoolean(46300 /*[Meldungen\Türklingel\Status]*/);



if ($var1 == true)
{

   EIB_Switch(43664 /*[Meldungen\Türklingel\Türklingel LED]*/, true);
   IPS_SetScriptTimer($IPS_SELF, 15); // 15 Sekunden aktiv lassen
}

if ($IPS_SENDER == "TimerEvent")
{
   EIB_Switch(43664 /*[Meldungen\Türklingel\Türklingel LED]*/, false);
   IPS_SetScriptTimer($IPS_SELF, 0);   // Timer ausschalten
}


?>

Das gleiche läuft jetzt mit drei Sekunden Verzögerung für den Summer. Jetzt hab ich alle Funktionen, die mir gefehlt haben.

Danke für Deine Hilfe und einen schönen Nachmittag!

Joerg