FHEM > Codeschnipsel

Alarmanlage nur über Fensterkontakte

(1/8) > >>

blitzcom:
Hallo zusammen...

Ich habe folgendes im Einsatz:
FHEM auf Raspberry, 2 CUL (einer schaltet FS20 Module, einer hört nur MAX! Fensterkontakte ab)

Um was geht es? Ich habe viel zum Thema Alarmanlage gelesen und ja, ich habe den Wiki Artikel auch gelesen. Aber ich denke das der Ansatz für eine relativ einfache Alarmanlage fast zu weit geht.
Eins gleich vorweg, ich bin zwar belesen, allerdings fehlt mir programmiertechnisch einiges.
 
Zu meinem Haus:
Ich habe derzeit 10 Fensterkontakte im Einsatz, damit sichere ich auch Türen ab.
Die Idee ist, dass beim verlassen des Hauses per Android Handy die Anlage scharf geschaltet wird. Im Fall das sich dann ein Fenster öffnet, soll eine Meldung per notifymyandroid auf dem Handy erscheinen.
Derzeit lauten die Namen der Kontakte verschieden. Wenn ich das per trigger abfragen will, sollten die Namen, soweit ich das verstanden habe, sowas wie "Fenster" enthalten.

Der Hintergrund ist, dass ich im Falle einer Abwesendheit eine Nachricht bekommen will, ob sich da gerade ein Fenster geöffnet hat. Ich denke, dass ein Einbrecher, selbst wenn er eine Scheibe einschlägt, dann das Fenster öffnet. Parallel sollte dann noch im Haus eine Blitzleuchte, die habe ich hier liegen, per FS20 angehen.
Ich denke, das ein Einbrecher das Haus in dem Fall nicht mehr betreten wird, wenn er sieht das innen etwas anfängt zu blinken.

Ich hoffe, ich hab das verständlich ausgedrückt.
Könnt ihr mir helfen? Und was braucht ihr von mir als Info?
Danke schon mal.


bugster_de:
Hi,

ich habe heute so was ähnliches bei mir umgesetzt. Deshalb frage vorab: wenn die Alarmanlage scharf ist, dann ist es doch egal, welches Fenster geöffnet wurde. Wichtig ist doch nur dass EINES geöffnet wurde, oder?

Wenn Du nun also alle Kontakte mit unterschliedlichen Namen hast, dann setze dir pro Kontakt einen notify
define mynotify01 notify Kontakt01:on.* { myPerlAlarm( );; }
define mynotify02 notify Kontakt02:on.* { myPerlAlarm( );; }
usw.

Man kann nun sehen, dass die alle die gleiche Perl Funktion aufrufen. Und in dieser Funktion machst Du dann das notifymyAndroid.
Pro Kontakt sollte halt das attribut event-on-change-reading state gesetzt sein, sonst feuert der notify dauernd und nicht nur einmal.

Diese notify erstellst Du Dir ebenfalls aus einem Perl Skript, welches beim Verlassen des Hauses / Scharfschalten der Alarmanlage aufgerufen wird. Und ein anderes Skript löscht die notify wieder sobald die Anlage wieder ausgeschaltet wird.

blitzcom:
Moin,
ich bin mir nicht sicher, ob es tatsächlich so egal ist. Zu wissen, welches Fenster genau geöffnet wird ist hilfreich, da man dann genau weiß, wo geschaut werden muss. Kann ja sein, dass der Nachbar mal "rüberschaut" und im Bedarfsfall die Polizei informiert. Gegebenfalls macht es sogar Sinn, dass man die Events loggt. Damit könnte man den Einbruchvorgang besser nachvollziehen.
Wie genau stelle ich den Notify pro Fenster ein? Kannst Du mir ein Beispiel nennen?
Zum Thema scharf schalten: Die Nummer per Handy ist eigentlich eine Krücke, wenn auch vielleicht einfach umzusetzen. Besser wäre da vermutlich ein Kontakt an der Haustür, der schaltet, wenn man die Tür zu schließt.
Aber eins nach dem anderen.

Ich bin nicht wirklich fit was die Programmierung betrifft. Kannst Du mir da auf die Sprünge helfen?

mfg
Mike

bugster_de:
Hi,

generelle Anmerkung vorab: ich habe gute Erfahrungen damit gemacht, mir erstmal auf einem Papier auzuschreiben, was das System können muß und was nett wäre wenn es das kann. Manche Funktionen sind dann überraschend kompliziert obwohl man am Anfang dachte, das ist doch ganz einfach.

wenn der Nachbar mal schnell aus dem Fenster sehen soll, macht es natürlich Sinn, dass man weiß, von welchem Fenster aus der notify erzeugt wurde. Hier gibt es im Prinzip zwei Möglichkeiten:
- eine generische Perl Routine, die man für alle Fenster nutzt. Dieser Routine muß man dann natürlich einen eindeutigen Identifier mitgeben, um das jeweilige Fenster zu identifizieren
- eine Perl Routine pro Kontakt. Hat den Vorteil dass man sich den Identifier "Zirkus" sparen kann, aber man hat hat halt den gleichen Code mehrfach kopiert. Macht die Wartung schwer


--- Zitat ---Zum Thema scharf schalten
--- Ende Zitat ---

wie auch immer man das scharf schaltet, kann man später definieren. Ich mag es gerne, wenn ich eine Perl Funktion habe, die mir einen Regler ein oder ausschaltet. Somit kann man entweder automatisch oder manuell per FHEM Oberfläche etwas machen.
Im konkreten Fall empfiehlt sich doch das PRESENCE Modul, oder? Sobald das Handy im WLAN zu Hause eingebucht ist, wird der Status auf Anwesend gesetzt und die Alarmanlage aus geschaltet. Wenn das Handy nicht mehr im WLAN ist, dann schaltet sich Alarmanlage scharf. Da Du ja ein Android nutzt, geht das auch sehr zuverlässig. Ich habe ein Android und ein Blackberry. Die beiden funktionieren perfekt als Anwesenheitserkennung. Mein Frau hat ein iPhone und mit dem geht es nicht wirklich (siehe viele Beiträge zum Thema hier im Forum).

Code Beispiele stelle ich Dir nachher mal zusammen. Ich habe bei mir im Haus an den Terassentueren die Three-State Sensoren von Homematic und an den Fenstern die billigen Two-State von Intertechno. Die muß man zwar etwas unterschiedlicher behandeln, kann es dann aber in der Alarmanlagen Funktion zusammen laufen lassen.

Übrigens finde ich ganz nett, dass man sich nach dem Verlassen des Hauses noch kurz einen Status senden lassen kann, der angibt, ob man vergessen hat ein Fenster zu schliessen. Dann kann man nochmal umdrehen und es schnell zumachen :-)



betateilchen:

--- Zitat von: bugster_de schrieb am So, 25 August 2013 21:23 ---
define mynotify01 notify Kontakt01:on.* { myPerlAlarm( );; }
define mynotify02 notify Kontakt02:on.* { myPerlAlarm( );; }
usw.
--- Ende Zitat ---


aus Performancegründen besser so:


--- Code: ---define mynotify notify Kontakt..:on.* { myPerlAlarm( );; }
--- Ende Code ---


Und welcher Kontakt das notify ausgelöst hat, weiß man doch sowieso, weil das in $NAME steht.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln