steiner-gtk.de
Docs » Konfiguration Videoüberwachung mit Motion

Konfiguration Videoüberwachung mit Motion

RaspberryPi: Konfiguration Videoüberwachung mit Motion

Der Server

Als Grundlage für den Server dient Ubuntu Server 10.04 [2]. Der spätere Überwachungsrechner benötigt weder Tastatur 
noch Monitor. Beim Partitionieren gilt es zu beachten, dass abhängig von der Anzahl der Kameras, der Dauer der 
Zeiträume und den Aktivitäten in den zu überwachenden Bereichen erhebliche Datenmengen anfallen, sodass Sie gleich 
zu Beginn genügend Platz für Bilder und Videos auf der Zielpartition einplanen sollten.
Um den Server später aus der Ferne zu administrieren, wählen Sie bei der Frage nach der zu installierenden Software 
auch den SSH-Server aus. Nach der Installation des Grundsystems lohnt es sich, dieses mit sudo apt-get update, 
sudo apt-get upgrade auf den neuesten Stand zu bringen. Anschließend braucht es noch einige zusätzliche Pakete, 
bevor es an die eigentliche Konfiguration geht. Dazu zählt ntp, um die Serverzeit zu synchronisieren – 
So zeigen die Überwachungsvideos stets die korrekte Zeit an. Das Paket acpi-support bietet einen einfachen 
Weg, um den Motion-Server abzuschalten, und zu guter Letzt brauchen Sie natürlich motion selbst.

Motion konfigurieren

Nach der Installation ist Motion so konfiguriert, dass es nicht automatisch beim Booten als Daemon startet. 
Um dem abzuhelfen, setzen Sie in der Datei /etc/default/motion den Wert start_motion_daemon auf yes. 
Um das Programm im Daemon-Modus zu betreiben, benötigt es eine Möglichkeit, eine Systemdatei und die Bilder abzulegen. 
Im Beispiel kam für die Dateien die Home-Partition zum Einsatz, wo mit mkdir /home/motion und 
chown -R motion:motion /home/motion ein passendes Verzeichnis für die Programmdaten entstand.
Jetzt geht es daran, Motion an die lokalen Gegebenheiten und Bedürfnisse anzupassen. 
Alle Einstellungen finden sich in /etc/motion/motion.conf. Kommen mehrere Kameras zum Einsatz, sind 
für deren individuelle, von den Standards abweichende Einstellungen die Dateien threadNummer.conf vorgesehen. 
Die Hauptkonfigurationsdatei enthält Angaben, die für alle Kameras gelten. Dazu zählen unter anderem der Speicherort 
der Daten, das Format des Videostreams und der Bildern, die Zugangsdaten für den Zugang über ein Webinterface oder Aktionen, 
die die Software bei Bewegungen auslöst. Auf dem Server verwenden Sie die Applikation über die Option daemon on, 
um Motion im Hintergrund zu betreiben. Die Werte für das Videogerät (videodevice /dev/video0) übernehmen Sie 
in der Regel ebenso wie die Schalter v4l2_palette und input. Letzteres erfordert Änderungen, wenn es sich bei den 
Kameras nicht um Webcams handelt, sondern um Geräte, die Sie über eine Video-Capture-Karte angeschlossen haben. 
Für weitere Kameras verwenden Sie die oben genannten zusätzlichen Konfigurationsdateien.

Abmaße

