Videoüberwachung mit dem Raspberry Pi

© Bogdan Ionescu, 123RF

Seh dich!

Überwachungskameras aus dem Einzelhandel kosten oft viel Geld, bieten wenig Funktionen oder erweisen sich im Einsatz als unflexibel. Mithilfe des Raspberry Pi umgehen Sie alle diese Nachteile und erweitern bei Bedarf das System unkompliziert um weitere Features.

README

Mit einem oder mehreren RasPis stellen Sie für wenig Geld eine mächtige Videoüberwachungslösung zusammen. Die erste Hälfte des Artikels gibt denjenigen Lesern eine Anleitung an die Hand, die gerne einfach und mit wenig Aufwand ein solches Projekt umsetzen möchten. Der zweite Teil des Textes richtet sich an Tüftler: Er erklärt die Interna der vorgestellten Skripte, damit sie diese bei Bedarf leicht um eigene Ideen erweitern.

Die letzte Ausgabe von Raspberry Pi Geek enthielt mit dem Artikel "Auge des Pi" [1] bereits eine Einführung in die Grundlagen des für den Minirechner erhältlichen Kameramoduls. Hierauf aufbauend folgt nun eine Anleitung, wie Sie unkompliziert eine Videoüberwachungslösung erstellen. Auch wenn Sie diesen Artikel nicht gelesen haben, dürfte Sie die Standardinstallation nicht vor Probleme stellen.

Konzept

Die vorgestellte Lösung vernetzt beliebig viele Raspberry Pis mitsamt ihres Kameramoduls untereinander, sodass Sie bei Bedarf damit mehrere Orte gleichzeitig überwachen. Das Konstrukt gestattet aber auch den Einsatz einer einzigen Kamera, falls das für Ihre Zwecke ausreicht. Die Bilder der überwachten Plätze speichert der Mini-Rechner auf einer SD-Karte, alternativ stehen sie aber noch als Live-Ansicht über eine Weboberfläche (Abbildung 1) zur Verfügung.

Abbildung 1: Die Weboberfläche erlaubt Ihnen das gleichzeitige Überwachen mehrerer Orte.

Einer der RasPis fungiert im vorgestellten Szenario als zentraler Server, der die Konfigurationsdatei vorhält. In dieser stellen Sie die gewünschten Aufzeichnungsparameter ein, wie etwa Auflösung, Lichtstärke oder Kontrast, sowie den Sekundenabstand, in dem die Kameras jeweils neue Bilder aufnehmen. Alle angeschlossenen RasPis importieren in regelmäßigem Abstand die aktuelle Konfigurationsdatei von diesem Zentralrechner. Um den Aufbau so einfach wie möglich zu halten, kommunizieren die Minicomputer via HTTP-Requests untereinander.

Installation

Zuerst gilt es, festzulegen, welche statischen IP-Adressen die Überwachungsrechner innerhalb des LANs nutzen sollen. Das folgende Beispiel geht von einem Szenario aus, bei dem der zentrale RasPi, der gleichzeitig die erste Kamera bedient, die Adresse 192.168.2.50 verwendet. Zwei weitere verwenden die Adressen 192.168.2.51 und 192.168.2.52. Welche IPs Sie auch wählen: Verwenden Sie einen Teil Ihres privaten Adressbereichs (in der Regel 192.168.*.*/24), auf den nur vertrauenswürdige Clients zugreifen dürfen.

Nun konfigurieren Sie den ersten RasPi. Installieren Sie dafür zuerst die Pakete apache2, php5, php5-curl und php5-cli. Im Verzeichnis /var/www/ legen Sie danach die Unterverzeichnisse /var/www/cam/ und /var/www/cam/bilder/ an. Kopieren Sie nun die Skripte config_einlesen.php und steuere_kamera.php nach /var/www/cam/.

In der Datei steuere_kamera.php tragen Sie in Zeile 4 die IP-Adresse desjenigen Raspberry Pi ein, der später als zentraler Steuerungsserver agiert. Nun müssen Sie noch dafür sorgen, dass bei jedem Booten der Raspberry Pi das Skript steuere_kamera.php im Hintergrund startet. Dazu editieren Sie die Crontab (sudo crontab -e) und fügen dort folgende Zeile hinzu:

