Anzeigen des neusten Bildes einer Webcam auf einer Webseite

Aufgabenstellung

Meine neue Webcam (Planet ICA-HM136) kopiert in einem einstellbaren Abstand (typisch alle 5 Minuten) ein Bild auf meinen FTP-Server, auf dem auch meine Webseite läuft. Leider generiert die Webcam mit jedem neuen Bild einen neuen Dateinamen mit Datum und Uhrzeit (z.Bsp. WEBCAM-20121226-180630.jpg). Die Webseite kann aber nur ein Bild mit immer gleichem Namen anzeigen (z.Bsp. webcam.jpg).

Wie also kann ich nun das letzte Bild vollautomatisch umbenennen, so dass es die Webseite anzeigen kann ?

Eine Anfrage beim Hersteller Planet war leider nicht erfolgreich. Die Firmware kann Datum+Zeit nicht im Dateinamen ausblenden.

Die Lösung mit PHP-Skript und Crontab

Meine Webcam speichert die Bilder auf dem FTP-Server im Verzeichnis “html/camera”.

Ins gleiche Verzeichnis kopierte ich das folgende PHP-Skript:

PHP-Skript

Dieses Skript (Download) wechselt ins Verzeichnis mit den Webcam-Bildern und benennt alle vorhandenen Bilder in den Dateinamen “webcam.jpg” um. Da das neuste Bild als letztes umbenannt wird, ist dieses neuste Bild dann für die Anzeige auf der Webseite mit dem Namen “webcam.jpg” bereit.

Die Funktionsweise kann bereits getestet werden, in dem man dieses Skript im Browser startet: https://meine-webseite/camera/webcam.php. Man kann das Skript mit “echo”-Anweisungen ergänzen, wenn etwas nicht funktionieren sollte.

Damit dieses Skript nun vollautomatisch auf der Webseite aufgerufen wird, muss es auf dem Webserver in den sog. Cron-Dienst eingetragen werden. Bei meinem Provider geht dies sehr komfortabel über das Web-Interface:

Crontab

Mit der Anweisung “*/5” wird das Skript “webcam.php” alle 5 Minuten aufgerufen.

Möchte man Fehler und allfällige “echo”-Befehle speichern, kann man den Befehl wie folgt erweitern:

Crontab

Die Ausgaben werden in der Log-Datei im gleichen Verzeichnis abgelegt.

Natürlich muss man die Zeiten, Pfade und Dateinamen in diesem Beispiel an seine Umgebung anpassen. Probleme machte mir Crontab, weil der aktuelle Pfad im Skript nicht automatisch im Verzeichnis “html/camera” stand.