Ein häufiger Anwendungsfall für einen Raspberry Pi* ist das Überwachen einer oder mehrerer Netzwerk- oder Webcams. Mit dem RPi 3 funktioniert das inzwischen auch recht performant. Ich selbst nutze ein RPi 3 zusammen mit einer Netzwerkkamera um meine Einfahrt zu überwachen. In dieser Ausbaustufe erkennt das RPi eine Änderung im überwachten Bereich und speichert das Webcambild ab. Ebenfalls wäre es auch möglich ein kurzes Video aufzuzeichnen. Die hier eingesetzte Software „motion“ ist weit verbreitet und sehr mächtig, so das sicherlich viele Anwendungsfälle abgedeckt werden können. Ich werde hier die Inbetriebnahme und die wichtigsten Konfigurationseinstellungen aufzeigen sodass man dann darauf aufbauend eigene Lösungen konfigurieren kann.
- Übersicht
- Vorbereitung
- ffmpeg für rtsp (optional)
- motion installieren
- motion konfigurieren
- motion starten
1. Übersicht: Raspberry Pi Cam, USB Kamera, Webcam oder Netzwerkkamera?
„motion“ kann fast alle Kameras überwachen. Auch die RPi Cams. Wichtig ist das es für diese Kamera einen Linuxtreiber gibt, dann erscheint die Kamera im Dateiverzeichnis unter /dev/video0.
Hat man eine Netzwerkkamera die über eine eigene IP angesprochen wird, ist dies auch kein Problem, auch diese Streams könne überwacht werden. Sogar RTSP Formate sind möglich, was sehr praktisch ist da inzwischen die meisten billigen, aber auch besseren Chinageräte dies unterstützen.
2. Vorbereitung
Wir werden motion und benötigte Abhänigkeiten selbst compilieren. Das hat den Vorteil das wir mehrere Funktionen haben als in der Vorkompilierten Version.
Bevor wir beginnen sollten wir unser System jedoch erst aufräumen. Dafür müssen wir folgende Befehle ausführen. Am einfachsten ist es die Befehle in eine Bash Datei zu kopieren und diese dann auszuführen. Alternativ können die Befehle natürlich auch einzeln ausgeführt werden:
sudo bash
apt-get update
apt-get upgrade
apt-get remove x264
apt-get remove libx264-dev
apt-get remove libavutil
apt-get remove libpostproc
apt-get remove libswresample
apt-get remove libswscale, ffmpeg
apt-get remove libavcodec
apt-get remove libavfilter
apt-get remove libavresample
apt-get remove libavcodec
apt-get remove libavfilter
Nun installieren wir die benötigten Tools um motion selbst zu compilieren:
sudo bash
apt-get install autoconf automake build-essential libtool libjpeg8-dev libzip-dev
apt-get install libavformat-dev libavcodec-dev libavutil-dev libav-tools libswscale-dev
cd /
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-shared --disable-opencl
make
sudo make install && ldconfig
3. ffmpeg für RTSP (optional)
Wenn wir auf Nmmer sicher gehen wollen das motion unsere Kamera unterstützt oder auch für RTSP müssen wir nun zwingend ffmpeg installieren. Dies dauert auf dem RPi 3 B fast 2 Stunden:
cd /
sudo bash git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --arch=armhf --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-shared make sudo make install && ldconfig
4. motion installieren
Nun installieren wir das eigentliche Überwachungsprogramm, das geht wieder deutlich schneller:
cd
sudo bash
git clone https://github.com/Mr-Dave/motion.git
cd motion
autoreconf -fiv
./configure
make
sudo make install && ldconfig
5. motion konfigurieren
Abschließend müssen wir motion nur noch an unsere Bedürfnisse anpassen. Dies geschieht mit der Datei motion.conf welche wir erst noch einrichten müssen:
sudo mv /usr/local/etc/motion/motion-dist.conf /usr/local/etc/motion/motion.conf
Dann können wir die Datei zum bearbeiten öffnen. Wichtige Einstellungen sind:
videodevice
Habt ihr eine USB oder RPi Cam, müsst ihr hier den Pfad angeben. Habt ihr eine Netzwerkkamera, muss diese Einstellung komplett auskommentiert werden.
netcam_url
Habt ihr eine Netzwerkkamera, muss hier der Pfad zum Stream (z.b. rtsp) angegeben werden
netcam_userpass
Die optionalen Zugangsdaten zur Netzwerkkamera im Format benutzername:passwort
width und height
Die Breite und Höhe des Webcambilds. Diese Werte solltet ihr auf die gleichen Einstellungen setzen wie die Kamera das Bild liefert. Ansonsten rechnet motion das Bild um, was auf dem RPi einiges an Rechenleistung kostet.
threshold
Gibt an wie viel Pixel sich im Bild ändern müssen damit eine Änderung erkannt wird. Vorsicht: Ist stark abhängig von der Videoauflösung! Die vorgegebenen 1500 sind bei HD Auflösungen nicht zu gebrauchen.
noise_level
Gibt an wie stark ein Pixel abweichen muss damit er als geändert erkannt wird. Ist nützlich um Bildrauschen nicht als Bewegung zu erkennen.
text_changes
Zeichnet bei Änderungen die Anzahl erkannter geänderter Pixel ins rechte obere Eck. Sehr nützlich um das richtige Threshold zu finden.
target_dir
Ordner in dem Fotos und Videos gespeichert werden sollen.
stream_port
Gibt an auf welchem Port ein RTSP Stream bereit gestellt wird mit dem zu überwachendem Bild
stream_localhost
Wenn aktiviert, kann der Stream nur von lokalhost abgerufen werden
webcontrol_port
Gibt an auf welchem Port ein kleiner Webserver zum steuern erreichbar ist
webcontrol_localhost
Wenn aktiviert, ist der Webserver nur von lokalhost erreichbar.
logfile
Definiert den Speicherort des Logfiles. Gerade zu Beginn ein sehr nützlicher Helfer!
6. motion starten
Motion kann nun gestaret werden
/usr/local/bin/motion start
Super Anleitung, vielen Dank. Git muss natürlich auch noch installiert sein…
Bei mir kommt bei x264 nach
./configure –enable-shared –disable-opencl
Unknown option –enable-shared, ignored
Unknown option –disable-opencl, ignored
Muss mich das nervös machen?
Irgendwie sind in der Anleitung oben die falschen ASCII Zeichen drin. Mit –enable-shared funktioniert’s dann. Bei ffmpeg genauso.
Danke für den Hinweis, habe es korrigiert.
Noch ein Hinweis:
sudo mv /usr/local/etc/motion/dist-motion.conf /usr/local/etc/motion/motion.conf
„dist-motion.conf“ muss hier „motion-dist.conf“ sein.
Recht hat er. Bitte noch ändern
Vielen Dank für die Anleitung! Leider bekomme ich beim „make“ im „Motion“-Abschnitt folgende Meldung:
sudo make
Welcome to the setup procedure for Motion, the motion detection daemon! If you get
error messages during this procedure, please report them to the mailing list. The
Motion Guide contains all information you should need to get Motion up and running.
Version: 4.1.1+git804c28c
Platform: Linux (if this is incorrect, please read README.FreeBSD)
Compiling Motion object files…
——————————————————————————–
-e Compiling ffmpeg.c into ffmpeg.o…
ffmpeg.c: In function ‘ffmpeg_set_quality’:
ffmpeg.c:541:41: error: ‘CODEC_FLAG_QSCALE’ undeclared (first use in this function)
ffmpeg->ctx_codec->flags |= CODEC_FLAG_QSCALE;
^
ffmpeg.c:541:41: note: each undeclared identifier is reported only once for each function it appears in
ffmpeg.c: In function ‘ffmpeg_set_codec’:
ffmpeg.c:666:33: error: ‘CODEC_FLAG_GLOBAL_HEADER’ undeclared (first use in this function)
ffmpeg->ctx_codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
^
Makefile:108: recipe for target ‚ffmpeg.o‘ failed
make: *** [ffmpeg.o] Error 1
Eine Fehlermeldung (abgesehen von einigen deprecated-Warningen) habe ich nicht bemerkt. Bin um jede Hilfe dankbar!
autoreconf -fiv bringt auf einem Raspbian GNU/Linux 10 (buster) folgende Fehlermeldung:
Can’t exec „autopoint“: No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
Fix dazu:
sudo apt-get install autopoint; sudo apt-get install autopoint
autoreconf -fiv bringt auf einem Raspbian GNU/Linux 10 (buster) folgende Fehlermeldung:
Can’t exec „autopoint“: No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 345.
Fix dazu: sudo apt-get install autopoint; sudo apt-get install gettext