@reboot /usr/bin/php -f /var/www/cam/steuere_kamera.php

Die genannten Schritte müssen Sie bei jedem im Rahmen des Projekts eingesetzten Raspberry Pi vornehmen. Sollten Sie viele Kameras verwenden, sparen Sie etwas Arbeit, indem Sie eine SD-Karte mit den zuvor genannten Schritten präparieren und dann entsprechend oft klonen, indem Sie deren Inhalt auslesen und auf andere, leere Karten kopieren.

Eine noch fehlende Einstellung ist jedoch so individuell, dass Sie diese anschließend bei jeder einzelnen SD-Karte noch zusätzlich konfigurieren müssen: Tragen Sie jeweils in der Datei /etc/network/interfaces die beabsichtigte statische IP-Adresse des betreffenden RasPi ein – in unserem Beispiel also auf Karte 1 192.168.2.50, auf Nummer 2 192.168.2.51 und auf der dritten SD-Card 192.168.2.52.

Die nun folgenden Zusatzschritte nehmen Sie ausschließlich bei der SD-Karte für den Steuerungsrechner vor: Kopieren Sie dort die Dateien index.php, raspi-geek-logo.png und config.txt in das Verzeichnis /var/www/cam/. Passen Sie anschließend die Datei config.txt Ihren Zwecken gemäß an. Die Einstellungen ändern Sie bei Bedarf später im laufenden Betrieb auch wieder. Alle anderen Kamera-Pis importieren in regelmäßigen Abständen die aktuelle Konfigurationsdatei vom zentralen Server und setzen veränderte Optionen gegebenenfalls binnen Sekunden um. In Listing 1 zeigt die config.txt eine Beispielkonfiguration für einen Anwendungsfall, bei dem drei Kameras zum Einsatz kommen.

Listing 1

 

; Kamera-Konfigurationsdatei
[Global]
Schaerfe = 0
Kontrast = 0
Helligkeit = 50
Saettigung = 0
ISO = 100
Intervall = 5
[Haustür]
IP = "192.168.2.50"
[Garten]
IP = "192.168.2.51"
[1. Obergeschoss]
IP = "192.168.2.52"
Helligkeit = 60
ISO = "400"

In der Sektion [Global] (Zeile 3 bis 9) definieren Sie Standardwerte für die Aufnahmen. So weist Zeile 6 beispielsweise den RasPi an, immer dann, wenn in seiner Konfigurationsdatei die zu nutzende Helligkeit nicht festgelegt wurde, den Wert 50 zu verwenden. Die meisten Optionen legen Aufnahmeparameter für die Fotos fest, wogegen der Wert Intervall in Zeile 9 bestimmt, in welchen Zeitabständen die Kamera neue Bilder aufnimmt – hier alle 5 Sekunden.

Die anderen Sektionen der Konfigurationsdatei (erkennbar an den eckigen Klammern) beziehen sich auf den jeweiligen Kamerastandort. Für jeden davon müssen Sie zumindest einen Namen vergeben (Zeile 11, 14 und 17), den unter anderem die Weboberfläche während der Live-Betrachtung anzeigt. Eine zweite Grundangabe besteht darin, dem RasPi-Standort eine IP-Adresse zuzuordnen (Zeile 12, 15 und 18).

Im Beispiel machen die beiden Beobachtungsposten [Haustür] (Zeile 11 und 12) und [Garten] (Zeile 14 und 15) von dieser Minimalkonfiguration Gebrauch. Da das Skript zu diesen beiden Standorten keine zusätzlichen Angaben enthält, greifen bei diesen die Einstellungen der Sektion Global. Die dritte Kamera mit dem Namen [1. Obergeschoss] (Zeile 17 bis 20) weicht davon hingegen bei zwei Werten ab (Zeile 19 und 20), die an diesem dunklen Standort zu besseren Bildern führen.

