Videoarchiv in IPS

Hallo,

gibt es in IPS auch ein Videoarchiv, wo mann bei bestimmten Ereignissen (Türklingel, Brifkastenklappe) ein Bild der IP Cam mit Datum und Uhrzeit abspeichern kann?

Gruß
Master

Imagegrabber und Zeit + Datum per Script speichern fällt mir dazu ein. filetime könnte auch gehen, dieser Befehl ermittelt die Zeit der letzten Änderung der gespeicherten Datei.

Hi,

optional wäre die PHP-Funktion

imagettftext ( resource $im , int $size , int $angle , int $x , int $y , int $col , string $fontfile , string $text )

zu erwähnen, welche Datum und Uhrzeit quasi „ins Bild“ schreiben könnte, falls du das meinst!?

Z.B.

[ul]
[li]Ereignis wird ausgelöst (z.B. Türkontakt)
[/li][li]IPS führt daraufhin PHP-Script aus, um sich das Standbild von der IP-Kamera zu holen (entweder mit imagecreatefromjpeg… oder einfach die Datei kopieren)
[/li][li]PHP-Script fügt aktuelle Datum+Uhrzeit ins Bild und speichert dies in entsprechenden Ordner (nach Ort oder Jahr/Monat/Tag/…)
[/li][/ul]

Also mit IPS kein Problem! :wink:
(Sage ich, als IPS-Theoretiker)

LG,
florida

Hallo,

das mit dem Bild von der Kamera holen, mit Text zuversehen und dann abspeichern habe ich hin bekommen.

Jetzt würde ich gerne die letzten ca. 20 Bilder in eine Art Webseite anzeigen wollen, mit Bild und ein paar Daten wie (Datum, Uhrzeit).

Wie müßte ich das machen.

Gruß Uwe

Einfach ne eigene HTML-Seite einbinden, würd ich sagen.

Hi,

Einfach ist gut, wenn man das noch nicht gemacht hat. :confused:

Hier mal ein Beispiel wie so etwas aussehen könnte. CSS usw. musst du halt noch anpassen.

<?PHP 
//Zur Erzeugung einer webcam.html in einen Verzeichnis, das nur Bilder enthält 
//Script einmal und bei neuen Bildern im Verzeichnis wieder aufrufen 
$verz = opendir('.'); //Das aktuelle Verzeichnis
$b = "<html><head><title>IPS Webcam Bilder</title></head><body style=\"background-color:#CCCCCC\">"; 
while($file = readdir($verz))  
{   
$info = @getimagesize($file);   
if($file != "." && $file != ".." &&  !is_dir($file) && $file != "bilder-html-erzeugen.php" && $file != "webcam.html")  
{ 
$b .= "<img src=\"$file\" border=\"0\"><br><br>"; 
} 
} 
closedir($verz); 
$b .= "</body></html>"; 
$b1 = @fopen("webcam.html", "w"); 
flock($b1,2); 
fputs($b1, $b); 
flock($b1,3); 
fclose($b1); 
?>

Viele Grüße
Chris

Hallo Chris,

wenn ich mir die Variable $b in IPS abspeicher und mir diese im Webrowser anzeige lasse bekomme ich bei den Bildern nur X.

Wofür ist das noch.


$b1 = @fopen("webcam.html", "w");  
flock($b1,2);  
fputs($b1, $b);  
flock($b1,3);  
fclose($b1);  

Danke für die Hilfe.
Gruß Uwe

Hi,

flock macht folgendes: PHP: flock - Manual

Du solltest es auch entfernen können. Ohne größere Probleme.
Wie sieht denn der Quelltext der HTML Seite aus bzw. wohin zeigen den die Image Tags.

Viele Grüße
Chris

Hi,

Der HTML CODE sieht so aus.

<html><head><title>IPS Webcam Bilder</title></head><body style="background-color:#CCCCCC"><img src="Kamera Eingang (Bild 1).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 2).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 3).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 4).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 5).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 6).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 7).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 8).jpg" border="0"><br><br><img src="Kamera Eingang (Bild 9).jpg" border="0"><br><br></body></html>

