StarCatcher Foto Webinterface
Um Kameras unter Linux / Raspberry Pi OS zu steuern gibt es das sehr gute Tool GPHOTO2. GPHOTO2 Homepage
Nachteil, es ist im Wesentlichen im Terminal per Kommandos zu steuern. Zwar gibt es auch einige Tools mit grafischer Oberfläche für Linux, diese bieten aber nicht den Komfort und die Funktionen, die ich mir in der Astrofotografie wünsche. Also habe ich meine Ideen dazu sortiert und mich an die Entwicklung des StarCatcher gemacht.
Umgesetzte Funktionen
- StarCatcher stellt eine Weboberfläche zur Verfügung, mit der Kameras über GPHOTO2 gesteuert werden können.
- Der Webserver dafür kann auf einem Linux / Raspberry Pi OS PC laufen, an dem die Kameras per USB angeschlossen ist
- Wenn der PC auf dem die Anwendung läuft, in ein Netzwerk eingebunden ist, kann die Steuerung der Kameras auch REMOTE erfolgen. Einschränkungen entstehen dabei nur durch die jeweils verwendeten Netzwerke.
- Es können die von GPHOTO2 unterstützten Kameras verwendet werden. Dadurch wird z.B. für mich die Nutzung einer Canon EOS M100 für die Astrofotografie wieder möglich. Die Unterstützung für diese Kamera ist insbesondere im Astrobereich eher schlecht.
- Die Kamera soll automatisch ermittelt werden und die aktuell eingestellten Parameter in der Weboberfläche zur Einstellung angeboten werden.
- Die Kameraparameter sollen über die Weboberfläche auf der Kamera eingestellt werden können. Aktuell vorgesehen für: Datum/Uhrzeit, Blende, Belichtungszeit (auch BULB Mode), ISO, Image Format
- Die Software soll die Erstellung von Aufnahmeplänen unterstützen, mit denen z.B. längere Serien autonom aufgenommen werden können.
- Verschiedene nicht editierbare Kameraparameter (Akku, Objektiv) werden zusätzlich zur Info angezeigt.
- Pläne können unter Verwendung von Anzahl Aufnahmen, Pausen, oder Anfangs- und Endezeiten erstellt werden, unter Berücksichtigung der Kamera Belichtungszeiten.
- Für die Erstellung der Pläne sollen die verschiedenen astronomischen Dämmungszeiten als Start-/Endezeiten automatisch für den jeweiligen Standort zur Verfügung stehen.
- Es sollen vor dem Start der Pläne Testaufnahmen mit den eingestellten Parametern möglich sein.
- Für eine laufende Aufnahmeserie soll es möglich sein, dass letzte aufgenommene Bild "Live" (Last Catch) in der Weboberfläche anzusehen.
- Serien müssen abgebrochen werden können.
- Alle Bilder einer Serie werden auf dem PC gespeichert.
- FTP Transfer auf einen externen FTP Server ist möglich. Damit können die Serien auch als Basis für eine Webcam oder Webseite dienen.
- GPHOTO2 unterstützt nicht alle Kameras in gleicher Weise, da nicht alle Parameter immer gleich oder überhaupt angesteuert werden können (Kamera abhängig) Um die Steuerung zu verbessern, besteht nun die Möglichkeit, in einer Kameramatrix entsprechende "Fehlparameter" zu ignorieren.
- Auf Wunsch kann nach einer Aufnahmeserie ein Timelapsvideo erstellt werden. Dieses ist auch im Nachhinein möglich, wenn sich die Ordner mit Bildern im StarCatcher Video Ordner befinden. Videos können in verschiedenen Auflösungen generiert werden.
- Auf leistunsschwächeren Rechnern können Videos mit MENCODER (MPEG-Video) erstellt werden anstelle von FFMPEG (x264 -mp4)
- Die Fotos können mit einem Overlay Text versehen werden. Dieser kann wahlweise jeweils aus Datum/Uhrzeit, Freitext oder EXIF Parametern bestehen. Die Texte sind flexibel konfigurierbar.
- An einem Raspberry Pi können verschiedene Sensoren angeschlossen und in der Oberfläche angezeigt werden. (Temperatur, Feuchte)
- Die Aufnahmeserien werden protokolliert, die Log Dateien sind über das Webinterface einsehbar.
- Die ganze Anwendung kann einfach über vier verschiedene CONFIG Dateien an die eigenen Bedürfnisse angepasst werden. Es gibt CONFIG Dateien für Standort, Sensoren, Overlay und natürlich die komplette Software selbst.
- Die Weboberfläche ist selbsterklärend - für mein Verständnis ;-) - In den Parameterndateien sind ausführliche Beschreibungen der Parameter in leicht verständlicher PHP Syntax
- Getestet mit folgenden Kameras: Canon_EOS_1200D - Canon_EOS_6D - Canon_EOS_M100 - Canon_EOS_RP (Canon_EOS_700D in Arbeit)
Ein paar Screenshots
Basis für die Software ....
... ist die Installation eines Linux / Raspberry Pi OS und der folgenden Software. Auf die Installation der Betriebssysteme selbst wird hier nicht explizit eingegangen.
Wichtiger Hinweis: Die Konfiguration wird meistens mit den niedrigsten Sicherheitseinstellungen vorgenommen. Es ist dem Autor der Software wichtiger, dass die Softwre funktioniert. Da ein Einsatz nur in einem nicht öffentlichen Netzwerk erfolgen soll, stellt das in der Regel kein Problem dar.
// *** Installationsanleitung
// *** Installation Webserver unter Linux
sudo apt update && sudo apt upgrade
sudo apt-get install apache2 php php-intl mariadb-server phpmyadmin
// *** Die Feineinstellung von PHP erfolgt in der Datei php.ini bei Bedarf
sudo nano /etc/php/8.1/apache2/php.ini
// *** Installation Webserver auf Raspberry
sudo apt update && sudo apt upgrade
sudo apt install apache2
sudo apt-get install php
sudo apt install mariadb-server php-mysql
sudo apt install phpmyadmin
// *** Installation weiterer Software
GPHOTO2
sudo apt-get install gphoto2
PHP GD Lib für Grafikbearbeitung
sudo apt-get install php-gd
MENCODER
sudo apt-get install mencoder
FFMPEG
sudo apt-get install ffmpeg
sudo apt-get install ffmpeg-doc
sudo apt-get install libavcodec-extra
Hinweis: libx264 which has a stated maximum resolution of 4096 x 2304
FTP - muss man oft nachinstallieren obwohl Standard - Wenn es Software gibt, die das nutzt, ansonsten schadet es nicht
sudo apt-get install ftp
Die FTP Zugangsdaten kann man in der CONFIG hinterlegen.
// *** Für die Arbeit mit den Sensoren (Temperatur und Feuchtigkeit) müssen Adafruit Python Module installiert werden
// *** Der Befehl installiert die python-pip-Anwendung
sudo apt-get install python3-pip
// *** Der Befehl installiert andere Anwendungen, die die pip-App für die Installation der Library benötigt:
sudo python3 -m pip install --upgrade pip setuptools wheel
// *** Danach können die notwendigen Library installieren.
(nur auf dem Raspi möglich, da nur dort die Sensoren wie im Programm angelegt angeschlossen werden können)
sudo pip3 install Adafruit_adt7410
sudo pip3 install Adafruit_DHT
// *** Dateizugriff auf /var/www/html herstellen
Der Ordner /var/www/html ist der, auf den http://localhost/ bzw. http://127.0.0.1/ verweist, und in dem die eigenen Produktionsdateien liegen werden.
Das Problem ist, dass der Benutzer von Apache in der Voreinstellung den Namen www-data trägt, was dazu führt, dass weder www-data noch ich als normaler Benutzer Schreibrechte für /var/www/html besitzen, da dieser Ordner bei der Installation von LAMP mit Rootrechten angelegt wurde und daher zunächst root gehört. Dies kann man aber ändern, indem man sich selbst zum Besitzer des Wurzelordners macht (der Platzhalter BENUTZER ist durch den eigenen Benutzernamen zu ersetzen):
sudo chown BENUTZER:BENUTZER /var/www/html && sudo chmod 775 /var/www/html
Anschließend ändert man noch den Apache-Benutzer:
sudo nano /etc/apache2/envvars
In dieser Datei ändert man den Wert der Variablen APACHE_RUN_USER und APACHE_RUN_GROUP auf den eigenen Benutzernamen.
Server neu starten: (Dieser Befehl ist auch nach allen späteren Änderungen der Apache-Konfiguration notwendig.)
sudo service apache2 restart
Nun können unter /var/www/html die eigenen Produktionsdateien erstellt bzw. dorthin kopiert werden.
Unter /var/www/htmlist das Verzeichnis StarCatcher anzulegen
/var/www/html/StarCatcher
Unter dem Benutzer ist das Verzeichnis StarCatcher anzulegen z.B.
/home/BENUTZER/StarCatcher
Groß-/Kleinschreibung beachten beim Namen "StarCatcher"
Die Software aus der ZIP Datei (Download am ENde der Seite) ist in das Verzeichnis /var/www/html/StarCatcher zu kopieren (Entpacken ZIP 1:1 mit Verzeichnissen).
// *** Bedienung
Wenn die Kamera mit USB angeschlossen wurde, wird sie in der Regel automatisch vom System gemounted. Das behindert die HTML Oberfläche von StarCatcher.
Dieser Mount muss manuell aufgehoben werden. Terminal öffnen und:
gio mount -s gphoto2
// *** Zugriff auf die Oberfläche
Rufe auf dem Webserver oder im Netzwerk Deiner Wahl die Seite http://ADRESSES-DES-WEBSERVERS/StarCatcher auf.
// *** Trouble Shouting
// *** Anzeige Testbild oder Verzeichnisse am Fuss der Seite
Wenn das Testbild nicht richtig erstellt wird, einfach die Datei testbild.jpg im StarCatcher Bilder Ordner löschen. Das gilt auch, wenn am unteren Seitenende keine Verzeichnisse für Videos, Bilder und Logs angezeigt werden. Die Datei testbild.jpg wird manchmal als Ordner angesehen und dann klemmt es. Warum???
// *** Kameraparameter Probleme
Wenn einige Paramter nicht richtig funktionieren (z.B. bei mir Aperture auf der EOS RP), dann liegt es an einer fehlerhaften GPHOTO2 Version. Diese kann man mit dem folgenden Befehl aktualisieren.
Mehr Infos unter:
https://github.com/gphoto/gphoto2/issues/508
https://github.com/gonzalo/gphoto2-updater
wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/.env && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh
*** Danach unter Linux Mint: gphoto2 --version
Diese Version von gphoto2 benutzt die folgenden Softwareversionen und Optionen:
gphoto2 2.5.28 gcc, popt(m), exif, no cdk, no aa, no jpeg, no readline
libgphoto2 2.5.31 standard camlibs (SKIPPING docupen lumix), gcc, no ltdl, EXIF
libgphoto2_port 0.12.2 iolibs: disk ptpip serial usb1 usbdiskdirect usbscsi, gcc, no ltdl, EXIF, USB, serial without locking
*** Danach auf Raspi: gphoto2 --version
Damit läuft es nicht richtig für die EOS RP
Diese Version von gphoto2 benutzt die folgenden Softwareversionen und Optionen:
gphoto2 2.5.28 gcc, popt(m), exif, no cdk, no aa, no jpeg, no readline
libgphoto2 2.5.27 standard camlibs, gcc, ltdl, EXIF
libgphoto2_port 0.12.0 iolibs: disk ptpip serial usb1 usbdiskdirect usbscsi, gcc, ltdl, EXIF, USB, serial without locking
Weil:
ldconfig -p | grep libgphoto2
libgphoto2_port.so.12 (libc6,AArch64) => /lib/aarch64-linux-gnu/libgphoto2_port.so.12
libgphoto2_port.so.12 (libc6,AArch64) => /usr/local/lib/libgphoto2_port.so.12
libgphoto2_port.so (libc6,AArch64) => /usr/local/lib/libgphoto2_port.so
libgphoto2.so.6 (libc6,AArch64) => /lib/aarch64-linux-gnu/libgphoto2.so.6
libgphoto2.so.6 (libc6,AArch64) => /usr/local/lib/libgphoto2.so.6
libgphoto2.so (libc6,AArch64) => /usr/local/lib/libgphoto2.so
Next Step:
sudo apt-get remove gphoto2 libgphoto2-6 libgphoto2-dev libgphoto2-l10n libgphoto2-port12
Danach:
ldconfig -p | grep libgphoto2
libgphoto2_port.so.12 (libc6,AArch64) => /usr/local/lib/libgphoto2_port.so.12
libgphoto2_port.so (libc6,AArch64) => /usr/local/lib/libgphoto2_port.so
libgphoto2.so.6 (libc6,AArch64) => /usr/local/lib/libgphoto2.so.6
libgphoto2.so (libc6,AArch64) => /usr/local/lib/libgphoto2.so
und Final: gphoto2 --version
Diese Version von gphoto2 benutzt die folgenden Softwareversionen und Optionen:
gphoto2 2.5.28 gcc, popt(m), exif, no cdk, no aa, no jpeg, no readline
libgphoto2 2.5.31 standard camlibs (SKIPPING docupen lumix), gcc, no ltdl, EXIF
libgphoto2_port 0.12.2 iolibs: disk ptpip serial usb1 usbdiskdirect usbscsi, gcc, no ltdl, EXIF, USB, serial without locking
// *** FAQ
Falls es zukünftig zu klärende Fragen gibt, werde ich diese hier erläutern.
// *** Download
Wer beim Lesen und Bilder schauen bis hier durchgehalten hat, darf sich hier gerne beim Download bedienen:
Download der Software by Sternenbasis 39 als ZIP
// *** Over and Out
Eigentlich ist man ja nie fertig mit derartigen Projekten. Ich finde aber, ich bin schon recht weit. Die Seite wird laufend überarbeitet und es kann auch nicht garantiert werden, dass immer die letzte technische Änderung in die Webseite eingeflossen ist.
Sollte es Fragen, Anregungen oder Wünsche zum Projekt geben, so kann jederzeit Kontakt zu mir aufgenommen werden. Den Code der Skripte und eine Installationsanleitung für den Linux/Raspberry PC stelle ich kostenfrei zur Verfügung, wenn Bedarf besteht. Die Skripte sind vollständig durch mich erstellt und alle Rechte liegen bei mir.
Clear sky Thomas