- 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
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