Dies & Das

MäxchenCam

Der Plan, Frau Honks Schildkröte bei ihren Ausbrüchen aus dem Gehege im Garten zu beobachten entstand schon in 2022. Die erste Idee, einen Raspberry Pi als Kamera zu benutzen scheiterte am zu hohen Stromverbrauch.
Anfang 2023 startete Herr Honk eine Recherche zu einer stromsparenden Hardware. Das ESP32 schien eine sehr viel versprechende Alternative zum Pi zu sein. Ein ESP32-CAM-Module wurde gekauft, und Stefans Webblog half bei den ersten Versuchen mit der Hardware. Die lief nach nicht einmal einer Stunde.

Der erste Programmier- und Funktionstest

Die Kamera sollte über eine Solar-USB-Powerbank betrieben werden. Also wurde bei kaufland.de eine eben solche bestellt:

Noch nicht einmal der Kompass auf der Rückseite funktionierte
Noch nicht einmal der Kompass auf der Rückseite funktionierte.

Was für ein Schrott!
Die Solarzelle lieferte kaum Strom und die angegebene Kapazität des Akkus, 30000mAH (= dreißig! Amperstunden) war maßlos übertrieben.
Ja, für 17,95€s können solche Leistungen nicht erwartet werden. Herr Honk hatte, bei der Bestellung, sein Hirn ausgeschaltet. OK, in der ersten Version wird die Stromversorgung der MäxchenCam über 20m, 5V Stromkabel erfolgen. Wenn es gut läuft, könnte ab Ende Juli 2023 die PV-Anlage auf dem Dach des Hauses von Fraun Honk endlich Strom liefern.

Die Software lief auf dem ESP32-Cam-Modul und es gibt einen Plan, wie der Motion JPEG-Stream an beliebig viele Betrachter verteilt werden kann. Es war an der Zeit das ESP32-Cam-Modul wetterfest in Epoxidharz zu gießen. Die Gussform war schnell aus Pappe, Frischhaltefolie und Klebeband erstellt. Sie ahnen es, das ging komplett schief 😉 Das Epoxidharz aus dem Baumarkt härtete nicht aus, und die Form war nicht dicht. Ein Totalverlust:

Neue ESP32-Cam-Module, Epoxidharz und die 120°-Kamera aus China waren schnell bestellt. Die Lieferungen dauerten. Die drei bestellten ESP32-Cam-Module von BerryBase ließen sich nicht progammieren.
Eine Bestellung bei arduino-projekte.info lieferte programmierbare Hardware. Das alles dauert lange, und Herr Honk verkackte auch noch die Bestellung des Anschluß der WLAN-Antenne.
Das lieferte aber auch die Zeit, um die Programmierung der MäxchenCam so zu erweitern, das die LED auf dem Board über HTTP-Requests steuerbar wird:

Menschen können aus Fehlern lernen. Und Männer können, wenn es anders nicht weiter geht, Gebrauchsanweisungen lesen.

Die zweite Gehäusegussform wurde eine Butterbrotdose. Die hielt die mehreren Tage Aushärtezeit dicht.
OK, das Lernen aus Fehlern kann zu neuen Fehlern führen: Als Herr Honk die Befestigung für die MäxchenCam kaufte, hatte er das winzige ESP-32-Module in der Hand. Der Epoxidharzblock wurde deutlich größer und schwerer und an einer Fläche wurden die Kanten rund. Ob die eher filigrane Klammer den Block ausreichend fest halten kann?

Der Softwareteil

machte sehr deutlich mehr Arbeit als erwartet, der Plan war: Das MJPEG des ESP-32-Cam-Modules per ffmeg nach flv/rtmp zu konvertieren und zum Nginx-rtmp-Module senden, das dann einen HLS-Stream bereitstellt. Sie ahnen es, das ging, nicht nur beim ersten Versuch schief 😉
Zusammengefasst, Stand 15.10.2023, liefert die Software des ESP-32-Cam-Modules einen MJPEG-Stream, der von ffmpeg nicht in ein Format gewandelt wird, der vom Nginx sinnvoll verarbeiten kann.
Die Lösung:
Per vlc, den MJPEG-Stream des ESP-32-Modules so konvertiert, das das Nginx-rtmp-Module ihn in einen HLS-Stream konvertiert:

#!/bin/bash

# IP der MäxchenCam ermitteln
ipCam=$(./getIp.py)

if [[ $ipCam == "nf" ]]; then
  echo "MäxchenCam nicht gefunden!"
  exit 1
fi

urlCam="http://${ipCam}:81/stream"
echo "MäxchenCam gefunden: $urlCam"

eval "/usr/bin/cvlc --loop '${urlCam}' --sout '#transcode{vcodec=h264,fps=25,acodec=mp3,ab=128,channels=2,samplerate=44100}:standard{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://xxx.xxx/xxx/xxx}' vlc:qui"

Bis alle Teile fertig und zusammengebaut waren dauerte es bis zum 9.12.2023, die Schildkröte ist im Haus und bereitet sich auf den Winterschlaf vor: Die MäxchenCam.