Inhaltsverzeichnis
Aufgabenstellung
Während eines Events sollte ein Zeitraffer-Film erstellt werden. Hierzu sollten Einzelbilder erstellt und anschließend zu einem Zeitraffer-Film zusammengesetzt werden. Parallel dazu soll auch noch eine ganz normale Videoaufzeichnung erfolgen. Daraus wurde eine Gesamtlösung die jetzt zur Überwachung einer Hofeinfahrt genutzt wird.
Hardware
Auf einem bereits in Betrieb befindlichen Raspberry Pi 5 wurde ein zusätzlicher Docker-Container eingerichtet.
Beim örtlichen Elektronikhändler wurde eine Outdoor-Webcam mit WLAN-Anbindung erworben. Ich verwende hier das Modell EZVIZ CS-CV310. Nachdem der WLAN-Zugang mit der zur Kamera gehörenden App eingerichtet ist, kann im Internet-Router der Zugriff der Kamera auf das Internet komplett abgeschaltet werden. Für den Betrieb reicht das eigene LAN/WLan aus.
Programmiert wurde die Anwendung in golang.
Download
In meinem git-Repository finden Sie die aktuelle Version im Verzeichnis
https://git.lang-dieter.de/dieter/webcam/releases
Sie finden darin die Einzeldateien aber auch eine ZIP-Datei mit folgenden Inhalt:
- config.json.example
die Beispielconfiguration muss nach Ihren Bedürfnissen angepasst werden - docker-compose.yaml
die Definition des zu erzeugenden Containers - dockerfile
wird von docker-compose.yaml verwendet, um die notwendig Software im Container zu installieren. - stoerung.jpg
wird von unserer App angzeigt, wenn der Datenstrom von der Kamera unterbrochen ist. - Programmdateien – je nach Betriebssystem
webcam-amd64 – Linux 64 Bit wie z. B. Ubuntu
webcam-arm64 – ARM-Prozessor 64-Bit wie z. B. Raspi 5 - webcam.service
dient der Definition des Hintergrunddienstes für unsere Anwendung. Die Einrichtung des Dienstes ist auch in der README.MD des Projektes https://git.lang-dieter.de/dieter/webcam beschrieben.
Installation
Dockercontainer bereitstellen.
# Verzeichnis bereitstellen
mkdir -p srv_webcam/app/data/video
cd srv_webcam
# Aktuelle Version herunterladen
wget https://git.lang-dieter.de/dieter/webcam/releases/download/v1.0.3/webcam-v1.0.3.zip
# ZIP-Datei entpacken
unzip webcam-v1.0.3.zip
cd webcam-v1.0.3/
#Dateien aus ZIP-Archiv verteilen
mv docker* ..
mv * ../app
#Unzip-Ordner wieder entfernen
cd ..
rm webcam-v1.0.3 -rf
Wir erhalten damit folgende Verzeichnisstruktur:
tree
.
├── app
│ ├── config.json.example
│ ├── data
│ │ └── video
│ ├── stoerung.jpg
│ ├── webcam-amd64
│ ├── webcam-arm64
│ └── webcam.service
├── docker-compose.yaml
├── dockerfile
└── webcam-v1.0.3.zip
4 directories, 8 files
Jetzt muss nur noch die Beispielkonfiguration angepasst werden. Die Bedeutung der Einträge finden Sie ebenfalls in der README des Projektes
https://git.lang-dieter.de/dieter/webcam/src/branch/main/README.md
Mindestens folgende Zeilen müssen Sie anpassen:
rtsp-url
web_user
werb_password
# Beispieldatei kopieren
cp app/config.json.example app/config.json
# Inhalt anpassen
nano app/config.json
Jetzt kann der Container gestartet werden
In der Datei dockerfile prüfen, ob in der Zeile Entrypoint die zum Betriebssystem passende ausführbare Datei aufgerufen wird.
In der Datei docker-compose.yaml prüfen, ob die Volumes für app und app/data korrekt eingetragen sind.
(In der zur Verfügung gestellten Datei verweist app/data auf ein USB-Laufwerk !)
docker compose up -d
Weboberfläche im Browser aufrufen
Aufruf der Weboberfläche:
http://localhost:8083/