IPS View Alarmanlage

Das Skript ist nicht dafür vorgesehen, dass man darin Änderungen vornimmt.

Wie steuerst Du den Homematic Gong bzw. die LED normalerweise an?

Beim Drücken des Handsenders wird immer nur der TRUE Wert der Variable aktualisiert - d.h. Du musst da einfach noch ein NOT hineingeben, dann wird der Wert invertiert und schaltet aus.

Hi Andreas,

normal steuer ich es bis jetzt mit Programmen, die ich in der CCU2 angelegt habe und über Mediola Neo dann visualiziert ansteuere.
In der CCU2 kann ich dann sagen welcher Gong oder welche LED Farbe angezeigt werden soll.

Puh, ich glaube ich bekomme sas mit den Workflows dann nicht so hin wie ich möchte was?

VG
BH

Gesendet von iPhone mit Tapatalk

Hallo BH,

Ich habe alle Scripte für die HM Kontakte in IPS und nur die Visu mit IPSView realisiert.

Hi Heinz,

hast du darüber auch eine Alarmanlage installiert?
Ich versuche es gerade so wie ich es vorher in der CCU mit Programmen hatte nachzustellen, aber irgendwie komme ich nicht weiter, vielleicht ist es auch ein Fehler es so zu machen und es geht einfacher.

Ich will halt einmal einen Alarmcheck anlegen, der schaut ob alle Fenster zu sind.

Wenn dieser Check ok ist, soll er scharf schalten und beim öffnen Alarm schlagen.

Und dann wieder entschärfen und das mit einem Handsender und natürlich der IPS View App.

Vielen Dank
BH

Gesendet von iPhone mit Tapatalk

Hallo BH,

ja habe ich realisiert.

Den Status überprüfe ich mit folgenden Script.

https://www.symcon.de/forum/threads/27931-Fensterstatus-abfragen-und-in-String-schachteln?p=257391#post257391

Danke Dir und wie hast du dann weiter gemacht?

Stehe hier total auf dem Schlauch…

Gesendet von iPhone mit Tapatalk

Relativ Simpel.
Es gibt ein Script zum Scharf und unscharf schalten.

 $Alarmanlage = GetValueBoolean(30858);
if ($Alarmanlage == true)
{
$timestamp = time();$zeit = $uhrzeit = date("H:i:s",$timestamp);//SetValueString(29694,$zeit.' Alarm scharf'."
"); SetValueBoolean(24057,true); $ID = 51455; // [ALARM_SWITCH_VIRTUAL_RECEIVER] Instanz von Kanal 3 // Reihenfolge der Befehle wichtig:
HM_WriteValueInteger($ID, 'DURATION_UNIT', 0); // EinheitHM_WriteValueInteger($ID, 'DURATION_VALUE', 1); // Dauer
HM_WriteValueInteger($ID, 'OPTICAL_ALARM_SELECTION', 7); // Optisches SignalHM_WriteValueInteger($ID, 'ACOUSTIC_ALARM_SELECTION', 13); // Akustisches Signal }     

Hier kannst Du auch noch prüfen ob alle Kontakte geschlossen sind etc.

Und dann gibt es ein „auslöse Script“

Was funktioniert denn zur Zeit schon bei Dir und was noch nicht?

Hi Fonzo,

ich habe das Script, was Heinz gepostet hat mit der Fensterstatus Abfrage nun angelegt und die Variable wirft mir auch als Ergebnis das Fenster raus, was ich geöffnet habe -> sollte passen.

Folgendes muss ich nun noch erstellen:

1.) Beim Drücken von Handsender oder virtuellen Kanal der CCU2 als App Button soll geprüft werden, ob alle Kontakte geschlossen sind, wenn ein, soll die Fehlermeldung als Push kommen, dass ein Fenster geöffnet ist.
Sollten alle Kontakte geschlossen sein, soll scharf geschalten werden und eine Push Meldung kommen, dass ALARM_scharf ist und an meinem MP3 Türgong soll die rote LED blinken.

  1. Wenn ein Kontakt währende des scharf geschaktenen Zustands geöffnet wird, soll eine Push mit ALARM ans Handy und die Piezzo Sirenen sollen angehen.

