Sicherheit

Mit dem Raspberry Pi ein Raumüberwachungssystem aufbauen

17.05.2014 von Jürgen Donauer
Mit einem Raspberry Pi und Raspbian als Betriebssystem sind die Hardware-Voraussetzungen für ein günstiges Überwachungssystem gegeben. Den Rest erledigt die freie Software Motion.

Die Open-Source-Software Motion befindet sich in den Repositories der Linux-Distribution Raspbian. Nach der Installation ist das Programm in wenigen Schritten eingerichtet. Wir zeigen Ihnen, wie Sie mit wenig Geld ein hervorragend funktionierendes Überwachungssystem auf die Beine stellen. Wir gehen in diesem Artikel davon aus, dass Raspbian bereits auf Ihrem Raspberry Pi läuft und sich auf dem aktuellen Stand befindet.

Die besten Verwendungsmöglichkeiten für Raspberry Pi -
Raspberry Pi als Arcade-Automat
Der Raspberry Pi lässt als Arcade-Automat im Miniaturformat vergangene Zeiten aufleben. Ein kleiner Bildschirm zeigt dabei die Retro-Spiele an, während ein Analogstick samt Buttons für die Steuerung zur Verfügung steht.
Raspberry Pi als Notebook
Die eigentlich für das Smartphone Motorola Atrix gedachte Docking-Station verwandelt den Raspberry Pi in einen Laptop mit Bildschirm, Tastatur und Touchpad. Die Erweiterungen sind bereits ab 70 Euro auf Ebay erhältlich.
Raspberry Pi als TOR-Zugang
Über das TOR-Netzwerk kann der Raspberry Pi für eine anonyme Internetverbindung sorgen, indem der Datenverkehr über ein weltweites Rechnernetz umgeleitet wird.
WLAN-Schnittstelle für kleines Geld
Der Raspberry Pi bietet keinen WLAN-Zugang. Ein entsprechendes Modul kann jedoch für kleines Geld nachgerüstet werden.
Bastelanleitung für Raspberry Pi Gehäuse
Ein günstiges Gehäuse für die Platine des Raspberry Pi lässt sich über diese Schablone basteln, die nach dem Ausdrucken nur noch gefaltet werden muss.
Gut verpackt für die lange Reise
Die großen Temperaturänderungen auf dem Weg nach oben zwangen die Forscher dazu, den Raspberry Pi gut einzupacken.
Raspberry Pi als günstige Alternative zu Apples Time Capsule
Apples Backup-Lösung Time Capsule schlägt mit über 200 Euro zu Buche. Mit dem Raspberry Pi lässt sich die Datensicherung auf dem Mac auch deutlich günstiger realisieren.
Raspberry Pi als VPN-Server
Als permanent laufender VPN-Server kann der Raspberry Pi jederzeit für eine abhörsichere Verbindung sorgen.
Der Raspberry Pi als Supercomputer
Aus dem Verbund von 64 Mini-PCs entstand an der Universität von Southampton ein Supercomputer. Als Gehäuse wurden Lego-Steine verwendet.
Der Raspberry Pi als Türöffner
Eine praktische Bastlerlösung: Per iPhone und Siri lässt sich das Garagentor öffnen. Für die Technik im Hintergrund ist ein Raspberry Pi zuständig.
Der Raspberry Pi im Weltraum
Sogar im Weltraum war der kleine Rechner bereits. Per Ballon ging es in eine Höhe von 30 Kilometern. Von hier sendete das System Live-Bilder an die Erde.

1. Kameras für das Überwachungssystem

Dass Sie für diese Anleitung einen Raspberry Pi und eine Kamera benötigen, versteht sich von selbst. Bei der Wahl der Kamera ist jedoch Voraussetzung, dass diese mit dem V4L-Treiber (Video for Linux) kompatibel ist und als Gerät in der Form "/dev/videoX" auftaucht. Das X steht für die Systemnummer der Kamera, und die Zählung beginnt bei 0. Die erste Kamera am System wäre "/dev/video0", die zweite "/dev/video1" und so weiter. In der Regel unterstützt V4L fast jede handelsübliche Webcam. Eine Liste geeigneter Webcams findet sich auf http://elinux.org/RPi_USB_Webcams. Sie sollten die Webcam über einen USB-Hub mit eigenem Netzteil anschließen, da der kleine Raspberry selbst die Kamera sonst nicht in jedem Fall ausreichend mit Strom versorgen kann.

