Bienen-Webcam
Dieses Projekt beschreibt wie eine Webcam zur Beobachtung der Bienen mit einem Raspberry Pi und einem Kamermodul einfach und günstig gebaut werden kann.
Materialliste
Installation und Programmierung
Der Raspberry Pi benötigt ein Betriebssystem das in der Regel auf einer SD-Speicherkarte installiert wird. Es stehen verschiedene Betriebssystem zur Auswahl, wie beispielsweise Raspbian, Pidora, Ubuntu und einige weitere. Für unsere Bienen-Webcam wollen Raspbian, das von der Raspberry Foundation offiziell unterstütze Betriebssystem verwenden. Raspbian basiert auf der Linux Distribution Debian und ist für die Hardware des Raspberry Pi optimiert.
Raspbian auf eine SD-Speicherkarte installieren (Windows)
In wenigen Schritten kann mit einem Windows PC das Raspian Betriebssystem auf die SD-Karte geschrieben werden. Das Betriebssystem wird allerdings nicht einfach auf die SD-Karte kopiert sondern mit einem Image Burner (z.B. Win32DiskImager) auf die Speicherkarte geschrieben.
- Win32DiskImager downloaden
- Die SD-Karten in den Kartenleser stecken und überprüfen ob sie vom Windows Explorer erkannt wird.
- Das Image des Raspbian Betriebssystem herunterladen und mit 7-zip entpacken. Das Image muss die Extension ".img" haben.
- Das Programm Win32DiskImager ausführen und im Feld "Image File" wählt man den Pfad und die Image-Datei aus. Im Feld "Device" wählt man den Laufwerksbuchstaben der SD-Speicherkarte aus.
- Klicken Sie jetzt auf den Button "Write", um den Schreibvorgang zu starten. Der Vorgang kann längere Zeit in Anspruch nehmen.
Nachdem der Vorgang abgeschlossen ist, kann man die SD-Karte auswerfen und in den SD-Slot des Raspberry Pi stecken. Der Raspberry Pi kann jetzt gestartet werden.
Kamera aktivieren
Damit wir das Kameramodul nützen können, müssen wir es zuerst in Raspbian aktivieren. Dazu öffnen wir das Konfigurationstool raspi-config.
$ sudo raspi-config
Wähle den Menüpunkt 5 Interfacing Options und im folgenden Screen wird P1 Camera auf "enable" gesetzt.
Vorarbeiten für den Livestream
Bevor wir den Treiber für das Kameramodul und das Tool Motion für den Stream installieren, aktualisieren wir zunächst Raspbian.
$ sudo apt-get update
$ sudo apt-get upgrade
V4L-Treiber (Video4Linux) für das Kameramodul installieren
Der V4L-Treiber ist bereits in Raspbian enthalten und kann einfach über folgenden Befehl installiert werden:
$ sudo modprobe bcm2835-v4l2
Wenn der Befehl ohne Fehlermeldung durchgelaufen ist kann jetzt überprüft werden, ob das Kameramodul erkannt wurde:
$ ls /dev/video*
In der Ausgabe muss /dev/video0 aufgelistet sein.
Motion Installation
Das freie Video4Linux-Aufnahmeprogramm Motion enthält einen Webserver der einen Livestream des Kameramoduls ins Netz streamen kann. Damit der Videostream über eine sichere Verbindung (TLS - Transport Layer Security bzw. https) übertragen werden kann ist Motion in einer Version grösser 4.2 notwendig. Die zurzeit aktuellste Version von Motion ist 4.3.2 (pi_buster_motion_4.3.2-1_armhf.deb) und kann hier heruntergeladen werden.
$ sudo apt install ./pi_buster_motion_4.3.2-1_armhf.deb
Mit apt werden alle nötigen Abhängigkeiten mit installiert, das dauert dann evl. etwas länger.
Motion Konfiguration
Damit wir Motion richtig konfigurieren können schauen wir uns zunächst die Kamera Details genauer an:
$ v4l2-ctl -V
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line: 1280
Size Image : 614400
Colorspace : SMPTE 170M
Bearbeiten wir nun die Konfigurationsdatei von Motion:
$ sudo nano /etc/motion/motion.conf
Um den Livestream unser Kamera zu aktivieren müssen folgende Änderungen gemacht werden:
daemon off -> daemon on
target_dir /tmp/motion -> target_dir/home/pi/Monitor
stream_localhost on ->stream_localhost off
Um die Bildqualität und die Framerate zu verbessern können noch folgende Einstellungen geändert werden:
width 640 Breite des Videos (Pixel)
height 480 Höhe des Videos (Pixel)
framerate 24 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 24 Max. Bilder pro Sekunde (Livestream)
Die Änderungen werden im nano-Editor mit ctrl-o gespeichert.
Nun müssen wir noch den Ordner /home/pi/Monitor anlegen und die entsprechenden Schreib-/Leserechte vergeben:
$ sudo mkdir /home/pi/Monitor
$ sudo chgrp motion /home/pi/Monitor
$ sudo chmod g+rwx /home/pi/Monitor
Jetzt können wir den Service starten:
$ sudo service motion start
Livestream der Bienen-Webcam testen
Den Livestream der Kamera können wir jetzt einfach in einem Browser(Chromium, Firefox, Chrom,..) testen. Ins Browserfenster geben wir die entsprechende IP-Adresse und den Port ein: http://192.168.178.39:8081.
Eine sichere Übertragung mit Hypertext Transfer Protocol Secure (https)
Da ich den Livestream in meine Internetseite (https) einbinden wollte ist es notwendig auch den Videostream mit https zu übertragen. Ich muss also noch Zertifikate für eine verschlüsselte Übertragung erstellen und in Motion noch TLS-Stream aktivieren. Damit auf dem Raspberry Pi "self-signed Certificates" erstellt werden können muss zunächst openssl installiert werden.
$ sudo apt-get install openssl
Jetzt wechseln wir in den Motion Konfigurations-Order und erstellen das Zertifikat:
$ cd /etc/motion
$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout motion.key -outform pem -out motion.pem -subj "/CN=*.com"
In der Motion Konfigurationsdatei müssen jetzt noch folgende Einträge hinzugefügt werden:
$ sudo nano /etc/motion/motion.conf
stream_tls on
webcontrol_tls on
webcontrol_key /etc/motion/motion.key
webcontrol_cert /etc/motion/motion.pem
Motion muss jetzt neu gestartet werden:
$ sudo service motion restart
Im Browserfenster muss jetzt folgende Adresse eingegeben werden: https://IP-Adresse:8081
Den Videostream ausserhalb des Heimnetzes sichtbar machen
Die Bienen-Webcam macht natürlich erst dann sinn, wenn ich den Videostream auch ausserhalb des Heimnetzes anschauen kann. Dazu sind jetzt noch Anpassungen am Router notwendig. Ich muss für das Gerät eine Portfreigabe einrichten. Die Einstellungen zeige ich hier am Beispiel einer FritzBox 6890 LTE.
Um die Konfiguration zu testen ist es wichtig, dass ich auf den Videostream von einem Gerät aus zugreife, das nicht mit dem Heimnetzwerk verbunden ist!