Vorstellung: Kleine Alarmanlage mit PIR-Bewegungsmeldern und Push ans iPhone

  • Hallo,


    von meinem bisherigen Projekt, der Hausautomatisierung, habe ich mich vorerst getrennt, da ich irgendwie keinen Spaß mehr daran habe.


    [Blocked Image: http://imageshack.us/a/img844/8116/d8sl.png]


    Da sich vor kurzem jemand an meinem Roller zu schaffen gemacht hat, wollte ich eine kleine Alarmanlage programmieren. Diese besteht aktuell aus:


    Aktuelle Funktionen im Überblick:

    • Erkennung von Bewegungen
    • Darstellung des Alarms auf dem Display
    • Push an das iPhone


    Verwendete APIs/Biblotheken:


    Ablauf:
    Das Python Script prüft bei jedem Start, die Konfiguration des ICs und passt diese ggfs. an. Der MCP23017 ist per i2c an den Raspberry verbunden und meldet über eine Interrupt Linie, an einem der GPIO-Ports eine Veränderung. Diese wird mit Hilfe der von RPi.GPIO-Bibliothek erkannt. Anschließend lese ich den IC aus und verarbeite die erhaltenen Werte.


    Veränderungen werden in eine einfache Log-Datei geschrieben, entsprechend am Display ausgegeben und unter Nutzung der Prowl-API an mein iPhone gepusht. (Verzögerung im WLAN etwa 3 Sekunden, via 3G meist ähnlich, EDGE/GPRS 5-10 Sekunden)


    Aufbau:
    Der Aufbau ist aktuell noch sehr abenteuerlich: Der IC ist auf einer Steckplatinie und alles ist mit Jumperkabeln verbunden. :D


    Erweiterbarkeit:
    Das Python Script ist auf bis zu 8 ICs ausgelegt, das heißt bis zu 128 Bewegungsmelder sind möglich. Dem gegenüber stehen 6 Zimmer die 1-2 Bewegungssensoren haben möchten. Aber wenn ich ein passendes Gehäuse habe, kommen noch ein paar ums Haus.


    Eine Veröffentlichung des Quelltextes ist erstmal nicht geplant.


    Planung für die Zukunft:

    • eine Art Watchdog der prüft ob der IC noch angebunden ist und einen weiteren IC, der prüft, ob alle Sensoren wirklich angeschlossen sind
    • Schreiben der Ereignisse in eine SQLite-Datenbank Datei
    • Integration von Überwachungskameras (hat jemand vielleicht einen Tipp für günstige aber halbwegs vernünftige Kameras?)
    • Alarmton/Schalten von Lichtern
    • Automatisches Scharfstellen bei Verlassen des Hauses (wenn keines unserer Handys im WLAN ist und per Bluetooth auch keines mehr gefunden wird)
    • Vielleicht ein Webinterface? Andererseits ist das Scharfstellen via Konsole schon schön nerdig.. Aber für meine Eltern kaum praktikabel.


    Weitere Bilder:
    [Blocked Image: http://imageshack.us/scaled/thumb/856/3ym4.jpg] [Blocked Image: http://imageshack.us/scaled/thumb/407/ssjn.jpg] [Blocked Image: http://imageshack.us/scaled/thumb/593/tyhk.jpg] [Blocked Image: http://imageshack.us/scaled/thumb/837/f94w.jpg]


    [hr]


    Update 25.09.2013 um 11:21
    Mittlerweile werden die Ereignisse in eine Datenbank-Datei geschrieben. Das erleichtert die Verwaltung und ermöglicht es mir auch mit anderen Programmiersprachen ohne Probleme darauf zuzugreifen.


    Ein Webinterface fehlte mir jetzt tatsächlich einwenig, deswegen hab ich gestern auf die schnelle ein kleines Webinterface zusammengebaut. Aktuell ist es noch sehr rudimentär und zeigt im Prinzip nur die letzten 20 Meldungen an. Aktualisiert sich allerdings in regelmäßigen Abständen selbst und blinkt bei einem neuen Ereignis rot auf. Zukünftig geplant fürs Webinterface sind:

    • Ein- und Ausschalten des Alarms (Ausschalten aber nur mit PIN)
    • Verwendung von WebSockets
    • alles etwas schöner gestalten


    [Blocked Image: http://imageshack.us/scaled/thumb/96/0hgu.png]


    [hr]


    Update 25.09.2013 um 12:10
    Jetzt hat das Webinterface einen etwas anderen Look und einen vernünftigeren Namen. Zudem lässt sich das Python-Skript per Schieberegler ein- und ausschalten.


    [Blocked Image: http://imageshack.us/scaled/thumb/580/jlfy.png] [Blocked Image: http://imageshack.us/scaled/thumb/585/vl7q.png]


    [hr]


    Update 25.09.2013 um 16:05
    Hier der aktuelle Stand und die Funktionsweise in einem kurzen Video (entschuldigt bitte die Qualität, ich hatte keine Lust mit meinem 1 Mbit Upload die volle 1080p Variante hochzuladen).


    [youtube]TRO_h8CC9i4[/youtube]


    [hr]


    Update 27.09.2013 um 00:38
    Um mich vor Laufzeitfehlern zu schützen, setze ich nun das try-Statement ein, so kann ich entsprechende Exceptions abfangen und verarbeiten. Ein fehlendes Display führt so nicht mehr zum Abbruch des Skriptes. Des Weiteren habe ich das Skript um die Überprüfung der Sensoren erweitert: Fehlt ein Sensor so ist das Scharfstellen der Anlage nicht mehr möglich.


    Außerdem wird nun geprüft, ob der IC nicht gegebenenfalls seine Konfiguration verloren hat. Sollte dies der Fall sein, werden seine Werte entsprechend meiner Vorgaben erneut übertragen.

  • Hi,


    super Sache das :thumbs1: .
    Das mit dem LCD, finde ich, ist eine prima Idee ...
    Ich hatte überlegt mal einen Buzzer anzukoppeln und den als Alarmsignal zu verwenden.
    Aber nachdem ich alles immer wieder abräume und derzeit nix fix ist, kommt das später mal.


    Dieses Bild gefällt mir übrigens am besten - da fühl ich mich gleich heimelig ;) ...


    ciao,
    -ds-


  • Ich war am überlegen, irgendwie die Stereo-Anlage einzuschalten und darüber was abspielen zu lassen (Kettensägengeräusche, Musik aus Horrorfilmen,... :D), aber der Pi steht zu weit weg dafür. :/ Eine kleine Sirene wäre schön :denker:


    Ich versuche das bald auf eine Lochrasterplatine zu bekommen. Brauche dafür aber noch ein paar Stecker, damit das ganze schön wird (soweit das mit meinen Lötkenntnissen und meinem 10 EUR,- LIDL-Lötkolben möglich ist :D).


    Grußs
    Chris

    • Official Post

    Schöne Sache!
    Eine Erweiterung via Funk wäre natürlich klasse!


    Modul:
    http://www.ebay.de/itm/FUNK-BE…chnik&hash=item3f2944f2f6


    Wenn man mehrere direkt kauft sogar noch günstiger!
    Diese könnte man flexibel platzieren ;)


    Außerdem müsste man noch gucken, wie die Funktion aktiviert wird. Also GUI (Webinterface), oder per App, Taster, Funkfernbedienung, usw.


    Aber toll gemacht! Schön beschrieben! Wie immer klasse! LG

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>


  • Hallo und danke für dein Feedback. :)


    Funk ist natürlich eine schöne Sache. Bei 433 MHz, hätte ich aber irgendwie Angst, dass etwas anderes entweder damit interferiert/das Signal nicht richtig ankommt, oder ein Fehlalarm durch ein benachbartes Funktermometer/-steckdose/-fernbedienung,... ausgelöst wird? Oder sind meine Bedenken da übertrieben? :huh:


    Andererseits bieten Hersteller wie GIRA auch Funksystem an, aber da hätte ich zumindest die Vermutung, dass sie auf ein ausgeklügelteres Protokoll setzen?


    Ich kann mir auch nicht wirklich vorstellen, wie ich das am Pi realisieren sollte. Klar mit einem entsprechenden Empfänger.. Aber wie das Signal dann weiter verarbeitet werden muss.. Da kenn ich mich absolut nicht aus. :blush: Aber dafür hat man den Raspi ja. Zum Lernen. :^^:


    Zur Aktivierung:
    Die soll bald auch per Webinterface möglich sein (siehe Update) und außerdem dachte ich vielleicht an ein Keypad, damit man das ganze auch direkt an der Hardware bedienen kann. Native App entfällt bei mir leider, da ich keine Lust habe, die Entwickler-Gebühr bei Apple zu bezahlen. :D


    Gruß
    Christian

  • Es wäre schön wenn du bitte erklären könntest wie du die Sache mit den Prowl Push Benachrichtigungen umgesetzt hast. Ich hab mir auch schonmal die Prowl Api angeschaut bin da bis jetzt aber absolut nicht hintergestiegen.

  • Hallo,


    ich habe mich extra hier angemeldet, da ich etwas ähnliches plane. Zusätzlich möchte ich noch 2 RFID reader anschließen, über die die Anlage dann scharf geschalten bzw. deaktiviert werden kann.


    Würdest Du Deinen Code veröffentlichen bzw. ein Image Deiner Karte? Damit würdest Du glaube ich unheimlich vielen helfen!


    Viele Grüße,
    F.


  • ..., irgendwie die Stereo-Anlage einzuschalten und darüber was abspielen zu lassen...


    Moin,


    das habe ich dahingehend gelöst das der Linux Sat Receiver über (W)LAN angesprochen wird und dieser die Anlage einschaltet.



    Die RPi (Alarmanlage) wird durch einen Kontakt im Haustürschloss/Schliesszylinder aktiviert.
    Wird abgeschlossen und der Aussenbewegungsmelder spricht gleichzeitig an, wird das Hausinnere und der Aussenbereich überwacht.
    Schiessen wir uns aber im Haus ein, registriert der Innenbewegungsmelder dieses und der RPi überwacht nur den Aussenbereich.


    Die Aktivierung der Alarmanlage nur mittels Handyauswertung war zu unzuverlässig.
    Die Auswertung der eingebuchten Handys erfolgt jetzt als email-push Hinweis wenn die Haustür nicht abgeschlossen ist und kein Handy im WLAN eingebucht ist.


    Vom 8../4.. MHz und 2..GHz Funk/Bewegungsmelder/Cams kann ich nur abraten, zu störanfällig und jeder kann sich "aufschalten".


    Bye


    Jürgen

    Edited once, last by rpivpn ().

  • Moin, sehr interessanter Beitrag. Wie werden die einzelnen Bewegungssender auseinander gehalten bzw. wie werden sie identifiziert?


    Danke im Voraus.
    Sven

  • Eines der MCP23017 Register gibt aus, welcher Eingang den letzten Interrupt ausgelöst hat (Hab grad nicht im Kopf, welches es war..) Anhand dessen wird ausgegeben, welcher Port den Alarm ausgelöst hat. In der Konfiguration kann dann der Name für den einzelnen Port definiert werden. :)

  • Ich danke dem TS schonmal für den Thread :)
    Ich habe so etwas ähnliches vor ich habe leider nur keine Ahnung wie man die Bewegungsmelder verkabelt und welche Signale dann beim PI ankommen.
    Könnt ihr mir dabei weiterhelfen?

  • Hier im Forum findest Du einige Beiträge zum HC-SR501 Bewegungsmelder. Solltest Du dazu konkrete Fragen haben, stellst Du die Fragen am besten in den bestehenden Threads oder eröffnest selbst einen neuen. :)