Durchsage bei Statusänderung Variable

Hallo zusammen,

ich bin leider nicht so der PHP Crack wie die meisten anderen hier, deswegen benötige ich für folgende „Logik“ eure Hilfe.

Ich möchte gerne, dass "wenn unsere Haustür länger als 5 Minuten offen steht eine Durchsage über unser Multiroom System ausgelöst wird.

Ich habe bisher alles geschafft jedoch weis ich nun gerade nicht wie das Skript angepasst werden muss damit es erst nach 5 Minuten die Durchsage auslöst.

<?php

$StatusTür = GetValueBoolean("15956");

if ($StatusTür == true)
{
   RequestAction(12614,70);
   file_get_contents("http://30.1.1.18/event/event.php?type=tts&text=Achtung%20die%20Haustür%20ist%20offen&zone=0&zone_ext=1&vol=40");
   RequestAction(12614,40);
  }


Hi,

ich benutze immer diesen Script:

<?
 
$status = GetValue(12345);
$time   = 30; //Sekunden
 
If ($_IPS['SENDER'] == "Variable")  
{
 
   If ($status == true)
   {
    IPS_SetScriptTimer($_IPS['SELF'],$time);
   }
   else
   {
   //mach nix
   }
}
 
else
{
echo "Dieses Sript kann nur entweder durch eine Variable oder ein Timerevent gestartet werden";
}
 
If ($_IPS['SENDER'] == "TimerEvent") // Wenn das Script durch den Timer gestartet wird
{
    If ($status == true)
    {
 
    //was?
 
    IPS_SetScriptTimer($_IPS['SELF'],$time);
    }
    else
    {
    IPS_SetScriptTimer($_IPS['SELF'],0); // Timer ausschalten
    }
}
else
{
}
 
 
?>

Beispiel:
Bei „TRUE“ Startet ein Timer. Nach Ablauf Timer (30sek) wird dieser Script nochmal ausgeführt.
Ist die Variable FALSE, nichts machen.
Ist die Variable TRUE, Meldung!

Gruß

Es gibt verschiedene Möglichkeiten:

1: Du ermittelst, wer das Skript aufgerufen hat. Ist es das Ereignis, setzt Du einen SkriptTimer auf 5 Minuten. Wenn der Timer das SKript aufruft, machst Du die Durchsage und setzt den Timer auf 0.

2: Du arbeitest mit einer Zählervariable, die per default auf 0 ist. Beim ersten Aufruf des Skriptes setzt Du einen SkriptTimer auf 5 Minuten und erhöhst die Variable um 1. Beim zweiten Aufruf startest Du die Durchsage, deaktivierst den SkriptTimer und setzt den Zähler wieder auf 0.

Die Doku hilft Dir dabei:
https://www.symcon.de/service/dokumentation/konzepte/skripte/systemvariablen/

Edit: Und ich hab noch überlegt, ob ich noch schreibe, dass bestimmt gleich jemand um die Ecke kommt, und Dir eine fertige Lösung präsentiert. :slight_smile: Möglichkeit 1 hast Du jetzt in #2.