Image Grabber für IP-Kamera

Hallo und guten Tag!

Gab es in der V1 auch schon einen Image Grabber? Ich möchte aus meiner Foscam ein Bild abspeichern, wenn jemand klingelt.

Happy Day und Dank, Frank

Hallo Frank,

mit meiner MARMITEK ROBOCAM mache ich es mit einem Codeschipsel aus dem IPS-TIPP Bereich (find ich nur grad nicht, daher „meine“ Version).

Anpassungen in den Zeilen 2 und 3 erforderlich:

CAM-SNAPSHOT.txt (364 Bytes)

Hoffe es hilft :wink:

Gruß Tom

Hallo Tom!

Danke für die Tipp! Bei der Foscam sieht die Zeile natürlich anders aus aber es klappt. Ich habe jetzt ein Verzeichnis, in dem ein Bild landet, welches mit dem Datum versehen ist.

Jetzt habe ich aber leider noch ein Problem: Wie zeige ich das Bild jetzt im Designer an? Der Name ist ja durch das Datum immer unterschiedlich.

Happy Day und Dank, Frank

Ein einfaches copy in das Media Vz. sollte reichen (gab es das in der V1 schon?). Beim copy Befehl kannst Du ja immer den gleichen Zielnamen angeben. Kurze Batchdatei sollte reichen.

Hallo Thomas!

Der Copy war kein Thema. Nur wurde das Bild nicht gleich angezeigt. Da fehlte mir noch der IMGP_SendEvent Befehl Jetzt klappt es :smiley:

Jetzt sendet die Kamera ein Bild per FTP auf den Server und dazu noch eine E-Mail, wenn jemand an der Tür klingelt. Anlage an der E-Mail war (noch) nicht möglich.

Happy Day und Dank, Frank

Hallo Frank,
mein Script mal als Beispiel für „machen wir fast alles selber mit PHP“ :).


<?
$debug = true;

function boolStringAufZu($bValue = false) {                      // returns string
  return ($bValue ? 'geschlossen ' : 'geöffnet    ');
}
function boolStringEinAus($bValue = false) {                      // returns string
  return ($bValue ? 'ein         ' : 'aus         ');
}
function VarAktTime($varID) {
	$var = IPS_GetVariable($varID);
	$akt = date("d.m.Y H:i:s", $var['VariableChanged']);
	return ($akt);
}

if (IPS_SemaphoreEnter($_IPS['SELF'], 1000)) {
  	$betreff = "Tuerklingel ".date("Y.m.d")." ".date("H:i:s");
	$message = 	"Haustür       - " .boolStringAufZu(GetValueBoolean(57727 /*[Flur_Windfang_GästeWC\Haustür\Haustür Status]*/)). " - " . VarAktTime(57727 /*[Flur_Windfang_GästeWC\Haustür\Haustür Status]*/) .chr(13);
	$message .= "P             - " .boolStringEinAus(GetValueBoolean(23997 /*[Fernbedienungen\Polo #7489\Available]*/))." - ".GetValueString(40384 /*[Fernbedienungen\Polo #7489\Available.DateTime]*/).chr(13);

  $fh_http = fopen ("http://172.16.100.99/IMAGE.JPG", "r");
  $file = date("Ymd")."_".date("His").".jpg";
  $fname = "../media/KameraEingang/" . $file;
  $fh_file = fopen ( $fname, "wb");
  while (!feof($fh_http)) {
     $chunk = fread($fh_http,1024);
     fwrite($fh_file,$chunk);
  }
  fclose( $fh_file);
  fclose( $fh_http);
  $attachment=IPS_GetKernelDir()."/media/KameraEingang/".$file;
  $target="D:\\".$file;
  copy($attachment, $target);
IPS_GetKernelDir()."/media/KameraEingang/CamEingang_Last2.jpg");
  copy(IPS_GetKernelDir()."/media/KameraEingang/CamEingang_Last.jpg", IPS_GetKernelDir()."/media/KameraEingang/CamEingang_Last1.jpg");
  SetValueString(44560 /*[Steuerung\SaveCamEingang\CamEingangLast1.Date]*/, GetValueString(27291 /*[Steuerung\SaveCamEingang\CamEingangLast.Date]*/));
  copy($target, IPS_GetKernelDir()."/media/KameraEingang/CamEingang_Last.jpg");
  SetValueString(27291 /*[Steuerung\SaveCamEingang\CamEingangLast.Date]*/, date("d.m.Y H:i"));
  $result=SMTP_SendMailAttachment(54174 /*[Kommunikation\E-Mail senden (SMTP) an empfaenger@mail.xy]*/, $betreff, $message, $target);
  unlink($target);
  LogMyMessage("Haustürklingel gedrückt");
	if ($debug)
	  IPS_LogMessage(IPS_GetName($_IPS['SELF']), "Ausgelöst durch: ".$_IPS['EVENT'].", ".$betreff.", Mail verschickt: ".$result);
  IPS_SemaphoreLeave($_IPS['SELF']);
} else {
  IPS_LogMessage(IPS_GetName($_IPS['SELF']), "Script läuft schon!");
}

?>

Ich puffere die letzten beiden Bilder mit Datum und Uhrzeit für die Anzeige im Dashboard. Außerdem bleiben alle $file mit entsprechendem Datum_Uhrzeit erhalten.

Das Umkopieren mit $target musste sein, da SendMailAttachment den Anhang nicht aus einem Pfad nehmen wollte.

Hi Ralf,

versuche mir auch gerade ein Imagegrabber zu bauen. Dabei habe ich in deinem Script folgendes gesehen:

SMTP_SendMailAttachment

Jedoch finde ich in der IPS Doku nichts dazu (nur zu SMTP_SendMail - ohne Attachment).

Gibt es das noch, oder hast du noch Doku dazu?

Habe hier was bei Google gefunden:

SMTP_SendMailAttachment (line 9205)
SMTP_SendMailAttachment

boolean SMTP_SendMailAttachment (integer $InstanceID, string $Subject, string $Text, string $Filename)
integer $InstanceID
string $Subject
string $Text
string $Filename

Warum in die Ferne schweifen… Nach 7 Jahren, sollte man aber auch die Grudfunktionen von IPS kennen. :confused:

Es geht immer noch mit STRG+SPACE im Script.

Du wirst dich wundern, was da alles zum Vorschein kommt. :cool:

Hallo Rainer,

ich habe bisher meine Scripte selber geschrieben (im Webverzeichnis) und Notepad++ wollte mir zum verrecken nicht die IPS Funktionen zeigen ;).

Nein, kleiner Scherz - ich musste sowieso heute mit Schrecken feststellen wie sehr ich raus bin aus PHP :).