Alarmanlage mit IPS und Homematic

Hallo zusammen

also ich möchte mit homematic eine kleine alarmanlage „basteln“, heißt die schaltaktoren sollen immer wieder ein/aus schalten

(evt. mit zeitangabe sowie:
HM_WriteValueFloat (58971 /[Lichtschalter Gang oben]/ , „ON_TIME“, 0.3);
HM_WriteValueBoolean (58971 /[Lichtschalter Gang oben]/, „STATE“, true)
wird für taster benutzt)

bis der ein code über ein keypad eingegeben wird so wie auf :

welches ich übrigens auch noch nicht hinkrieg

bin für jede hilfe dankbar (oder denkanstoß)

Andi

Also so ganz habe ich das noch nicht verstanden was du mit den Aktoren machen willst oder was das mit einer Alarmanlage zu tun hat.

Gruß
Nick

Nennt sich wohl eher Anwesenheitssimulation :cool:

Ahh danke Freddy jetzt wird ein Schuh draus:)

Gruß Nick

Anwesenheitsimulation hört sich auch nicht schlecht an, kommt auch noch.

aber es ist so das ich mit den aktoren 1 horn und 2 klinkeln ansteuere (akustisches signal), mit dem rest diverse lampen (optisches signal).
ich mach aus dem haus also einen weihnachtsbaum :smiley:
das schreckt hoffentlich die einbrecher ab.

hoffe jetzt is alles klar

Andi

Nicht wirklich, jetzt isses ne Lichtorgel mit Hupe. Hat aber immer noch nix mit Alarmanlage zu tun :cool:

PS: Bitte bei Gelegenheit die Tastatur reparieren lassen, da klemmt wohl die Shift-Taste. :wink:

Gruß
Bruno

also wenn ein tür oder fensterkontakt oder die bewegungsmelder ansprechen oder in der zukunft ein lichtschranken seinen zustand ändert oder etwas meldet, soll sich mein haus bemerkbar machen.

alarmanlage eben

Andi

Alles machbar :slight_smile:
Aber stelle eine konkrete Frage… nenne deine Voraussetzungen(Hardware)… und beschäftige dich mit den Grundlagen… wenn Zustand a, dann führe Befehl 1 aus, oder wenn a und b dann 2… etc.

Oder lies mal http://www.ip-symcon.de/forum/f53/tonis-kleines-programmierhandbuch-2229/

Bis dahin verschiebe ich das Thema aus dem Homematic-Forum :wink:

Ich versuchs noch mal, hab auch Toni´s Buch :slight_smile: gelesen

Also ich habe momentan 2 HM Tür/Fensterkontakte und 2 HM Aktoren der eine für´s Licht der andere für die Hupe, bei Variablenänderung der Tür/F. Kontakte sollte dieses Alarmscript starten(das funktioniert)
leider sind meine programmierkentnisse eher bescheiden
Erklärung: wenn Alarm Ein sollen beide Aktoren sich ein/aus schalten bis Alarm Aus (ist eine einfach BooleanVariable, das mit code ausschalten fuktioniert auch schon), dann noch ein E-Mail versenden

dieses script läuft nicht, liegt vermutlich an mir aber Toni schreibt das mir hier geholfen wird

<?
$alarm = GetValueBoolean (33424);

