Skripte für den Kamerarechner
Auf der Seite OpenWRT ist die Installation des Betriebssystems am Kamerarechner beschrieben. Der Server-Anteil ist unter Software dokumentiert.
Auf dieser Seite geht es um die zusätzlich benötigten Skripte für den Kamerarechner.
Im Software-Archiv auf der Download-Seite befinden sich im Ordner openwrt einige Shell-Skripte.
Nicht in jeder Konstellation sind alle erforderlich, deshalb nachfolgend eine Beschreibung, was zu welchem Zweck dient.
/etc/webcam.cfg
Hier ist die Konfiguration für die Kommunikation mit dem Server hinterlegt.
Idealerweise soll der Kamerarechner den Kamera-Namen als Hostnamen haben. Dafür ist die Zeile
wc_name=`/sbin/uci get system.@system[0].hostname`
ausgelegt, sie liest den in /etc/config/system hinterlegten Namen. Genauso gut kann hier auch
fest ein Name eingetragen werden. Dieser entspricht am Server dem Webcam-Verzeichnisnamen,
also sinngemäß etwas wie
http://www.foto-webcam.eu/webcam/<name>.
Die Zeilen
wc_adr="https://www.foto-webcam.eu/webcam/include" wc_key="replacethistoyourkey"
definieren die Zugangsdaten zum Server. Der Key muss so auch in config.php hinterlegt werden, nur dann kommt die Kommunikation zustande. Empfehlenswert ist ein Upload über https, um man-in-the-middle Angriffe zu verhindern.
Es reicht ein selbstsigniertes Serverzertifikat, aber nur wenn das Zertifikat auch im Client hinterlegt ist. Das Zertifikat wird am Kamerarechner abgelegt und kann dann mit dem curl-Parameter –cacert <file> genutzt werden. Dann kann die Kommunikation als tatsächlich sicher betrachtet werden.
/usr/bin/webcam_capture
Das ist das wichtigste Skript. Es nimmt mit der Kamera Bilder auf und lädt sie zum Server hoch.
Der wesentliche Teil ist identisch mit dem unter Autofocus-Software beschriebenen Anteil zum Auslösen der Kamera. Wird eine andere Kamera als die EOS1100D verwendet, so muss dieser Anteil der Kamera angepasst werden. Bei anderen Kameramodellen dürfte die einfachere Variante wie unter gphoto2 beschrieben ausreichen.
Anschließend wird das Bild mit dem Kommando curl zum Server hochgeladen, die Parameter dazu stammen teilweise aus obigem /etc/webcam.cfg.
/usr/bin/webcam_wait
Damit der Server am Kamerarechner Befehle ausführen kann (z.B. für die Belichtungskorrektur), muss der Kamerarechner ständig eine Verbindung zum Server unterhalten. Neben dem VPN-Tunnel für Wartungszwecke ist auch ein Kommunikationskanal im Kontext des Webservers erforderlich.
Dazu läuft das Skript webcam_wait immer im Kreis und ruft ein Skript am Server auf. Dieses legt sich eine Weile schlafen und wacht dann auf, wenn der Server dem Kamerarechner einen Befehl geben will. Dieser steht dann in der Antwort des http-Requests und wird am Kamerarechner ausgeführt. Danach beginnt das Spiel von neuem.
/usr/bin/webcam_check
Hier wird im Wesentlichen geprüft, ob webcam_wait noch läuft, und falls nein wird es gestartet.
Dieses Skript wird alle Minute durch cron aufgerufen. Damit das passiert, muss auch noch folgende Datei existieren:
- /etc/crontabs/root
* * * * * /usr/bin/webcam_check
/usr/bin/webcam_isoexp
Dieses Skript ruft gphoto2 mit den passenden Parametern auf, um den ISO-Wert und die Belichtungskorrektur neu einzustellen. Die Zuweisung der korrekten Werte erfolgt hier, weil
die Werte sich zwischen verschiedenen Kameramodellen unterscheiden und damit am Server die Schnittstelle immer gleich bleibt.
Das Skript wird (falls erforderlich) vom Server aus über den Kommando-Mechanismus von
webcam_wait ausgeführt.
/usr/bin/webcam_focus
Dieses Skript enthält den Befehl, um die Kamera auf Anforderung scharf zu stellen. Das erfolgt normalerweise nur händisch, es gibt keinen Automatismus der das tut. Da aber auch das Scharfstellen von einem Kameramodell zum anderen anders funktioniert, ist dieses Skript als Wrapper vorgesehen. Das vorliegende Skript passt zur EOS1100D.
/usr/bin/webcam_heater
Ist eine Heizung im Gehäuse eingebaut, wird dieses Skript zum Schalten derselben verwendet. Das funktioniert, wenn die Heizung über die WLAN-LED geschaltet wird. Beim Aufnehmen von Bildern kümmert sich webcam_capture auch darum, die Heizung vor dem Knipsen abzuschalten und danach ggf. wieder einzuschalten, wenn sie vorher ein war.
Ist im Kameragehäuse auch ein Watchdog eingebaut, wird dieser ebenfalls über die Heizung gesteuert. Deshalb kümmert sich das Skript auch darum, dass der Zustand der Heizung alle paar Minuten kurz geändert wird, um den Watchdog zu triggern.
/usr/bin/webcam_wxdata
Schickt alle Minute Wetterdaten zum Server. Das ist noch eine Baustelle und bislang weder überall realisiert noch dokumentiert. Also bitte vorerst ignorieren.
