Eine Überwachungskamera mit einem Raspberry Pi nichts einfacher als das? Auf vielen Seiten im Internet findet man dazu einen Verweis auf motioneyeos, so auch hier im Blog. Aber, das Betriebssystem wird nicht mehr weiter entwickelt.
Es gibt aber Alternativen, die sich genau so einfach installieren und managen lassen.
Das Ziel
Eine kleine Überwachungskamera,
- die Bilder und/oder Videos von Bewegung aufzeichnet,
- Zeitrafferaufnahmen macht,
- der überwachte Bereich im Webbrowser oder VLC in (fast) Echtzeit (Stream1 angeschaut werden kann
- die Bilder-/Video-Aufnahmen automatisch auf den eigenen Client übertragen werden
Was wird benötigt?
Hardware: Raspberry Pi ( die Hardwareanforderungen sind nicht wirklich groß, es tut auch ein altes Modell)

- motion ( ➡ https://motion-project.github.io/motion_guide.html)
- syncthing (Optional) ➡ https://syncthing.net/
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Betriebssystem
Als Betriebssystem kommt das aktuellste Raspberry Pi OS zum Einsatz. Es kann nach dieser Anleitung auf die SD-Karte geschrieben werden.
Das System kann noch ein wenig abgesichert werden. Dazu kann man z.B. fail2ban, unattender-upgrades, ufw, etc. installieren und konfigurieren.
motion installieren
Im nächsten Schritt ist motion
aus den Repositories zu installieren.
sudo apt update && sudo apt dist-upgrade && sudo apt autoremove
sudo apt install motion
Die Konfigurationsdatei motion.conf
findet sich im Verzeichnis /etc/motion/motion.conf
.
Die einzelnen Optionen sind auf der offiziellen Seite des Projekts genau beschrieben.
➡ https://motion-project.github.io/motion_config.html#Configuration_OptionsAlpha
Ein kleines Beispiel soll zeigen, wie einzelne Funktionen in der Konfigurationsdatei aktiviert werden.
# Backup anlegen
sudo nano /etc/motion/motion.conf /etc/motion/motion.conf-bak
# Datei bearbeiten
sudo nano /etc/motion/motion.conf
Den Stream anschalten, damit man darauf mit einem Webbrowser oder VLC ( ➡ https://www.videolan.org/vlc/) zugreifen kann.
############################################################
# Live stream configuration parameters
############################################################
# The port number for the live stream.
stream_port 8081
# Restrict stream connections to the localhost.
stream_localhost off
# This parameter establishes the username and password to use for the stream.
# The syntax is username:password
# stream_authentication username:password
Je nach verwendetem Kameramodell kann die Auflösung angepasst werden. Dazu sind die Einträge entsprechend ein- oder auszuschalten.
- ein = ohne #
- aus = mit #
# Image width in pixels.
width 640
#width 1280
#width 1920
# Image height in pixels.
height 480
#height 720
#height 1080
rotate 180
text_changes on
text_double on
Nach jeder Änderung an der motion.conf
ist die Datei neu einzulesen, also motion neu zu starten.
sudo systemctl restart motion
Befehlsliste für motion
sudo systemctl start motion
sudo systemctl restart motion
sudo systemctl stop motion
syncthing installieren
Die Installation von Syncthing ist optional. Das Tool wird nur benötigt, wenn die Bilder und/oder Videos von der Kamera automatisc auf einen anderen Computer übertragen werden sollen.
Die Installation von Syncthing ist relativ schnell erledigt.
sudo apt install syncthing
Syncthing muss PRO Benutzer auf der Kamera gestartet werden. Ein Benutzer ist dafür ausreichend.
sudo systemctl start syncthing@benutzername
Damit Syncthing auch automatisch mit dem Pi gestartet wird, ist der Autostart ebenfalls PRO Benutzer anzulegen
sudo systemctl enable syncthing@benutzername
Befehlsliste für Syncthing
sudo systemctl status syncthing@benutzer
sudo systemctl stop syncthing@benutzer
sudo systemctl restart syncthing@benutzer
Wer Syncthing nicht installieren möchte, kann auch rsync für das Übertragen der Bilder/Videos auf den eigenen Client verwenden. Am Einfachsten ist dann das Anlegen eines eigenen Shell Skripts, dass in regelmäßigen Abständen mit einem CRON gestartet wird.
Konfigurationsdatei
Die Konfigurationsdatei für Syncthing kann für jeden Benutzer individuell angepasst werden. Sie befindet sich im Home-Verzeichnis.
~/.config/syncthing
Firewall
Für ufw wird eine Profil-Datei mit ausgeliefert, die für die Firewallregel verwendet werden kann.
Infos zu ufw
gibt es hier
➡ https://strobelstefan.de/2021/03/28/ufw-app-profile-fuer-die-nextcloud/
sudo ufw allow syncthing
➡ https://docs.syncthing.net/users/firewall.html
SSH-Zugriff
Da der Raspberry Pi Headless betrieben wird, steht dort keine grafische Benutzeroberfläche für die Administration zur Verfügung.
Mithilfe eines SSH-Tunnels (TCP-Forwarding) kann jedoch die grafische Oberfläche vom Pi auf den eigenen Client (oder einen anderen PC) geholt werden, was die Administration von Syncthing sehr vereinfacht.
SSH-Verbindung herstellen:
ssh benutzername@ip-adresse-kamera -L 18384:localhost:8384
Auf dem eigenen Client kann nun im Webbrowser die Syncthing-Oberfläche des Pi aufgerufen werden.
http://localhost:18384/
In der sshd_config
der Kamera ist zu prüfen, ob die Option AllowTcpForwarding
auf yes
gestellt ist.
###
# AllowTcpForwarding
###
# Specifies whether TCP forwarding is permitted. The default is ''yes''.
# Note that disabling TCP forwarding does not improve security unless users are also
# denied shell access, as they can always install their own forwarders.
AllowTcpForwarding yes
Der eigene Client
Auf dem eigenen Client benötigt man lediglich einen Webbrowser, um den Stream der Überwachungskamera anzuschauen.
In die Adresszeile ist einzutragen:
http://ip-addresse:8081
Auch mit VLC lässt sich der Stream der Kamera öffnen. Dazu legt man sich ein kleines Skript mit dem Namen vlc.xspf
an. Es ist lediglich der Eintrag http://ip-addresse:8081
zu ändern.
<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1">
<title>motioneyeos</title>
<trackList>
<track>
<location>http://ip-addresse:8081/</location>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>0</vlc:id>
<vlc:option>network-caching=1000</vlc:option>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:item tid="0"/>
</extension>
</playlist>
siehe auch
➡ MotionPiOS – Kamerakachelübersicht
➡ motioneyeos in VLC anschauen
Möchte man auch die Bilder und/oder Videos von der Überwachungskamera auf den eigenen Client holen oder auf einen anderen Laptop/Server übertragen, dann ist Syncthing zu installieren.
Für Mac gibt es ein Homebrew Cask
brew install syncthing
➡ https://formulae.brew.sh/formula/syncthing#default
Nach der Installation kann das Tool gestartet werden und im Webbrowser aufgerufen werden, um eine Verbindung zur Kamera herzustellen.
https://127.0.0.1:8384/
Damit man sehr einfach die Verbindung zum Client auf der Kamera freigeben kann, ist der SSH-Tunnel wie oben beschrieben aufzubauen.
Auf dem eigenen Client kann dann Synchting der Kamera im Webbrowser aufgerufen werden und auch konfiguriert werden.
http://localhost:18384/
Syncthing gibt es auch als Dockerimage. Damit kann man das kleine Tool auch auf dem eigenen NAS (Synology, omv, etc.) sehr einfach installieren.
Weitere Tweaks für die Kamera
USB-Stick anschließen
An der Kamera kann ein externer USB-Stick angeschlossen werden, der eine größere Speicherkapazität als die interne SD-Karte hat.
In der motion.conf
ist der Speicherpfad dann entsprechend einzustellen.
# USB-Stick ist NTFS-formatiert
sudo apt install ntfs-3g
# USB-Stick anschließen und UUID herausfinden
sudo blkid
# Eintrag für das Mounten des USB-Sticks in die /etc/fstab eintragen
# Die UUID des USB-Sticks wird hier benötigt
sudo nano /etc/fstab
UUID=xxxxxxx /mnt/motion ntfs defaults,auto,umask=000,users,rw 0 0
# Mount Point für USB-Stick anlegen
sudo mkdir /mnt/motion
# USB-Stick mounten
sudo mount /mnt/motion
# Ordner für Bilder / Videos auf USB-Stick anlegen
sudo mkdir /mnt/motion/pictures
# Ordner für motion logfiles anlegen
sudo mkdir /mnt/motion/logs
In der motion.conf
sind die Pfade anzupassen, damit die Bilder/Videos und die Logfiles auf dem USB-Stick gespeichert werden.
sudo nano /etc/motion/motion.conf
In der Datei sind die Zeilen anzupassen.
target_dir /mnt/motion/pictures
log_file /mnt/motion/logs/motion.log
Nach dem Speichern ist motion neu zu starten, um die Änderungen einzulesen.
sudo systemctl restart motion
Automatisches Löschen von Bildern/Videos auf der Kamera
Die Bilder/Videos lassen sich auf der Kamera sehr einfach mit einem kleinen Shellskript löschen.
sudo mkdir /etc/scripts
sudo nano /etc/skripte/autodelete.sh
Der Inhalt von autodelete.sh
#!/usr/bin/env bash
#
# This scripts deletes files older than x days
#
# Copyright by Stefan Strobel
# https://www.strobelstefan.de
###################################
# Variables
###################################
# Script name
MAINSCRIPT=$(basename -- "$0")
# Storage device as defined in your /etc/fstab.
MOUNTPOINT='/mnt/motion/pictures/'
###################################
# Delete Old Files
###################################
find ${MOUNTPOINT}* -mtime +7 -exec rm {} \;
exit 0
Die Datei ist noch ausführbar zu machen und die Rechte sind anzupassen.
sudo chmod +x /etc/scripts/autodelete.sh
sudo chown root:root /etc/scripts/autodelete.sh
Der Cron ist danach anzulegen
sudo crontab -e
Die Zeile ist einzutragen
# Deletes files older than x days
00 8 * * * /bin/bash /etc/scripts/autodelete.sh
E-Mail-Versand für Kamera einrichten
Eine ausführliche Anleitung, wie der Versand von E-Mails einzurichten ist, ist in der Anleitung auf codeberg.org zu finden.
Man kann z.B. ein regelmäßiges Statusupdate von der Kamera versenden lassen
➡ https://strobelstefan.de/2021/03/16/raspberry-pi-systemstatus-per-e-mail-versenden/
Regelmäßiger Neustart
Manchmal ist es ganz sinnvoll den Raspberry Pi in regelmäßigen Abständen neu zu starten.
sudo crontab -e
# Reboot to defined time
0 5 * * * /sbin/shutdown -r +5
Foto von Mich Smith auf Unsplash
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.
Hi Stefan,
danke für den interessanten Beitrag.
Gibt es eine Empfehlung für die Pi-Kamera, die fehlt hier eigentlich als wichtigster Bestandteil im Bereich Hardwarevoraussetzungen, denn ohne Optik geht ja nix.
Danke
Harry
Hallo Harry,
ich verwende ein Standard Raspberry Pi Kamera.
Grüße
Stefan
Hallo Stefan,
vielen Dank für Deine Anleitung.
Ich habe ein frisch aufgesetztes System (Raspi 4).
Der Stream ruckelt aber.
Hast Du eine Idee, wie ich das abstellen kann?
Meine Cam ist eine: Electreeks® Raspberry Pi Kamera Modul mit Automatik Infrarot-Sperrfilter – Full HD mit Infrarot LEDs
Vielen Dank
Conrad
Hallo Conrad,
du kannst mal versuchen auf den Stream ohne Motion zuzugreifen, vielleicht läuft das ruckelfrei.
Eine Anleitung findest du hier https://strobelstefan.de/2023/05/20/ressourcenschonende-ueberwachungskamera-mit-einem-raspberry-pi/
Viele Grüße
Stefan
Hallo Stefan,
vielen Dank dafür!
Ich habe die Anleitung gestern teilweise durchgearbeitet. Dann verließen mich meine Kenntnisse. Die Doku ist sehr umfangreich. Das ist schon mal gut.
Mit „libcamera-vid -t 0 –inline –listen -o tcp://0.0.0.0:8080“ auf dem Raspi und „tcp/h264://192.168.178.36:8080“ per VLC vom Windows 11 kann ich mir zwar den Stream anschauen, allerdings läuft dieser auch nicht flüssig.
Ich denke, ich bestelle mir mal eine andere Kamera. Vielleicht liegt es nicht an mir, sondern an der Hardware.
Vielen Dank für Deine Mühe und eine schöne Restwoche.
Conrad
Nachtrag:
In einem Forum (https://forum-raspberrypi.de/forum/thread/37673-kamera-zeigt-in-motion-nur-1-bild-pro-sekunde-egal-bei-welche-framerate/) habe ich die Lösung gefunden:
In der Konfiguration (/etc/motion/motion.conf) war bei mir der Schalter „Stream_maxrate“ nicht vorhanden. Dieser steht offensichtlich per default auf 1.
Ich habe folgendes meiner Konfiguration hinzugefügt:
Stream_maxrate 10
Nun läuft der Stream wunderbar!
Schöne Grüße
Conrad
Hallo Conrad,
vielen Dank für die Info.
Viele Grüße
Stefan