if ($alarm)

	{do {HM_WriteValueFloat (58971 /*[Lichtschalter Terrasse]*/ , "ON_TIME", 0.5);// schleife ein/aus (könnte passen)
     HM_WriteValueBoolean (58971 /*[Lichtschalter Terrasse]*/, "STATE", true);
	 
// Ab hier weiß ich nicht mehr weiter  and  ist vermutlich falsch
 and //2. Homematic schaltaktor + evt. mehr
    (HM_WriteValueFloat (45896 /*[Alarmhupe Außen]*/ , "ON_TIME", 5);  // soll 5sec hupen
     HM_WriteValueFloat (45896 /*[Alarmhupe Außen]*/ , "OFF_TIME", 2); // gibt´s das überhaupt  2sec pause
     HM_WriteValueBoolean (45896 /*[Alarmhupe Außen]*/, "STATE", true);)
    }while ($alarm = false) // bis der richtige code eingegeben wird und alarm auf false stellt

and  // und natürlich noch ein e-mail auf´s Handy

SMTP_SendMail(10952 /*[E-Mal]*/, "Alarm!", "Einbruch");



?>

Na das ist doch schon mal was :smiley:

Aber so haben wir doch fast alle hier angefangen.
Nur man muss seine Ideen vernünftig in Fragen fassen können, dann kommt wirds auch und sich natürlich selbst mit den Antworten befassen und verstehen lernen. Aber das hast du ja jetzt mit Toni’s kleinem Programmierhandbuch schon relativ erfolgreich getan;)

aber Toni schreibt das mir hier geholfen wird

Ja genau… jetzt gehts los… Probiere es mal so:

<?
$alarm = GetValueBoolean (33424);   // Diese Variable triggert das Script bei bestimmten Wert = true


if ($alarm) // wenn Alarm ein
	{
	HM_WriteValueBoolean (58971 /*[Lichtschalter Terrasse]*/, "STATE", true);  // Licht ein
	HM_WriteValueFloat (45896 /*[Alarmhupe Außen]*/ , "ON_TIME", 5);  // Hupe für 5 Sekunden ein
	IPS_SetScriptTimer($_IPS['SELF'], 7);  // Startet das Script nach 7 Sekunden neu
	}
	else  // wenn Alarm aus, dann
		{
		HM_WriteValueBoolean (58971 /*[Lichtschalter Terrasse]*/, "STATE", false); // Licht aus
		IPS_SetScriptTimer($_IPS['SELF'], 0);  // Setzt den Scripttimer wieder auf 0
   	}

// und natürlich noch ein e-mail auf´s Handy
if ($_IPS['SENDER'] == "Variable")  // nur wenn Script von Alarmvariable getriggert
	{
	SMTP_SendMail(10952 /*[E-Mal]*/, "Alarm!", "Einbruch");
	}

?>

Ums noch etwas „komplizierter“ zu machen, habe ich mal noch eine neue Variable mit ins Spiel gebracht… den Status des Lichtschalters der Terrasse.
Sodass der Einschaltbefehl nicht alle 7 Sekunden neu gesendet wird, wenn das Licht schon brennt.
Nur musst du hierfür noch die entsprechende ID eintragen:

<?
$alarm = GetValueBoolean (33424);   // Diese Variable triggert das Script bei bestimmten Wert = true
$licht_terr = GetValueBoolean(hier Status-ID der Instanz 58971 einfügen);   // Abfrage Status Terrassen-Licht

if ($alarm) // wenn Alarm ein
    {
    if (!$licht_terr)   // nur Licht einschalten, wenn aus
    	{
    	HM_WriteValueBoolean (58971 /*[Lichtschalter Terrasse]*/, "STATE", true);  // Licht ein
    	}
    HM_WriteValueFloat (45896 /*[Alarmhupe Außen]*/ , "ON_TIME", 5);  // Hupe für 5 Sekunden ein
    IPS_SetScriptTimer($_IPS['SELF'], 7);  // Startet das Script nach 7 Sekunden neu
    }
    else  // wenn Alarm aus, dann
        {
        HM_WriteValueBoolean (58971 /*[Lichtschalter Terrasse]*/, "STATE", false); // Licht aus
        IPS_SetScriptTimer($_IPS['SELF'], 0);  // Setzt den Scripttimer wieder auf 0
       }

// und natürlich noch ein e-mail auf´s Handy
if ($_IPS['SENDER'] == "Variable")  // nur wenn Script von Alarmvariable getriggert
    {
    SMTP_SendMail(10952 /*[E-Mal]*/, "Alarm!", "Einbruch");
    }

?>