Und das kommt raus.

Liegen HTML Code und Bilder denn im gleichen Verzeichnis?
Kannst du mal ein JPG ohne Leerzeichen im Namen dort einfügen? Ich tippe auf die Leerzeichen!

Viele Grüße
Chris

Hi Chris,

auch wenn ich die Leerzeichen weg lasse, ändert sich nichts immer noch ein X.

Der HTML Code liegt bei mir nur in einer String Variable in IPS, sonst finde ich diesen nirgens.

Gruß Uwe

Hi Chris,

wenn ich das Skript so ändere, wir eine WebSeite im Verzeichnis erstell, aber die Variable mit dem HTMLCode zeigt in IPS noch nichts an.

<?
//Zur Erzeugung einer webcam.html in einen Verzeichnis, das nur Bilder enthält
//Script einmal und bei neuen Bildern im Verzeichnis wieder aufrufen

$datei_ablage_ort = "C:\Temp\Kamera";

$verz = opendir($datei_ablage_ort); //Das aktuelle Verzeichnis

$b = "<html><head><title>IPS Webcam Bilder</title></head><body style=\"background-color:#CCCCCC\">";

while($file = readdir($verz))
{
  	$info = @getimagesize($file);
	if($file != "." && $file != ".." &&  !is_dir($file) && $file != "bilder-html-erzeugen.php" && $file != "webcam.html")
	{
	$b .= "<img src=\"$file\" border=\"0\"><br><br>";
	}
}
closedir($verz);


$b .= "</body></html>";
$b1 = @fopen(($datei_ablage_ort."\webcam.html"), "w");
flock($b1,2);
fputs($b1, $b);
flock($b1,3);
fclose($b1);

SetValue(27763 /*[- Test\Kamera Speicher\WebCam]*/,$b);

?>

Gruß Uwe

Dann fehlt der Variable $file vermutlich der Pfad zu den Bildern.
O.K. nochmal zurück zum Anfang.
Kannst du mal einen Screenshot machen, wie du das in IPS eingebaut hast?
Viele Grüße
Chris

Veruche ich mal.

Die Bilder liegen im Pfad. -> C:\IP-Symcon\media\Kamera
(Eine Webseite mit den Bilder, nach dem ich Script geänder habe auch.)

Den HTMLCode aus der Seite, füge ich in einer String Variable in IPS hinzu.

Diese Variable, lade ich im Dashbord in den WebBroser über Content hinnein.

Gruß Uwe

Wenn ich mir die Variable ($file) ausgeben lasse, stehen da nur die Namen der Bilder drin, sonst nichts.

...Kamera Eingang (Bild 1).jpgKamera Eingang (Bild 2).jpgKamera Eingang (Bild 3).jpgKamera Eingang (Bild 4).jpgKamera Eingang (Bild 5).jpgKamera Eingang (Bild 6).jpgKamera Eingang (Bild 7).jpgKamera Eingang (Bild 8).jpgKamera Eingang (Bild 9).jpgwebcam.html

Gruß Uwe

Und wenn du die Webseite unter c:\IP-Symcon\media\Kamera aufrufst, werden dann die Bilder angezeigt?

Hi Chris,

ich habe jetzt das Skript mal geändert. Im HTMLCode fehlte wirklich der Pfad. Jetzt geht es.

<?
//Zur Erzeugung einer webcam.html in einen Verzeichnis, das nur Bilder enthält
//Script einmal und bei neuen Bildern im Verzeichnis wieder aufrufen

$image_speicherort = "C:\IP-Symcon\media\Kamera";  //Das aktuelle Verzeichnis

$verz = opendir($image_speicherort);
$b 	= "<html><head><title>IPS Webcam Bilder</title></head><body style=\"background-color:#CCCCCC\">";

