Raspberry Video Camera – Teil 30: Software für Kamera Modell 200

Das Modell 200 ist die kleine Ausgabe einer Raspberry Video Cam auf Basis eines Raspberry Pi Zero W. Im Vergleich zum ursprünglichen Modell 850, das einen großen Raspberry Pi 3 als Rechner hat. Aber braucht ein Modell 200 eine andere Software als das Modell 850? Nein, braucht es nicht. Allerdings sind meine Anleitungen zur Softwareinstallation inzwischen bald ein Jahr alt und für Raspbian gibt es eine neue Version Stretch. Deshalb fasse ich in diesem Artikel noch einmal alle erforderlichen Installationsschritte aus verschiedenen vorangegangenen Beiträgen zusammen und verweise für umfangreichere Erklärungen auf meine ursprünglichen Artikel. Die folgende Installationsanleitung gilt für alle fremdgetriggerten Kameras, egal ob Modell 200 oder 850.

Zuerst aber wieder ein Oachkatzl-Video, auch wenn es diesmal kein Eichhörnchen ist, sondern eine Rabenkrähe. Mehr davon gibts in meinem YouTube-Kanal.


Zur Wahrung deiner Privatsphäre wird erst eine Verbindung zu YouTube hergestelt, wenn du den Abspielbutton betätigst.

Unter fremdgetriggerter Kamera verstehe ich eine zweite (oder dritte) Kamera in einem Kameraverbund, die selbst keine Objekterkennung besitzt und von einer anderen Kamera gesteuert wird. Mehr dazu in meinem Artikel über die zweite Kamera.

Betriebssystem Raspbian Stretch Lite auf Micro-SD-Karte laden

Modell 200Download

Die aktuelle Raspbian Version finden wir bei Raspberrypi.org unter diesem Link: https://www.raspberrypi.org/downloads/raspbian/. Nachdem an der Kamera kein Monitor angeschlossen ist, verwenden wir die Lite- und nicht die Desktopversion. Die aktuelle Version zum Zeitpunkt der Erstellung dieses Artikels ist vom 29.11.2017 und der Dateiname der Zip-Datei lautet folglich 2017-11-29-raspbian-stretch-lite.zip. Spätere Versionen werden einen anderen Dateinamen haben, das muss dann entsprechend berücksichtigt werden.

Micro-SD beschreiben

Als nächstes muss die Zip-Datei entpackt werden, dann kann sie auf die Micro-SD-Karte geschrieben werden. Unter Windows geht das zum Beispiel mit dem Win32 Disk Imager. Wer das noch nie gemacht hat, der kann die Einzelheiten in meinem ausführlichen Artikel nachlesen.

Konfigurieren der Micro-SD

Für eine Headless-Installation ohne Monitor und Tastatur am Raspberry Pi, müssen wir der Micro-SD-Karte etwas an Konfiguration mitgeben – die WLAN-Zugangsdaten zum Beispiel. Dazu bleibt die Micro-SD-Karte im Windows (oder Linux) Rechner und wir legen in der Bootpartition der SD-Karte eine leere Datei mit dem Namen ssh an. Damit wird der SSH-Dienst aktiviert.

Dann legen wir in der selben Partition eine zweite Datei mit dem Namen wpa_supplicant.conf an, öffnen sie mit dem Editor unseres Vertrauens und tragen folgenden Text ein:

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
   ssid="WLAN SSID"
   psk="WLAN Netzwerkschlüssel"
}

Bei SSID und PSK tragen wir die eigenen WLAN-Zugangsdaten ein. Mehr dazu gibt es auch in meinem ausführlichen Artikel. Damit ist das WLAN vorkonfiguriert und wir können die SD-Karte in den Raspberry Pi stecken und diesen mit Strom versorgen.

Grundkonfiguration des Raspberry Pi

Raspberry Pi Zero mit CamPer SSH Kontakt zum Raspberry Pi aufnehmen

Windows-User verwenden als SSH-Client zum Beispiel Putty, Linuxuser rufen SSH auf der Commandline auf. Die Zugangsdaten bei einem jungfräulichen Raspbian lauten:

  • Rechnername: raspberrypi
  • Username: pi
  • Passwort: raspberry

Vom Linuxrechner aus wäre das also

ssh pi@raspberrypi

Wenn es mit dem Rechnernamen nicht funktioniert, kann statt dessen auch die IP-Adresse des Raspberry Pi verwendet werden (Fritzbox befragen).

Grundeinstellungen mit raspi-config

Aufruf innerhalb der SSH-Session mit:

sudo raspi-config

Dann nehmen wir folgende Einstellungen vor:

  • User Passwort ändern
  • Hostname setzen
  • Ländereinstellungen vornehmen (Tastatur, Zeichensatz und Zeitzone)
  • Kamera enablen

Fragen dazu beantwortet der ausführliche Artikel. Danach ist ein Reboot fällig.

Software aktualisieren und installieren

Wieder per SSH mit dem Raspberry Pi verbunden, aktualisieren wir als nächstes die installierte Software und die Firmware:

sudo apt-get update
sudo apt-get dist-upgrade

Picamera ist das Python-Modul für den Zugriff auf die Kamera:

sudo apt-get install python3-picamera

Und MP4Box wird benötigt um die Videodateien auf MP4 zu bringen:

sudo apt-get install gpac

Auch dazu gibt es mehr im ausführlichen Artikel.

Raspberry Pi Zero WVerbindung zur Triggerkamera herstellen

Eine fremdgetriggerte Kamera ist abhängig vom Auslösesignal der „Haupt“-Kamera, um ein Video aufzuzeichnen. Dazu müssen wir dem Modell 200 die Möglichkeit geben, das Triggersignal von der Hauptkamera zu lesen. Zu diesem Thema gibt es einen umfangreichen Artikel, so dass ich hier nur kurz die einzelnen Schritte anspreche.

Public Key Schlüsselpaar erzeugen

Wir sind weiterhin per SSH mit dem Raspberry Pi Zero des Modell 200 verbunden und generieren nun ein Schlüsselpaar zur automatischen Anmeldung:

ssh-keygen -t rsa

Auf die Frage nach einer Passphrase drücken wir nur Enter.

Public Key zur Triggerkamera übertragen

Die Haupt- oder Triggerkamera muss nun noch den öffentlichen Schlüssel aus eben generiertem Schlüsselpaar erhalten. Das geht am einfachsten mit folgendem Kommando vom Raspberry Pi Zero aus:

cat ~/.ssh/id_rsa.pub | ssh pi@triggerkamera 'cat >> .ssh/authorized_keys'

Dabei muss das Wort triggerkamera durch den Namen der Hauptkamera ersetzt werden. Daraufhin wird das Passwort der Hauptkamera abgefragt.

Python Programme installieren

Jetzt kommen die Python-Programme, die die gesamte Kameralogik abbilden. Die wurden bereits in anderen Artikeln besprochen, so dass ich hier nicht nochmal den ganzen Quelltext veröffentliche, sondern nur auf die entsprechenden Seiten verlinke. Alle Python-Programme kommen nach /home/pi/.

recordremote.py

Das ist das Programm zur Erkennung des Triggersignals und zur Aufzeichnung der Videodaten.

postprocess.py

Dieses Programm steuert MP4Box an um aus den Videoaufzeichnungen ein fertiges MP4-Video zu erzeugen.

freedisk.py

Das ist ein optionales Dienstprogramm, das die SD-Karte auf Füllgrad überwacht und gegebenenfalls die ältesten Videoaufzeichnungen löscht

FlachbandkabelführungAutomatischer Start der Programme und Reboot

Und nun sorgen wir dafür, dass die Programme beim Boot des Raspberry Pi automatisch starten und richten einen nächtlichen Reboot ein. Zu diesem Thema gibt es den ausführlichen Artikel Autostart und Überwachung.

recordremote.py beim Bootvorgang automatisch starten.

Dazu editieren wir die Datei /etc/rc.local mit:

sudo nano /etc/rc.local

und ergänzen vor dem abschließenden exit 0 folgende beiden Zeilen:

cd /home/pi
su pi -c 'python3 -u recordremote.py &> record.log &'

Nächtlicher Reboot und Speicherüberwachung

Beides starten wir über die Crontab für den User Root:

sudo crontab -e

Dort wird folgendes eingetragen:

0 0 * * * /sbin/reboot
*/5 * * * * /usr/bin/python3 /home/pi/freedisk.py

Fast fertig

An sich war es das schon, wir rebooten den RasPi und die Kamera kann ihren Betrieb aufnehmen. Die Programmausgaben finden wir im Homeverzeichnis des Users Pi in der Datei record.log. Dort werden möglicherweise Timeout-Einträge verzeichnet und zwar immer dann, wenn das Triggerverzeichnis der Hauptkamera nicht innerhalb von 5 Sekunden ausgelesen werden kann. Wenn sonst alles funktioniert, brauchen uns die Timeouts aber nicht zu beunruhigen.

Falls bei der Videoaufzeichnung Frame Drops auftreten, also Sprünge im Filmablauf, weil Bilder oder ganze Sequenzen fehlen, dann können wir weiter optimieren.

Optional: Optimierungen gegen Frame Drops

Auch dazu gibt es ein umfangreiches Kapitel unter Optimierungen gegen Frame Drops.

Zuerst erhöhen wir den Speicheranteil für die GPU auf 384MB und zwar mit

sudo raspi-config

und tragen unter Advanced Options – Memory Split den Wert 384 ein.

Dann verkleinern wir den Disk Cache mit:

sudo nano /etc/sysctl.conf

Dort ergänzen wir folgende Zeilen:

vm.dirty_background_ratio = 2
vm.dirty_ratio = 20
vm.dirty_expire_centisecs = 300
vm.dirty_writeback_centisecs = 300

Und schließlich verringern wir die Qualität der Videoaufzeichnung in dem wir in recordremote.py die beiden Zeilen:

stream = picamera.PiCameraCircularIO(camera, seconds=(secs_before+10))
camera.start_recording(stream, format='h264')

wie folgt ergänzen:

stream = picamera.PiCameraCircularIO(camera, seconds=(secs_before+10), bitrate=10000000)
camera.start_recording(stream, format='h264', bitrate=10000000)

Danach ist ein Reboot fällig.

Ganz fertig

Das waren alle Schritte um eine abhängige (fremdgetriggerte) Raspberry Video Camera softwareseitig komplett einzurichten. Beginnend mit dem Download des Betriebssystems über die Einrichtung aller Softwarebestandteile bis hin zu optionalen Optimierungsmaßnahmen. Dabei ist es egal, ob es sich um einen Raspberry Pi Zero W handelt oder um den großen Raspberry Pi 3.


Weitere Artikel in dieser Kategorie:

13 Kommentare

  1. Skrixler Anon

    Hallo, ich finde deine Tutorialreihe schön aufgebaut. Ich werde sicher in nächster Zeit die Tutorials mit meinem rpi3 durch machen.

    Antworten
  2. Christian

    Hallo

    gibt es mit der pi in der frischehaltebox keine termischen probleme ? vor allem im hochsommer

    Danke

    Antworten
    1. Helmut (Beitrag Autor)

      Das hatte ich zu Anfang auch befürchtet, aber überraschenderweise steckt der RasPi die Sommertemperaturen in der Box klaglos weg.

      Antworten
  3. Christian

    Prima dann kann ich das nachbaun teile hab ich fast alle da, mal sehen ob ich die zwei marder erwische die sich hier tummeln unterm scheunen dach

    Antworten
  4. Wolfgang

    Hallo,
    gibt es für das Projekt ein Image oder ein Link zu einem Download – Verzeichniß
    für die Software?
    Oder habe ich was übersehen in ihrer Ausführung?

    Antworten
    1. Helmut (Beitrag Autor)

      Für Raspbian an sich gibt es natürlich ein Image, so wie im Artikel oben beschrieben. Der Rest sind Einstellungen und drei Pythonprogramme. Letztere sind verlinkt und der Quelltext braucht lediglich kopiert zu werden.

      Antworten
  5. KarstenK

    Super Tutorial und Beschreibung :-) Hatte mir den Bewegungsmelder für ein anderes Projekt bestellt, aber kaum Infos zu den Einstellungsmöglichkeiten gefunden. Danke für die hilfreichen Infos, die haben mir eine Menge Zeit erspart.

    Antworten
  6. Winfried

    Ich habe das Modell 200 nachgebaut, aber als Software das motioneyeOS eingesetzt. Vielen Dank für das tolle Tutorial. Insbesondere finde ich die Idee für das Gehäuse phänomenal. Als nächstes werde ich mal versuchen, das ganze in einer 40 mm-Rohrmuffe einzubauen. Wenn man die Spannungsversorgung lötet, kann man auf den Micro-USB-Stecker verzichten und gewinnt Platz.

    Antworten
  7. Juhl Dietrich

    Hallo,
    kann ich den Raspi auch so konfigurieren, dass ich ihn über usb an meinen Mac anschliesse und als Kamera z.B. in Zoom benutzen?

    Antworten
    1. Helmut (Beitrag Autor)

      In dem Fall wäre es wohl viel einfacher, direkt eine USB-Kamera zu verwenden, dann spart man sich den ganzen RasPi. Warum Mac und Raspberry Pi nicht per WLAN verbinden, anstelle USB?

      Antworten
  8. Andreas Wolpert

    Hallo Herr Karger,
    super Tutorial und Beschreibung :-)
    Ich bin dabei so etwas für meine Vogelbeobachtung nachzubauen. Allerdings mit einer Netzwerkkamera.
    Ich bin noch ein blutiger Anfänger in Python und bekomme es nicht hin die Programme für eine IP-Cam umzuschreiben. Den eigentlichen Stream und das speichern funktioniert schon gut. Nur an der Auslösung mit einem PIR komme ich nicht weiter. Vieleicht könnte ich mal einen Tip bekommen. In Google war meine Suche bisher erfolglos.
    Schon mal vielen Dank

    Andreas Wolpert

    Antworten
    1. Helmut (Beitrag Autor)

      Schwierig ohne nähere Informationen. Was funktioniert denn nicht? Wird keine Bewegung vom Sensor erkannt oder schreibt das PIR-Programm keine Triggerdatei oder wertet das Videoprogramm die Triggerdatei nicht aus? Hier mehr zu motioninterrupt.py und wie Sie das testen können und hier geht es um den Sensor.

      Antworten
  9. Patric

    Hallo Helmut,

    ich wollte mich bei Dir für die Inspiration und Dokumentation Deines Projektes bedanken.
    Habe etwas ähnliches bei mir laufen (2x RaspiZero mit Motioneye) und deinen Blog gefunden, da mein Außengehäuse im Dezember nach einem Jahr undicht wurde und ich Ersatz suchte.

    Jetzt habe ich mir das Gehäuse mit den 50er HT Rohr gebaut und bin super zufrieden.

    Gleichzeitig überlege ich Deinen Softwareansatz zu übernehmen, da MotionEyeOS mit nicht genügend Freiraum gibt.

    Vielen Dank und viele Grüße aus Obermenzing

    Antworten

Schreibe einen Kommentar zu Winfried Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert