Raspberry Pi als stille Alarmanlage

  • Hallo zusammen,


    gestern habe ich bis kurz vor 1 Uhr vor dem Rechner gesessen und habe programmiert. Danach habe ich mich der allabendlichen Prozedur unterzogen, um verdientermaßen doch noch ins Bett zu kommen.


    Da irritierte mich, dass sich jemand vor unserer Wohnungstür (2. und oberste Etage in einem Schwarzwald-Holzhaus im selbigen Wald - Nachbar ist ca. 5 mal im Jahr in seiner Wohnung) zu schaffen machte und dann die Treppe abwärts von dannen schlich. Da die Treppe zu unserer Wohnungstür nur von mir und meiner Freundin genutzt wird, sollte sich niemand mit redlichen Absichten um diese Zeit vor unserer Wohnungstür aufhalten. Oder?


    Spontan ist heute die Idee entstanden, einen Raspberry Pi mit PIR-Sensor und Kamera-Modul in einem dunklen Holzspalt zu deponieren, der durchs Gemäuer von unseren Wohnung ins Treppenhaus führt. Über den Holzspalt kann die Stromversorgung erfolgen. Kurzum, man sieht von dem Teil nicht viel, weil die Kamera in einem weißen Gehäuse sitzt und der Spalt mit Watte abgedichtet ist. Weiß auf Weiß - Weißer Adler auf weißem Grund, die Nationalflagge der Ostfriesen - man sieht also nichts.


    Heute Abend habe ich dann die Komponenten zusammen gesucht:
    - Raspberry Pi A+ (original verpackt, unbenutzt)
    - Kamera-Modul (Version 1.3)
    - drei Jumperkabel Buchse-Buchse
    - PIR-Sensor-Modul (vermutlich aus einem Arduino-Set)
    - SD-Karte (aus einem aktuellen Projekt entnommen)


    Die Kamera habe ich in ein Gehäuse gesteckt und das Kabel in die mit Camera bezeichnete Buchse fixiert. Die Orientierung des Kabels war schnell klar, da nur auf einer Seite des Flexi-Kabels Kontakte sind.


    Das PIR-Sensor-Modul habe ich erst mal getestet, da ich diesen Modulen generell nicht über den Weg traue:
    - Labornetzteil auf 3,2 V eingestellt
    - den mit GND gekennzeichneten Pin des PIR-Sensor-Moduls habe ich mit dem Minus-Anschluss des Labornetzteils verbunden
    - den COM-Eingang eines Digital-Multimeters habe ich mit GND des PIR-Sensor-Moduls verbunden
    - den mit VCC gekennzeichneten Pin habe ich mit dem Pluspol eines Labornetzteils verbunden
    - den mit Out gekennzeichneten Pin habe ich mit dem Spannungseingang eines Digital-Multimeters verbunden (Stellung 20 V=)


    Dann habe ich irgendwelche Faxen vor dem Sensor aufgeführt. Bei jeder Bewegung hat das PIR-Sensor-Modul eine Spannung von rund 2,5 V angezeigt. Das sagt mir, dass das PIR-Sensor-Modul auch mit den 3V3 des Raspberry Pi klarkommen wird (OK - ich hätte noch den Strom messen können, aber irgendwas ist ja immer). Und dass das Ausgangssignal sicher vom GPIO erkant werden kann, da dieser bei einem Pegel > 1,3 V HIGH signalisiert.


    Auf der Platine des PIR-Sensor-Moduls sind zwei Regler, an denen ich noch spielen musste. Der eine regelt die Zeit zwischen zwei Pegeln. Drei Stellungen habe ich ausprobiert:
    - Mittelstellung erzeugt in zyklischen Abständen - auch gänzlich ohne Bewegung - ein Signal = unbrauchbar
    - Eine Extremstellung erzeugt ein Dauersignal ohne Bewegung = unbrauchbar
    - die andere Extremstellung erzeugt nur ein Signal, wenn auch Bewegung vorhanden ist = Die isses!


    Der andere Regler ist für die Empfindlichkeit zuständig. Den habe ich nach kurzem Ausprobieren auch in einer Extremstellung belassen, wodurch jede Bewegung auch in größerer Entfernung erkannt wird. Da soll's sein, denn ich will ja wissen, wer sich da nächtens die Treppe hochschleppt.


    Dann habe ich die Schaltung wieder abgebaut und mit dem Raspberry Pi verbunden:
    - Danach habe ich GND des Sensors mit einem GND der GPIO-Leiste
    - VCC des Sensors mit 3V3 der GPIO-Leiste
    - Out des Sensors mit GPIO17


    Danach habe ich mich mit der Raspi-Camera beschäftigt. Über

    Code
    1. sudo raspi-config


    habe ich erstmal die Kamera aktiviert. Danach wollte der RPi A+ einen Reboot. Ich wunderte mich - aber was soll's. Wenige Sekunden später war er wieder da.


    Ein Testbild habe ich mit

    Code
    1. raspistill -o Bild1.jpg


    geschossen. Hat funktioniert.


    Dann habe ich mich mit in die Parameter von raspistill eingelesen und habe folgende Parameter für einen ersten brauchbaren Ansatz identifiziert:

    Code
    1. -w 800
    2. -h 640
    3. -t 100
    4. -n


    Ich denke aber, dass ich da morgen bei Tageslicht und nach Installation an Ort und Stelle noch Anpassungen vornehmen werden. Vielleicht bekommt das Teil auch einen Tages- und Nacht-Parametersatz - oder einen wenn das Treppenhauslicht brennt und wenn es doch dunkle Gestalten nächtens nicht gesehen werden wollen.


    Dann ging's - ENDLICH! - ans Programmieren.


    Es musste eine Minimal-Lösung werden - maximal 20 Zeilen in Icon sollten es werden. Jedes Bild soll einen Datumszeitstempel im Dateinamen erhalten. Mit folgendem Code startete ich:



    Die CPU-Auslastung liegt - wenn kein Bild geschossen wird bei 2 bis 6 Prozent (die Entwicklungsumgebung ist noch offen und das Programm aus dieser gestartet). Nicht dass mir jetzt jemand kommt und was von zwingender Interrupt-Nutzung erzählt, dass diese die CPU-Auslastung verringern. Viel ist da ja nicht mehr zu holen. ;)


    Ich denke, der Code ist selbsterklärend. Hat dann auch nach Beseitigung von Flüchtigkeitsfehlern funktioniert.


    Morgen wird das Ganze am Zielort installiert - und dann bin ich gespannt, wer da nächtens durchs Haus vor fremden Wohnungen herumschleicht.


    Bilder und Schalte stelle ich dann morgen Abend hier rein, da ich morgen den ganzen Tag unterwegs sein werde.



    Abschließend muss ich sagen, dass es bemerkenswert ist, innerhalb von nicht einmal einer Stunde, ein solches Etwas - Projekt möchte ich's nicht nennen - begonnen und abgeschlossen zu haben.


    2012 hätte ich sowas nicht gekonnt und auch nicht gewusst, womit man sowas lösen könnte (Hardware, "Schaltung abfragen", ...) Und dann sowieso nicht zu diesem Preis.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • 1h - ja das ist sehr schnell. Sportlich wird es dann, wenn Du Deinen Sensor der Sonneneinstrahlung aussetzen mußt (er wird unempfindlich) oder er in Richtung sich bei Sonneneinstrahlung rasch ändernder Temperaturen ausgerichtet ist (Blätter). Dabei können die Blätter sich bewegen und die Temperatur bleibt konstant (Blattemperatur hoch, Hintergund kühl) oder die Sonne wird bei wolkigem und windigem Wetter rasch abgedunkelt bzw. erscheint wieder, womit sich die Blattemperatur schnell ändert und der Sensor trotz stationären Verhaltens der Blätter auslöst.

  • Ich möchte ja kein Spielverderber sein, aber du bist dir über die rechtliche Situation im klaren?


    Grüße

  • Hallo Daniel,



    Ich möchte ja kein Spielverderber sein, aber du bist dir über die rechtliche Situation im klaren?


    Die Kamera wird so positioniert werden, dass nur der unmittelbare Bereich vor unserer Wohnungstür aufgenommen wird. Dieser Bereich dürfte nur von uns betreten werden. Der unmittelbare Nachbar ist wie gesagt nur an Feiertagen anwesend. Und außerdem möchte ich wissen, wer sich da womit warum nachts um 1 Uhr (wenn normalerweise die meisten rechtschaffenen Mitbürger tief und fest schlafen) wielange an unserer Wohnungstür zu schaffen macht. Ich denke, dessen rechtliche Situation ist wesentlich fragwürdiger, denn welchen Grund gibt es für einen Bewohner einer Etage unter uns, sich nachts vor unserer Wohnungstür aufzuhalten? Einen Schlüssel hat er offensichtlich, sonst wäre er nicht ins Treppenhaus gekommen.
    Man kann unterstellen, dass aufgrund der geschilderten Situation bei normaler Sachlage 100 % der Aufnahmen mich und meine Freundin zeigen sollten.
    Aber wo Du mich gerade zum Nachdenken bringst: Wahrscheinlich ist es eine bessere Idee, die Aufnahmezeit nur auf die Nachtstunden (22:00 bis 6:00) zu beschränken.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Rechtliche Situation...sind wir hier in nem Jura Forum? Es geht um die Entwicklung einer Anlage und nicht um die Rechte eines Einbrechers. Der kann schon froh sein wenn er den Vorfall überlebt.

  • Hi Schnasseldag,



    1h - ja das ist sehr schnell. Sportlich wird es dann, wenn Du Deinen Sensor der Sonneneinstrahlung aussetzen mußt (er wird unempfindlich) oder er in Richtung sich bei Sonneneinstrahlung rasch ändernder Temperaturen ausgerichtet ist (Blätter). Dabei können die Blätter sich bewegen und die Temperatur bleibt konstant (Blattemperatur hoch, Hintergund kühl) oder die Sonne wird bei wolkigem und windigem Wetter rasch abgedunkelt bzw. erscheint wieder, womit sich die Blattemperatur schnell ändert und der Sensor trotz stationären Verhaltens der Blätter auslöst.


    vielen Dank für den Tip mit dem direkten Sonnenlicht. Das wird aber nicht passieren. Die Kamera und der PIR-Sensor kommen in einen Spalt zwischen Mauerwerk und einem Holzbalken. Richtung Nordseite ist am Dach ein Fenster. Bei aktueller Lage, die schon seit ein paar Millionen Jahren anhält, scheint die Sonne hierzulande nie im Norden - und wenn doch (?), dann nicht in dem Winkel, dass da irgendein Risiko bestehen würde.


    Beste Grüße


    Andreas
    Automatisch zusammengefügt:[hr]
    Hallo pttr,



    Rechtliche Situation...sind wir hier in nem Jura Forum? Es geht um die Entwicklung einer Anlage und nicht um die Rechte eines Einbrechers. Der kann schon froh sein wenn er den Vorfall überlebt.



    Ich denke, rechtliche Aspekte gehören auch hier hinein. Denn wenn jemand etwas komplett illegales beabsichtigt, dann sollte er von den Personen, die mehr Ahnung haben, auch darauf hingewiesen werden.
    Bei einem ähnlichen Fall war es z.B. dass jemand nicht nur sein Grundstück gefilmt hat, sondern auch noch einen öffentlich zugänglichen Gehweg mit erfasst hat. Hier werden natürlich Interessen Dritter verletzt - ein Hinweis auf die rechtliche Situation mehr als geboten.


    Übrigens: Auch wenn ich vielleicht so aussehe: So brutal bin ich nun auch nicht! ;)


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 2 times, last by Andreas ().

  • Ich mache gerade eine Weiterbildung in der auch das "Recht" eine große Sache ist. Allerdings nicht auf dieses Gebiet bezogen sondern auf die Industrie.


    Aber vor einem hat man uns gewarnt: wenn man dir ans Bein pi**en will, dann ist es nirgends so einfach wie in Deutschland.


    Hier insbesondere: Recht aufs eigene Bild.


    Ab und zu muss ich zu Personen fahren deren Wohnort ich nicht kenne. Also ab zur Adresse und dann halt Wohnung zu Wohnung schauen.


    Ja gut, um 3 Uhr morgens etwas fragwürdig.


    War nur ein Beispiel. Aber ich kann dich verstehen. Ich hab mir auch etwas gebastelt.

  • Ich würde das Recht aufs eigene Bild des Einbrechers in einer solchen privaten Angelegenheit nicht berbewerten. In erster Linie möchtest du dein Hab und Gut bzw. auch deine Gesundheit schützen. Zudem halten sich potenzielle Diebe wohl kaum an von dir vorgegebene Uhrzeiten. Viele Einbrüche gehen tagsüber über die Bühne. Meine mich an nen Fall im Amiland errinern zu können,bei dem der Hausherr mit der Pumpgun in der Garage gewartet hat. Und hier in Deutschland machen wir uns vor Persönlichkeitsrechten in die Hosen.

  • Einbrecher kommen auch tagsüber, erst vor wenigen Tagen beim Nachbar meiner Mutter. Gegen 16.00 Uhr ist der Bewohner nach Hause gekommen, plötzlich springt ein Dunkelhäutiger aus dem Obergeschoss in den Garten und flüchtet über die Mauer und war nicht mehr gesehen.
    Ich habe auch eine Kamera mit Pi an der Tür, der Pi macht autom. eine Aufnahme, wenn die Türe geöffnet wird und schickt mir das Video per Email.
    Das ist allerdings innerhalb meiner Wohnung, aber ich glaube nicht, dass der Einbrecher im Zweifelsfall die Rechte auf sein Bild einklagen wird.
    So wie hier:

  • Hallo zusammen,


    gestern kam ich noch mal ins Grübeln:
    - Wie schalte ich das Teil aus? Momentan gar nicht. Da ich momentan nicht beabsichtige, die aufgenommenen Photos live zu betrachten, indem ich einen Monitor aufbaue und auch nicht plane, die aufgenommenen Bilder im Netzwerk zu speichern oder per WLAN irgendwo hin zu schicken, brauche ich eine Möglichkeit, den Raspberry Pi sauber herunterzufahren. Einfachste Möglichkeit der Umsetzung: Taster mit Pull-Down-Widerstand an einem GPIO, der als Eingang geschaltet ist.
    - Wie schalte ich das Teil wieder ein? Ganz klassisch: RUN-Pins kurzschließen, z.B. durch einen zweiten Taster.
    - Wie erkenne ich den Betriebsstatus des Teils? Momentan nicht wirklich. Das Teil wird ja in den Zwischenraum zwischen einer Wand und einem Holzbalken platziert und dann wieder mit dem vorhandenen Isolationsmaterial gefüllt und weitgehend "versteckt". Also müssen LEDs her, die innerhalb der Wohnung sichtbar sind. Die einfachste Art der Umsetzung bestünde in der Ansteuerung von mehreren LEDs. Die eine signalisiert, dass die Anwendung läuft. Die andere signalisiert, das gerade ein Photo geschossen wird. Eine weitere signalisiert, dass der Shutdown-Taster gedrückt wurde und bei weiterem Drücken das Teil herunterfahren wird. Kurzzeitiges Drücken soll dagegen keine Auswirkung haben.
    - Da ich lieber programmiere als Hardware zusammenzubasteln, habe ich mir dann überlegt, ob das auch mit weniger als drei LEDs sinnvoll machbar wäre. Ja, nämlich mit einer einzigen LED. Diese wird an einen als Ausgang geschalteten GPIO über einen passenden Widerstand nach GND geführt. Dann wird lediglich das Programm ein wenig gehaltsvoller. Die LED soll dauerhaft leuchten, wenn ein Photo geschossen wird:

    Code
    1. GPIO(LED, 1)

    und erlöschen, wenn kein Photo geschossen wird:

    Code
    1. GPIO(LED, 0)


    Der Vorgang, ein Bild aufzunehmen und zu speichern, dauert bei meinen aktuellen Einstellungen eine Sekunde. Der Effekt wird sein, dass die LED ca. 1 Sekunde leuchtet, erlischt - also mit der Zeitdauer 1 Sekunde blinkt, wenn Photos aufgenommen werden.



    Ansonsten soll die LED mit einer anderen Frequenz blinken, wenn keine Photos aufgenommen werden, was durch Zeilen wie

    Code
    1. statusLED := ixor(statusLED, 1)
    2. GPIO(LED, statusLED)


    innerhalb der Endlosschleife umgesetzt wird.


    Ist allerdings der Shutdown-Taster betätigt, dann soll die LED schneller blinken, um auf diesen Status hinzuweisen.

    Code
    1. if GPIO(Taster) = 1 then
    2. { dauer +:= 1
    3. if dauer > 50 then system("sudo shutdown -h now")
    4. delaytime := delaytime2
    5. }
    6. else
    7. { dauer := 0
    8. delaytime := delaytime1
    9. }


    Was wir hiermit übrigens auch erreicht haben, ist eine Software-Entprellung. Falls jemand mal sowas brauchen sollte ...


    Wird durch Drücken des Tasters ein HIGH-Pegel festgestellt (bei Einsatz eines Pull-Down-Widerstands), dann muss dieser Taster so lange gedrückt bleiben, dass diese Schleife 50mal durchlaufen wird. Erst dann soll heruntergefahren werden. Bei Setzen von delaytime = 10 wäre dies nach rund 500 ms erreicht. Dies halte ich für eine ausreichend lange Zeit, die man einen Taster nicht unbeabsichtigt drücken wird.


    Wenn der Taster prellt, das heißt, wenn nach einem anfänglichen HIGH-Pegel die Verbindung unterbrochen wird und erst später dauerhaft verbindet, dann wird die Dauer zurückgesetzt und von vorne zu zählen begonnen, wenn der Pegel wieder HIGH ist. Durch passende Wahl von delaytime1 (hier 100 ms) sollte ein eventuelles Prellen gar nicht erst feststellbar sein. Denn viel langsamer wird man einen Taster nicht betätigen. Auch wenn es anders sein sollte, fängt dieser Code das ab.


    Tja, und auch wenn die Leitung Störsignale an den GPIO-Eingang weitergeben sollte, weil der Pulldown-Widerstand durch einen blanken Draht überbrückt werden sollte. Diese Störsignale müssten sich 50 mal wiederholen - genau zu dem Zeitpunkt, an der der GPIO-Eingang gerade mal abgefragt wird. Die Chancen dazu stehen 2⁵⁰ - sehr sehr sehr unwahrscheinlich.


    Das Programm sieht dann so aus:


    Interessant vielleicht noch ein paar Daten zur CPU-Auslastung:
    Das Programm habe ich aus der IDE Geany heraus getestet und Gesamt-CPU-Auslastungen von 4 bis 7 % gemessen. Gelegentliche kurzfristige Peaks werden von anderen Prozessen verursacht.


    Über

    Code
    1. top | grep iconx

    erhalte ich Werte zwischen 0.3 und 2.0 % (im Modus delaytime = delaytime1) bzgl. der eigentlichen Anwendung.


    Starte ich das Programm mit LXDE, und messe die CPU-Auslastung über

    Code
    1. top | grep iconx


    dann erhalte ich CPU-Auslastungen, die zwischen 1.3 und 1.6 % liegen (im Modus delaytime = delaytime1).


    Starte ich das Programm ohne LXDE, und messe die CPU-Auslastung über

    Code
    1. top | grep iconx


    dann erhalte ich CPU-Auslastungen, die zwischen 1.0 und 2.0 % liegen (im Modus delaytime = delaytime1).


    Bei allen CPU-Auslastungen liegen die meisten Werte bei 1.3 und 1.6 %.


    Das Programm trägt in der normalen Betriebsart also unabhängig von der Umgebung, aus der heraus es gestartet wurde, zu sehr konstanten und vor allem recht niedrigen CPU-Auslastungen bei.


    Die Temperatur liegt konstant bei 32 °C, was eine gute Voraussetzung dafür ist, den RPi A+ an den vorgesehenen Ort zu platzieren.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 2 times, last by Andreas ().