Script Timer

Oh man ich Depp, ich habe ne Klammer vergessen. Aah ich versinke gerade im Boden. Super es klappt, vielen vielen Dank! Du bist echt Spitze!

Viele Grüsse

Felix

Das nenne ich doch mal einen richtigen „Screenshot“:slight_smile:

Nur leider nicht paste and copy -fähig:o

Geh zu deinem Indoor Windmesser. :D:p;)

Da wollte ich eigentlich kurz zur Rätsellösung beitragen, aber du warst schneller und zweckmäßiger:cool: Mein Beitrag wäre sonst wieder wieder im OT gelandet… hast ja Recht… aber die „Screenshots“ fand ich trotzdem OK… haben Wiedererkennungswert… mache ich sonst zur maximalen Sicherheit meist vom BIOS der Server.
Drei smileys in der richtigen Reihenfolge sagen oft mehr als Worte;)
…jetzt aber weg…

Hey Hi Hello,

ich möchte gerne einen Alarmton (Script 41532) nach 5 min. ertönen lassen wen bei mir der HM Tür/-Fensterkontakt (Variable 36635) geöffnet wird.
Nach langen suchen habe ich jetzt den Beitrag von „RWN #8“ gefunden und genau so das Script erstellt, nur leider funktioniert es nicht.

Hier einmal der Script:

<?
if(($IPS_SENDER == "TimerEvent") && (GetValue(36635))) // nach 20 sec prüfen
{
    if(!GetValue(41532)) SetValue(41532, true); // wenn noch nicht aktiv, auf aktiv setzen
    IPS_SetScriptTimer($IPS_SELF, 0); // Timer beenden
    return; // Sript verlassen
}

if(GetValue(36635)) // wenn Variable auf true
{
   IPS_SetScriptTimer($IPS_SELF, 300); // Timer für x sec setzen
}
else // sonst
{
   IPS_SetScriptTimer($IPS_SELF, 0); // Timer löschen und
   if(GetValue(41532)) SetValue(41532, false); // prüfen ob Variable aktiv und auf false setzen
}
?>

und hier der Alarmscript (41532) den er ausgeführt werden soll:

<?
$id_sound = 13981 /*[Security\Alarmton\Media Player]*/;
WAC_SetVolume($id_sound, 50);
WAC_PlayFile($id_sound, "D:\\Soundbox\\Dj Kalikola - Trötte (Aquagen).mp3");
?>

Was mache ich da falsch? Bitte um Hilfe, Danke.

Ich glaube, so wird ein Schuh draus:

Dein Alarmscript ändere mal so:

<?
$id_sound = 13981 /*[Security\Alarmton\Media Player]*/;
WAC_SetVolume($id_sound, 50);
WAC_PlayFile($id_sound, "D:\\Soundbox\\Dj Kalikola - Trötte (Aquagen).mp3");

