Webcam-Server einrichten
Motion
Bietet sowohl Motiondetection, als auch Livestream!!
Übersicht der Befehle: https://motion-project.github.io/motion_config.html#OptTopic_Motion_Detection
ausführliche Doku http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideOneLargeDocument
sudo apt-get install motion
in /etc/default/motion den Dämon anschalten
sudo nano /etc/default/motion
start_motion_daemon=yes
In der /etc/motion/motion.conf
sudo nano /etc/motion/motion.conf
Zugriff auf den Stream auch von anderen Rechner als Localhost ermöglichen.
# Restrict webcam connections to localhost only (default: on) webcam_localhost off
Speicherort ändern
# Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) target_dir /tmp/motion
Speicherort für Snapshots und Motiontracker unterschiedlich, erst tagrget_dir setzen und dann im Filenamen für das jpg den Unterordner angeben
target_dir /tmp/motion jpeg_filename motion/motion-%Y-%m-%d-%H:%M:%S snapshot_filename snapshot/snapshot-%Y-%m-%d-%H:xx
Nach jeder Änderung neu starten
/etc/init.d/motion restart
Motion detection anschalten
# Output 'normal' pictures when motion is detected (default: on) # Valid values: on, off, first, best, center
Motion detection pausieren, anschalten, Status anzeigen ( http://www.lavrsen.dk/foswiki/bin/view/Motion/RemoteControlHttp)
http://localhost:8080/0/detection/pause http://localhost:8080/0/detection/start http://localhost:8080/0/detection/
output_normal best
Snapshotfunktion
# Make automated snapshot every N seconds (default: 0 = disabled) snapshot_interval 1800
die Ausgabe von swf-files unterbinden, der default ist hier "on", nicht off, wie im Kommentar beschrieben
# Use ffmpeg to encode mpeg movies in realtime (default: off) ffmpeg_cap_new off
Alle Dateien älter als 30 Tage löschen (jedenTag, per cron)
sudo crontab -e 0 0 * * * find /var/www/cap/ -iname "*201*" -mtime +30 -delete
Anleitung basierend auf der Anleitung von Kai, aber mit Daemon
Motion wie unten beschrieben einrichten. Die /etc/init.d/motion von einer existierenden Installation kopieren und die Pfade anpassen:
sudo /etc/init.d/motion
PATH_BIN=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin/ DAEMON=/usr/local/bin/motion
Die conf an den Platz kopieren an den sie die modifizierte motion erwatet
sudo mv /home/pi/motion/motion-mmalcam.conf /etc/motion.conf
jetzt müsste der Daemon funktionieren.
Die Raspberry Kamera sollte mittlerweile funktionieren
http://www.pcwelt.de/ratgeber/Mit_dem_Raspberry_Pi_die_Wohnung_ueberwachen-Sicherheit-8638548.html
Die Kamera von RaPi verwenden Anleitung von JAN KARRES
klappt nicht :-( motion lässt sich zwar normal starten, wenn conf verschoben wurde, aber das initscript funzt nicht.
Raspberry Pi: Kamera Modul mit Motion Tracking http://jankarres.de/2013/12/raspberry-pi-kamera-modul-mit-motion-tracking/
GESCHRIEBEN VON JAN KARRES IN RASPBERRY PI Mit dem Kamera Modul für den Raspberry Pi wurde ein Stück Hardware vorgestellt mit dem man viel spielen kann. Möchte man nur Bilder bzw. Videos aufnehmen, wenn sich auf dem aufgenommenen Bildbereich etwas bewegt, so kommt sogenanntes Motion Tracking zum Einsatz. Längere Zeit war dies mit dem Raspberry Pi Kamera Modul nicht möglich. Jedoch hat dozencrows ein Fork der Software Motion veröffentlicht, welche mit dem Kamera Modul zurechtkommt. Im Folgenden erkläre ich wie man Motion Tracking für das Raspberry Pi Kamera Modul installiert und einrichtet, sodass am Ende kurze Videos aus Bildern zusammengesetzt aufgenommen werden.
Voraussetzung: Raspbian oder vergleichbare Distribution installiert, welche aktuell ist wie auch angeschlossenes und in raspi-config aktiviertes Kamera-Modul
Step 1 (optional)
Wenn gewünscht, sollten wir zunächst das Licht, welches leuchtet, wenn man mit dem Raspberry Pi Kamera Modul aufnimmt, deaktivieren. Dazu müssen wir in der Datei /boot/config.txt einen Parameter setzen und anschließend den Raspberry Pi neustarten.
sudo nano /boot/config.txt
disable_camera_led=1
Anschließend folgenden Befehl ausführen
sudo reboot
Step 2
Darauffolgend müssen wir einige Software Pakete installieren, welche Motion benötigt. Motion selbst installieren wir nicht über den Paketmanager, da wir die angepasste Version von dozencrows benötigen.
sudo apt-get install ffmpeg libav-tools libavcodec53 libavdevice53 libavfilter2 libavformat53 libavutil51 libdc1394-22 libdirac-encoder0 libgsm1 libmp3lame0 libmysqlclient18 libopencv-core2.3 libopencv-imgproc2.3 libpostproc52 libpq5 libraw1394-11 libschroedinger-1.0-0 libspeex1 libswscale2 libtheora0 libva1 libvpx1 libx264-123 libxvidcore4 mysql-common libjpeg62 screen
Step 3
Nun laden wir die bereits kompilierte, von dozencrows angepasste, Version von Motion herunter. Der aktuelle Downloadlink steht im Git Repository des Projektes.
wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz tar zxvf motion-mmal.tar.gz sudo mv motion /usr/local/bin/
Step 4
Wir erstellen nun einen Ordner samt Unterordner für alle Dateien, die seitens Motion benötigt bzw. erzeugt werden und verschieben die Config in diesen Ordner.
mkdir /home/pi/motion mkdir /home/pi/motion/video sudo mv motion-mmalcam.conf /home/pi/motion/motion-mmalcam.conf cd motion
Step 5
Wir müssen nun die Konfigurationsdatei von Motion anpassen. Dabei ersetzen wir die Zeilen aus der ersten Box jeweils durch die Zeilen in der zweiten Box. Die in dieser Anleitung angepassten Werte sind so gesetzt, dass das Motion Tracking funktioniert. Jedoch ist es auf jeden Fall empfehlenswert, sich auch die anderen Werte anzusehen, da man einiges mehr ein-, aus- und umschalten kann.
sudo nano motion-mmalcam.conf
target_dir /home/pi output_pictures on logfile /home/pi/motion.log framerate 2
ersetzen durch
target_dir /home/pi/motion/video output_pictures off logfile /home/pi/motion/motion.log framerate 4
Step 6
Jetzt können wir Motion schon mittels folgenden Kommandos starten.
sudo motion -c /home/pi/motion/motion-mmalcam.conf
Motion läuft nun auf dem Raspberry Pi. Das System nimmt Bilder auf, sobald sich in dem aufgenommenen Bildbereich etwas bewegt und fügt diese zu einem Video zusammen. Diese Videos findet man in dem Verzeichnis /home/pi/motion/video. Das Video besteht aus max. 4 Frames pro aufgenommener Sekunde (ein höherer Wert führt meiner Erfahrung nach zu Ausfällen/Lags) und hat eine Auflösung von 1024×576 Pixel.
Möchte man nun noch, dass Motion automatisch beim Hochfahren des Raspberry Pis gestartet wird, so muss man folgenden Schritt noch beachten.
Step 7 (optional)
Wir legen einen Screen von Motion in eine Crontab, die beim Start des Raspberry Pis ausgeführt wird. Dies bewerkstelligen wir, indem wir folgende Zeile in eine neue Zeile am Ende des Crontab Files schreiben.
crontab -e
@reboot screen -S Motion -dmS sudo motion -c /home/pi/motion/motion-mmalcam.conf
Aufnahme stoppen
Mittels des folgenden Kommandos können wir die Aufnahme mit Motion Tracking wieder stoppen.
screen -S Motion -X quit
Fertig! Motion ist eingerichtet, nimmt auf und startet automatisch. Viel Erfolg beim Beobachten!
weitere Optimierungen
Ich nutze Scripte um die Bilder nach dem Speichern direkt in Ordner für den jeweiligen Tag zu schieben. Hierfür nutze ich NICHT das aktuelle Datum, sondern das Erstellungsdatum (bzw. das der letzten Änderung) des Bildes, das den Vorteil hat, dass man es auch nutzen kann, wenn das Script länger nicht gelaufen ist, oder für die initiale Sortierung.
Script zum Verschieben
#!/usr/bin/env bash path="/var/www/cap/motion" for FILE in $path/*.jpg do if [ -f $FILE ] then cp $FILE /var/www/cap/last_motion.jpg DATETIME=$(stat -c%z $FILE) DATE=$(cut -d\ -f1 <<<$DATETIME) mkdir -p $path/$DATE mv $FILE $path/$DATE fi done
mich hat das lastsnap.jpg genervt, weil ich Probelme mit der Berechtigung und Anzeige unter MiniGal hatte, deshalb weg damit. Ä Tännchen!! Es ist ein Link deshalb muss -h statt -f verwendet werden!
#!/usr/bin/env bash if [ -h /var/www/ORDNER/lastsnap.jpg ] then rm /var/www/ORDNER/lastsnap.jpg #echo "existiert" fi
Das Script kommt jeweils in die entsprechenden Ordner, das Pfad muss dann allerdings angepasst werden. Um die Scripte in einem Rutsch starten zu können, nutze ich das hier.
.startscripte.sh
#!/usr/bin/env bash /var/www/cap/motion/.move.sh /var/www/cap/snapshot/.move.sh /var/www/cap/.remove_lastsnap.sh
.remove_lastsnap.sh
#!/usr/bin/env bash if [ -h /var/www/cap/lastsnap.jpg ] then rm /var/www/cap/lastsnap.jpg fi
.move.sh in motion
#!/usr/bin/env bash path="/var/www/cap/motion" for FILE in $path/*.jpg do if [ -f $FILE ] then cp $FILE /var/www/cap/last_motion.jpg DATETIME=$(stat -c%z $FILE) DATE=$(cut -d\ -f1 <<<$DATETIME) mkdir -p $path/$DATE mv $FILE $path/$DATE fi done
.move.sh in snapshot
#!/usr/bin/env bash path="/var/www/cap/snapshot" for FILE in $path/*.jpg do if [ -f $FILE ] then cp $FILE /var/www/cap/last_motion.jpg DATETIME=$(stat -c%z $FILE) DATE=$(cut -d\ -f1 <<<$DATETIME) mkdir -p $path/$DATE mv $FILE $path/$DATE fi done
Scripte ausführbar machen!!
in der /etc/motion/motion.conf muss dass dann noch hier eingetragen werden.
# Command to be executed when a picture (.ppm|.jpg) is saved (default: none) # To give the filename as an argument to a command append it with %f on_picture_save /var/www/ORDNER/.startscripte.sh
Um das Ganze dann im Web noch darstellen zu können habe ich dann MiniGal installiert http://www.minigal.dk/minigal-nano.html , den Ordner photos im Verzeichnis von MiniGal gelöscht und einen Link (ln -s) auf den Ordner gesetzt in dem ich die Bilder eh speicher. Details zu *MiniGal
2 Kameras nutzen
von http://strobelstefan.org/?p=5368
Ich habe mir die Konfiguration recht einfach gemacht. An meinem Pi war bereits das Kamera-Modul angeschlossen und sämtliche UV4L-Pakete installiert. Deshalb funktionieren die nachfolgenden Befehle bei mir "out-of-the-box" und meine Webcam wurde auch sofort erkannt.
Mit dem Befehl kann man prüfen, ob die USB-Kamera auch vom Pi erkannt wird
lsusb
In der Liste sollte irgendwo die Logitec-Kamera auftauchen.
Eine Überprüfung wo die beiden Kameras, Webcam und Pi-Kameraboard, zu finden sind ist mit dem Befehl möglich.
v4l2-ctl --list-devices
Bei mir wurde die USB-Kamera auf /dev/video0 eingebunden und das Pi-Kameraboard war auf /dev/video1 zu finden. Diese beiden Informationen sind für die weitere Konfiguration zwingend erforderlich.
Thread-Dateien anlegen
Ich habe mir das Leben einfach gemacht und meine bestehende motion.conf-Datei einfach zweimal kopiert und in thread1.conf und thread2.conf umbenannt. Anschließend habe ich die motion.conf editiert. Dort müssen die folgenden Parameter auskommentiert werden. Diese sind pro Kamera in der jeweiligen thread-Datei anschließend einzutragen.
# Videodevice to be used for capturing (default /dev/video0) # for FreeBSD default is /dev/bktr0 # CHANGED ; videodevice /dev/video0
# Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) # CHANGED ;target_dir /mnt/pics/motion
# The mini-http server listens to this port for requests (default: 0 = disabled) # CHANGED ;webcam_port 8081
Besonders wichtig, in der motion-conf findet ihr am Ende die Einstellungen für die thread-Dateien.
# Remember: If you have more than one camera you must have one # thread file for each camera. E.g. 2 cameras requires 3 files: # This motion.conf file AND thread1.conf and thread2.conf. # Only put the options that are unique to each camera in the # thread config files. ; thread /usr/local/etc/thread1.conf ; thread /usr/local/etc/thread2.conf ; thread /usr/local/etc/thread3.conf ; thread /usr/local/etc/thread4.conf
Tragt ein, wo ihr die thread-Dateien für eure Kamera ablegt, damit Motion diese auch findet. Dabei könnt ihr den Pfad beliebig wählen, z.B. das Home-Verzeichnis eures Benutzers.
; thread /usr/local/etc/thread1.conf
wird dann zu thread /usr/local/etc/thread1.conf thread1.conf
In dieser Datei müsst ihr nur die folgenden Parameter prüfen und auf die Kamera abstimmen
videodevice /dev/video0
target_dir /mnt/pics/motion1
webcam_port 8081
text_left Camera 1
# Image width (pixels). Valid range: Camera dependent, default: 352
width Wert-Eintragen
# Image height (pixels). Valid range: Camera dependent, default: 288
height Wert-Eintragen
Auch die Eisntellngen für den E-Mail-Versand, solltet ihr das aktiviert haben, lässt sich individuell pro thread-Datei anpassen.
thread2.conf
videodevice /dev/video1
target_dir /mnt/pics/motion2
webcam_port 8082
t ext_left Camera 2
# Image width (pixels). Valid range: Camera dependent, default: 352 width Wert-Eintragen
# Image height (pixels). Valid range: Camera dependent, default: 288 height Wert-Eintragen
Nach den Anpassungen lässt sich Motion wie gewohnt starten und die Kamera-Streams auf den beiden Ports 8081 und 8082 anschauen.
Webcam-Server
Vorlage: http://hacktivision.com/index.php/2009/06/16/setting-up-an-ubuntu-webcam-server
Anleitung für Debian, daher fehlt "sudo". Webcamserver installieren.
apt-get install webcam-server
Wenn nicht in der Quelle enthalten hier downloaden Ubuntu-- https://launchpad.net/ubuntu/maverick/i386/webcam-server/0.50-4 ... oder
cd /tmp wget http://launchpadlibrarian.net/38433364/webcam-server_0.50-4_i386.deb # für PC (Ubuntu) wget http://ftp.de.debian.org/debian/pool/main/w/webcam-server/webcam-server_0.50-3_armel.deb #Dockstar -- arm sudo dpkg -i webcam-server_0.50-4_i386.deb
noch ein paar Pakete nachinstallieren
sudo apt-get install apache2-mpm-worker dov4l
USB-Webcam anschliessen und überprüfen, ob sie erkannt wird (dov4l -q) !Tipp: wenn "lsusb" nicht installiert ist "usbutils" nachinstallieren. Weitere Pakete installieren
sudo apt-get -y install libv4l-0 libjpeg62
Erstellen eines Startscriptes
nano /etc/init.d/webcam-server
Beispielscript
#!/bin/sh SERVER_BIN=webcam-server LOCK_FILE=/var/lock/$SERVER_BIN RTRN=0 OPTIONS='-v -g 640x480 -p 8888 -c DockstarCam' start() { [ -f $LOCK_FILE ] && echo "$SERVER_BIN already started" [ -f $LOCK_FILE ] && return echo -n "Starting $SERVER_BIN: " export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so nohup $SERVER_BIN $OPTIONS > /dev/null 2>/dev/null & RTRN=$? [ $RTRN -eq 0 ] && echo Started! || echo FAIL [ $RTRN -eq 0 ] && touch $LOCK_FILE } stop() { [ -f $LOCK_FILE ] || echo "$SERVER_BIN is not running" [ -f $LOCK_FILE ] || return echo -n "Stopping $SERVER_BIN: " pkill -f "$SERVER_BIN $OPTIONS" RTRN=$? rm -f $LOCK_FILE [ $RTRN -eq 0 ] && echo Stopped! || echo FAIL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart}" RTRN=1 esac exit $RTRN
Now you just need to make your startup script run when Ubuntu starts up. Use the following commands: Mit den folgenden Kommandos wird das Script beim Systemstart ausgeführt
chmod +x /etc/init.d/webcam-server
update-rc.d webcam-server defaults
Hier habe ich eine Fehlermenldung bekommen, die ich noch analysieren muss:
root@dockstar:~# update-rc.d webcam-server defaults update-rc.d: using dependency based boot sequencing insserv: warning: script 'webcam-server' missing LSB tags and over
Webcam-server starten
/etc/init.d/webcam-server start
Unter http://localhost:8888/ ist nun ein Bild zu sehen. In Firefox, CTRL+SHIFT+R, gedrückt halten, dann wird das Bild permanent refreshed, oder in die Standardseiten einbauen.
andere funktionierende Methode
Quelle:
folgende Pakete installieren
apt-get install apache2-mpm-worker dov4l
USB-Webcam anschliessen und überprüfen, ob sie erkannt wird (dov4l -q) !Tipp: wenn "lsusb" nicht installiert ist "usbutils" nachinstallieren. Weitere Pakete installieren
apt-get -y install libv4l libjpeg62
Installieren des Webcam-Servers
cd /tmp wget http://ftp.de.debian.org/debian/pool/main/w/webcam-server/webcam-server_0.50-3_armel.deb dpkg -i webcam-server_0.50-3_armel.deb cp -apr /usr/share/doc/webcam-server/applet/ /var/www/
Die Datei "webcam.html" in /var/www/applet wie folgt ändern und die IP der Dockstar eintragen
nano /var/www/applet/webcam.html
<html> <head> <title>WebCam</title> </head> <APPLET CODE = "WebCamApplet.class" archive="applet.jar" WIDTH = "640" HEIGHT = "480"> <param name=URL value="http://<Ip_der_DS>:8888"> <param name=FPS value="10"> <param name=width value="320"> <param name=height value="240"> </APPLET> </body> </html>
Folgendes Start-Skript erstellen
cd /root nano webcam-server-start.sh
Inhalt
#!/bin/sh export LD_PRELOAD=/usr//lib/libv4l/v4l1compat.so webcam-server -s -q 100 -g 320x240 -c "%d-%m-%Y %H:%M:%S" exit
Rechte vergeben
chmod 755 webcam-server-start.sh
Dockstar neu starten, danach Script starten
./webcam-server-start.sh
Mit einem Internet-Browser aufrufen "http://Ip_der_DS/applet/webcam.html" und freuen. Problem an dieser Methode ist, dass das SCript jedes Mal neu gestartet werden muss und das Applet nicht besonders sauber läuft. Wenn es schnell gehen muss, nach dieser Methode einrichten und dann das Bild in die StandardWebcamseiten einbinden "http:dockstar:8888"
Quellen, weitere Links
- http://hacktivision.com/index.php/2009/06/16/setting-up-an-ubuntu-webcam-server
- Anleitung für motion
- Homepage Motion
Quellen: