Hallo Buzz2912,
Du bist mein Held! Ich habe seit der 3.1 Beta ein nerviges Problem mit meinen WebCams. Mein Bugreport ist leider bis jetzt ungehört geblieben. Nachdem ich Dein Beispiel Script gesehen habe, hat es Klick gemacht.
Ich bekomme ab und zu Meldungen auf dem Webfront, dass ein Prozess nicht auf die Media Datei zugreifen kann.
Und die teilweise falsche deaktivierung des Timers ist auch hierfür die Ursache.
Ich lade jede Sekunde von meinen IP Cams ein Bild, füge das aktuelle Datum ins JPG ein und speichere sie im Media Verzeichnis um im Webfront ein „pseudo Motion-JPG“ anzuzeigen. Da das Laden der Bilder teilweise länger als eine Sekunde dauert, deaktiviere ich am Anfang des Scriptes den Timer und setze in anschließend wieder auf 1 Sekunde.
Da die Deaktivierung des Timers teilweise nicht funktioniert, laufen dann zwei Instanzen des Scriptes und versuchen gleichzeitig die Medien Datei zu überschreiben. Dies kann natürlich nicht gut gehen!
Hier mein Script:
<?
$url = "http://10.10.44.19/enu/camera640x480.jpg";
$saveto = "c:\IP-Symcon\media\webcam_sprechanlage.jpg";
// IPS_Sleep(0) an dieser Stelle löst das Problem !!!
IPS_SetScriptTimer($_IPS['SELF'], 0);
@LoadJPG($url, $saveto);
IPS_SetScriptTimer($_IPS['SELF'], 1);
function LoadJPG($url, $saveto) {
$img = @imagecreatefromjpeg($url);
if(!$img) {
$img = ImageCreate(640, 480);
$colorblack = ImageColorAllocate($img, 0, 0, 0);
$colorwhite = ImageColorAllocate($img, 255, 255, 255);
ImageFilledRectangle($img, 0, 0, 640, 480, $colorblack);
ImageString($img, 2, 20, 3, "Connection Error! ".date('d.m.y H:i:s'), $colorwhite);
} else {
$colorblack = ImageColorAllocate($img, 0, 0, 0);
$colorwhite = ImageColorAllocate($img, 255, 255, 255);
imagefilledrectangle($img, 0, 0, 110, 20, $colorblack);
imagestring($img, 2, 3, 3, date('d.m.y H:i:s'), $colorwhite);
}
@imagejpeg($img, $saveto);
}
?>
@Paresy: Ich nutze einen physikalischen Windows 8.1 PC.