Ich hatte mal wieder Lust auf ein kleines Projekt mit dem BananaPi. Was bietet sich da besser an als eine Wettercam? Um das Projekt zum Abschluss zu bringen, waren einige Hürden zu überwinden. Angefangen bei der Auswahl der Kamera bis zum Caching.
Aber der Reihe nach, benötigt werden:
- Ein lauffähiges BananaPi mit dem neuesten Debian (Bookworm): Der BananaPi wurde auf die neueste Version von Debian (Bookworm) aktualisiert. Die Installation erforderte ein manuelles Flashen des Images auf eine microSD-Karte mit
dd
und anschließendem Konfigurieren des Systems, inklusive SSH-Zugang und initialem Netzwerksetup. - Eine Industriekamera mit einer Auflösung von 1080p (1920x1080px): Nach einigen Recherchen fiel die Wahl auf eine robuste USB-Industriekamera, die Full-HD-Auflösung bei 30 FPS bietet. Vorteil: Sie liefert auch bei schwachem Licht eine gute Bildqualität. Der Anschluss erfolgt über einen der USB-Ports des BananaPi.
- Ein neuer Standfuß: Um eine stabile und flexible Montage der Kamera zu gewährleisten, habe ich einen Standfuß mit verstellbarem Gelenk gewählt. So kann die Ausrichtung der Kamera je nach Bedarf angepasst werden.
- Für aktuelle Wetterdaten: Kommunikation mit OpenWeatherMap-API über Proxy: Um die aktuellen Wetterbedingungen einzublenden, wird die OpenWeatherMap-API genutzt. Hierbei war es notwendig, einen Proxy zu konfigurieren, um mögliche IP-bedingte Zugriffsbeschränkungen zu umgehen. Die Abfrage erfolgt über ein PHP-Skript, das die Daten in Echtzeit abrufen und verarbeiten kann.
- Verwischen (bluren) der Nachbarschaft: Aus Datenschutzgründen musste ich sicherstellen, dass keine erkennbaren Details von benachbarten Häusern oder Personen sichtbar sind. Dies wird mithilfe eines Bash-Skripts gelöst, das
ImageMagick
verwendet, um definierte Bildbereiche zu verwischen. - SFTP-Upload des Standbildes: Das generierte Standbild wird per SFTP auf meinen Webserver hochgeladen. Hierbei kommt ein automatisiertes Bash-Skript zum Einsatz, das mit einem hinterlegten Passwort arbeitet, um den Upload in festen Zeitabständen durchzuführen.
- Caching-Mechanismus in WP und Browser ausschalten: Damit die Wettercam immer das aktuellste Bild anzeigt, musste ich das Caching sowohl in WordPress als auch auf Browserebene deaktivieren. Dies wurde durch entsprechende Header in der
.htaccess
und in den PHP-Skripten erreicht (Cache-Control: no-cache, no-store, must-revalidate
). - Auswahl eines geeigneten Vorhangs, um Reflexionen zu vermeiden: Da die Kamera hinter einem Fenster positioniert ist, musste ein geeigneter Thermovorhang mit Haltestange angebracht werden, um Reflexionen durch Innenbeleuchtung zu verhindern. Der Vorhang verbessert zudem die Lichtverhältnisse und sorgt für ein klareres Bild.
Im Nachhinein betrachtet, ganz schön viel für ein solch kleines Projekt. Dennoch bin ich sehr glücklich mit den gesammelten Eindrücken. Sie werden mir bestimmt bei zukünftigen Projekten helfen. Die Kosten grob überschlagen: BananaPi (60€), Industriekamera (80€), Standfuß (20€), Thermovorhang mit Haltestange (50€). Macht in Summe: 210€ + die investierte Zeit für die Bash-/PHP- und Cron-Skripte.
Als Ausblick könnte man sich noch überlegen, ein Zeitraffervideo zu erstellen (täglich/wöchentlich): Dafür würde sich ffmpeg
anbieten, um aus den Standbildern automatisiert ein Video zu generieren. Ein entsprechendes Bash-Skript könnte den Prozess ebenfalls vereinfachen. Alternativ wäre es möglich, ein Interface zur Steuerung des gesamten Projekts zu entwickeln, das sowohl die Wetterdaten als auch die Bildverwaltung übersichtlicher macht.