// wenn das Script durch den Timer aufgerufen wurde, dann Timer löschen
if(($IPS_SENDER == "TimerEvent"){
   IPS_SetScriptTimer($IPS_SELF, 0); // Timer löschen
}

?> 

Wenn ich es richtig verstanden habe, hat das Alarmscript die ID 41352.

Dann noch ein zweites Script:


<?
IPS_SetScriptTimer(41352, 300);
?>


Das zweite Script triggerst Du auf den HM Türkontakt mit Auslöser TRUE.

Das sollte Dich zum Ziel führen. Wenn die Tür aufgeht (Türkontakt = TRUE), so setzt das zweite Script den Timer des Alarmscripts auf 300 Sekunden. Das heißt also 5 Minuten nach Türöffnung gibts Alarm.

Gruß,
Christoph

Jawohl…, Herzlichen Dank Christoph!

soweit ein schöner Schuh, jetzt möchte ich noch ein paar daraus machen. In Moment wird der Alarm einmal ausgelöst und dann wieder ausgeschaltet, ich wünsche mir, das der Alarm erst wieder aus geht wen der Türkontakt auf false geht. Ich hatte es mit ein Ereignis „false“ probiert, kahm aber leider nicht zum gewünschten ergebniss.

Ach und es hat sich im ersten Script ein Tippfehler eingeschlichen:

if(($IPS_SENDER == "TimerEvent")

nach if kommt nur eine Klammer:

if($IPS_SENDER == "TimerEvent")

Also rein script-technisch geht da im Moment nichts aus. Wenn Du da nicht ein MP3 abspielen würdest, sondern z.B. Licht anschalten würdest, dann würde das Licht da oben anbleiben, bis es irgendwer ausschaltet. Dein MP3 ist zu kurz :slight_smile:

Oder hab ich jetzt was falsch verstanden?

Gruß,
Christoph

Aha, ok das mit Lichtschaltung habe ich gerade mal ausprobiert, ok das bleibt an bis ich es wieder Manuel ausschalte.
Aber ich möchte gerne das es aus geht wen der Türkontakt wieder auf false geht. Bei Licht kann ich einfach ein Ereignis auf False erstellen aber bei .Mp3 geht das irgendwie nicht. Ist da der folgende Script vieleicht falsch?

<?
WAC_StopFile($id_sound, "D:\\Soundbox\\Dj Kalikola - Trötte (Aquagen).mp3");
?>

Aha, ok das mit Lichtschaltung habe ich gerade mal ausprobiert, ok das bleibt an bis ich es wieder Manuel ausschalte.
Aber ich möchte gerne das es aus geht wen der Türkontakt wieder auf false geht. Bei Licht kann ich einfach ein Ereignis auf False erstellen aber bei .Mp3 geht das irgendwie nicht.

Ich habe den Script mal so geändert das er in schleife alle 5min. durch läuft:

<?
$id_sound = 13981 /*[Multi Media\Alarm/- & Signalton\Alarm Tür offen]*/;
WAC_SetVolume($id_sound, 50);
WAC_PlayFile($id_sound, "D:\\Soundbox\\Dj Kalikola - Trötte (Aquagen).mp3");
?>

Wen ich jetzt den Script Timer als ereignis unter False setzte läuft der Ton aber trotzdem weiter:

<?
// wenn das Script durch den Timer aufgerufen wurde, dann Timer löschen
if(($IPS_SENDER == "TimerEvent"){
   IPS_SetScriptTimer($IPS_SELF, 0); // Timer löschen
}
?>

Wo ist da der fehler?

Sooo…, ich habe ein komplettes Paar schuhe.

Nochmal zusammen gefasst:
Auf die Variable des HM Fenster/- & Türkontakt habe ich ein Ausgelöstes Ereignis
auf True mit folgenden Script erstellt:

<?
IPS_SetScriptTimer(41532 /*[Security\Fenster/- & Türkontakte\Türkontakt Waschküche\Tür Waschküche\Alarmton]*/, 300);  //nach 5min. Alarmmeldung
?>

im folgenden Script habe ich gesagt

  1. welchen Sound er abspielen soll
  2. Die Zeit in Schleife
  3. bei geschlossener Tür den Timer löscht.
<?
$id_sound = 13981 /*[Multi Media\Alarm/- & Signalton\Alarm Tür offen]*/; //welchen Sound
WAC_SetVolume($id_sound, 50); //Lautstärke
WAC_PlayFile($id_sound, "D:\\Soundbox\\IPS Meldung - Die Waschküchentür steht offen.mp3"); //Pfad des Sounds

if(GetValue(36635  /*[Security\Fenster/- & Türkontakte\Türkontakt Waschküche\Tür Waschküche]*/)) // Abspielen wenn Variable auf true geht
{
   IPS_SetScriptTimer($IPS_SELF, 6); // Timer Wiederholen für 6 sec setzen
}
else // sonst
{
   IPS_SetScriptTimer($IPS_SELF, 0); // Timer löschen 
}
?>

Vielen Dank Euch allen für die Mithilfe!

Jo … das sollte genau das machen, was Du willst…

Hi,

habe das genau so umgesetzt nur mit einer Push Benachrichtigung. Läuft gut, aber ich möchte nur einmal benachrichtigt werden und nicht alle 5min erneut.

Wie krieg ich das hin?

Danke,
mfg,
Sebastian

Lass den Scripttimer weg und trigger das Script direkt mit der Variable auf bestimmten Wert.

Ich habe auch noch eine Frage und zwar zum Anfang des Scripts mit der Zeile:

if($_IPS['SENDER'] == "TimerEvent")

Hierbei ist der IPS_Sender, z.b. die Variable die übers Frontend geschalten wird und den Wert „TimerEvent“ hat, oder?
Verstehe ich das richtig oder täusche ich mich?

So lese ich das zumindest aus der Doku:
$_IPS[‚SENDER‘]

Auslöser des Skriptes. Abhängig vom Wert können sich weitere globale Variablen ergeben. Mögliche Werte sind in der Tabelle Skriptauslöser genauer spezifiziert.

Nein das ist falsch.
Sender enthält einen Text welcher den Auslöser des Script enthält.
Ein Script kann u.a. von einem Timer, einem Ereignis, einer manuellen Ausführung im Editor oder auch aus dem Webfront gestartet werden.
Hast du z.B. einer Variable als Aktion ein Script zugeordnet und schaltest diese Variable im WebFront, so ist der Sender WebFront.
Michael

Hi!

Ich weiß dass ich mich blöd dranstelle, aber wäre schön wenn mir mal jemand auf die Sprünge helfen könnte.

Ich will eigentlich nur erreichen, dass das Licht, nachdem es eingeschaltet wurde (Variable 28297 ändert sich auf true), sich nach 5 Minuten wieder automatisch ausschaltet.

Bräuchte mal einen Verständnisanstoß…

schau mal hier

Script Timer…

Wenn du HomeMatic verwendest kannst du auch folgenden Befehl verwenden:
HM_WriteValueFloat (Id des Aktors, „ON_TIME“, 300);

Schaltet einen HomeMatic Aktor für 5min an.

Ok, das ist simpel…

Ist aber kein Homematic Device

Bräuchte quasi das:

Wenn Variable 28297 (hier Licht) seit 5 Minuten ‚true‘, dann führe dies oder das aus

Ich glaube, wenn ich es 1x richtig gesehen hätte, würde ich es auch verstehen