|
Auf dieser Seite geht es um die Konfiguration der Foto-Webcam-Skripte
(siehe auch Software).
Unter Apache-Config stehen auch noch ein paar Tipps zur Konfiguration des Webservers.
Es gibt zwei Orte für Konfigurationsdateien:
- webcam/include/config.php - allgemeine Konfiguration, gültig für alle Kameras
- webcam/<webcam-name>/config.php - Kamera-spezifische Konfiguration
Die Dateien werden in dieser Reihenfolge geladen, d.h. ein Kamera-spezifischer Konfig-Parameter sticht einen Allgemeinen. Gemeinsame Dinge sollten also in der allgemeinen Konfig eingetragen werden, und nur echte Unterschiede in die Kamera-spezifische Konfig.
Viele der Parameter können weggelassen werden und werden dann entweder
durch die globale Konfiguration, oder durch sinnvolle Defaults vorbelegt.
Generell ist es empfehlenswert, Parameter aus der Beispielkonfig nur anzupassen, aber
nicht zu löschen.
Im Folgenden werden die Parameter mit einem jeweils sinnvollen Beispiel beschrieben.
$webcam['actMinute']= 2;
Normalerweise werden alle 10min Bilder gemacht. Wird eine Anzeige im Browser stehen gelassen, aktualisiert sich das Bild automatisch. Mit diesem Parameter kann die Minute festgelegt werden, zu der das Bild höchstwahrscheinlich am Server angekommen ist und deshalb eine Aktualisierung im Browser sinnvoll ist. Bei langsamen Datenverbindungen muss diese Zeit also nach hinten verlegt werden, damit das Bild da ist, wenn der Browser es aktualisieren will.
$webcam['aspectRatio']= 16/9;
Das Breiten/Höhenverhältnis der Bilder in den Vorschau-Ansichten. Das Verhältnis des Rohbildes kann durchaus anders sein. Bei DSLR-Kameras hat das Rohbild beispielsweise 3/2, trotzdem ist bei Landschaftsaufnahmen meist 16/9 schöner. Konfiguriert wird ein Faktor von Höhe zu Breite, auch Konstrukte wie 1280/960 sind möglich und ggf. sinnvoll.
$webcam['boxAdd']= "<br><a class='' href='http://www.edv-team.org/' ". "title='Dieser Standort wird vom EDV-Team Oberland zur Verfügung gestellt.". " Vielen Dank!'><img src='/webcam/herzogstand/infos/edv-team.png'></a>";
Der übergebene HTML-Text wird in einem Kasten außerhalb des Webcam-Hauptbildes angezeigt. Ob der Kasten überhaupt existiert, hängt von der Gestaltung der Seite ab.
$webcam['captureInterval']= 600;
Gibt den Zeitabstand der Bilder in Sekunden vor. Ist dieser Parameter nicht gesetzt
oder 0, dann muss die Auslösung der Bilder anderweitig (Cronjob, ssh…) erfolgen.
Der Zyklus beginnt immer zur vollen Stunde, d.h. bei krummen Werten wird trotzdem auf
einen Stundentakt synchronisiert.
$webcam['captureOffset']= 0;
Gibt eine Verzögerung nach der vollen Stunde an, d.h. wenn z.B. ein Bild jeweils zu krummen
5 Minuten gemacht werden soll muss hier 300 stehen.
// Special capture times mmddHHMM (regexp format) -> New year firework $webcam['specialTimes']= "/(12312354|12312357|01010003|01010006)/";
Für Tests oder z.B. rund um den Jahreswechsel können damit vom normalen Timing abweichende Aufnahmetermine definiert werden. Die Definition erfolgt in config.php, wie üblich entweder für eine bestimmte Kamera oder global.
Es handelt sich um einen preg-Ausdruck, in dem Datum und Uhrzeit definiert wird, wann
zusätzliche Aufnahmen gemacht werden sollen. Es gelten die üblichen Regexp-Wildcards.
Ein Intervall unter 2 Minuten ist allerdings nicht möglich.
$webcam['corrFunc']= function($exif, $rawName, $corrName) { $reg= "-region 1310x500+1150+2070 -noise 5"; return system("convert $reg -quality 95 $rawName $corrName") == 0; }
Definiert (sofern erforderlich) eine Prozedur, die das Bild vorbearbeitet, ehe es dann beschriftet und verkleinert wird. Häufigster Anwendungsfall ist das Ausblenden von nahen Gebäuden oder sonstigen Stellen, die Persönlichkeitsrechte verletzen könnten. Es werden eine Struktur mit aufbereiteten EXIF-Daten sowie zwei Dateinamen übergeben. Die Datei in $corrName wird genau dann weitergenutzt, wenn die Funktion true zurückliefert.
Beispiel zum Drehen des Bildes, falls die Kamera schief montiert ist:
$webcam['corrFunc']= function($exif, $rawName, $corrName) { $reg= " -distort SRT -0.7"; $reg.= " -sharpen 1x1"; $reg.= " -limit thread 1"; if (system("convert $reg -quality 95 $rawName $corrName") == 0) { return true; } return false; };
-0.7 – ist der Winkel in Grad. (im Beispiel würde das Bild nach rechts hängen)
-sharpen – ist für die Schärfe. Das ist Geschmackssache, ohne wird's durch die Bearbeitung unscharf und mit wirds verrauscht, beides ist doof.
siehe http://www.imagemagick.org/Usage/distorts/#barrel
$webcam['customRes']= array( array(520,225,350), array(540,360,0) );
Hiermit können neben den für alle Kameras verfügbaren Auflösungen auch zusätzliche Bildformate erzeugt werden. Die Parameter sind Höhe, Breite sowie der Offset vom oberen Bildrand. Damit lassen sich auch andere Höhen/Breitenverhältnisse als per Standard eingestellt erzeugen.
$webcam['errorMsg']= "Wegen einer technischen Störung ist die Kamera derzeit offline";
Hier kann eine Fehlermeldung eingegeben werden, die in einem roten Kasten unter dem Bild angezeigt wird, wenn die Kamera keine aktuellen Daten liefert. Die Schrift wird automatisch ausgeblendet, wenn das Bild wieder aktuell ist.
$webcam['fwLogo']= "foto-webcam.eu-logo.png";
Übergibt eine PNG-Datei für ein Logo, das rechts unten ins Bild eingeblendet wird. Per Default ist das der foto-webcam.eu Schriftzug.
$webcam['hdWidth']= 1200; $webcam['hdHeight']= 675;
Dimensionen des HD-Bildes. Dieses Bild wird angezeigt, wenn das Fenster groß genug ist. Normalerweise muss nur die Breite angegeben werden, die Höhe berechnet sich daraus automatisch (über den Parameter aspectRatio)
$webcam['hugeWidth']= 4272; $webcam['hugeHeight']= 2848;
Dimensionen des Bildes direkt aus der Kamera. Dieses Bild wird in einem großen Fenster angezeigt, wenn das Vorschaubild angeklickt wird. Hier sollte immer Höhe und Breite angegeben werden, aspectRatio ist hier i.d.R. nicht sinnvoll nutzbar.
$webcam['hugeIsRaw']= true;
Wird dieses Flag gesetzt, dann wird das Vollformat-Bild direkt aus der Kamera genutzt und nicht konvertiert oder beschriftet. Das ist sinnvoll, wenn das Bild bereits beschriftet ist oder qualitativ durch Recoding keinesfalls verschlechtert werden soll.
$webcam['keywords']= "webcam, herzogstand, fahrenbergkopf, walchensee";
Die Schlüsselwörter, die auf der Webseite der Kamera angezeigt werden sollen (für Suchmaschinen). Wird ggf. dem Seitenheader übergeben.
$webcam['latitude']= 12.79; $webcam['longitude']= 46.86;
Die geographischen Koordinaten der Kamera. Daraus wird derzeit vor allem Sonnenauf- und Untergang berechnet, was für die Belichtungsautomatik von Bedeutung ist.
$webcam['logoScale']= 1.0;
Skalierung des Logo rechts oben. Hier kann ein Faktor angegeben werden, mit dem das Logo skaliert wird. Der Default ist 1.0, was einer mittleren Größe entspricht.
Das Logo wird in der Datei logo.png im Kamera-Verzeichnis
(gleiche Ebene mit config.php) abgelegt.
Die Größe wird automatisch skaliert. Damit die Qualität auch auf dem voll
aufgelösten Bild gut ist, sollte es grob gesagt
etwa 300 Pixel oder mehr pro Seite haben.
$webcam['mainWidth']= 816; $webcam['mainHeight']= 459;
Dimensionen des Standard-Bildes, das per Default auf der Webseite angezeigt wird. Normalerweise muss nur die Breite angegeben werden, die Höhe berechnet sich daraus automatisch (über den Parameter aspectRatio).
$webcam['maxExposure']= 4; $webcam['maxIso']= 400;
Maximale Belichtungskorrektur und maximaler ISO-Wert, die zur Kamera gesendet werden. Das entspricht bei der EOS-Kamera den gphoto-Parametern exposurecompensation und iso. Wird am Kamerarechner über das Skript webcam_isoexp übergeben.
$webcam['maxGamma']= 1.3;
Maximaler Wert für eine nachträgliche Gammakorrektur von dunklen Bildern. 1.0 unterbindet jegliche Korrektur, sinnvolle Werte gehen bis etwa 2.0
$webcam['navHeader']= function() { print "<html><head>.......<body>"; } $webcam['navFooter']= function() { print "</body></html>"; }
Definiert Erzeugung von Header- und Footer für die Darstellung der Webseite. Hier muss ggf. eine Navigationsleiste, Stylesheets, Skripte etc eingebunden werden.
$webcam['overview']= Array( Array("marquartstein", null, null, "Marquartstein-Süd - Blick nach Osten"), Array("zellamsee", null, null, "Zell am See-Kaprun - Blick zum Kitzsteinhorn und zur Schmittenhöhe", "Zell am See"), );
Definiert eine Liste von Webcam-Bildern für die Übersichtsseite „Alle Webcams“.
Pro Kamera wird folgendes übergeben:
- Verzeichnisname der Kamera
- Ggf. URL eines Thumbnail-Bildes (falls extern, sonst null)
- Ggf. URL der Webcam beim Daraufklicken (falls extern, sonst null)
- Titel der Kamera (wird als mouseover-Title verwendet)
- Ggf. Menüpunkt für linke Menüleiste, falls vorhanden und abweichend vom Verzeichnisnamen
$webcam['resolutions']= Array(150,180,240,320,400,640,720,816,1200,1600);
Verfügbare Auflösungen im „current“-Verzeichnis. Die jeweilige Breite wird auch als Dateinamen für das entstehende jpg-Bild benutzt. Die Höhe wird über aspectRatio berechnet.
Auch die verwendeten Standardauflösungen (mainWidth und hdWidth) müssen in
dieser Liste aufgeführt werden.
$webcam['server']= "www.foto-webcam.eu";
Wird dieser Parameter angegeben, dann wird besagter Servername für die Site erzwungen, andern falls wird ggf. ein Redirect ausgegeben. Entfällt der Parameter, dann wird jeder beliebige Servername akzeptiert.
$webcam['title']= "Studentenstadt München-Freimann nach Norden"; $webcam['short']= "Freimann-Nord";
Bestimmt den Titel der Webseite und die Einblendung ins Bild, wenn das Bild beschriftet wird. Zusätzlich kann auch ein Kurztitel definiert werden, über dessen Verwendung entscheidet die Funktion navHeader.
$webcam['textShadow']= "black"; // Schrift ist weiß mit schwarzem Rand $webcam['textShadow']= "white"; // Schrift ist schwarz mit weißem Rand $webcam['textShadow']= "auto"; // Schriftfarbe automatisch, aber mit Rand
Dieser Parameter macht einen Schatten hinter die Schrift,
um sie vor unruhigen Hintergrund besser lesbar zu machen.
Per Default wird der Parameter weggelassen, die Schrift hat dann keinen Schatten und
stellt sich je nach Hintergrund automatisch auf schwarz oder weiß.
$webcam['thumbWidth']= 114; $webcam['thumbHeight']= 64;
Die Dimensionen der Thumbnail-Bilder. Entfällt die Höhe, wird sie über aspectRatio berechnet.
$webcam['topOffset']= 200;
Gibt einen Abstand in Pixel an, wieviel vom oberen Rand des Kamerabildes abgeschnitten wird, wenn das Bild ggf. auf 16/9-Format verkleinert wird.
$webcam['txtXoffset']= 10;
Ermöglicht, den Beschriftungstext weiter nach rechts zu rücken. Normalerweise beginnt der Text am linken Bildrand. Die Angabe ist in Prozent der Bildbreite und stimmt damit für alle Bildgrößen.
$webcam['uploadkey']= "asgfjhgqehjrgwqfchsdakfjs";
Ein String, der beim Upload der Bilder überprüft wird. Derselbe String muss auch am Kamerarechner eingestellt sein, nur dann wird der Upload akzeptiert. Damit wird erreicht, dass die Upload-Funktion nicht von Fremden missbraucht werden kann.
$webcam['uri']= "/webcam"
Der Basispfad für alle Webcams auf dem Server. Unterhalb dieses Pfades wird dann jeweils der Name der Webcam selbst angelegt. Es handelt sich um einen relativen Pfad unterhalb des DocumentRoot am Server.
$webcam['url']= "http://www.esg.de/klostercam/";
Wird nur in Spezialfällen benötigt, wo eine Kamera auf einem externen Server eingebunden werden soll. Die Nutzung ist im Normalfall eher nicht notwendig.
$webcam['wxFile']= "wetter/cam.txt";
Aus dieser Datei werden aktuelle Wetter- bzw. Temperaturangaben gelesen und ins Bild eingeblendet. Die Datei wird nur verwendet, wenn sie einen aktuellen Zeitstempel hat.
$webcam['wxFunc']= function($values, &$fields, &$raw_fields, &$camtxt) { .... $camtxt= sprintf("%d°C", round($fields['temp'])); return true; }
Wertet kamera- und hardwarespezifisch Wetter-Rohdaten aus und schreibt sie in ein generisches Array, das dann einheitlich weiterverarbeitet wird. Siehe Skript wx.php
Insgesamt 3 Konfigurationsmöglichkeiten gibt es, um Bildinhalte teilweise unkenntlich zu machen. Dabei wird Wert darauf gelegt, dass durch diesen Vorgang das Bild nicht zu sehr verschandelt wird. Die grundsätzliche Konfiguration ist überall gleich, es wird ein Array von Arrays übergeben, die jeweils rechteckige Regionen definieren. Alle Definitionen beginnen mit vier Koordinaten, die Zählung beginnt links oben, die Koordinaten beziehen sich auf das Originalbild direkt aus der Kamera.
Jede Funktion kann mehrfach mit unterschiedlichen Parametern angewendet werden, um z.B. unterschiedliche Bildregionen zu bearbeiten.
Die Funktionen im Einzelnen:
Regionen mittels starker Rauschunterdrückung unscharf machen (erfordert ImageMagick):
$webcam['filterRegions']= Array( Array(xmin,ymin,xmax,ymax, noise, opacity), ... );
noise gibt das Maß der Rauschunterdrückung an, sinnvolle Werte liegen zwischen 1 und 5.
opacity definiert die Randschärfe, mit der das Rechteck überlagert wird. 100 ist ein Mittelwert, 20 ist unscharf und durchscheinend, 500 ist scharf und deckend.
Regionen mit Randunschärfe kopieren:
$webcam['copyRegions']= Array( Array(xmin,ymin,xmax,ymax, xdest,ydest, opacity), ... );
xdest,ydest definieren die linke obere Ecke des Zielpunktes.
opacity definiert die Randschärfe, mit der das Rechteck überlagert wird. 100 ist ein Mittelwert, 20 ist unscharf und durchscheinend, 500 ist scharf und deckend.
Regionen nachts mit Zufallskacheln verwürfeln:
$webcam['scrambleRegions']= Array( Array(xmin,ymin,xmax,ymax, min_exposure, count), ... );
min_exposure ist die minimale Belichtungszeit in Sekunden, ab der die Funktion greift.
count definiert die Anzahl der Kacheln, die innerhalb dieses Rechtecks gebildet
und gegeneinander verwürfelt werden.
$webcam['includePath'] - File-Pfad zum Include-Verzeichnis $webcam['includeUri'] - Web-Pfad zum Include-Verzeichnis $webcam['lastCommand'] - Letzter Befehl zum Kamerarechner $webcam['name'] - Kamera-Name (== Verzeichnisname) $webcam['parImg'] - Aufbereiteter CGI-Parameter img $webcam['workPath'] - File-Pfad ins aktuelle Kameraverzeichnis $webcam['workUri'] - Web-Pfad ins aktuelle Kameraverzeichnis
Diese Definitionen werden nur innerhalb der Software verwendet und sind nicht konfigurierbar. Sie werden automatisch beschrieben.