Fehler bei der Anzeige von Kamerabildern

Hallo an Alle,
ich habe im Webfront den Fehler auf dem Screenshot.


Hier ist der Code der die Datei dorthin kopiert. Normalerweise sollte keine Fehlermeldung kommen.

$KameraRefresh = "KameraRefresh";
if (IPS_SemaphoreEnter($KameraRefresh,300)) {
	$cam = array(0,
					26376 /*[Systeminstanzen\Kameras\Alle Kameras\Kamera Strasse\Kamera Strasse]*/ ,
					56929 ,
					48863 /*[Systeminstanzen\Kameras\Alle Kameras\Kamera Tür\Kamera Tür]*/
					);
	for($i = 1; $i <= 3; $i++ ) {
		$fileName = "media/Cam".$i.".jpg";
		@IPS_SetMediaFile($cam[$i], $fileName, false);
		@copy ("C:/FTP/Cam".$i."/image.jpg" , IPS_GetKernelDir().$fileName );
	}
	IPS_SemaphoreLeave($KameraRefresh);
}

Hat jemand Ideen?

Passiert der Fehler ständig oder nur ab und zu? Normalerweise probiert IPS nämlich mehrmals auf deine Datei zu lesen, bevor es diese Meldung bringt. Wie oft kopierst du die Datei?

paresy

Also die Datei wird von einem Axis Videoserver mit FTP in einen Ordner kopiert.
Das IPS Anzeigescript läuft alle Sekunde. Der Fehler kommt nicht ständig aber oft.

Hi,

ich habe auch dieses Problem. Ich hatte es mal vor über einem Jahr als Bug reportet, ist aber nicht beachtet/gefixt worden. :mad:

Bei mir laufen auch mehrere PHP Scripte, welche periodisch Bilder von WebCams laden, mit den PHP Funktionen „ImageFilledRectangle“ und „ImageString“ einen Zeitstempel ins Bild einfügen und dann das modifizierte JPG in den Media Ordner kopiert und hierbei die bestehende Mediadatei überschreibt.

Die Änderung der Medien Datei wird von IPS registriert und das verlinkte Bild im Browser entsprechend erneuert.
Als Resultat sieht man einen „pseudo-Stream“ aus Bildfolgen.

Ich habe ein Wandpanel wo das WebFront ständig läuft. Dort erscheinen dann ab und zu diese Fehlermeldungen.

Jetzt ist es nicht so, dass sie dort nur einmal erscheint. Es sind manchmal 20, 50 oder noch mehr. Wenn ich eine Fehlermeldung mit dem roten X schließe hat es keinen sichtbaren Effekt, da sich an die Stelle der geschlossenen Meldung die aufgesammelten Fehlermeldungen von unten ins Bild schieben bis alle geschlossen sind. Sehr nervig!

Ich hätte daher den Featurerequest bzw. Bugfix-Wunsch diese Art der Meldung in IPS zu unterdrücken. Sie ist einfach nur nervig und macht keinen Sinn!

Selbst wenn der Austausch der Bilder im Media Folder sehr schnell erfolgt, zeigt das WebFront immer noch etwas an. Es ist dann halt nicht das neuste Bild.

Man kann das Problem sehr schön mit einem externen Script nachvollziehen. Man kopiert einfach periodisch unterschiedliche JPG Bilder über ein bestehendes verlinktes Media Objekt.
Mit zunehmender „Bildaustauschfrequenz“ und steigender Anzahl von Browser-Sessions, die dieses Bild anzeigen, steigt die Wahrscheinlichkeit für diese Fehlermeldungsfenster.

Hier ist ein Beispiel in Windows Powershell.


#Powershell Script kein PHP !!

$TestJPG1 = "c:	emp\Test1.jpg"
$TestJPG2 = "c:	emp\Test2.jpg"

$IPS_Media = "c:\IP-Symcon\media\WebCam.jpg

while ($true) {
	Start-Sleep -Milliseconds 5000
	Copy-Item "$TestJPG1" "$IPS_Media"
	
	Start-Sleep -Milliseconds 5000
	Copy-Item "$TestJPG2" "$IPS_Media"
}

hier eine Idee?

Gibt es hier nun eine Lösung?
Keiner eine Idee?
Ich kann mir nicht vorstellen das nur so wenige hierfür eine Lösung benötigen.

Also ich hab jetzt nochmals gesucht. Ich kann nichts finden um den Fehler zu unterdrücken.

Was kann ich also tun das die Meldung nicht mehr kommt?

Versuchts mal mit is_readable.


$txt = "//.../download.txt";
if (!is_readable($txt))
    {echo "Datei ist vermtl. gerade gesperrt.
";
     IPS_SetScriptTimer($_IPS['SELF'], 60);
     exit;}
else
    {echo "Script wird verarbeitet.
";
    IPS_SetScriptTimer($_IPS['SELF'], 0);
    ....
    }

Müsste auch mit nicht txt funktionieren.

Bringt leider nichts. Die Media Dateien lassen sich immer problemlos per Script austauschen. Da ist kein Filelock drauf.
Der Zugriffsfehler wird innerhalb von IPS generiert während oder nachdem die Datei ausgetauscht wurde.

Paresy, Gucky,

bitte habt Mitleid und kommentiert im IPS Code die Ausgabe der Fehlermeldung aus. Eine winzig kleine Änderung ( // ) und alles wäre OK.

Genau macht das bitte!!!

…und wie ist hier der Status liebe Entwickler?

Ich habe dafür noch keine gute Idee. Die Meldung unterdrück ist nur korrekt, da hier in der Tat ein Fehler auftritt. Nachher fehlt genau das Bild, das den Einbrecher zeigt. Ich würde lieber eine Lösung finden, dass der Fehler gar nicht erst auftritt oder er korrekter behandelt wird.

paresy

Hallo Paresy

in diesem speziellen Fall ist das Bild, worauf sich die Fehlermeldung bezieht ja gar nicht mehr vorhanden. Es wurde längs durch neuere Bilder ersetzt. Ich sehe z.B. unter den ganzen Fehlermeldungen das sich die Bilder trotz eines Fehlers vor x-Zeiten weiterhin aktualisieren.

Ich kann anhand der Fehlermeldung noch niemals feststellen wann das Problem aufgetreten ist. Ich kann nur sehen wie oft es aufgetreten ist, indem ich die Mouseklicks zähle, die ich zum Schliessen der ganzen Fenster brauche. Ausserdem verdecken die ganzen Fehlerfenster den Einbrecher auf den Bildern. :rolleyes:

Es würde doch reichen, wenn sich diese Fehlermeldung nach einer gewissen Zeit automatisch oder spätestens bei der nächsten erfolgreichen Aktualisierung schliesst.

Man könnte die Fehlermeldung auch anstelle des Media Objektes anzeigen. So etwa wie beim Browser, wenn ein verlinktes Bild nicht existiert. Wenn wieder ein Bild angezeigt werden kann, ist auch die Fehlermeldung hinfällig.

Nur bitte keine persistenten Meldungen am Rand, welche alle manuell geschlossen werden müssen. :frowning:

Ok. Wir werden ab dem nächsten Update die Fehlermeldung auf dem Bild anzeigen und wieder entfernen, sobald ein neues Bild korrekt verfügbar ist. Das sollte das nervige Problem löst :slight_smile:

paresy

@paresy …und wenn das Mediaobjekt eine Eigenschaft erhält showerror true/false dann kann jeder selbst entscheiden ob er die Fehler sehen will.

@paresy Ist das Problem in der aktuellen Beta #3758 gefixt?

Fix ist in der aktuellen Beta online!

paresy