Alarmanlage mit Geofancy steuern

Hallo,

ich brauche eure Hilfe.
Ich bin von der CCU2 und Mediola auf IPS + IPS View umgestiegen, ich bin begeistert und geschockt zu gleich,
da es echt mächtig ist.

Ich habe bisher in der CCCU2 ein Programm welche folgendes macht.

Wenn ich auf Abwesend schalte, dann werden alle Fenster geprüft ob sie geöffnet sind, wenn ja bekomme ich eine Prowl Push Nachricht, dass noch en Fenster geöffnet ist und wenn alle Fenster zu sind, dann wird die Alarmanlage scharf geschalten nud über den MP3 Speaker wird die Nachricht gesagt „Alarmanlage scharf geschalten“

Das würde ich jetzt gerne mit IPS und Geofency erstellen, sprich, wenn ich oder meine Frau aus dem Radius sind und beide Variabel auf Abwesend schalten, dann soll scharf geschalten werden und wenn möglich eine Info rausgehen, wenn noch ein Fenster geöffnet ist.

Vorhanden sind Homematic optische Fensterkontakte und Piezzo Sirenen.

Auch möchte ich natürlich über das Iphone / Ipad abwesend schalten können, so dass vielleicht zeitverzögert scharf geschlaten wird.

In der CCU2 habe ich das über die Programmerstellung recht gut hinbekommen, aber ehrlich gesagt weiß ich in IPS gerade nicht wie ich anfangen soll.

Wer kann mir helfen?

Danke und Gruß
BH

Hast Du denn die Variablen der Fensterzustände und die Alarmanlage schon in IP-Symcon eingepflegt und und kannst Du die Alarmanlage von IP-Symcon aus schalten?

Du legst Dir ein Skript an und fragst dort den Zustand der Fenster ab so in der Art


<?

 $window1 = GetValue(22302 /*[Geräte\Homematic\Räume\Flur EG\Haustür Öffnungszustand\Zustand]*/);
 $window2 = GetValue(12345);
 $window3 = GetValue(56789);
 
 if($window1 == false && $window2 == false && $window3 == false)
 {
 	//Fenster alle zu
	$alarmobjid = 98765;
	SetValue($alarmobjid, true); //Alarm einstellen
 }
 if($window1 == true || $window2 == true || $window3 == true)
 {
 	//  ein Fenster ist offen
	WFC_PushNotification(12345, 'Warnung', 'Ein Fenster ist auf!', '', 0);
 }

?>

Die Anzahl der Fenster und die ObjektID must Du natürlich anpassen. dann legst Du auf das Skript ein Ereignis das ausgeführt wird wenn sich die Variable Abwesenheit auf True ändert. Dann wird das Skript ausgeführt und schaltet entweder die Alarmanlage scharf oder schickt Dir eine Push Nachricht. Wenn Du lieber einen Dienst wie Prowl nutzen willst musst Du das dann noch abändern.

Hi Fonzo,

ich habe jetzt alle Aktoren und Kontakte die ich habe in IPS iunter Geräte und Räume angelegt, so dass ich alles sehe.

Aber mehr habe ich noch nicht gemacht. Habe zwar das Alamierungsmodul mal kurz getestet, aber da kann ich ja nicht alles umsetzen, sondern nur das „scharf“ schalten über einen Schalter, wenn die Kontakte ihren Wert verändern, aber ehrlich gesagt, würde ich gerne lernen, wie ich ein Programm, welches ich in der CCU2 erstellt habe in IPS umsetzen kann, damit ich ich z.B. auch den MPS Gong einbinden kann, der mir sagt das die Alarmanlage scharf geschalten ist. Sprich Sie soll den 2 MP3 Track auf der SD Karte mit dem Dateiname 002 abspielen.

Aber ich weiß halt nicht wie ich anfangen muss, habe schon gelesen, aber ich komme nicht weiter. ;-(

Ok, dass Script kann ich verstehen, wenn ich es lese.

Hat dieser Teil des Scipt was zu bedeuten /[Geräte\Homematic\Räume\Flur EG\Haustür Öffnungszustand\Zustand]/);

doch nur die Infos hinter einem // sind nur Info oder?
Muss ich nur die Geräte ID eintragen oder auch diesen Zusatz?

Dann hätte ich damit die Abfrage gestellt, dass entweder alles zu ist oder ich eine Push bekommen, dass ein Fenster noch auf ist.
Wie sage ich dann, dass er den MP3 Ton Nummer 002 abspiekt?

Und wie geht es dann weiter, wenn „scharf“ ist und ein Fensterkontakt geändert wird -> dann sollen die Piezzo angehen und eine Push ALARM erfolgen.

UND dann das noch alles mit Geofency, ich drehe durch. :wink:

ok, ich habe gesehen, wenn ich die Objekt ID kopiere, dann kommt der Zusatz mit,
aber nur die Objekt als ID reicht nicht aus? Mit der Zusatz immer dazu?

Der Kommentar wird von IP-Symcon automatisch ergänzt damit Du weist welches Gerät zu der ObjektID gehört. Es Reicht aus wenn du die 5 stellige ObjektID hinschreibst, wenn Du STRG+O benutzt wird immer automatisch der Kommentar ergänzt.

Das hatte ich schon oben geschrieben. Ein Ereignis erstellen das das Skript ausführt

Rechtsklick auf das Skript, Ereignis anlegen (CTRL+4) , Auslösendes Ereignis, Variable die Variable von Geofency auswählen, bei bestimmten Wert , Fertigstellen

Auch hier gehst Du nach dem gleichen Schema wie oben vor. Ein kleines Skript erstellen. Dies fragt die Variable ab für Abwesenheit. Dann


$abwesenheit = GetValue(12345);
if($abwesenheit)
{
// Piezzo anschalten und Push schicken
}

Dann legst Du auf jeden Fensterkontakt ein Ereignis das Du an das Skript bindest mit Ausführung bei TRUE. Sobald dann ein Fensterkontakt offen ist wird das Skript ausgeführt. Wenn die Abwesenheit false ist Du also zu Hause bist passiert nix, wenn Du nicht da bist geht in dem Fall das Geheule los.

ist folgende ID in deinem Script auch einfach eine selbs tangelegte
Variable?

$alarmobjid = 98765;

die mit true oder false angelegt wird?

Sorry, dass ich vielleicht viele doofe Fragen stelle, aber es dauert glaube noch etwas bis es klick macht, habe noch nie was mit Scripten zu tun gehabt.

Das wäre in dem Fall die ObjektID einer Boolean Variable die zwischen true/false wechselt. Keine Ahnung was für eine Variable Deine Alarmanlage scharf stellt wird aber wohl wahrscheinlich eine Boolean sein.

IP-Symcon - Wie kann ich… 2.0
findest Du im Übrigen eine gute Übersicht zu häufigen Fragestellungen.

MP3 Funkgong — IP-Symcon :: Automatisierungssoftware

ok, den ersten Teil habe ich hinbekommen…

muss es dann weiter so aussehen?

$abwesenheit = GetValue(12345);
if($abwesenheit)
{
// Piezzo anschalten und Push schicken
WFC_PushNotification(12345, ‚ALARM‘, ‚Einbruch!‘, ‚‘, 0);

}

Aber wie ist der Befehl dafür, dass die Sirene heult?
gibt es eine Seite wo ich die Befehle lernen kann?

$abwesenheit = GetValue(12345);

12345 musst Du natürlich mit der ObjektID des Variable die die Abwesenheit anzeigt ersetzen.

WFC_PushNotification — IP-Symcon :: Automatisierungssoftware
12345 muss durch die ID des WebFront Konfigurators ersetzt werden.

Ich besitze keine Sirene weis deshalb auch nicht welche Variablen den in IP-Symcon für das Gerät zur Verfügung stehen. Grundsätzlich schaltet IP-Symcon eine Variable in einen bestimmten Zustand. Wahrscheinlich lässt sich die Sirene mit einer Variable true/false schalten.
HomeMatic — IP-Symcon :: Automatisierungssoftware

Wenn Du die Variable markierst und CTRL+Enter drückst siehst Du unter Ident wie der Datenpunkt heist den Du verändern kannst.

Ansonsten findest Du eine Übersicht der Datenpunkte unter

<?
$window1 = GetValue(51186 /[Geräte\Diele_EG\FK-Haustür\STATE]/);
$window2 = GetValue(37445 /[Geräte\Badezimmer\FK-Badezimmer\STATE]/);
$window3 = GetValue(29876 /[Geräte\Büro\FK-Büro\STATE]/);
$window4 = GetValue(55129 /[Geräte\HWR\FK-HWR\STATE]/);
$window5 = GetValue(34130 /[Geräte\Küche\FK-Küche_Straße\STATE]/);
$window6 = GetValue(59129 /[Geräte\Küche\FK-Küche_Einfahrt\STATE]/);
$window7 = GetValue(41033 /[Geräte\Esszimmer\FK-Esszimmer\STATE]/);
$window8 = GetValue(54658 /[Geräte\Wohnzimmer\FK-Terasse_links\STATE]/);
$window9 = GetValue(45365 /[Geräte\Wohnzimmer\FK-Terrasse_rechts\STATE]/);
$window10 = GetValue(12768 /[Geräte\Gäste-WC\FK-Gäste-WC\STATE]/);
$window11 = GetValue(58233 /[Geräte\Schlafzimmer\FK-Schlafzimmer\STATE]/);
$window12 = GetValue(53526 /[Geräte\Schlafzimmer\FK-Schlafzimmer_Gaube\STATE]/);
$window13 = GetValue(59697 /[Geräte\Kinderzimmer\FK-Kinderzimmer\STATE]/);
$window14 = GetValue(36182 /[Geräte\Kinderzimmer\FK-Kinderzimmer_Gaube\STATE]/);