Kamera gefunden: Sie ermitteln über dmesg | tail, ob der Raspberry Pi eine USB-2.0-Kamera gefunden und aktiviert hat. Diese registriert sich als Gerät "/dev/video0", was sich mit Hilfe des Befehls ls -ltrh /dev/video* überprüfen lässt.

Das für den Raspberry Pi speziell entwickelte Kameramodul erscheint derzeit nicht als V4LGerät. Es gibt aber bereits Unterstützung dafür, und die Entwickler arbeiten daran, diesen Umstand zu adressieren. Wir zeigen Ihnen, wie Sie das Kameramodul für den Winzling mit V4L und damit Motion fit machen.

Nachdem Sie die Webcam an den Raspberry Pi angesteckt haben, sollten Sie prüfen, ob diese ordnungsgemäß funktioniert. Dazu führen Sie direkt nach Einstecken der Kamera nachfolgenden Befehl aus:

dmesg | tail

Sie können das Vorhandensein der Kamera auch testen, indem Sie diesen Befehl nutzen:

ls -ltrh /dev/video*

Damit überprüfen Sie einfach, ob das Gerät im System vorhanden ist. Sie erhalten eine Ausgabe mit entsprechenden Informationen. Sollte mehr als eine V4L-fähige Kamera am Computer hängen, sind in der Auflistung auch mehrere Videogeräte enthalten.

2. Überwachungs-Software Motion installieren

Die Open-Source-Software Motion spricht das Gerät "/dev/videoX" an und beobachtet den Video-Stream. Sie können ein Limit für sich ändernde Pixel festgelegen. Wird die Grenze dieser Pixelzahl überschritten, wertet Motion das als Bewegung und kann je nach Konfiguration entsprechend reagieren. Sie können Motion via Kommandozeile installieren. Öffnen Sie dafür ein Terminal, und geben Sie folgende zwei Zeilen ein:

sudo apt-get update sudo apt-get install motion

Bei der Installation weist Sie das Paket darauf hin, dass Motion nicht automatisch startet. Wie das geht, lesen Sie im folgenden (optionalen) Abschnitt. Zunächst einmal starten wir den Daemon nicht und kümmern uns um die Konfiguration.

Vorarbeiten: Motion befindet sich im Raspbian-Repository, und Sie können es über apt-get installieren. Das Programm selbst ist zwar nur klein, allerdings werden automatisch noch einige Video-Codecs nachinstalliert.

Alternative Startvariante

Motion lässt sich auch über ein Init-Script starten, das nach der Installation des Programms bei Raspian unter "/etc/init.d/motion" zu finden ist. Für den automatischen Start zusammen mit dem System bearbeiten Sie die Datei "/etc/default/motion". Ersetzen Sie das "no" hinter "start_motion_ daemon" durch yes. Wie bei Init-Scripts unter dieser Version von Debian üblich, können Sie in einem Terminalfenster über die Zeile

sudo /etc/init.d/motion stop

Motion jederzeit manuell beenden, dann Änderungen in der Konfiguration vornehmen und das Programm anschließend mit

sudo /etc/init.d/motion start

wieder starten.

Wenn Sie das Kameramodul für den Raspberry Pi verwenden, müssen Sie noch eine kleine Änderung vornehmen. Öffnen Sie die Datei "/etc/init.d/motion" als Benutzer root in einem Editor. An den Anfang des Codes fügen Sie über "Name=motion" die folgende Zeile ein:

export LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so

3. Die Funktion von Motion ausprobieren

Sie können die Überwachungskamera sofort in Betrieb nehmen, indem Sie Motion händisch starten. Für einen schnellen Check ist das außerdem gar keine schlechte Idee. Geben Sie dazu auf der Kommandozeile folgenden Befehl ein:

sudo motion

Das Vorangestellte sudo ist in diesem Fall notwendig, da nur der Administrator root die Standardkonfigurationsdatei lesen kann. Legen Sie eine conf-Datei dagegen in Ihrem Home-Verzeichnis an, können Sie Motion auch als Anwender ohne root-Rechte starten.

Nach Aufruf des Befehls sehen Sie diverse Zahlen über den Bildschirm laufen. Wichtig ist die letzte Zeile. Bei korrekter Konfiguration lautet diese: "[1] Started stream webcam server in port 8081".

Somit wissen wir zwei Dinge. Erstens funktioniert unsere Hardware. Bewegen Sie nun die Kamera, reagiert die Software auch sofort und teilt uns die Namen der gespeicherten Bilder mit. In der Standardkonfiguration legt Motion diese unter "/tmp/motion" ab.

Zweitens könnten wir das Bild auch mit einem Streaming-Client oder in einem beliebigen Webbrowser betrachten. Dafür ist Port 8081 zuständig. Per Standard ist Motion allerdings so konfiguriert, dass dies nur mit dem lokalen Rechner möglich ist. Stoppen Sie zunächst das laufende Motion mit der Tastenkombination Strg-C. Danach öffnen Sie die Standardkonfigurationsdatei "/etc/motion/motion.conf" mit einem Editor Ihrer Wahl, zum Beispiel Nano: sudo nano /etc/motion/motion.conf

Kontrolle: Ob Sie einen Browser oder VLC für die Überprüfung verwenden, ist nicht relevant. Diese Methode lässt sich auch hervorragend für die Einrichtung des Bildausschnittes verwenden.

Die Datei ist ziemlich umfangreich, und wir werden sie später noch weiter anpassen. Für den Moment suchen Sie nach der Zeile webcam_ localhost on und ändern diese in webcam_ localhost off. Der Parameter befindet sich in der Sektion "Live Webcam Server", die relativ mittig liegt.

Starten Sie das Programm noch einmal mit sudo motion. Nun können Sie von jedem Rechner im gleichen Netzwerk den Stream in einem Browser mit Eingabe der URL http://IP-Adresse Raspberry Pi:8081 einsehen, beispielsweise http://192.168.100.108:8081. Die IP-Adresse bekommen Sie auf der Kommandozeile über den Befehl ifconfig heraus. Haben Sie beispielsweise VLC installiert, ist das Nutzen dieses Streams ebenfalls möglich. Klicken Sie dazu auf "Medien > Netzwerkstream öffnen", geben die URL wie im Browser ein und klicken auf "Wiedergabe".

Sie können jetzt das Bild kontrollieren und die Kamera so positionieren, dass ein für die Überwachung optimales Areal erfasst wird.

4. Konfigurationsdatei individuell anpassen

In diesem Abschnitt kümmern wir uns um die wichtigsten Parameter der Konfigurationsdatei. Sie werden diese Datei im Laufe der Zeit des Öfteren anpassen. Alles zu erklären würde den Rahmen dieses Artikels sprengen. Allerdings sind einige Parameter essenziell, und diese möchten wir Ihnen kurz darlegen.

Relativ am Anfang finden Sie die Zeile "videodevice /dev/video0". Sollte nur eine Kamera am Raspberry Pi hängen, ist das so in Ordnung, und Sie müssen das nicht ändern. Wenn Sie zusammen mit Motion mehrere Kameras einsetzen möchten, verwenden Sie mehrere Konfigurationsdateien. Sie starten dann Motion mehrmals mit dem Schalter "-c" und geben dahinter jeweils die Konfigurationsdatei an. Die Kommandozeile kann dann beispielsweise so aussehen:

motion -c /home/pi/motion/motion. conf

Das ist jedoch nur in der Testphase sinnvoll. Wenn Sie später Motion automatisch starten oder im Hintergrund laufen lassen wollen, verwenden Sie für mehrere Kameras eine andere Methode. Am Ende der Datei "/etc/motion/ motion.conf" finden Sie vier mit einem ";" auskommentierte Zeilen. Bei zwei Kameras entfernen Sie das Semikolon vor den ersten beiden und passen den Pfad zur Konfigurationsdatei an. Das Ergebnis sieht dann so aus

thread /etc/motion/thread1.confthread /etc/motion/thread2.conf

Öffnen Sie die beiden conf-Dateien in einem Editor. Passen Sie die Angaben hinter "videodevice", "target_dir" und "webcam_port" für jede Kamera an. Verwenden Sie für eine Kamera den Port 8081 und für die andere 8082. "target_dir" sollte ebenfalls auf unterschiedliche Verzeichnisse verweisen. Für die anderen Einstellungen nehmen Sie sich die Einträge in der "motion.conf" zum Vorbild. Kommentieren Sie alles aus, was Sie nicht benötigen. Wenn Sie Motion dann starten, können Sie den Stream der Kameras jeweils über den konfigurierten Port im Browser betrachten.

