Alarmanlage - Tür/Fenster überwachen

L I V E Stammtisch ab 20:30 Uhr im Chat
    • Offizieller Beitrag

    Hallo Forum,

    Folgendes Projekt würde ich gerne starten. Ich möchte eine Alarmanlage für Türen und Fenster bauen. Als Zentrale dient natürlich der Raspberry Pi.

    Er soll mittels Python und PHP Tür Kontakte bzw Sensoren abfragen die an den Türen befestigt sind.

    Software mäßig sollte ich selber in der Lage sein mein Vorhaben umzusetzen. Das Problem betrifft nur die Hardware Geschichte. Ich habe nur Grundwissen in diesem Bereich. Praktisch habe ich vor ein zwei Jahren eine Simatik Step 7 mit mehreren Sensoren und Ausgängen verkabelt und programmiert.Erfolgreich =). Löten sollte auch kein Problem sein, doch eine Schaltung selbstständig aufbauen mit den richtigen Bauteilen suchen ist mein Problem.

    Den Kontakt möchte ich über Magnet Schalter bzw reed Sensoren abfragen. Diese sollen beim öffnen und/oder schließen ein Script starten. Habe schon bei Reichelt geschaut, doch da gibt es so viele reed Kontakte und so weiter. Weiß nicht welchen ich nutzen muss.

    Am besten wäre es, wenn man sich die Kabel zu den Sensoren sparen könnte und Funk nutzten könnte . Ist das möglich, oder wird das zu teuer? Vorteil wäre: nur ein zentraler Pi nötig für die Steuerung und leichte Erweiterung.

    Das ganze System soll entweder zeitgesteuert scharf gemacht werden oder wenn ich mich nicht Zuhause bin (ping im Lan auf mein handy). Toll wäre noch eine kleine Sirene an den Gpios die ordentlich Krach macht. Bei Alarm wird eine SMS gesendet oder Email. In Zukunft vielleicht nicht eine von webcam dazu schalten.

    Soweit der Plan. Was für Hardware benötige, wie ist der Schaltplan?

    Schöne Grüße
    ps915


    Update: 07.06.2013

    Es ist etwas Hardware angekommen (Siehe Foto).

    - 3 Reed/Magnetkontakte
    - 3 PIR Infrarot Bewegungssensoren
    - einige Meter Kabel
    - eine Piezo Sirene (Bei 5V sehr laut)
    - ein paar LEDS und Widerstände

    folgende Hardware befindet sich noch auf dem Versandweg:
    - Ultraschall Entfernungsmesser
    - Matrix

      


    Jetzt muss das ganze noch Softwaremäßig realisiert werden und ein paar Kabel verlegt werden.

    Gruß,
    ps915


    Update: 11.06.2013
    Hier ein kurzes Video zu dem Infrarotsensor. Es klappt auch schon wunderbar muss ich sagen. Mit Python wird auf Bewegung reagiert und eine entsprechende Meldung in der Shell und auf einem LCD ausgegeben.
    An dem Sensor kann man mit einem Kreuzschlitz die Entfernung/Sensibilität sowie den Trigger (wie lange er ein HIGH Signal an den RPI sendet) einstellen.
    [youtube]lJHoEhNXbI4[/youtube]


    Gruß,
    ps915


    Update: 25.06.2013

    Nun habe ich mich der Software etwas mehr gewidmet.

    • Als Datenbank nutzte ich SQLite 3 (ich bin überrascht, EXTREM schnell, ich könnte keine Verzögerung wahrnehmen)
    • Auswertung und Schaltung der Ein/Ausgänge mit Python 2.7
    • Webserver mit lighttpd und PHP5
    • Webinterface mit jQuery Mobile, PHP 5 und Ajax Callbacks -> xyz.php


    Hardware:

    • Eine Logitech C310 [Anzeige] Webcam ist auch noch über USB (!benötigt keine externe Stromversorgung! =) ) angeschlossen.
      Funktioniert "out of the box" und wird als /dev/video0 erkannt. Testweise habe ich entweder mit motion oder mit fswebcam + PIR Sensor eine IP-Überwachungskamera eingerichtet.
    • Die Keymatrix ist auch angekommen. Damit habe ich mich erst kurz beschäftigt.


    Hier ein Paar Fotos und Screenshots und Code
    b

    Hier ein kleiner Ausschnitt aus meinem Python Code.
    Der erste Türkontakt wird mit dieser Passage ausgewertet.
    [code=php]# REED 01 START
    cs_01 = GPIO.input(REED_01)
    # KONTAKT -> GEOEFFNET
    if cs_01 == 1 and ps_01 == 0 and REED_01_on != 1:
    print "Tuer 1 offen"
    led("green","off")
    led("orange","on")
    con = lite.connect(db)
    with con:
    cur = con.cursor()
    cur.execute("INSERT INTO tbl_log values(null, %d, 'Tuer 1','geoeffnet')" % (ts) )
    ps_01=1
    # KONTAKT -> ALARM
    elif cs_01 == 1 and ps_01 == 0 and REED_01_on == 1:
    print "Tuer 1 ALARM"
    led("green","off")
    led("orange","off")
    led("red","on")
    con = lite.connect(db)
    with con:
    cur = con.cursor()
    cur.execute("INSERT INTO tbl_log values(null, %d, 'Tuer 1','Alarm')" % (ts) )
    #Email,SMS,Anruf,Sirene,Foto oder Video aufnehmen
    ps_01=1
    # KONTAKT -> geschlossen
    elif cs_01==0 and ps_01 == 1:
    print "Tuer 1 geschlossen"
    led("green","on")
    led("orange","off")
    led("red","off")
    con = lite.connect(db)
    with con:
    cur = con.cursor()
    cur.execute("INSERT INTO tbl_log values(null, %d, 'Tuer 1','geschlossen')" % (ts) )
    ps_01=0
    # REED 01 ENDE[/php]


    Gruß,
    ps915


    Status [prog]90[/prog]


    Update: 31.07.2013
    Ich habe nun aus dem Projekt ein Tutorial gemacht. Es hat allerdings nur eine abgespeckte Version meines Codes und Webinterface. Es ist aber sicherlich leicht erweiterbar.
    Zum Tutorial: Alarmanlage - Magnetkontakte auslesen und speichern - Webserver Interface

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Einmal editiert, zuletzt von ps915 (31. Juli 2013 um 19:11)

  • Am einfachsten ist es, zu jedem Sensor zwei Drähte zu ziehen und mit einem IO zu überwachen ob sich der Zustand des Sensors ändert. -> Viel Verkabelungsaufwand, einfach zu bauen.
    Um den Verkabelungsaufwand zu senken kannst Du mit 'Unterzentralen' arbeiten, d.h. die Sensoren von einem Raum/einem Bereich werden auf einem Rechner (Steuerungsprozessor oder PI) zusammengefasst und der meldet dann Änderungen über einen Bus/Netzwerk/Funk an den PI der die Auswertung macht. So arbeiten die größeren professionellen Anlagen.
    Den höchsten Entwicklungsaufwand hast Du bei der dritten Möglichkeit. Du kannst jedem Sensor einen eigenen 'Inteligenz' spendieren, die dann über einen Bus/Funk an den Pi meldet. Das wird bei den meisten aktuellen Heimanlagen und kleineren professionellen Anlagen gemacht.

    Dann stellt sich die Frage, wie sicher willst Du Deine Sensoren gestallten? Wenn Du den Sensor einfach an eine IO anschließt kann man einfach das Kabel durchschneiden oder überbrücken und der Sensor ist taub. Bei Alarmanlagen werden sogenannte differentielle Eingänge verwendet, die den Widerstand des Sensors überwachen und so Sabotage erkennen. Ist sowas bei Dir nötig?
    (btw die Dinger heißen Reed, zum Dachdecken kann man die nicht benutzen)

    Viele Fragen, viel Verwirrung.

    Ich würde den Pi erstmal mit vielen Eingangen ausstatten. Dafür bietet sich der I2C-Bus an. Mit mcp23017-ICs kannst Du maximal 128 (8x16) IOs anbauen. Die kannst Du einfach mit Python auf Änderungen abfragen.
    Da Du nicht der Erste bist, der sowas machen will gibt es z.B. den Centipede-Shield für Arduinos ( http://macetech.com/store/index.ph…&products_id=23 ) mit 4 von diesen ICs, also 64 IOs. Wenn Du die Pull-Up-Widerstände wegnimmst kannst Du die direkt an den Pi anschließen.
    Zu jedem Eingang einen Widerstand auf Plus und den Reed-Kontakt Richtung Masse. Damit erkennst Du dann auch eine durchgeschnittene Leitung.
    Die Eingänge kannst Du dann auch für einen (Schlüssel)schalter zum Scharfschalten benutzen.
    Für die Sirene kannst Du einen der normalen IOs benutzen hinter den Du einen Transistor schaltest.

    • Offizieller Beitrag

    Danke schon ein mal für die Antwort.

    Ich würde gerne die Version mit den Unterzentralen vorziehen. Als Unterzentrale dienen mir dann RPIs des Modells A. Diese sind dann im WLAN und speichern Ihre Daten in einer Datenbank meines Webservers/Zentrale (RPI Modell B). Die Zentrale soll dann per Webinterface erreichbar sein mit diversen Auswertungen und übernimmt den Versand der SMS/Email.

    Für jede Unterzentrale reichen 3 Reedkontaktschalter aus. Dann müsste die GPIOs des Rpis doch ausreichen, oder? Werde die Verkabelung dann in Kauf nehmen und später vielleicht nachrüsten.

    Für mich reichen die Reedkontaktschalter aus. Es müssen keine differentielle Eingänge sein. Wenn es natürlich nicht viel teurer ist, oder der Aufwand im Rahmen bleibt kann man auch darüber reden. Ansonsten reicht der Kontaktschalter.

    Hier ein paar Recherchen bei Reichelt.
    Summer:

    Folgende Summer habe ich gefunden. Alle müssten den typischen "Alarmanlagensound" haben.
    Welchen würdest du hier empfehlen? Der SUMMER 6V müsste doch von der Spannung her passen und ist mit 80db auch laut genug.

    Reedkontaktschalter:
    Ich habe bei Reichelt gesucht, doch welcher ist zu empfehlen?
    Suche "Reed" unter der Gruppe "Alarmsensoren" spucken einige aus! ;)
    By the way, wie lang kann das Kabel eigentlich sein?

    Kann ich die Kontaktschalter einfach an die GPIOS anschließen, oder müssen da noch Widerstände dazwischen? Gleich Frage beim Summer.

    Zum Thema "Buffered". Liege ich richtig, wenn ich sagen, dass alles was direkt an die GPIOs angeschlossen wird ist "unbuffered" bzw "unsicher" ist? Sollte man lieber "buffered" an die GPIOS gehen, oder ist das in meinem Falls eher unwichtig, da ich nur die beiden Schalter und ein Summer anschließen möchte? Mit diesem Aufsteckmodul (LINK2) wären die I/Os "buffered"? Wäre das etwas für mich?

    ps915

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Einmal editiert, zuletzt von ps915 (14. Februar 2013 um 16:39)

  • Hallo,

    wir haben bei RS-online Näherungsmodule bis ca 50cm gefunden.
    So kannst du evtl. auch ein Fenster auf Kipp Kontrollieren. http://de.rs-online.com/web/p/naherungssensoren-ics/7553100/
    Beim programmieren kann ich dir leider noch nicht helfen :)

    Die laufen auf I²C.

    Du kannst aber auch Reedkontakte im unteren Fensterbereich anbringen, so kannst du die Fenster auch mit Alarm an auf Kipp lassen.
    Sind mehrere Fenster nebeneinander können auch die Fensterkontakte in Reihe geschaltet werden.
    Bei einer Alarmanlage würde ich immer die Fenster als Öffner abfragen.
    Wenn der Kontakt nicht geschaltet hat kann auf jedenfall die Anlage nicht scharf geschaltet werden.
    Zudem hast du eine Drathbruchsicherheit in der Anlage.
    Man legt meist ein JYstY 2x2x0,6 ( wenn du eine Normale Wohnung hast )
    Ader 1 und 2 als Fensterkontakt
    Ader 3 und 4 als Leitungssabotage. ( siehe Orb ).

    Ich würde, bei einer normalen Wohnung, pro Zimmer, eine Leitung legen ->
    Eine zur Haustür.
    Scharfschalten wenn es geht über Wlan?!
    Wenn du Glück hast liegt zur Tür schon eine Leitung von der Klingelanlage die du evtl nutzen kannst.

    cu Pfaelzer

    • Offizieller Beitrag

    Näherungsmodule bzw. Lichtsensoren benötige ich nicht. Mir reichen die Reedkontakte. Also sind die 4 Adrigen Reedkontakte die mit der Widerstandsüberwachung?


    Ich kann im allgemeinen die Reedkontakte auch in Reihe schalten? Dann müssen es ja Öffner sein, oder? Somit wird dann beim Öffnen der Tür der Stromkreis unterbrochen und es liegt keine Spannung an.
    220px-Reed-relais-ani.gif220px-Reed-relais-ani.gif
    Wenn der Verkabelungsaufwand bei den "einfachen" Reed-Schaltern, also ohne Widerstandsüberwachung, so gering ist bevorzuge ich das, aber warum findet man einen Haufen Schließer und nur so wenig Öffner?

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Einmal editiert, zuletzt von ps915 (14. Februar 2013 um 18:16)

  • Du kannst jeden Kontakt aus http://www.reichelt.de/Alarmsensoren/…=2;GROUPID=3482 benutzen, VdS-Geprüft muß er nicht sein und Du kannst danach gehen, welcher am unauffälligsten und am besten anzubauen ist.
    Von den Näherungsschaltern bin ich nicht überzeugt. 50cm ist nur eine Kontrolle on das Fernster nicht geklaut ist, da kann man ja gemütlich durchgehen ;)

    Das PiFace kannst Du benutzen wenn Du nicht Basteln willst, Mit den Relais kannst Du dann die Melder schalten. Allerdings ist das etwas overkill dafür. Wenn Du Optokoppler vor die normalen GPIOS schaltest sind die besser geschützt als mit der Erweiterung. Ich glaub ich muß mich am Wochenende mal hinsetzen und noch etwas zu Ein- und Ausgängen schreiben.

    Als Sirene würde ich probieren, wie laut die RMP-45 bei 5 Volt ist. Ich hab noch eine RSP300 http://www.reichelt.de/Alarmmelder/AS…84;artnr=AS+300 rumliegen, die ist bei 12Volt sehr deutlich zu hören.

    Reedkontakte in der Alarmtechnik sind immer elektrisch Schließer, d.h. sie geben Kontakt wenn der Magnet da ist.
    Dadurch daß das aber der Normalzustand ist und der Magnet bei Öffnen des Fensters/der Tür entfernt wird, werden da logisch Öffner draus.
    Also genau das was Du willst.

    Die Widerstandsüberwachung wird mit einem Widerstand gemacht, der in der letzten Verteilerdose vor dem Melder sitzt. Sowas hast Du nicht.
    Bei den 4Adrigen Anschlüssen dien 2 für den Kontakt und 2 sind einfach nur ein Draht der hin und wieder zurück geht und als Überwachung ob die Leitung getrennt wird genutzt werden kann. Außerdem sind die Adern im Kabel alle in der gleichen Farbe und Du weißt nicht, welche Du zusammen drehen mußt um den Schalter zu überbrücken.
    Es gibt aber auch Umschalter mit 4 Adern, Du solltest immer einen Blick ins Datenblatt werfen.

    Einmal editiert, zuletzt von orb (14. Februar 2013 um 20:30)

  • Nicht ganz so billig wie Reed-Relais, aber dafür sofort einsetzbar ohne unschöne Kabel
    sind die MAX-Fensterkontakte von ELV. Darin verbirgt sich übrigens auch ein Reed-Relais.
    Geliefert werden die Teile mit austauschbarem Gehäuse in weiss oder braun, je nachdem was farblich besser passt.
    Sie sind mit Batterien betrieben. Ich hab sie einfach auf die Fenster geklebt. Bisher halten sie prima.

    siehe auch Fensterkontakt


    Ich verwende diese, um beim Lüften automatisch die Funk-Heizkörperthermostate zu drosseln, aber auch um Türen zu überwachen.
    rPi übernimmt hier die zentrale Steuerungsaufgabe und "weiss" über alles Bescheid.

    Mit FHEM wie hier beschrieben, kann man die Präsenz von Bewohnern über einen Ping auf TCP/IP fähige
    Geräte ermitteln und somit genau das realisieren, was du beabsichtigst.

    Die Heizkörperthermostate übertragen übrigens auch die Daten an den rPi

    Das sieht dann wie folgt aus:

    oben: Temperatur Feuchte von einem Funk-Sensor
    mitte: Thermostat-Ventil (Sollwert, Istwert, Ventilposition)
    unten: Türkontakt

    Einmal editiert, zuletzt von warasp99 (14. Februar 2013 um 22:10)

  • Hallo,

    bei den einfachen Reedkontakten sind die Sabotageleitungen einfach durchverdrathet siehe Bild.
    Du brauchst ja für den Privatbereich keine VDS- Kontakte. Die sind meist wesentlich teurer.

    Verdrathen würde ich die Kontakte wie im Bild. Du kannst soviele in Reihe schalten wie du möchtest.
    Bei den einfachen Kontakten bitte auf Sitz des Kontakts und des Magneten achten. Vor der Montage Durchmessen.

    Die Adern in den Kontaktleitungen sollten alle eine Farbe haben, somit ist die Sabotage, Leitung aufscheiden und Adern überbrücken, erschwert.
    Bei nicht scharfgeschalteter Anlage liegt keine Spannung auf den Adern und man kann nichts messen um zu ärgern.

    cu pfaelzer

    • Offizieller Beitrag

    Update siehe oben

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Einmal editiert, zuletzt von ps915 (7. Juni 2013 um 15:29)

    • Offizieller Beitrag

    Bis jetzt habe ich sowieso erst Python Code. PHP Soll eher die Daten eher aufbereiten, darstellen, Alarmanlage scharf stellen und so weiter.

    Von Node habe ich auch schon viel gehört und mit PHP und JavaScript kenne ich mich auch gut aus. Ich weiß nur, dass node auf Basis von JS geschrieben ist, kann mir gerade aber nicht das Funktionsprinzip vorstellen. ;)

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Wenn es wirklich um Datenauswertung geht benutz Node.js . Resourcensparend und um einiges Flotter als PHP. perfekt für das Rpi. Leider gibts noch nicht meteor für ARM :( (http://www.meteor.com) aber eine google group ist schon dran da was zu machen.

    Größte Vorteile von Node:

    - resourcensparend dank Chrome V8 Engine
    - sehr viele Netzwerkverbindungen möglich da asynchron
    - nur noch javascript für server und client
    - verdammt schnell
    - Seiten müssen nicht neugeladen werden sondern Content kann einfach ausgetauscht werden (asynchron)


    Stell dir vor du sendest ein Datenbank Query per PHP an eine MySQL DB und willst aus den gewonnen Daten einen Graphen zeichnen. Wenn der MySQL Server jetzt 6 sekunden braucht um die daten zum php server zu schicken steht die Seite +6 sekunden lang still bevor er alle Daten bekommt und php den Graphen zeichnen kann.

    Node.js hingegen macht einfach im Code weiter und verarbeitet die Daten erst wenn sie der Server von der Datenbank bekommt. Er wartet also nicht auf die Daten und verharrt sozusagen 6 sekunden im idle sondern bekommt sie nebenbei hinterhergeschmissen während er zB schon einen Graphen aus ersten Einträgen der Datenbank zeichnet.


    ist vereinfacht gesagt ein bissen so wie Ajax vom Flow her.

    • Offizieller Beitrag

    Wirklich interessant. Ich nutzte seit vielen Jahren PHP/HTML/CSS/JavaScript und "Ajax".
    Ich werde sehen, wie ich mit Node.js zurecht komme und es sich lohnt für so ein Projekt. Denn ich denke nicht, dass ich viele Querys oder "Inputs" gleichzeitig verarbeiten muss.

    Ein Loop per Python ist zwar kein Multitasking/Threadding aber es kommt durch die Schnelligkeit schon sehr nahe, da ich nicht viele Eingänge bedienen muss.

    Beim stöbern im www bin ich auf dieses Video gestoßen. Nettes Video muss ich sagen und für mich super erklärt.
    [youtube]tw-FjmuzlVc[/youtube]

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Ist auf jeden fall für echtzeit anwendungen sehr zu empfehlen wenn du zB eine Seite geöffnet lässt wo alle Fenster angezeigt werden sollen mit ihrem aktuellen Status (zB geöffnet/geschlossen). Wenn jetzt irgendein Fenster aufgeht musst du bei node die Seite nicht refreshen die Werte ändern sich automatisch. Bei PHP schon es sei den du packst noch Ajax obendrauf was aber dann im Gesamtpaket mehr RAM fressen wird.

    Halt uns auf dem laufenden bin gepannt wies läuft ;)

    greetz dude

    • Offizieller Beitrag

    Update: Siehe Video im ersten Beitrag.

    Wie im Video zu sehen ist, funktioniert es mit Python schon sehr gut. Aber,.... um auf node zurück zu kommen. Ich beabsichtige natürlich noch eine Reihe von anderen Sensoren wie zum Beispiel die der Fenster anzuschließen. Und da merkt man schon, dass die python Endlosschleife an ihre Grenzen tritt. Wenn ich nun noch mit python auf das Display schreibe (ist bis jetzt mit einem subprocess gelöst), merkt man schon deutlich die Verzögerung. Wenn jetzt mysql dazukommt, um die Meldungen zu loggen, kann unter Umständen ein Alarm verpasst werden.

    Gibt es denn für node auch Module um auf ein LCD zuzugreifen? Datenbanken sind ja kein Problem . Man könnte natürlich auch python Scripte via node ausführen lassen um zum Beispiel das Display anzusteuern.

    Gruß,
    ps915

    PS: was muss denn ein Browser(mobil sowie desktop) für Voraussetzungen mitbringen um node zu verstehen.

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    • Offizieller Beitrag

    Update siehe erster Beitrag!

    Ich muss sagen, dass ich mit Python sehr gut klarkomme und noch keinen Bedarf hatte auf Node.js umzusteigen. Die Schleifen laufen super schnell durch, selbst wenn ich auf die Datenbank zugreife und Daten hin und her schicke.

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!