Raspberry Pi als Kamera
Schon vor längerer Zeit habe ich mir einen Raspberry Pi angeschafft und ein wenig damit herum experimentiert. Nun habe ich mir noch ein Kamera-Modul dazu bestellt. Das ist eine feine Sache. Hier versuche ich nun ein wenig zu dokumentieren, wie ich das Kamera-Modul mit Hilfe von motion so eingerichtet habe, dass es beim Wahrnehmen von Bewegung Bilder aufzeichnet. Ich bin nach dieser Anleitung (http://jankarres.de/2013/12/raspberry-pi-kamera-modul-mit-motion-tracking/) vorgegangen, habe dann aber angefangen zu spielen und viel von hier (Debacher-Wiki:Raspberry_Pi) übernommen.
Zuerst updaten wir das System:
sudo apt-get update sudo apt-get upgrade
LED deaktivieren
Dann deaktivieren wir das kleine Lämpchen neben der Kamera. Wir wollen ja potenziellen Einbrechern nicht gleich zeigen, dass sie gefilmt werden. Wir editieren die Datei
sudo vi /boot/config.txt
und ergänzen sie um folgende Zeile
disable_camera_led=1
Nach einem Neustart des Systems können wir fortfahren:
sudo reboot
Motion
Dann können wir motion und einige weitere benötigte Pakete installieren:
apt-get install -y motion libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev
Nun installieren wir das Kernel-Modul für die Kamera mit
sudo apt-get install v4l-utils
und aktivieren es
sudo modprobe bcm2835-v4l2
Vor der Benutzung sollte man immer ein Bild aufnehmen, da es sonst zum Hängenbleiben des gesamten Systems kommt:
raspistill -o /tmp/test.jpg
Mit dem Debian-Paket wird ein Benutzer motion mitgeliefert, dem wir noch ein Homeverzeichnis anlegen:
sudo mkdir /home/motion sudo chown -R motion.motion /home/motion
Die mitgelieferte Konfiguration von motion ist unter dem Raspberry Pi nicht stabil lauffähig, deshalb muss eine angepasste Version mit
wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz
heruntergeladen werden. Wenn man möchte, kann man nun beide Konfigurationen nebeneinander benutzen, das möchte ich aber nicht.
Wir kopieren die ausgepackten Dateien in das Homeverzeichnis und in ein lauffähiges Verzeichnis, zum Beispiel /usr/local/bin
sudo tar -xzf motion-mmal.tar.gz sudo mv motion-mmal.conf /home/motion/ sudo mv motion /usr/local/bin/
Dann stellen wir in der Konfigurationsdatei noch einige Pfade um:
sudo vi /home/motion/motion-mmal.conf
process_id_file /home/motion/motion.pid logfile /home/motion/motion.log target_dir /home/motion
Wenn man möchte, kann man auch noch ein Unterverzeichnis für die Bilddateien anlegen. Das macht Sinn, um nicht aus Versehen die Konfiguration zu löschen und bequem rm * nach dem Kontrollieren der Aufnahmen ausführen zu können:
sudo -u motion mkdir /home/motion/data target_dir /home/motion/data
Dann passen wir noch einige Zeilen an, damit Motion im Hintergrund startet und die Konfiguration auch aus dem lokalen Netz zulässt:
# Start in daemon (background) mode and release terminal (default: off) daemon on # Restrict control connections to localhost only (default: on) webcontrol_localhost off
Starten
Um Motion dann zu starten, bedienen wir uns eines kleinen Startscripts:
sudo -u motion vi /home/motion/startmmalmotion.sh
#!/bin/sh /usr/bin/raspistill -o /tmp/test.jpg /sbin/modprobe bcm2835-v4l2 /usr/bin/sudo -u motion /usr/local/bin/motion -c /home/motion/motion-mmal.conf
Nachdem wir der Datei Ausführ-Rechte verleiht haben,
sudo chmod +x /home/motion/startmmalmotion.sh
können wir Motion starten mittels
sudo /home/motion/startmmalmotion.sh
zum Laufen bringen. Nach einigen Informationen, verschwindet es dann im Hintergrund. Sofern man Motion unter dem Benutzer motion startet, bekommt man eine Fehlermeldung, dass der Benutzer motion nicht berechtigt ist, modprobe auszuführen. Wir müssen motion also als root starten oder alternativ den Benutzer motion in die sudoers mit aufnehmen, wovon ich aus Sicherheitsgründen absehen würde.
Im Browser ist der Live-Stream dann mittels http://IPDESPIS:8081/ verfolgbar.
Beenden
Möchten wir die Überwachung unterbrechen, suchen wir uns mit dem Befehl
sudo ps aux | grep motion
die Prozess-ID des Motion-Services heraus, z.B.
motion 2592 96.3 5.0 84820 19336 ? Sl 21:36 1:08 /usr/local/bin/motion -c /home/motion/motion-mmalcam.conf
und beenden mittels
kill 2592
alternativ dazu können wir auch einfach alle Prozesse des Benutzers motion killen
killall -u motion
Daten-Kopie
Um die Daten bequem auf einem normalen Arbeitsrechner anzuschauen (der Pi soll schließlich versteckt Einbrecher beobachten), können wir die Daten einfach mittels SSH-Protokoll auf den Rechner kopieren. Motion macht eine tolle Sache: Bei jeder neuen Bewegungserkennung, wird die führende Zahl der Dateien um einen nach oben gesetzt. Wir können also alle Dateien kopieren oder einfach jene des aktuellen Vorfalls
# Kopiere alles nach 172.16.0.4 auf den Desktop eines Benutzers (der Unterordner muss natürlich erstellt werden) sudo scp /home/motion/data/* lukas@172.16.0.4:/home/lukas/Desktop/motion-daten
# Kopiere nur Bilder sudo scp /home/motion/data/*.jpg lukas@172.16.0.4:/home/lukas/Desktop/motion-daten
# Kopiere nur Filme sudo scp /home/motion/data/*.avi lukas@172.16.0.4:/home/lukas/Desktop/motion-daten
# Kopiere nur aktuelle Vorgänge (bspw. #24) sudo scp /home/motion/data/24-* lukas@172.16.0.4:/home/lukas/Desktop/motion-daten
Der Ordner kann natürlich auch als NFS-Laufwerk eingebunden werden, was das Ablegen bequemer und auch direkt über motion möglich macht. Oder man kopiert die Dateien mittels rsync, egal von welchem Rechner aus.
Erkenntnisse am Rande
Der Raspberry scheint Probleme mit dem HDMI-DVI-Adapter von Apple zu haben. Nach dem Start von Raspbian tauchen nur noch Fehlermeldungen nach dem Prinzip
Timeout waiting for hardware interrupt - cmd 13
auf. Nach einem Wechsel auf ein reines HDMI-DVI-Kabel funktioniert wieder alles.