while($file = readdir($verz))
{
  	$info = @getimagesize($file);
	if($file != "." && $file != ".." &&  !is_dir($file) && $file != "bilder-html-erzeugen.php" && $file != "webcam.html")
	{
	$b .= "<img src=\"$image_speicherort\\$file\"border=\"0\"><br><br>";
	}
}
closedir($verz);

$b .= "</body></html>";
$b1 = @fopen(($image_speicherort."\webcam.html"), "w");
flock($b1,2);
fputs($b1, $b);
flock($b1,3);
fclose($b1);



SetValue(27763 /*[- Test\Kamera Speicher\WebCam]*/,$b);

?>

So jetzt muß ich mal sehen wie ich das ganze noch ein bischen aufhübsche, mit HTML kommen ich momentan noch garnicht klar.

Es sollen die Bilder noch sotiert werden, dann muß noch Text darüber, und wie lösse ich das Problem das der Ordner nicht zu voll wird. (evt. nach 60Tage Bild löschen) Viele Fragen und noch keine Antworten.

Achja und wie bekomme ich die Bilder kleiner.

Gruß Uwe

Hallo Uwe, wie ist hier Dein aktueller STand ? würde mir gerne etwas ähnliches bauen, hast du mir freundlicherweise noch ein paar aktuellere Schnipsel ?

Gruss & Danke

Hi,

ich würds so machen [UNTESTED]:

<?php
//----- KONFIGURATION -----
$pictures_path='C:\IP-Symcon\media\Kamera';	//Pfad zu den Webcam-Bildern
$picture_width='480px';				//Gewünschte Breite der Bilder (oder 'auto' für automatische Breite)
$picture_height='320px';			//Gewünschte Höhe der Bilder (oder 'auto' für automatische Höhe)
$keep_pictures_for=(3600*24*60);		//Bilder für x Tage (in Sekunden) behalten, danach löschen
//-------------------------

$pictures=array();
$site='<html><head><title>IPS Webcam Bilder</title></head><body style="background:#ccc;">';
$dc=@scandir($pictures_path);
foreach($dc as $file) {
 //Nur '.jpg'-Dateien einlesen...
 if(substr(strtolower($file),-4,4)=='.jpg') {
  //Bilder nach x Tagen (bzw. Sekunden) löschen...
  if(filemtime($pictures_path.'\'.$file)<(time()-$keep_pictures_for)) {
   unlink($pictures_path.'\'.$file);
   continue;
  }
  $pictures[filemtime($pictures_path.'\'.$file)]=$file;
 }
}
//Bilder absteigend (neueste zuerst) sortieren...
if(!empty($pictures)) {
 krsort($pictures);
}
foreach($pictures as $pic_time => $pic_file) {
 $site.='<img src="'.$pictures_path.'\'.$pic_file.'" title="Aufgenommen am '.date('Y-m-d \u\m H:i:s',$pic_time).'"
 style="border:0;margin-right:10px;width:'.$picture_width.';height:'.$picture_height.';">';
}
$site.='</body></html>';


//(?) HTML-Datei ausgeben...
echo $site;

//ODER

//(?) HTML-Datei schreiben...
file_put_contents($pictures_path.'\webcam.html',$site,LOCK_EX);

//ODER

//(?) HTML-Code in Variable speichern...
SetValue(27763 /*[- Test\Kamera Speicher\WebCam]*/,$site);

Wozu erzeugst du eigentlich eine HTML-Datei und speicherst den Code in eine Variable?? Du könntest doch entweder den HTML-Code direkt von deinem PHP-Skript ausgeben lassen ODER im Webfront eine „externe“ (diese PHP-) Seite anzeigen lassen ODER eben eine html-Datei generieren lassen, die du dann einbindest. :wink:

Zum „Beschriften“ der Bilder → siehe die PHP-Funktion:

imagettftext ( resource $im , int $size , int $angle , int $x , int $y , int $col , string $fontfile , string $text );

ODER (wenn es nicht dauerhaft sein soll):

einfach unter das jeweilige Bild im HTML-Code z.B. ein DIV mit deinem Text einfügen…

LG,
florida