Hallo Leute,
ich habe auch ein kleines Problem in Beziehung auf einer „Alarmanlage“. Ich möchte jetzt nich groß drumherumreden und nenne einfach mein Problem. Nämlich : Kennt ihr eine Lösung ( Script - PHP ) die eine Bewegungsmeldervariable auf false setzt oder schlicht aktualisieren lässt? Die Bewegungsmelder sind von Homematic und mit dem IPS verbunden. Ich habe nichts der gleichen gefunden.

das macht immer der Sensor (BWM) selbst, sonst mach das ganze kaum Sinn.

das stimmt wohl. So ca. alle 5Minuten, jedoch wollte ich, wenn ich den Alarm einschalte alle Bewegungsmelder auf false setzen, egal ob noch wer im Haus ist oder nicht. Dies jedoch erlaubt IPS/HOMEMATIC nicht.

die Sensor-Variablen können nicht von extern gesetzt werden, und das ist auch gut so.
Welcher Sinn (bzw. welcher Ursprung) auch immer hinter Deinem Vorhaben steckt: da musst du dir was anderes überlegen.

Wenn ein BWM meint, es bewegt sich nichts, setzt er die Variable von selbst zurück.

Ich habe mir Hilfsvariablen erstellt die durch ein Script geschaltet werden.
Diese Variable haben immer die gleichen Werte wie die Bewegnungsmelder.
Die Alarmanlage bezieht sich jetzt auf die Variablen und nicht mehr auf die Bewegungsmelder.
Die Variablen werden beim scharf setzen der Alarmanlage auf false gesetzt.
Also praktisch Problem gelöst, jedoch gibt er bei einer aktualisierung bei einem Bewegungsmelder wieder alarm. Da habe ich eine Vermutung.
Nämlich ist es so, dass Bewegungsmelder, wenn sie aktualisiert werden, ihren vorherigen und nachfolgenden Wert bei der Aktualisierung übergeben? Oder nur der nachfolgende Wert bei der Aktualisierung?

Ich habe mir Hilfsvariablen erstellt die durch ein Script geschaltet werden.

das stand oben nicht drin

Diese Variable haben immer die gleichen Werte wie die Bewegnungsmelder.

woher wissen die Variablen das?

Die Alarmanlage bezieht sich jetzt auf die Variablen und nicht mehr auf die Bewegungsmelder.

weiß das auch die Alarmanlage?

Die Variablen werden beim scharf setzen der Alarmanlage auf false gesetzt.

welche Variablen und wer tut das?

Also praktisch Problem gelöst, jedoch gibt er bei einer aktualisierung bei einem Bewegungsmelder wieder alarm.

