Hallo,
ich habe seit einigen Tagen sporadisch immer wieder folgenden Fehler im Statusprotokoll stehen.
10045 ist das WF.
Ich kann es soweit eingrenzen in dem ich sagen kann das es dann passiert wenn eine Kamera einen Snapshot abholt.
Folgendes Skript handelt die Snapshots.
<?php
$Anzahl_Snapshots = GetValueInteger(14244);
$name = "Kamera Einfahrt";
$ident = "InstarEinfahrt";
$Content = file_get_contents("http://Hans:wurscht@192.168.178.10/tmpfs/snap.jpg");
//Für Doorbird
//$Content = file_get_contents("http://hans:wurscht@192.168.178.41/bha-api/image.cgi");
$filename = time(); //Jede Bild mithilfe von Unix Timestamp unterschiedlich bennennen, damit die Bilder krorrekt in IPS WF. bei Neustart zurückgeladen werden
$picturename ="$filename";
//$picturename ="Snapshot Kamera Einfahrt";
$catid = 50614;
$MediaID = IPS_CreateMedia(1); // Image im MedienPool anlegen
IPS_SetParent($MediaID, $catid); // Medienobjekt einsortieren unter Kategorie $catid
IPS_SetIdent ($MediaID, $ident.time()); // Unix Timestamp als Ident setzen
IPS_SetPosition($MediaID, -time()); // Unix Timestamp invertieren, somit wird der letze Snapshot im Webfront als erster angezeigt
IPS_SetMediaCached($MediaID, true);
// Das Cachen für das Mediaobjekt wird aktiviert.
// Beim ersten Zugriff wird dieses von der Festplatte ausgelesen
// und zukünftig nur noch im Arbeitsspeicher verarbeitet.
$ImageFile = IPS_GetKernelDir()."media".DIRECTORY_SEPARATOR."instar".DIRECTORY_SEPARATOR.$picturename.".jpg"; // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, False); // Image im MedienPool mit Image-Datei verbinden
$savetime = date('d.m.Y H:i:s');
IPS_SetName($MediaID, $name." ".$savetime); // Medienobjekt benennen
//IPS_SetName($MediaID, $name." ".$i); // Medienobjekt benennen
//IPS_SetInfo ($MediaID, $savetime);
IPS_SetMediaContent($MediaID, base64_encode($Content)); //Bild Base64 codieren und ablegen
IPS_SendMediaEvent($MediaID); //aktualisieren
//Handling Anzahl der Snapshots
$Ausgabe_Array = IPS_GetObject($catid); //Array des Parents einsammeln
print_r ($Ausgabe_Array); //Ausgabe zum testen
$ID = $Ausgabe_Array['ChildrenIDs']['0']; //ID die gelöscht werden soll ermitteln
$Anzahl = count($Ausgabe_Array['ChildrenIDs']); //Ist- Anzahl vom Array Index ermitteln
//Wenn Arrayindex größer als $Anzahl_Snapshots ist, Index [0] raus löschen
if ($Anzahl >= $Anzahl_Snapshots)
{
IPS_DeleteMedia($ID, true); //Index 0 raus löschen
}
print_r ($Anzahl);
Kann es sein das darin irgendwas den Fehler verusachtß
mit manuellem ausführen des Skriptes konnte ich es bis jetzt nicht nachstellen.
Im unteren Teil des Skriptes werden die Snapshots nach einer gewissen Anzahl gelöscht, vielleicht passt hier was nicht.?
Das Skript wird von einem BWM ausgelöst.
Danke schon mal.