Die Punkte width und height hängen von den verwendeten Kameras ab und sollten möglichst einem Vielfachen von 16 entsprechen. 
Eine höhere Auflösung fängt zwar mehr Informationen ein, allerdings fallen in diesem Fall bedeutend mehr Daten an, 
und nicht jede Kamera unterstützt hohe Auflösungen. Experimentieren Sie bei Bedarf mit diesen Werten, um die optimalen 
Einstellungen zu ermitteln. Die gefundenen Werte nutzen Sie für das Maskieren, um Änderungen in bewegten, 
aber uninteressanten Bereichen zu ignorieren. Die Variable framerate steuert, wie viele Bilder Motion pro Sekunde aufnimmt. 
Standardmäßig steht hier 2 als Wert, was bedeutet, dass das Programm zwei Bilder in der Sekunde aufnimmt.  
Überwacht die Software enge Bereiche, dann nimmt Motion entweder gar nichts oder nur einen Schatten auf, 
wenn eine Person den Bereich zügig durchquert. Werte zwischen 10 und 15 Bildern pro Sekunde sorgen aber dafür, 
dass Motion alle Bewegungen einfängt. Der nächste Punkt, der Aufmerksamkeit verdient, ist threshold 1500. 
Das bedeutet, dass die Software Änderungen von 1500 Pixeln als Bewegung interpretiert. Der Wert entspricht bei einer 
Auflösung von 640x480 Pixeln weniger als einem halben Prozent des Bilds. Dabei mutiert schon eine vor dem Fenster hüpfende Krähe 
zum Filmstar, sodass hier ein höherer Wert nichts schadet. In Tests erwiesen sich Werte zwischen 3000 und 5000 Pixeln als 
ausreichend, 
um Bewegungen größerer Objekte festzuhalten. Bei Werten jenseits 15 000 marschierten dann Personen unbemerkt durchs Bild.
Unter dem Abschnitt Image File Output nehmen Sie bei Bedarf Einstellungen für die Ausgabe der Bilder vor. 
Da es viel mehr Zeit braucht, mehrere tausend Bilder auszuwerten, als ein paar Videos anzusehen, kam im Beispiel die Option 
output_normal off 
zum Einsatz, so dass Motion vom Speichern von Bildern absieht. Die Angaben für Videos nehmen Sie direkt im folgenden Abschnitt 
FFMPEG related options vor. Die Variable ffmpeg_cap_new on sorgt dafür, dass Motion MPEG-Videos mit Hilfe von Ffmpeg in   
Echtzeit encodiert. Der Wert der Option ffmpeg_video_codec definiert das Dateiformat, in dem Videos auf dem Server landen.

Schnappschuss gefällig

