Okt 2014
Marko
Alarmanlage mit raspberry pi und geofancy automatisch schalten
Der Sommer ist vorbei, die Tage werden länger und mit der Dunkelheit häufen sich Meldungen über Wohnungseinbrüche. Vorbeugen ist bei diesem Thema das A und O. Nicht nur aus dem Grund mögliche Einbrecher abzuschrecken, sondern auch um das Gewissen zu beruhigen und um sich im Ernstfall nicht vorzuwerfen, man habe nicht alles mögliche getan.
Will man eine Alarmanlage in einer bestehenden Wohnung oder in einem Haus nachrüsten, steht man schnell vor einigen Herausforderungen. Man müsse z.b. diverse Wände auf machen um Kabel zu verlegen. Wenn das ganze dann noch einigermaßen „smart“ sein soll, wird es schnell teuer. Ist es nicht „smart“, nervt das ständige Code eingeben schnell und man tut es dann doch nicht.
In der folgenden Anleitung erkläre ich euch, wie ein Alarm System so erweitert werden kann, dass es sich automatisch abstellt sobald ihr euch in Reichweite befindet und sich automatisch aktiviert sobald ihr euch von Zuhause entfernt.
Diese Anleitung lässt sich außerdem auf andere Smart Home Features anwenden. (z.b. Licht aus wenn keiner da / Garagen Tor auf beim annähern usw.)
Diese Anleitung beantwortet gewiss nicht alle Fragen sondern dient eher als Hilfestellung und Empfehlung in der Vorgehensweise. Sie soll zeigen, wie man auch mit wenig Budget durch die richtigen Mechanismen und etwas Kreativität viel erreichen kann.
Ihr Benötigt:
Zuerst einmal eine Alarmanlage eurer Wahl. Ihr solltet nur darauf achten, dass sie einen Handsender mitbringt. Ich benutze das System 6081 der Firma OLYMPIA Protect.
Da sie via Funk arbeitet, müssen lediglich alle paar Jahre die Batterien der Sender gewechselt werden. Daher muss man keine zusätzlichen Kabel verlegen, so bleiben die Wände verschont.
Außerdem ist sie erweiterbar, so gibt es neben Tür-/ Fensterkontakten* auch Glasbruchmlder* und sogar Wassermelder*.
Empfehlen kann ich euch außerdem das überholte Model 9061,
hierfür gibt sogar eine Outdoor-Alarm.
Als nicht zu unterschätzendes Gimmick kann man beide sogar an eine Telefonanlage anschließen. Wird der Alarm ausgelöst, ruft sie dann eine von 10 Programmierbaren Nummern an.
Einen Raspberry Pi*: viele Leser dieses Blogs sollten sowieso schon einen haben. Allen den Raspberry Pi überhaupt nichts sagt, empfehle ich sich erst ein mal etwas Wissen anzulesen. Zudem solltet Ihr wissen wie man eine Fernbedienung mit einem Raspberry PI überbrückt.
Optional einen eigenen Webserver, andernfalls einen dyndns Service:
Fast alle deutsche Internet-Anschlüsse wechseln alle 24h die IP-Adresse. Die Lösung die ich hier vorstelle, ist im Idealfall online erreichbar. Daher muss das Problem mit der IP-Adresse gelöst werden. Ich löse es über einen eigene Webserver im Internet, der mein Heimnetzwerk kennt und Befehle dahin senden kann. Diese Anleitung lässt sich aber auf eine dyndns Lösung anwenden. (Mit dyndns würdet ihr direkt mit eurem Heimnetzwerk kommunizieren und spart euch den „Umweg“ über einen Internet Server.)
Eine App die auf Basis eures Standortes Webaufrufe macht
Ich verwende hier Geofancy auf meinem iPhone, soweit ich informiert bin kann der Service If this then that über die dazu gehörige App ähnliches.
Zuerst einmal der Aufbau:
Schaut euch die Grafik oben an, von links nach rechts soll nun Folgendes realisiert werden.
- Jemand betritt den Bereich in dem die Alarm-Anlage ausgeschaltet werden soll
- die App-Geofancy auf dem iPhone bemerkt dies und sendet einen HTTP-Request an einen Webserver
- ist der Request gültig wird er an den Raspberry Pi (also in das Heimnetzwerk) weitergeleitet
- der Raspberry PI entscheidet dann ob er das anfragende Gerät kennt. Wenn nicht bricht er ab, andernfalls geht es weiter. Zudem merkt sich der Raspberry PI, dass nun ein Gerät in Reichweite ist.
- Nun wird ein Relais geschaltet welches die Fernbedienung der Alarmanlage betätigt
- Die Alarm Anlage schaltet sich ab
Das ganze kann logischerweise für mehrere Geräte konfiguriert werden.
In der Geofancy-App kann man zudem einen HTTP-Aufruf konfigurieren der getätigt wird sobald ein Gerät die „Unscharf Zone“ verlässt.
Benutzt man die Alarmanlage mit mehreren Geräten, muss man darauf achten, dass der Alarm nicht jedes mal Scharf schaltet sobald einer die Zone verlässt sondern nur dann, wenn keiner mehr Zuhause ist.
So konfiguriert ihr Geofancy:
Geofancy ist eine App mit der man anhand von so genannten Geofances (geografischen Zäunen) HTTP-Aufrufe ausführen kann.
Geofances haben im Gegensatz zu GPS den Vorteil, dass sie keinen zusätzlichen Strom verbrauchen. Euer Smartphone ist ohnehin den ganzen Tag damit beschäftigt Funkmaste zu wechseln / WLAN-Netze kommen und gehen zu sehen u.s.w.
Abhängig von solchen „Umgebungs Änderungen“ kann eine App dann andere Dinge tun.
Für die Alarm-Anlagen Konfiguration wählt ihr oben einen Radius um euer Zuhause aus.
bei Trigger on Arrival tragt ihr die Web-Adresse ein die beim Betreten des Kreises aufgerufen werden soll.
bei Trigger on Departure tragt ihr die Web-Adresse ein die beim Verlassen des Kreises aufgerufen werden soll.
Ihr könnt zudem entscheiden ob ihr GET oder POST verwenden möchtet.
Für den Fall, dass die Web-Adressen mit htpasswd geschützt sind, könnt ihr die Zugangsdaten hier eingeben.
Geofancy ruft nicht nur die Adressen auf, sondern sendet auch noch weitere Informationen via (POST bzw. GET). Neben longitude und latitude werden auch noch device und trigger gesendet, hiermit kann man nun Geräte und Situationen identifizieren.
device : die device ID von dem iphone
trigger: enter, exit oder test
Um zu zeigen wie die Steuerung funktionieren könnte habe ich euch ein Paar Quellcode-Schnippsel zusammengestellt.
Ich habe jede einzelne Datei mit quellcode Kommentaren.
Alarm.php Kontrolliert das relays an dem die Fernbedienung gelötet ist
GeoFancyData.php Ist einfach nur ein Wrapper um besser mit den Geofancy-Daten arbeiten zu können.
arrive.php so könnte der Arrival-Trigger aussehen (enter)
leave.php so könnte der Departure-Trigger aussehen (exit)
IsHomeChecker.php diese Klasse behält den überblick wer zuhause ist und wer nicht.
Programmablauf beim Ankommen:
- arrive.php nimmt die geofancy Daten entgegen
- isHomeChecker schaut ob er die Device-id kennt
- Alarm.php schaltet die Fernbedienung
Programmablauf beim Verlassen:
- leave.php nimmt die geofancy Daten entgegen
- isHomeChecker schaut ob er die Device-id kennt
- wenn keine Device mehr zuhause ist schaltet Alarm.php die Fernbedienung
Fragen und Anregungen einfach in die Kommentare, ich antworte in der Regel recht fix.
(*=Affiliate)
Update So findet ihr die Deviceid heraus.
Unter Einstellungen den Pfad zur geofancy.php eintragen. „GET auswählen“, Test-Request senden drücken.
Dann erscheint eine „Benachrichtigung mit einer langen Meldung.
Irgendwo steht device=, darauf folgt die benötigte device id, diese geht bis zum nächsten &-Zeichen.. das & Zeichen gehört nicht mehr dazu.
Achtung, solltet ihr die app mal de installieren und wieder neu installieren ändert sich auch diese id und muss angepasst werden
74 Kommentare zu "Alarmanlage mit raspberry pi und geofancy automatisch schalten"