Stream abgreifen: Mit dem VLC Media Player können Sie zum Beispiel den Stream von Motion abgreifen. Damit lässt sich auch eine Live-Überwachung der Gebiete realisieren, auf die die Kamera gerichtet ist.

Bild einstellen: Ein Stückchen weiter unten finden Sie in der Datei "motion.conf" die beiden Zeilen "width 320" und "height 240". Das sind Breite und Höhe des Bildes, das Motion ausgibt. Sie sollten die maximalen Werte der eingesetzten Kamera kennen und die Werte entsprechend nicht überschreiten. Passen Sie auch auf, dass die Bilder nicht zu groß werden. Ansonsten geht Ihnen bei viel Bewegung irgendwann der Speicher auf dem Datenträger aus. Wir empfehlen klein anzufangen und die Größen in kleinen Schritte anzupassen.

Direkt darunter finden Sie "framerate 2". Die Zahl ist die maximale Bildanzahl, die pro Sekunde aufgenommen wird. Je höher die Zahl, desto mehr Bilder und desto mehr Speicher werden benötigt. Auch hier sollten Sie vorsichtiges Fein-Tuning walten lassen.

Der Parameter "auto_brightness" steht per Standard auf "off". Billige Webcams bringen keine automatische Justierung der Helligkeit mit sich. Sollten Sie deswegen Probleme haben, können Sie Motion diese Einstellung überlassen. Direkt darunter finden Sie die Parameter "brightness", "contrast", "saturation" und "hue". Auch damit können Sie experimentieren und das Bild optimal einstellen.

Motion mit Zeitsteuerung

Herzstück der Bewegungserkennung: Das ist die Sektion "Motion Detection Settings". Hier legen Sie fest, wie viele Pixel sich ändern müssen, damit Motion dies als Bewegung erkennt.

Wollen Sie Motion zum Beispiel nur nachts laufen lassen oder ab einer bestimmten Uhrzeit, können Sie Motion auch mit Hilfe eines Cronjobs zeitsteuern. Das Programm bietet dafür eine Fernsteuerfunktion, die standardmäßig auf http://localhost:8080 lauscht. Damit sich diese per Cron nutzen lässt, installieren Sie mit sudo apt-get install libwww-perl zuerst einige nötige Pakete nach. Einen Cronjob erstellen Sie mit dem Befehl sudo crontab -e. Geben Sie in den Editor die zwei Zeilen

0 8 * * * root /usr/bin/lwp-request http://localhost:8080/0/detection/ start > /dev/null0 18 * * * root /usr/bin/lwp-request http://localhost:8080/0/detection/ pause > /dev/null

ein und speichern Sie die Definition mit Strg-O. Die Bewegungserkennung startet dann jeden Tag um 8:00 Uhr und pausiert ab 18:00 Uhr.

5. Bewegungserkennung konfigurieren

Sehr wichtig in der Konfigurationsdatei ist die Sektion "Motion Detection Settings". Der erste Parameter, "threshold", bestimmt, wie viele Pixel sich in einem Bild ändern müssen, um als Bewegung wahrgenommen zu werden. Per Standard steht das auf "1500". Behalten Sie im Hinterkopf, dass bei Änderung der Breite und Höhe die Gesamtzahl der Pixel wächst.

Bei den Standardeinstellungen haben wir 76.800 Pixel pro Bild (320 x 240). Setzen Sie das zum Beispiel auf 640 und 480, wären das 307.200 Pixel. Eine Änderung ist für die Software aber weiterhin 1500 Pixel. Die Sache wird also wesentlich sensibler.

Überredungskunst: Das kleine Kameramodul für den Raspberry Pi funktioniert standardmäßig nicht mit Motion. Ein Entwickler stellt jedoch einen Treiber bereit, der die Kamera zur Zusammenarbeit bewegt.

Sobald Motion eine Bewegung erkennt, speichert es Dateien per Standard im JPG-Format. Zusätzlich wird nach jeder Bewegungssequenz per Standard eine SWF-Datei als kleiner Film erstellt. Wo diese Dateien hinterlegt werden, konfigurieren Sie über den Parameter "target_dir". Per Standard ist das "/tmp/motion". Sie sollten das Verzeichnis jedoch ändern, wenn Sie die Dateien auch über einen Neustart hinaus behalten möchten. "/tmp/" wird bei vielen Linux-Systemen nach einem Neustart gelöscht. Direkt darunter finden Sie "snapshot_ filename". Damit legen Sie den Dateinamen fest. Die Standardeinstellung ist aber bereits sehr gut, da die Dateien anhand eines Zeitstempels abgelegt werden.