Der Parser des Konfigurationsskripts config_einlesen.php (Listing 2) lässt vieles durchgehen. So besteht er beispielsweise nicht auf korrekter Groß- und Kleinschreibung. Fehlen in der globalen Sektion der Konfigurationsdatei Angaben, dann setzt das Skript diese auf hartkodierte Werte, die im Durchschnittsfall Sinn ergeben. So führt Zeile 16 in Listing 2 dazu, dass die Software JPG-Bilder mit einem Qualitätsgrad von 75 Prozent (ein guter Kompromiss zwischen Qualität und Größe des Bilds) komprimiert, obwohl die config.txt-Datei in unserem Beispiel keine Angabe hierzu enthält. Wollten Sie stattdessen Platz auf den SD-Karten sparen, könnten Sie die Konfigurationsdatei etwa um den Eintrag Qualität = 50 ergänzen.

Die Zeilen 17 bis 19 treffen ebenfalls Entscheidungen, für die in der config.txt des Beispielfalls Angaben fehlen: Die Kamera soll Fotos mit der maximal möglichen Auflösung erstellen, ohne dabei den speicherintensiven RAW-Modus zu verwenden.

Listing 2

 

<?php
// Config-Datei auslesen, Ergebnis speichern in in den Arrays
// $globale_einstellungen und $lokale_einstellungen
if (isset($config_daten)) $config_array = parse_ini_string($config_daten, TRUE);
  else $config_array = parse_ini_file('config.txt', TRUE);
// Einige Standard-Werte vordefinieren für den Fall, dass
// die [Global]-Gruppe der Config-Datei keine Werte angibt
$globale_einstellungen['SCHAERFE'] = 0;
$globale_einstellungen['KONTRAST'] = 0;
$globale_einstellungen['HELLIGKEIT'] = 50;
$globale_einstellungen['SAETTIGUNG'] = 0;
$globale_einstellungen['ISO'] = 400;
$globale_einstellungen['INTERVALL'] = 5;
$globale_einstellungen['QUALITAET'] = 75;
$globale_einstellungen['RAW'] = 0;
$globale_einstellungen['BREITEFOTOS'] = 2592;
$globale_einstellungen['HOEHEFOTOS'] = 1944;
// Werte der Sektion [Global] der Config-Datei einem Array zuweisen
foreach ($config_array as $kategorie => $einstellungen) {
  if (strtoupper($kategorie)=='GLOBAL') {
    foreach($einstellungen as $schluessel=>$wert) {
      $globale_einstellungen[strtoupper($schluessel)] = $wert;
    }
    unset($config_array[$kategorie]);
  }
}
// Lokale Einstellungen für jede Kamera einlesen. Optionen,
// für die nichts definiert wurde, auf den globalen Wert setzen
foreach ($config_array as $kamera_name => $einstellungen) {
  $lokale_einstellungen[$kamera_name] = $globale_einstellungen;
  foreach($einstellungen as $schluessel=>$wert) {
    $lokale_einstellungen[$kamera_name][strtoupper($schluessel)] = $wert;
  }
}
?>

Nach dem Fertigstellen der Konfigurationsdatei booten Sie alle RasPis, die daraufhin sofort mit dem Aufnehmen und Abspeichern der Überwachungsbilder beginnen. Um das Geschehen live mitzuverfolgen, rufen Sie im Webbrowser eines PCs die Adresse http://IP_des_Steuer-RasPis/cam/ auf. Die Seite aktualisiert sich nach Ablauf des konfigurierten Sekundenintervalls selbstständig.

Nachtaufnahmen

Seit Kurzem steht das für Nachtaufnahmen geeignete Pi-NoIR-Modul für den Raspberry Pi zum Kauf bereit [2]. Möchten Sie ein solches in Ihre Videoüberwachungslösung einbeziehen, müssen Sie den zu filmenden Ort zusätzlich mit unsichtbarem Infrarotlicht ausleuchten. Tagsüber sorgt der fehlende Infrarotfilter der Pi-NoIR-Kameravariante jedoch dafür, dass das Bild leichte Falschfarben aufweist.