if($window1 == false && $window2 == false && $window3 == false && $window4 == false && $window5 == false && $window6 == false && $window7 == false && $window8 == false && $window9 == false
&& $window10 == false && $window11 == false && $window12 == false && $window13 == false && $window14 == false)
{
//Fenster alle zu
$alarmanlage = 34495 /[Variablen\Alarmanlage]/;
SetValue($alarmanlage, true); //Alarm einstellen
}
if($window1 == true || $window2 == true || $window3 == true || $window4 == true || $window5 == true || $window6 == true || $window7 == true || $window8 == true || $window9 == true
|| $window10 == true || $window11 == true || $window12 == true || $window13 == true || $window14 == true)
{
// ein Fenster ist offen
WFC_PushNotification(58465 /[WebFront]/, ‚Warnung‘, ‚Ein Fenster ist auf!‘, ‚‘, 0);
$alarmanlage = 34495 /[Variablen\Alarmanlage]/;
SetValue($alarmanlage, false); //Alarm einstellen
}

?>

Hi Fonzo,
so sieht mein Script nun aus. Wenn ich den Geo Bereich verlasse bekomme ich auch die Meldung, dass ein Fenster auf ist und er erneuert auch das Aktualisierungsdatum der Variable „Alarmanlage“.
Was er aber nicht tut ist, dass er den status ändert. Sie bleibt praktisch immer „scharf“ , dass ist mein true Wert.

Das Skript wird ja auch nur aufgerufen wenn Du abwesend bist. Du brauchst natürlich noch ein zweites Skript auf das du wieder ein Ereignis legst wenn sich die Anwesenheit wieder auf True ändert. Dann schaltest Du die Alarmanlage wieder aus.


<?
$alarmanlage = 34495 /*[Variablen\Alarmanlage]*/;
SetValue($alarmanlage, false); //Alarm ausstellen
?>

Alternativ kannst du das auch in ein Skript packen und dies bei Variablenaktualisierung starten, dann musst Du halt nur prüfen im Skript ob der Auslöser Abwesenheit True oder False ist und dann den entsprechenden Code aufrufen.

ja, aber wie kombiniere ich die dann?

Aber in dem Ereignis steht ja bei Abwesenheit das Script starten und in dem Script steht doch bei geschlossenem Fenster er auf scharf stellen soll und bei geöffnetem Fenster er eine Notification raus jagen soll und die Variabel auf unscharf stellen soll oder???

