Raspberry Pi als Kamera: Unterschied zwischen den Versionen

Aus LT42-Wiki
Zur Navigation springenZur Suche springen
Die Seite wurde neu angelegt: „Schon vor längerer Zeit habe ich mir einen Raspberry Pi angeschafft und ein wenig darum herum experimentiert. Nun habe ich mir noch ein Kamera-Modul dazu best…“
 
K Lukas verschob die Seite Raspberry Pi nach Raspberry Pi als Kamera
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Schon vor längerer Zeit habe ich mir einen Raspberry Pi angeschafft und ein wenig darum herum experimentiert. Nun habe ich mir noch ein Kamera-Modul dazu bestellt. Das ist eine feine Sache. Hier versiche 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.
__NOTOC__
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 ([[d:Raspberry_Pi|Debacher-Wiki:Raspberry_Pi]]) übernommen.


Zuerst updaten wir das System:
Zuerst updaten wir das System:
Zeile 5: Zeile 6:
  sudo apt-get upgrade
  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.
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
Wir editieren die Datei
Zeile 14: Zeile 16:
  sudo reboot
  sudo reboot


Dann können wir motion installieren:
== Motion ==
  apt-get install 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-mmalcam.conf /home/motion/
sudo mv motion /usr/local/bin/
 
Dann stellen wir in der Konfigurationsdatei noch einige Pfade um:
sudo vi /home/motion/motion-mmalcam.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-mmalcam.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.

Aktuelle Version vom 27. Juni 2023, 17:14 Uhr

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-mmalcam.conf /home/motion/
sudo mv motion /usr/local/bin/

Dann stellen wir in der Konfigurationsdatei noch einige Pfade um:

sudo vi /home/motion/motion-mmalcam.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-mmalcam.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.