Das Pi-NoIR-Modul ergibt im Rahmen einer Videoüberwachung nur dann Sinn, wenn die Kamera unentdeckt bleiben soll. In allen anderen Fällen setzen Sie besser die Standard-Variante ein, deren Bilder bei Tageslicht keine Falschfarben aufweisen. Und das Problem der nächtlichen Dunkelheit lässt sich hier dadurch lösen, dass Sie an den Aufstellungsorten einfach eine herkömmliche Lampe montieren und an einen Bewegungsmelder koppeln.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Das RasPi-Kamera-Modul: Grundlagen

    Das offizielle Kamera-Modul für den Raspberry Pi bietet ein exzellentes Preis-Leistungs-Verhältnis. Mit dem Board erweitern Sie den Minirechner zum Fotoapparat oder Camcorder – und noch vieles mehr.

  • Raspberry Pi als Foto-Server und Kamerasteuerung

    Mit wenigen Handgriffen rüsten Sie den Raspberry Pi zum zentralen Foto-Server für Ihr LAN auf – oder zur mobilen, fernbedienbaren Kamerasteuerung für HDR, Zeitraffer und viele andere Effekte um.

  • Der Raspberry Pi 3 Model B im Detail

    Viele Raspberry-Fans wünschten sich für die nächste Generation des Mini-Computers USB 3.0, SATA-Schnittstelle und Gigabit-Ethernet. Dies alles bietet der Raspberry Pi 3 nicht, dafür aber WLAN, Bluetooth und eine schnelle 64-Bit-CPU.

  • Aufnahmen von IP-Kameras bei Bewegung per E-Mail melden

    Günstige IP-Kameras vom Discounter erkennen und melden zwar Bewegungen, doch die Fehlerrate fällt dabei recht hoch aus. Eine selbst entwickelte Bewegungserkennungssoftware für den RasPi beseitigt das Problem.

  • WLAN auf dem Raspberry Pi einrichten

    Zu den wichtigsten Neuerungen des Raspberry Pi 3 gehört die Integration von Bluetooth und WLAN. Besonders das drahtlose Netz ist für diverse Einsatznischen wichtig, wie etwa die Heimautomatisierung: So können Sie den RasPi frei in Haus oder Wohnung platzieren. Wir zeigen, wie Sie den RasPi ins Wireless LAN bekommen.

Aktuelle Ausgabe

02/2018
Digital Signage

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial des Raspberry Pi. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Ferngebootet

    Das Booten über das Netzwerk beherrscht auch der RasPi 3 – und bietet damit sehr viel mehr Flexibilität, als Sie mit SD-Cards erzielen können.

  • Bleibende Werte

    Ein EEPROM dient dazu, Daten auch nach Abschalten der Energiezufuhr zu speichern, etwa als Kanalspeicher in Autoradios. Wir zeigen, wie Sie einen solchen Speicher beschreiben und wieder auslesen.

  • Auf Wolke 1

    Mit einem schnellen Netzwerkanschluss und einer SATA-Schnittstelle dient sich der Odroid HC1 als NAS-Alternative an – allerdings nicht für jedermann.

  • Wohnungsfunker

    Der kompakte Router GL.iNet dockt problemlos am Raspberry Pi an und erweitert diesen um einen Access Point samt Server-Funktion.

  • Satter Sound

    Mit zwei ICs am I2S-Bus und ein paar zusätzlichen Bauteilen erweitern Sie den Raspberry Pi um eine Soundkarte, die keine Kontaktmöglichkeit mit gängigem HiFi-Equipment scheut – von Klinke und RCA bis IEC60958, Koax-S/PDIF oder optischem TOSLINK.

  • Wer klopfet an?

    Wechselsprechanlagen mit Bild- und Tonübertragung gibt es zwar von der Stange, allerdings zu gesalzenen Preisen. Günstiger und obendrein flexibler ist ein Eigenbau mit Pi Zero und RasPi 3.

  • Wiedergeburt

    Mit dem Keyrah-Tastaturadapter und einem Raspberry Pi machen Sie aus einem defekten C64 eine optimale Emulator-Station, bei der Sie die originale Tastatur und die Joystick-Ports nutzen.

  • Kleine Nachtmusik

    Waveform8 beseitigt einige Ecken und Kanten des Vorgängers Tracktion – und macht die DAW endgültig fit für den Einsatz auf dem Raspberry Pi.

  • Recycling

    Mit einer Dockingstation lassen sich ausgemusterte IDE/SATA-Festplatten im 2,5- und 3,5-Zoll-Format am Raspberry Pi betreiben. Mit dem Samba-Server gliedern Sie den Mini-Rechner dann als Datenspeicher in Ihr lokales Netzwerk ein.