Zum Inhalt springen

[Tutorial] Bilder von IP Kamera aufnehmen und auf FTP Server hochlden

Quelle:

http://www.forum-raspberrypi.de/Thread-tutorial-bilder-von-ip-kamera-aufnehmen-und-auf-ftp-server-hochlden

Hallöchen allerseits.
Ich habe bisher immer nur Tutorials gefunden wie mann Bilder von USB Kameras abgreift und in gewissen Zeitintervallen Speichert.
Nun möchte ich dieses kleine Tutorial verfassen wie Bilder von IP Kameras gespeichert werden und gleich an einen FTP Server gesendet werden.
Dieses mache ich mit einem einfachen und kleinen PHP Script was per Cron alle x Minuten gestartet wird.
Dies ist mein erstes Tutorial und ich hoffe ich bekomme es verständlich erklärt.

Es wird nicht viel benötigt. PHP5 , PHP5-cli und eine IP Kamera die das aktuelle Bild als Bilddatei bereit stellt. Meine NoName Kamera stellt ein jpg Bild bereit.
Als erstes brauchen wir mal einen PHP Interpreter falls PHP5 noch nicht installiert ist.
Als erstes machen wir ein Update

sudo apt-get update

Dann Installieren wir PHP5-cli

sudo apt-get install php5 php5-cli

Wenn diese Installation ausgeführt ist können wir PHP Scripte in der Shell ausführen.
Nun erstellen in einem Ordner eurer wahl eine datei mit

nano ipkamera.php

und fügen den Code unten ein.

<?php
#!/usr/bin/php -q
$timestamp = time();
$datum = date("Ymd-Hi", $timestamp);

$url = "http://192.168.178.116/snapshot.jpg"; // Hier den Link der ausgegebenen Bilddatei
copy($url,$datum.'jpg');//Hier wird die Datei umbenannt in das format JahrMonatTag-StundeMinute

# Ab hier wird die Verbindung zum FTP Server aufgenommen und das eben gemachte Bild hochgeladen
# FTP Host
$host = '192.168.178.1';
# FTP-Benutzer
$user = 'ftpusername';
# FTP Passwort
$password = 'ftppasswort';
# Name der Datei die übertragen werden soll
$file = $datum.'jpg';
# Name der Datei auf dem Remoteserver
$remote_file = $datum.'.jpg';
# Pfad auf dem Remote Server
$remote_path = '/';

# FTP-Verbindung herstellen
$connection = ftp_connect($host);
# Login
ftp_login($connection, $user, $password);
# Verzeichnis wechseln
ftp_chdir($connection, $remote_path);
# Datei übertragen
ftp_put($connection, $remote_file, $file, FTP_BINARY);
# Verbindung schließen
ftp_close($connection);
# Bild vom Raspi Löschen
unlink($file);

Sollte eure IP Kamera ein Usernamen und Passwort benötigen dann kann die Url angepasst werden.

$url = "http://192.168.178.116/snapshot.jpg?user=xxxx&pass=xxxx";

Allerdings sind diese Url´s von Hersteller zu Hersteller unterschiedlich.

unlink($file);

Unlink löscht die Datei gleich wieder vom Raspi.

Wie gesagt es ist nur ein kleines SEHR einfach gehaltenes Script was tut was es soll und hat keinerlei Sicherheitsüberprüfungen.
Klar das ganze kann auch mit Motion gemacht werden aber Motion ist mir mit 20% Last einfach zu Ressourcen fressend nur um alle x Minuten ein Bild zu Speichern.

Ich hoffe es kann jemand was mit dem kleinen Tutorial anfangen.