Alarm verzögert auslösen

:eek:Hallo zusammen,
ich habe einen Homematic-Bewegungsmelder und 2 Türkontakte, die ich im IPS-Script so geschaltet habe dass ein (ebenfalls Homematic) Empfänger mir eine Sirene einschaltet.

Ereignis: bei Wert der MOTION-Variable des Bewegungsmelders TRUE wird im Script der Homematicschalter auf TRUE gesetzt und die Sirene geht los.
Das Problem liegt darin, daß ich beim Verlassen des Hauses den Bewegungsmelder ja aktiviere (für 30 Sek.) - und wenn die Motion-Variable dann auf FALSE geht, geht der Alarm los.
Sollte eigentlich nicht so laufen, da ich das Ereignis ja mit Wert TRUE triggere.

Also nochmal der Ablauf:
a) Ereignis überwacht immer den Status der 3 Melder. (siehe Script weiter unten) d.h. MOTION-Variable kann evtl. TRUE sein.
Nur wenn die Alarm-Variable auf TRUE ist der Alarm scharf

b) Raum verlassen => MOTION = TRUE

c) Alarm (von ausserhalb über AKM868)scharf stellen - selbst wenn jetzt MOTION noch immer TRUE ist passiert nichts.

Wenn jetzt der Bewegungsmelder auf FALSE geht, „sirent“ es und alle Nachbarn hören es. :eek:

Kann jemand nachvollziehen, wo mein (Denk)Fehler liegt ??
:stuck_out_tongue: Würde meinen nachbarlichen Beziehungen guttun.

// Wenn Variable Alarm auf TRUE und Tür,Tor oder Bewegungsmelder auslösen
$alarm = getvalue (51081 /*[EXP\ALARMANLAGE\Alarm]*/);
$text = ' mailtext ';
$xx =' xx ';
IF ($alarm == true)// Wenn Alarm auf FALSE aus: kein ALARM
{
switch($IPS_SENDER)
{
  case 'Variable':
  $xx=$IPS_VARIABLE;
  break;
  case 'RunScript':
  $xx=' SCRIPT ';
  break;
  case 'Execute':
  $xx=' EXEC ';
  break;
}

$adresse = 'a.merkel@bundestag.de';
$smtp_id =51370 /*[EXP\E-Mail senden (SMTP)]*/;
$subject = ' ALARM ';
$text = 'Ausgelöst durch: '.$xx; // $xx in E-Mail als Text eintragen

HM_WriteValueBoolean(28287 /*[EXP\ALARMANLAGE\Sirene/Licht-FunkSchalter]*/, "STATE", true); //Gerät einschalten
SMTP_SendMailEx($smtp_id,$adresse,$subject,$text);
ECHO ' ALARM Sirene ein ';

}

screen2.PNG

Ich weis nicht ob ich es richtig verstanden habe. :confused:

// Wenn Variable Alarm auf TRUE und Tür,Tor oder Bewegungsmelder auslösen
$alarm = getvalue (51081 /*[EXP\ALARMANLAGE\Alarm]*/);
$text = ' mailtext ';
$xx =' xx ';

switch($IPS_SENDER)
{
  case 'Variable':
  $xx=$IPS_VARIABLE;
  break;
  case 'RunScript':
  $xx=' SCRIPT ';
  break;
  case 'Execute':
  $xx=' EXEC ';
  break;
}

if(!$alarm)// Wenn Alarm auf FALSE aus: kein ALARM
{
    return;
}
else
{
    $adresse = 'a.merkel@bundestag.de';
    $smtp_id =51370 /*[EXP\E-Mail senden (SMTP)]*/;
    $subject = ' ALARM ';
    $text = 'Ausgelöst durch: '.$xx; // $xx in E-Mail als Text eintragen

    HM_WriteValueBoolean(28287 /*[EXP\ALARMANLAGE\Sirene/Licht-FunkSchalter]*/, "STATE", true); //Gerät einschalten
    SMTP_SendMailEx($smtp_id,$adresse,$subject,$text);
    ECHO ' ALARM Sirene ein ';
}

er wollte sich mit den Nachbarn besser stellen, aber statt dessen A.Merkel mit Alarm-Mails zu bombardieren hatter nicht gesagt:D:D:D

Also ich versuche mal weniger konfus zu formulieren:

Ist die Variable $alarm auf True gesetzt und der Bewegungsmelder ändert MOTION auf TRUE, geht der Alarm los.
Das funktioniert.

Aber wenn der Bewegungsmelder eben schon auf TRUE steht (weil ich ja durch den Erfassungsbereich gelaufen bin) und ich dann den Alarm von aussen einschalte (das ist ja der Normalfall) passiert zunächst nix - bis sich Motion (es ist keiner im Bereich) nach 4-5 Minuten wieder auf FALSE schaltet - dann geht die Sirene los obwohl das Ereignis doch vorgibt: Ausführen wenn Motion-Grenzwert = TRUE:

Das Problem liegt ja auch teilweise in den langen „Einschaltzeiten“ des Bewegungsmelder, den man ja nicht kürzer als 4-5 Minuten stellen kann.

Hat vielleicht jemand schon ein Script für eine Alarmanlage geschrieben, das ebenfalls über homematic-Bewegungsmelder getriggert wird.

Ausführen wenn Motion-Grenzwert = TRUE:

Bist Du dir sicher, dass nix anderes dazwischen funkt. Wenn er auf true steht und wechselt auf false wird das Script nicht ausgeführt. Nur bei wechsel auf true.

Wieviele Trigger hast Du denn im Script.

Mach dir zum Testen eine Boolvariable und schalte mal.

Ich muss das Ganze nochmal überdenken.
Es ist nur 1 Event drin, aber ich denke ich steuere alles über Timer.
Aber wenn ich dich schon mal am „Rohr“ habe:
Ich habe 3 AKM868 und würde gerne abfragen, welcher von den 3 Tastern die Alarmanlage eingeschaltet hat.

Mit IPS_VARIABLE geht es nicht.

Aber vorerst
:slight_smile:

echo PJ_GetTrackerID(50633);

Entschuldigung hat etwas gedauert.
Wo hast Du das gefunden?

echo PJ_GetTrackerID(50633); 

Rainer findet nicht, Rainer weiß!
:smiley:

Coram publico !!!:loveips:
Und wie ist die Syntax bzw. wie setze ich den Befehl ein?
Hast Du ein Beispiel oder sogar noch mehr „Königswissen“ ?

Nur für den Fall das die eigentliche Problemstellung noch existiert.

Ich habe was ähnliches mit einem Event gelöst.

Es gibt ein Script das deine Alarmanlage Scharf macht, dieses Script wir Ausschließlich von einem TimerEvent gestartet. (z:B. Starte Script nach 5 Minuten), Dieses Timerevent ist per Default deaktiviert.

Wenn du nun deine Alarmanlage Scharf machen möchtest brauchst du nur das Timer Event per Script Aktivieren.

Wenn der Timer dann abgelaufen ist aktiviert das Script deine Alarmanlage.

Wichtig ist nur das das Script am Ende dein Timerevent wieder Deaktiviert.

Hoffe ich habe das Verständlich ausgedrückt.

Gruß Martin