Raspberry Pi – Kameramodul als Überwachungskamera (Livestream)
Mit dem offiziellen Kamera-Modul für den Raspberry Pi kann mit wenig Aufwand eine Überwachungskamera mit Live-Webstream konfiguriert werden. In der folgenden Schritt-für-Schritt Anleitung beschreibe ich die Konfiguration detailliert. Die Anleitung wirkt zwar etwas länger, ist jedoch für Jedermann recht einfach umzusetzen.
Schwierigkeitsgrad:
Benötigte Komponenten
Neben einem grundkonfigurierten Raspberry Pi mit Raspbian OS, wird ein stabiles und ausreichend dimensioniertes Netzteil (!) und natürlich ein Kamera-Module benötigt.
Kamera-Modul
Das offizielle Raspberry Pi Kamera Modul misst gerade einmal 25×20×9mm und ist mit einem 8 MP-Sensor (3280 x 2464 Pixel) mit Fixfokus-Objektiv ausgestattet, der hochauflösende Fotos und Videos ermöglicht. Das Kamera Modul gibt es in zwei Ausführungen:
StandardvarianteDie Standardausführung des offiziellen Raspberry Pi Kamera Moduls ist mit einem IR Filter ausgestattet und daher ideal für normale Aufnahmen bei ausreichender Beleuchtung / bzw. Tageslicht. | NoIR VarianteIm Unterschied zur Standardausführung besitzt die NoIR-Variante keinen IR Filter. Mit dem NoIR-Modul und einer Infrarotbeleuchtung kann man daher Nachtaufnahmen anfertigen. |
Leistungsfähiges Netzteil
Die wohl wichtigste Komponente für den stabilen Betrieb des Raspberry Pi ist das Netzteil. Viele Probleme, wie z.B. Instabilität, sind auf ein unzuverlässiges Netzteil zurückzuführen. Deshalb sollte man lieber den ein oder anderen Euro mehr in ein hochwertiges Netzteil investieren.
Weiterführende Infos
Im separaten Artikel Raspberry Pi – Empfehlung: Das richtige Netzteil habe ich die Thematik nochmals im Detail behandelt.
Inbetriebnahme Kamera-Modul
Kamera anschließen
Das kleine Kamera-Modul wird direkt an die CSI-Schnittstelle (Camera Serial Interface) des Raspberry Pi angeschlossen. Die CSI-Schnittstelle des Raspberry Pi befindet sich zwischen dem HDMI-Anschluss und Audioausgang. Diese wird über das 15-polige Flachbandkabel mit dem Kamera-Modul verbunden. Dazu zieht man den Steckverbinder der CSI-Schnittstelle nach oben, setzt das Flachbandkabel mit blauer Markierung Richtung Ethernet-Anschluss ein und drückt den Verschluss wieder nach unten. Fertig!
Kamera aktivieren
Bevor wir die Kamera per Befehl ansprechen können, muss zuerst der Kamera-Support in Raspbian aktiviert werden. Die Aktivierung erfolgt über das Konfigurationstools raspi-config. Dort einfach Punkt 5 anwählen und die Kamera auf Enable setzen. Zum Abschluss muss der Raspberry Pi dann noch rebootet werden, bevor die Kamera genutzt werden kann.
$ sudo raspi-config
Nach dem Neustart testen wir die Kamera, indem wir kurz ein erstes Testbild knipsen. Um ein einzelnes Bild mit der Kamera aufzunehmen, genügt der Befehl:
$ raspistill -o test.jpg
War dies erfolgreich, können wir uns mit der eigentlichen Konfiguration befassen.
V4L-Treiber für das Kameramodul
Um das Kameramodul im nächsten Konfigurationschritt dann in motion verwenden zu können, muss die Kamera mit dem Treiber V4L / Video4Linux funktionieren und als Video-Device (/dev/videoX) erkannt werden. Dies war in der Vergangenheit ein Problem. Glücklicherweise ist der V4L-Treiber für die offizielle Raspberry Pi Kamera jedoch mittlerweile bereits in Raspbian enthalten, was die Sache deutlich vereinfacht. So müssen wir lediglich die Module v4l2_common und bcm2835-v4l2 laden:
$ sudo modprobe v4l2_common $ sudo modprobe bcm2835-v4l2
Damit das Kameramodul auch nach einem Neustart noch als Video-Device erkannt wird, tragen wir die Module in die Datei /etc/modules ein:
$ echo "v4l2_common" | sudo tee -a /etc/modules $ echo "bcm2835-v4l2" | sudo tee -a /etc/modules
Laufen die Befehle ohne Fehlermeldung durch, müsste nun das benötigte Video-Device verfügbar sein. Dies können wir mit folgendem Befehl überprüfen. Als Ausgabe müßte im Idealfall /dev/video0 aufgelistet werden:
$ ls /dev/video*
Motion – Installation & Konfiguration
Das freie V4L-Aufnahmeprogramm Motion ist ein sehr mächtiges Werkzeug, das Bewegungen erkennen und diese als Video oder Einzelbilder (optional) speichern kann. Außerdem kommt Motion mit einem eigenen kleinen Webserver, mit dessen Hilfe es einen Livestream der Kamera(s) ins Netz stellen kann. Genau das wollen wir.
Motion ist in den Repositories aller gängigen Linux-Distributionen bereits enthalten. Um Motion unter Raspbian zu installieren, geben wir in der Konsole folgenden Befehl ein:
$ sudo apt-get install motion
Vorbereitung
Soll Motion immer beim Systemstart ausgeführt werden, bearbeiten wir die Datei “/etc/default/motion”:
$ sudo nano /etc/default/motion
Hinter dem Eintrag start_motion_ daemon, muss dazu das “no” durch “yes” ersetzt werden.
Außerdem erstellen wir einen Ordner, der als Speicherort für die Aufnahmen dienen soll und geben diesem die nötigen Schreibrechte:
$ mkdir /home/pi/cam $ sudo chgrp motion /home/pi/cam $ chmod g+rwx /home/pi/cam
Livestream einrichten [Raspbian Jessie]
Wie unter Linux völlig üblich, verzichtet auch Motion auf eine grafische Steuerung und kann detailliert über eine Konfigurationsdatei instruiert werden. Die Einstellungen finden alle in der Datei /etc/motion/motion.conf statt. Wir editieren die Konfigurationsdatei mit folgendem Befehl:
$ sudo nano /etc/motion/motion.conf
Um den Netzwerkstream unserer Kamera zu aktivieren, müssen dort folgende Einstellungen angepasst werden:
daemon off | daemon on | |
target_dir /tmp/motion | target_dir /home/pi/cam | |
stream_localhost on | stream_localhost off |
Motion bietet eine Vielzahl an weiteren Einstellmöglichkeiten. Die folgenden Parameter sind optional, sollten jedoch an die eigenen Bedürfnisse und Einsatzzwecke angepasst werden:
width 640 | Breite des Videos (Pixel) |
height 480 | Höhe des Videos (Pixel) |
framerate 10 | Empfangene Bilderrate pro Sekunde |
threshold 5000 | Empfindlichkeit der Bewegungserkennung (Anzahl Pixel) |
ffmpeg_output_movies off | Keine Videos speichern bei erkannter Bewegung |
output_pictures off | Keine Bilder speichern bei erkannter Bewegung |
stream_port 8081 | Port über den der Livestream erreichbar ist |
stream_quality 75 | Bildqualität in Prozent (Livestream) |
stream_motion on | Ohne Bewegung nur 1 Bilder pro Sekunde (Livestream) |
stream_maxrate 10 | Max. Bilder pro Sekunde (Livestream) |
Passwortschutz
Wenn der Kamera-Stream auch aus dem Internet erreichbar sein soll, sollte dieser unbedingt mit einem Passwort geschützt werden um ungewollte Beobachter auszusperren. Motion bringt diese Einstellmöglichkeit bereits mit und muss nur noch aktiviert werden:
stream_auth_method 1 | Passwortschutz für Kamera-Stream aktivieren |
stream_authentication username:password | Benutzername + Passwort festlegen |
Abschließend können wir den Motion-Dienst starten:
$ sudo service motion start
Kamera-Livestream testen
Die Einrichtung von Motion ist damit geschafft und wir können den Kamera-Livestream nun testen. Dazu rufen wir einfach im Webbrowser (Mozilla Firefox, Chrome, etc.) die lokale IP-Adresse des Raspberry Pi gefolgt vom Port auf (z.B. 192.168.0.42:8081). Alternativ kann auch der VLC Player verwendet werden. Im Menü unter „Medien Netzwerkstream öffnen“ die Adresse mit Port angeben.
Frage: Warum stellt sich die Helligkeit nicht selbst ein? Habe die NoIR, wenn es tagsüber hell wird, ist mein Bild komplett überbelichtet und erkennt natürlich so nichts mehr. Starte ich Motion dann neu, ist alles wieder i.o. bis es dunkel wird, dann ist das Bild trotz IR schwarz. Motion wieder neu starten und alles wieder super.
Wie kann man das Problem lösen? auto_brightness habe ich schon probiert, ohne Effekt.
Steuert der Treiber die Kamera nicht richtig zwecks Helligkeit?
Habe das gleich Problem. Ist es bei Dir schon gelöst? Danke für einen Tipp.
Hi, ich muss sagen das ist einer der besten Artikel die ich über das Thema gefunden habe. Einfach nur cool. Vielen Dank.
Hallo Zusammen!
Danke für dieses tolle Tutorial! Wirklich spitze!
Eine Frage zur CPU Last, ich nutze exakt die selben Config Werte mit einem ZeroW und habe bei keiner erkannten Bewegung eine CPU Auslastung von ~40%, sobald eine Bewegung erkannt wird, bin ich durchgängig bei 100% CPU Last.
Das kommt mir ein bisschen arg viel vor?
Wie ist das bei euch? Habt ihr auch so eine hohe Last?
Mfg Alex
Hurra, alles funktioniert dank Deiner Anleitung!
Eins kriege ich allerdings nicht hin: den Paßwortschutz. Wo und wie ganz exakt gebe ich denn das ein? Ich habe schon so viel ausprobiert. Aber das Ergebnis ist immer dasselbe: die Abfrage von user und password erscheint beim Aufrufen des streams, aber ob ich nun meinen gewählten user und das gewählte Paßwort eingebe oder alles frei lasse oder sinnlose Werte einsetze, ich kann immer den stream öffnen. Was könnte ich denn nur falsch machen?
Beste Grüße
Ulrich
Leider funktioniert bei mir das Passwort welches man eingeben muss nicht richtig, denn bei mir kann man alles mögliche als Passwort und Name eingeben im Browser, und man kommt trotzdem zum Livestream. Und ich habe in der Datei auch die Methode der Autentifikation auf 1 gesetzt, und ein Benutzername und Passwort, abgetrennt mit einem Symikolion (;), festgelegt. Aber sonst hat mir das Tutorial sehr geholfen.
Hey Jannis,
mit Doppelpunkt abtrennen
USERNAME:PASSWORT
Viele Grüße
Andi
Hat alles wunderbar funktioniert. Danke für das aufschlußreiche Tutorial. EIn PRoblem habe ich allerdings. Die Bilder sind stark überbelichtet, ebenso der Video Stream. Hatte mal das NoIr Modul im Einsatz. Jetzt aber wieder das „Normale“. Gibt es Inge STelle an der ich drehen kann?
Hallo,
das mit der Überbelichtung ist merkwürdig.
Ich nutze MotionEyeOS (was aber auch auf dem Tool Motion basiert) mit einer Electreeks Nachtsichtkamera und filme durchweg 24/7.
Das Bild ist einwandfrei und schaltet auch ordnungsgemäß zwischen Tag und Nacht um.
Vielleicht probierst du dasselbe einfach mal mit MotionEyeOS. BTW hast du dort noch diverse Einstellungsmöglichkeiten zur Überwachung un Objekterkennung. Du bekommst auch einen http-livestream zur Verfügung gestellt, was ich ziemlich praktisch finde..
LG
Ausgezeichnet!
Bei mir kommt bei: “sudo modprobe v4l2_common” kommt bei mir die Fehlermeldung:
“modprobe: FATAL: Module v4l2_common not found in directory /lib/modules/5.10.17-v7x”. Hat jemand eine Idee was ich machen muss.