Wünschen Sie in bestimmten Zeitabschnitten Schnappschüsse des Überwachungsbereichs, dann legen Sie das Zeitintervall in 
Sekunden in der Variable snapshot_interval fest. Die Variable 
text_right sorgt dafür, dass die Software in der rechten unteren Ecke einen Text einblendet, der in der Standardeinstellung darüber 
informiert, wann ein Video oder Bild aufgenommen 
wurde und welches interne Ereignis dies ausgelöst hat. Bei Bedarf passen Sie das Textfeld an eigene Bedürfnisse an 
(siehe Tabelle "OSD-Informationen".
Der Parameter target_dir gibt das Zielverzeichnis an, in dem die Bilder und Videos landen. Standardmäßig legt das Programm alle 
Daten in /tmp ab – mit der Folge, dass Ubuntu sie nach  
einem Neustart von Ubuntu ins Nirwana schickt. Im Beispiel ist das nicht erwünscht, so dass hier das Verzeichnis entsprechend 
/home/motion/videos lautet.

Über das Netz

Motion kommt mit einem kleinen eigenen Webserver, mit dessen Hilfe es einen Livestream der Kameras ins Netz stellt. 
Wer das Feature nutzen möchte, nimmt die nötigen Änderungen in der Sektion Live Webcam Server vor. Nun mag es zwar sein, 
dass nur Wenige die Bilder live betrachten wollen. Bei der HTTP-basierten Steuerung (HTTP Based Control) sieht das schon 
wieder anders aus: Ein Zugriff von außen ergibt durchaus Sinn – etwa, um die Kameras für eine bestimmte Zeit zu deaktivieren 
oder deren Status aus der Ferne abzufragen. Da derartige Zugriffe vermutlich nur selten vom Überwachungsserver aus geschehen, 
gilt es, den Zugriff von außen zuzulassen (control_localhost off) und den Passwortschutz zu aktivieren, wofür Sie in der Zeile 
control_authentication das kommentierende Semikolon am Beginn entfernen und die Platzhalter username und password durch eigene Werte ersetzen.

Startklar

Damit ist Motion fertig eingerichtet. Bewegt sich etwas vor der Kamera, die Sie dem Programm zugeordneten haben, sollten im 
Zielverzeichnis einzelne Videos auftauchen. Positionieren Sie 
das Gerät richtig und aktivieren Sie einem Testlauf. Haben Sie die richtige Position gefunden, fixieren Sie die Webcam am besten: 
Oft scheitern Aufnahmen, weil Unbeteiligte 
unabsichtlich gegen das Kabel stoßen und so die Aufnahmeposition verändern.
Einem längerer Testlauf fördert dann schnell erste Kandidaten für kritische Elemente im zu überwachenden Bereich ans Tageslicht, 
die zu Fehlalarmen führen. Das können sich im Wind 
wiegende Bäume und Sträucher oder flatternde Sonnensegel und Zelte sein. Motion bietet mehrere Möglichkeiten, diese Fehlerquellen 
zu beseitigen. Zum einen haben Sie die Möglichkeit,  
fest definierte Bereiche, die sogenannten Areas, ein- und auszublenden, zum anderen legen Sie bei Bedarf Masken über das Bild.

Kamera hinzufügen

Eine einzelne Kamera bringt den Motion-Server in der Regel nicht in Bedrängnis. Läuft soweit alles, fügen Sie zusätzliche Kameras 
mit nur wenigen Handgriffen hinzu. Sie erstellen dann für jede Kamera eine Konfiguration und binden Sie diese in die motion.conf ein. 
Verfügen alle Kameras über identische Auflösungen, genügen hier der Name des Geräts (videodevice) und eventuell die zugehörigen 
Bereiche oder Maskierungsdateien. Haben die Kameras ähnlich aussehende Bereiche im Blick und möchten Sie auf einen Blick erkennen, 
von welcher Kamera die Bilder kommen, entfernen Sie dazu entweder das Kommentarzeichen in der Zeile text_left oder ergänzen text_right um ein Kamera %t.

Ereignisse
Jede von Motion erfasste Aktivität (siehe Tabelle "Ereignisse") erlaubt eine Folgeaktion, wie etwa den Versand einer E-Mail 
beziehungsweise SMS oder das Ausführen eines Skripts auf dem  
Server. Um eine Mail zu versenden, bedarf es der Mailutils und eines kleinen SMTP-Clients wie MSMTP [3], die Sie mit 
sudo apt-get install mailutils msmtp msmtp-mta installieren.

Aktivität	        Beschreibung
on_area_detect	Bewegung in vorher bestimmten Regionen
on_motion_detected	Bewegung im Bild festgestellt
on_event_start	Start eines Ereignisses
on_event_end	        Ende eines Ereignisses
on_movie_start	Start einer Video-Aufnahme
on_movie_end	        Ende einer Video-Aufnahme
on_picture_save	Abspeichern eines Bilds
on_camera_lost	Kamera nicht erkannt / Kontakt zur Hardware verloren

Anschließend ist es ein leichtes, den Server anzuweisen, bei bestimmten Ereignissen eine Mail zu versenden, wie Listing 1 
m Beispiel einer verlustig gegangenen Kamera demonstriert.

Listing 1
on_camera_lost echo "Kamera %t am %d.%m.%Y um %T bei Ereignis %v verloren." | mail -s "[Motion] Kamera verloren" empfaenger@mail.provider

Steuern via HTTP

Motion bietet die Möglichkeit, die Software über den Browser zu steuern. So haben Sie die Möglichkeit, das Programm auch von der 
Kommandozeile aus zu bedienen (Abbildung 5), indem Sie 
die Links mit einem Werkzeug wie Wget aufrufen. Um die Software von einem anderen Rechner aus zu steuern, deaktivieren Sie wie 
bereits beschreiben die Option control_localhost in der 
Hauptkonfiguration. Standardmäßig erreichen Sie Motion über den Port 8080. Die aufzurufende URL setzt sich wie folgt zusammen:
http://Server<§§>:<§§>Port<§§>/Thread<§§>/Kommandokategorie/Aktion$Parameter
Hinter Thread verbirgt sich die Nummer der jeweiligen Kamera. Setzen Sie mehr als eine Kamera ein, fragen Sie über den Thread 0 die 
Standardeinstellungen ab und ändern diese bei Bedarf. 
Die Tabelle "HTTP-Aktionen" listet die wichtigsten Kategorien und Kommandos auf. Setzen Sie zum Beispiel eine Logitech Quickcam 
Sphere/Orbit in Verbindung mit Motion ein, ist es 
möglich, deren Servermotoren anzusteuern und Bewegungen zu verfolgen.
Aktion	        Beschreibung
config/list	        Konfiguration anzeigen
config/write	        Konfigurationsdateien neu schreiben
config/get	        Wert einer Option anzeigen
config/set	        Wert einer Option ändern
action/makemovie	Video-Aufnahme starten
action/snapshot	Schnappschuss auslösen
action/restart	Jeweiligen Thread neu starten
action/quit	        Thread beenden
detection/status	Status der Kamera anzeigen
detection/start	Aufnahme starten
detection/pause	Aufnahme pausieren
detection/connection	Verbindung prüfen

Komfort

Haben Sie den Motion-Server einmal eingerichtet und läuft dieser rund, vereinfachen einige Skripte Abruf und Anzeige der frisch 
hinzugekommenen Aufzeichnungen. Um neue Videos auf den 
Arbeitsrechner oder Wohnzimmer-PC zu holen, bietet sich das Rsync-Protokoll [4] an. Rsync überträgt nur die Daten, die sich 
geändert haben, wodurch erheblich weniger Datenvolumen 
anfällt. Das macht sich vor allem dann bezahlt, wenn Quell- und Zielrechner nicht im selben Netzwerk stehen und der Quellrechner 
nur über einen gewöhnlichen DSL-Anschluss mit der 
entsprechend dürftigen Upload-Rate arbeitet.
Listing 2 zeigt ein kommentiertes Rsync-Skript, das die Videos vom Server holt und abspielt. Es speichert in timestamp.txt die 
Zeitstempel der bereits geholten und angesehenen Videos,   
sodass es nur diejenigen Videos automatisch wiedergibt, die seit dem letzten Abruf hinzu kamen.
Listing 2
# Variable für Zeitstempeldatei
TIMEFILE=~/timestamp.txt
# Mediaplayer
PLAYER=/usr/bin/mplayer
# Kommandozeilenargument auswerten
case $1 in
# neue Ueberwachungsaufzeichnungen holen und abspielen neu)
# Synchronisieren
# --progress  Fortschritt anzeigen
# --delete    Remote geloeschte Dateien auch lokal loeschen
# -a          Rekursiv alle Dateien holen
# -v          Aktuell bearbeitete Datei anzeigen
# -h          Für Menschen lesbare Ausgaben verwenden
# -e          Zu benutzende Remote-Shell
rsync --progress --port=2200 --delete -avhe ssh USER@SERVER:/home/motion/videos ~/orwell
# Dateien abspielen, falls neuer als Zeitstempel-Referenzdatei
for FILE in ~/orwell/motion/*.swf; do
  if [ "$FILE" -nt "$TIMEFILE" ]; then
    $PLAYER $FILE
    # Zeitstempel der aktuell gezeigten Datei speichern
    touch -r $FILE $TIMEFILE
  else
    echo "$FILE bereits gesehen"
  fi
done
;;
# alle (auch die alten) Filme abspielen
alle)
$PLAYER ~/orwell/motion/*.swf
;;
*)
printf "Falscher Aufruf:\n\"$0 neu\" um neue Filme zu holen und abzuspielen\n\"$0 alle\" um al[lt]e Filme abzuspielen\n\n"
;;
esac
exit 0

Vor allem in "bewegten Zeiten" fallen Unmengen von Daten an, sodass die Festplatte des Motion-Servers irgendwann unweigerlich 
voll läuft. Ein kleiner Cronjob hilft, dem komfortabel 
entgegenzuwirken. Die Anweisung aus Listing 3 sorgt beispielsweise dafür, dass der Server bei jedem Neustart die Videos ins Nirwana 
schickt, die mehr als drei Tage auf dem Buckel haben.
Listing 3
@reboot /usr/bin/find /home/motion/videos -mtime +3 -exec rm {} \;
Previous Next

steiner-gtk.de

Table of Contents

Impressum / Datenschutzerklaerung