3.) Wenn ich Heim komme, soll durch drücken des Handsenders oder der App (virtueller Kanal CCU2) wieder unscharf geschalten werden und die grüne LED am Türgong 5 mal grün blinken.

Danke und Gruß
BH

Das Vorgehen ist in allen Fällen grundsätzlich in IP-Symcon gleich. Du erstellst Dir jeweils ein Skript, dass das ausführt was Du machen willst. Dann legst Du jeweils ein Ereigniss auf das Skript und wählst als Auslöser z.B. bei 1. Variablenaktualisierung des Datenpunkts, bei 2 bei bestimmten Wert und bei 3 wieder Variablenaktualisierung.

Push Mitteilung schickst Du z.B. mit WFC_PushNotification.

Die LED des Türgongs verstellt Du wie unter MP3 Funkgong beschrieben.

Als Beispiel würde bei 1 ein Skript einfach so aussehen (siehe auch Auslöser Variablenereigniss):


// Button soll geprüft werden, ob alle Kontakte geschlossen sind
$state = GetValue(12345); // Wert der Kontakt Variable auslesen

// wenn ein, soll die Fehlermeldung als Push kommen, dass ein Fenster geöffnet ist.
if($state)
{
WFC_PushNotification(12345, 'Warnung', 'Das Fenster ist offen!', 'bell', 0); // Objekt ID des Webfrontkonfigurators anpassen
}
// Sollten alle Kontakte geschlossen sein
else
{
// soll scharf geschalten werden
SetValue(23456, true); // Variable "Scharf" auf true setzten
// und eine Push Meldung kommen, dass ALARM_scharf ist
WFC_PushNotification(12345, 'Warnung', 'Alarm ist scharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die rote LED blinken.
HM_WriteValueString(34567 /[Geräte\Homematic\FunkGong LED]/,"SUBMIT",'1,1,108000,18,0,18,0,18,0,18,0,18,0');
}

Kannst ja mal bei 2 und 3 das selber probieren ob zu zu einem Ergebniss kommst bzw. fragen falls es Probleme gibt.

Hi Fonzo,

ich habe mir jetzt ein scharf schalten Script und ein unscharf schalten Script gebastelt und ich glaube das geht.

scharf schalten:

<?

// Button soll geprüft werden, ob alle Kontakte geschlossen sind
$state = GetValue(44655 /*[Scripte\Fensterstatus\FENSTERSTATUS]*/); // Wert der Kontakt Variable auslesen

// wenn ein, soll die Fehlermeldung als Push kommen, dass ein Fenster geöffnet ist.
if($state)
{
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Das Fenster ist offen!', 'bell', 0); // Objekt ID des Webfrontkonfigurators anpassen
}
// Sollten alle Kontakte geschlossen sein
else
{
// soll scharf geschalten werden
SetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/, true); // Variable "Scharf" auf true setzten
// und eine Push Meldung kommen, dass ALARM_scharf ist
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Alarm ist scharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die rote LED blinken.
HM_WriteValueString(24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ ,"SUBMIT",'1,1,108000,18,0,18,0,18,0,18,0,18,0');
}  

?>

unscharf schalten:

<?

// Button soll geprüft werden, ob alle Kontakte geschlossen sind
$state = GetValue(44655 /*[Scripte\Fensterstatus\FENSTERSTATUS]*/); // Wert der Kontakt Variable auslesen

// wenn ein, soll die Fehlermeldung als Push kommen, dass ein Fenster geöffnet ist.
if($state)
{
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Das Fenster ist offen!', 'bell', 0); // Objekt ID des Webfrontkonfigurators anpassen
}
// Sollten alle Kontakte geschlossen sein
else
{
// soll unscharf geschalten werden
SetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/, false); // Variable "unscharf" auf false setzten
// und eine Push Meldung kommen, dass ALARM_unscharf ist
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Alarm ist unscharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die rote LED blinken.
HM_WriteValueString(24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ ,"SUBMIT",'1,1,108000,18,0,18,0,18,0,18,0,18,0');
}  

?>

Beziehungsweise, ob bei der unscharf schalten die $state Zeile noch sein muss weiß ich auch nicht, denn eigentlich müsste er ja nur unscharf schalten, wenn ich den Button drücke.

Was ich jetz nur nicht hinbekomme ist, ich muss ja jetzt das Alarm aktiv Script schreiben, sprich, wenn meine Variable scharf/unscharf scharf ist und eins meiner Fenster geht auf, dann muss Push raus ALARM und die Sirenen müssen angehen.

Wie frage ich die Variable auf scharf ab und muss ich bei jedem Fensterkontakt ein Ereignis hinzufügen bei öffnen dieses Script dann starten?

Danke
BH

Naja das Skript entspricht zumindest nicht dem was Du mal 3) beschrieben hattest. Du willst ja lediglich den Status auf unscharf stellen und die LED blicken lassen, dazu must Du ja keinen Status der Fenster prüfen.


// soll unscharf geschalten werden
SetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/, false); // Variable "unscharf" auf false setzten
// und eine Push Meldung kommen, dass ALARM_unscharf ist
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Alarm ist unscharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die grüne LED 5x blinken.
HM_WriteValueString(24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ ,"SUBMIT",'1,1,108000,34,0,34,0,34,0,34,0,34,0');

Du must einfach auf jeden Fensterkontakt ein Ereigniss legen das auslöst wenn der Fensterkontakt auf ist, dann wird das Skript gestartet das den Zustand des Alarms prüft und gegebenenfalls Alarm auslöst.


// check alarm state
$alarm_state = GetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/);
if($alarm_state)
{
WFC_PushNotification(58465 /*[WebFront]*/, 'Alarm', 'Fenster wurde geöffnet während Alarm scharf ist!', 'siren', 0); 
// Sirene anschalten
// Befehl ergänzen
}
SetValue(44655 /*[Scripte\Fensterstatus\FENSTERSTATUS]*/, true); // Fenster Status offen

Hi Fonzo,

ich habe das jetzt als unscharf Script angelegt, bekomme aber im Scriptausgabe Text eine Fehlermeldung:

<?

// soll unscharf geschalten werden
SetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/, false); // Variable "unscharf" auf false setzten
// und eine Push Meldung kommen, dass ALARM_unscharf ist
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Alarm ist unscharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die grüne LED 5x blinken.
HM_WriteValueString(24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ ,"SUBMIT",'1,1,108000,34,0,34,0,34,0,34,0,34,0');   
SetValue(57565 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer\WORKING]*/, false); //schalte Sirene Wohnzimmer aus
SetValue(59955 /*[Geräte\Garage\Piezo-Sirene_Garage\STATE]*/, false); //schalte Sirene Garage aus

?>

Fehlermeldung lautet:

Warning: Variable is marked as read-only and cannot be changed in /var/lib/symcon/scripts/44929.ips.php on line 9

Warning: Variable is marked as read-only and cannot be changed in /var/lib/symcon/scripts/44929.ips.php on line 10

Kann ich die Sirene so nicht ausschalten, denn ich will ja auch bei Fehlalarm oder wenn Sie mal angehen es auch ausschalten können.

Danke
BH

Du kannst nur Variablen, die Du selbst angelegt hast über SetValue schalten, Variablen von Instanzen sind immer Read only daher auch die Fehlermeldung. Du must die Sirene also über eine Funktion schalten und nicht die Variable verstellen. Was für ein System ist denn die Sirene? Bei Homematic siehe hier
HM_WriteValueBoolean — IP-Symcon :: Automatisierungssoftware

Hi Fonzo,

ist eine HM-LC-Sw1-Ba-PCB Piezzo Sirene von HM.

Habe es jetzt so gemacht und sollte gehen.
Siehe Script:

<?

// soll unscharf geschalten werden
SetValue(57737 /*[Scripte\Alarmanlage_scharf\scharf/unscharf]*/, false); // Variable "unscharf" auf false setzten
// und eine Push Meldung kommen, dass ALARM_unscharf ist
WFC_PushNotification(58465 /*[WebFront]*/, 'Warnung', 'Alarm ist unscharf!', 'alarm', 0); // Objekt ID des Webfrontkonfigurators anpassen
// und an meinem MP3 Türgong soll die grüne LED 5x blinken.
HM_WriteValueString(24345 /*[Geräte\Diele_EG\MP3-Türgong_Licht]*/ ,"SUBMIT",'1,1,108000,34,0,34,0,34,0,34,0,34,0');

HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", false); //schalte Sirene Wohnzimmer aus
HM_WriteValueBoolean(29041 /*[Geräte\Garage\Piezo-Sirene_Garage]*/, "STATE", false); //schalte Sirene Garage aus

?>

Jetzt nächstes Thema, die Garagentür soll auch scharf sein Nachts, wenn wir zu Hause sind, da ich diese immer abgesichert haben möchte, dazu habe ich mir folgendes Script erstellt, passt das?

 <?
$Zeit = date ("Hi"); //Prüfe in der Zeit von 23.30 Uhr bis 06.00Uhr
$Nachts = "2330";
$Tag = "0600";

If ($Zeit > $Nachts & $Zeit < $Tag)
{
HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", true); //schalte Sirene Wohnzimmer an
HM_WriteValueBoolean(29041 /*[Geräte\Garage\Piezo-Sirene_Garage]*/, "STATE", true); //schalte Sirene Garage an
}

?>

und die letzte Frage, wie kann ich es einbauen, dass die Sirenen noch 300 Sekunden an bleiben? Über ON_TIME?

Danke
BH

Nein das passt nicht, und zwar aus dem Grund das Du hier ein String hast und versuchst diesen mit größer und kleiner zu vergleichen, das funktioniert aber nicht.

Wenn Du etwas bei Zeit vergleichen willst, ob es größer oder kleiner, brauchst Du eine Zahl, in dem Fall must Du also den Timestamp nehmen und diesen vergleichen und nicht den als String formatierten Wert.


 //Prüfe in der Zeit von 23.30 Uhr bis 06.00Uhr 
$Zeit = time(); // aktueller Timestamp
$Nachts = strtotime("23:30");
$Tag = strtotime("+1 day 06:00");

If ($Zeit > $Nachts & $Zeit < $Tag) 
{ 
// komm nur nicht auf die Idee das Skript so auszuführen nach 23:30, dann geht die Sirene an, was Du bestimmt nicht willst bzw. Deine Nachbarn nicht. ich nehme an das Skript wird durch eine Event aufgerufen vielleicht solltest Du daher noch prüfen ob auch ein Event der Auslöser ist und nur dann die Sirene schalten. 
HM_WriteValueBoolean(35130 /*[Geräte\Wohnzimmer\Piezo-Sirene_Wohnzimmer]*/, "STATE", true); //schalte Sirene Wohnzimmer an 
HM_WriteValueBoolean(29041 /*[Geräte\Garage\Piezo-Sirene_Garage]*/, "STATE", true); //schalte Sirene Garage an 
} 


Im übrigen ist das zwar gut um PHP zu verstehen, aber um das zu lösen kannst Du auch wesentlich einfacher vorgehen.
Dazu nimmst Du einfach nur ein Skript was die Sirenen schaltet und legst da ein Ereigniss drauf. Bei einem Ereigniss hast Du die Möglichkeit erweiterte Bedingungen zu nutzten siehe Dokumentation Ereignisse, da kanst Du dann so was wie Deine Uhrzeit abfragen ohne Dir Gedanken über PHP Code und Uhrzeit Vergleich machen zu müssen.

Danke Dir.

Und das mit der Anschaltdauer von 300 Sekunden? Wie realisiere ich das dann?

Danke und Gruß
BH

Das würde ich in einem anderen Thread seperat fragen, hier geht das unter. Ich selber weis das nicht, da ich kein solches Gerät besitze.

Hallo Blonder Hans,

ich habe jetzt diesen Thread nur überflogen aber evtl. hilft dir mein Modul „AlarmSystem“. Es befindet sich zurzeit noch in Entwicklung von mir (deshalb auch Branch „DEV01“), jedoch ist noch nichts dokumentiert. Unter anderem kannst du in dem Modul auch ein Script angeben, welches mit einem Delay aufgerufen wird.
Achso: Das Modul hat natürlich primär erstmal nichts mit IPSView zu tun.
https://github.com/dampflok2000/SymconModulesDampflok2000/tree/Dev01/AlarmSystem

Viele Grüße
Peter