;-(

Einfach eine if else Bedingung einfügen dann wird das Skript bei jeder Variablenaktualisierung ausgeführt die entsprechenden Befehle aber nur wenn die Bedingung greift.


<?
$abwesenheit = GetValue(12345);
$window1 = GetValue(51186 /*[Geräte\Diele_EG\FK-Haustür\STATE]*/);
$window2 = GetValue(37445 /*[Geräte\Badezimmer\FK-Badezimmer\STATE]*/);
$window3 = GetValue(29876 /*[Geräte\Büro\FK-Büro\STATE]*/);
$window4 = GetValue(55129 /*[Geräte\HWR\FK-HWR\STATE]*/);
$window5 = GetValue(34130 /*[Geräte\Küche\FK-Küche_Straße\STATE]*/);
$window6 = GetValue(59129 /*[Geräte\Küche\FK-Küche_Einfahrt\STATE]*/);
$window7 = GetValue(41033 /*[Geräte\Esszimmer\FK-Esszimmer\STATE]*/);
$window8 = GetValue(54658 /*[Geräte\Wohnzimmer\FK-Terasse_links\STATE]*/);
$window9 = GetValue(45365 /*[Geräte\Wohnzimmer\FK-Terrasse_rechts\STATE]*/);
$window10 = GetValue(12768 /*[Geräte\Gäste-WC\FK-Gäste-WC\STATE]*/);
$window11 = GetValue(58233 /*[Geräte\Schlafzimmer\FK-Schlafzimmer\STATE]*/);
$window12 = GetValue(53526 /*[Geräte\Schlafzimmer\FK-Schlafzimmer_Gaube\STATE]*/);
$window13 = GetValue(59697 /*[Geräte\Kinderzimmer\FK-Kinderzimmer\STATE]*/);
$window14 = GetValue(36182 /*[Geräte\Kinderzimmer\FK-Kinderzimmer_Gaube\STATE]*/);
$alarmanlage = 34495 /*[Variablen\Alarmanlage]*/; 
 

if($abwesenheit)
{
	if($window1 == false && $window2 == false && $window3 == false && $window4 == false && $window5 == false && $window6 == false && $window7 == false && $window8 == false && $window9 == false
&& $window10 == false && $window11 == false && $window12 == false && $window13 == false && $window14 == false)
{
//Fenster alle zu
SetValue($alarmanlage, true); //Alarm einstellen
}
if($window1 == true || $window2 == true || $window3 == true || $window4 == true || $window5 == true || $window6 == true || $window7 == true || $window8 == true || $window9 == true
|| $window10 == true || $window11 == true || $window12 == true || $window13 == true || $window14 == true)
{
// ein Fenster ist offen
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Ein Fenster ist auf!', '', 0);
SetValue($alarmanlage, false); //Alarm einstellen
}
}
else
{
	SetValue($alarmanlage, false); //Alarm ausstellen
}


?>

ObjektID von $abwesenheit anpassen.

Ok, habe oben die Obejkt ID eingetragen,
was soll der Mittelteil if($abwesenheit) bedeuten? Fehlt da nicht was?

Habe das Ereignis jetzt noch auf Aktualisierung geändert, es ändert sich auch immer das Datum der Variabel, aber er stellt sie nicht um von unscharf auf scharf… ;-(

Es sieht jetzt so aus:

<?
$abwesenheit = GetValue(40980 /[Geofency\Device\Jens iPhone]/);
$window1 = GetValue(51186 /[Geräte\Diele_EG\FK-Haustür\STATE]/);
$window2 = GetValue(37445 /[Geräte\Badezimmer\FK-Badezimmer\STATE]/);
$window3 = GetValue(29876 /[Geräte\Büro\FK-Büro\STATE]/);
$window4 = GetValue(55129 /[Geräte\HWR\FK-HWR\STATE]/);
$window5 = GetValue(34130 /[Geräte\Küche\FK-Küche_Straße\STATE]/);
$window6 = GetValue(59129 /[Geräte\Küche\FK-Küche_Einfahrt\STATE]/);
$window7 = GetValue(41033 /[Geräte\Esszimmer\FK-Esszimmer\STATE]/);
$window8 = GetValue(54658 /[Geräte\Wohnzimmer\FK-Terasse_links\STATE]/);
$window9 = GetValue(45365 /[Geräte\Wohnzimmer\FK-Terrasse_rechts\STATE]/);
$window10 = GetValue(12768 /[Geräte\Gäste-WC\FK-Gäste-WC\STATE]/);
$window11 = GetValue(58233 /[Geräte\Schlafzimmer\FK-Schlafzimmer\STATE]/);
$window12 = GetValue(53526 /[Geräte\Schlafzimmer\FK-Schlafzimmer_Gaube\STATE]/);
$window13 = GetValue(59697 /[Geräte\Kinderzimmer\FK-Kinderzimmer\STATE]/);
$window14 = GetValue(36182 /[Geräte\Kinderzimmer\FK-Kinderzimmer_Gaube\STATE]/);

if($abwesenheit)

if($window1 == false && $window2 == false && $window3 == false && $window4 == false && $window5 == false && $window6 == false && $window7 == false && $window8 == false && $window9 == false
&& $window10 == false && $window11 == false && $window12 == false && $window13 == false && $window14 == false)
{
//Fenster alle zu
$Alarmanlage = 34495 /[Variablen\Alarmanlage]/;
SetValue($Alarmanlage, true); //Alarm einstellen
}
if($window1 == true || $window2 == true || $window3 == true || $window4 == true || $window5 == true || $window6 == true || $window7 == true || $window8 == true || $window9 == true
|| $window10 == true || $window11 == true || $window12 == true || $window13 == true || $window14 == true)
{
// ein Fenster ist offen
WFC_PushNotification(58465 /[WebFront]/, ‚Warnung‘, ‚Ein Fenster ist auf!‘, ‚‘, 0);

}

else
{
SetValue($Alarmanlage, false); //Alarm ausstellen

}

?>

Nein da fehlt nix und wenn musst du den Code auch so übernehmen wie er da steht und nicht Klammern löschen, die haben schon ihren Sinn :rolleyes:. Du kannst das ganze auch einrücken dann siehst du wie das aufgebaut ist, bzw. verschachtelt, das ist eine ganz normale if else Bedingung.


if($value) // wenn $value true
{
// mach dies
}
else
{
// ansonsten mach das
}

PHP: if - Manual
IF Anweisungen