ist das nicht die Jobdescription von Alarmanlage(Bewegungsmelder?

Da habe ich eine Vermutung.

ich auch

Nämlich ist es so, dass Bewegungsmelder, wenn sie aktualisiert werden, ihren vorherigen und nachfolgenden Wert bei der Aktualisierung übergeben? Oder nur der nachfolgende Wert bei der Aktualisierung?

vielleicht ist es zielführend, wenn du das gesamte (vermeintliche)Problem (besser noch: den Istzustand) beschreibst, und vor allem das, was du eigentlich erreichen willst.
Immer nur mit mikroskopischen Fragmenten zu kommen (und nach 10 Postings wird so langsam klar, wo das eigentliche Problem liegt) ist Zeitverschwendung, und nicht nur Deine.

Zitat:
Ich habe mir Hilfsvariablen erstellt die durch ein Script geschaltet werden.
das stand oben nicht drin

Richtig dies habe ich auch erst vorhin eingefügt (Blitzgedanke), das vielleicht das Problem lösen könnte.

Zitat:
Diese Variable haben immer die gleichen Werte wie die Bewegnungsmelder.
woher wissen die Variablen das?

aus einem Script, welches durch ein Ereignis ausgelöst wird, wenn sich ein Bewegungsmelder aktualisiert.


// $b_olaf = Bewegungsmelder
// $olaf    = Hilfsvariable

	//Wenn der Bewegungsmelder an  und die Variable an,  dann nichts.
	//Wenn der Bewegungsmelder an  und die Variable aus, dann setze Variable auf an.
	//Wenn der Bewegungsmelder aus und die Variable an,  dann setze Variable auf aus.
	//Wenn der Bewegungsmelder aus und die Variable aus, dann nichts.


//Wenn der Bewegungsmelder true, dann...
	if(GetValueBoolean($b_olaf))
	{//Wenn die Variable false, dann...
	   if(GetValueBoolean($olaf)==false)
	   {//setze die Variable auf true.
	   SetValueBoolean($olaf,true);
		}
	}//Wenn der Bewegungsmelder false, dann...
	elseif(GetValueBoolean($b_olaf)==false)
	{//Wenn die Variable true, dann...
	   if(GetValueBoolean($olaf)==true)
	   {//setze die Variable auf false.
	   SetValueBoolean($olaf,false);
	   }
	}

Zitat:
Die Alarmanlage bezieht sich jetzt auf die Variablen und nicht mehr auf die Bewegungsmelder.
weiß das auch die Alarmanlage?

Jap wissen sie. Hab ich geändert.

Zitat:
Die Variablen werden beim scharf setzen der Alarmanlage auf false gesetzt.
welche Variablen und wer tut das?

Die Hilfsvariablen die immer den gleichen Zustand wie die Bewegungsmelder haben. Im falle von den Script oben jedoch nicht mehr (bis zur nächsten Aktualisierung). Wer das tut? Ein Script welches ausgelöst wird, wenn die Alarmanlage scharfgesetzt wird. Nennen wir es „Alarm scharfsetzen“.

SetValueBoolean(16512 /*[Hardware Komponenten / Software Routinen\Regeln / Routinen\Skripte\Einbruch-Alarm und Signaleuchte\Alarm scharf / unscharf, Aktion bei Einbruch\Bewegungsmeldervariablen\Olaf]*/ ,false);

So mein problem ist halt im Moment, dass sich der Alarm auslöst, wenn sich ein Bewegungsmelder aktualisiert. Also die Hilfsvariable $Olaf ist auf false gesetzt beim „Alarm scharfsetzen“. Jedoch ist der Bewegungsmelder noch auf true. Das Script „Script_Aktion_bei_Einbruch“ bezieht sich auf die Hilfsvariablen also ist alles ok. Nach ca. 5Min aktualisiert sich ein Bewegungsmelder und der Alarm wird ausgelöst. Jedoch sieht man das sich die Variable nicht verändert hat.

Ich stelle mal eine Version meines Objektbaumes hier online.

ich verstehe dein gesamtes Konstrukt nicht. Und mir ist noch immer nicht klar, was du erreichen willst.
Aus meiner Sicht ist das alles einfach zu lösen:
warum triggerst du die Scripte für die Hilfsvariablen nicht auf die „Motion“-Variable (bei Änderung) der Bewegungsmelder?

Weil, wenn ich die Alarmanlage scharf mache sind die Bewegungsmelder noch auf true So 5minuten. Ich mache die anlage scharf und direkt wird der Alarm ausgelöst und das soll nicht passieren. Irgendwo habe ich noch einen Denkfehler. Ich prüfe nochmal alles durch und melde mich dann nochmal.

DAS ist endlich mal eine Beschreibung, aus der hervorgeht, was du erreichen willst.

dann Trigger halt die Hilfsvariablen auf Motion -> Veränderung, weiterhin werden die Hilfsvariablen beim Scharfschalten auf „false“ gesetzt - fertig.

Alternative: einen Timer beim Scharfschalten setzen, der einen Alarm erst nach xx Minuten zulässt.

Oder beides in Kombination. Aber sorry: die Variablen vom BM alle 5Minuten zurücksetzen(was nicht geht) ist Unfug