|
Auf der Seite TL-MR3020 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. Auf der Firmware des (neuen) Kamerarechners sind diese bereits enthalten.
Nicht in jeder Konstellation sind alle erforderlich, deshalb nachfolgend eine Beschreibung, was zu welchem Zweck dient.
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.
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.
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.
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:
* * * * * /usr/bin/webcam_check
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.
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.
Ist eine Heizung im Gehäuse eingebaut, wird dieses Skript zum Schalten derselben verwendet. Das funktioniert, wenn die Heizung über die WLAN-LED oder die USB4all Platine 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.
Um die Heizung EIN/AUS zu schalten:
webcam_heater on
webcam_heater off
Schickt alle Minute Wetterdaten zum Server. Das Skript enhält die verschiedenen Varianten von Temperatur- und Wettersensoren die sich bei foto-webcam.eu nach und nach angesammelt haben. Wirklich interessant dürfte allenfalls der Teil für usb4all sein, da diese Platine inzwischen an mehreren Stellen verwendet wird. Relevant ist dafür serverseitig das Skript wx.php.