Weiter gibt es in der Konfigurationsdatei eine Sektion, die mit "External Commands, Warnings and Logging" beginnt. Dort könnten Sie bei Erkennung einer Bewegung, sowohl bei Start als auch Ende, externe Befehle ausführen lassen. Denkbar ist zum Beispiel das Senden einer E-Mail oder das Abspielen eines Klangs.

6. Das Kameramodul des Raspberry Pi

Besitzen Sie ein Kameramodul für das Raspberry Pi, war ein Einsatz mit Motion bis vor kurzer Zeit schwierig. Es gab eine speziell angepasste Version von Motion, mit der einige Leute Erfolg hatten. In der Zwischenzeit wurde allerdings ein Treiber entwickelt, der das Kameramodul als "/dev/video0" einbindet.

Dieser funktioniert, es ist aber etwas Handarbeit notwendig. Öffnen Sie ein Terminal und führen Sie folgende Befehlszeile aus

wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc

Danach fügen Sie die Zeile

deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main a

m Ende der Datei "/etc/apt/sources.list" ein. Nun folgen die drei Zeilen:

sudo apt-get updatesudo apt-get install uv4l uv4l-raspicamsudo apt-get install uv4lraspicam- extras

damit ist der Treiber installiert.

Manuell binden Sie den Treiber nach Systemstart so ein:

uv4l --driver raspicam --autovideo_ nr --width 640 --height 480 --encoding jpeg

Die Breite und Höhe können Sie natürlich nach Belieben einbinden. Die maximale Auflösung des Kameramoduls beträgt 2592 x 1944 oder fünf Megapixel. An dieser Stelle testen wir, ob der Treiber funktioniert, und führen dazu diese Zeile aus:

dd if=/dev/video0 of=bild.jpeg bs=11M count=1

Wenn alles funktioniert, sollte sich danach eine JPG-Datei mit dem Namen "bild.jpeg" in dem Verzeichnis befinden, in dem Sie den Befehl ausgeführt haben.

Um den Treiber wieder zu entladen, beenden Sie uv4l über den Befehl pkill aus: Dazu geben Sie folgenden Befehl ein. pkill uv4l

Zusammenspiel mit Motion:Der Treiber funktioniert auch mit Motion. Allerdings brauchen wir dafür die Variable LD_PRELOAD vor dem Start der Überwachungs-Software. Der Befehl, um Motion zu starten:

sudo LD_PRELOAD=/usr/lib/uv4l/ uv4lext/armv6l/libuv4lext.so motion

Rufen Sie nun die URL des Raspberry Pi mit Port 8081 auf, sollte das Bild erkennbar sein. Auch auf Bewegung reagiert das Kameramodul, und die Software nimmt brav alles auf. Laden Sie die Bibliothek vorher nicht, reagiert das Kameramodul ebenso. Allerdings nimmt es keine Bilder auf und funktioniert somit nicht wirklich. Ein automatischer Start von Motion mit Kameramodul und einer individuellen Konfigurationsdatei könnte in der Datei "/etc/ rc.local" so aussehen:

uv4l --driver raspicam --autovideo_ nr --width 640 --height 480 --encoding jpegsleep 3LD_PRELOAD=/usr/lib/uv4l/uv4lext/ armv6l/libuv4lext.so /usr/bin/ motion -c /home/pi/motion/ motion.conf

Ob das sleep 3 unbedingt notwendig ist, muss man ausprobieren. Auf jeden Fall verzögert es den Start von Motion um drei Sekunden, und der Treiber hat Zeit, sich zu laden. Damit Motion im Hintergund startet, editieren Sie die Konfigurationsdatei und suchen nach der Zeile "daemon=off". Diese befindet sich ziemlich am Anfang. Ein Änderung von off auf on bewirkt, dass beim händischen Start oder über rc.local das Terminal wieder freigegeben wird und das Programm im Hintergrund läuft. Mit pkill motion können Sie Motion bei Bedarf jederzeit beenden. (hal)

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation PC-Welt.