Moin…
… ich versteh den ganzen IPS_GetMedia, SetMedia, SetMediaCached etc. nicht mehr und komme nicht weiter.
Ich hatte ein Skript unter der 3.4 welches mir ein Bild von einer Webcam abholt, in den Media-Ordner speichert und dieses konnte ich mir ins Webfront verlinken. Diese funktioniert nicht mehr.
Ich komme einfach nicht weiter, mir dieses Bild wieder als Media Objekt zu speichern und zyklisch zu aktualisieren.
Warum ist das so kompliziert? Ich habe mir jetzt eine Stunde die Doku zu Medienverwaltung angeschaut und ich
verstehe es einfach nicht.
Ich bekomme nur leere Mediaobjekte angezeigt.
Das Problem ist, das ich den ImageGrabber nicht nutzen kann und somit das Medien-Objekt selbst anlegen muss.
Das war mein Skript bis 3.4 und mein kläglicher Versuch diese Bild zu speichern:
<?php
$ip = "192.168.1.28";
$ping = Sys_Ping($ip,500);
if ($ping == true)
{
IPS_Sleep(500);
#$string = Sys_GetURLContent("http://".$ip."/bin/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=1&-continue=0&-getpic");
$string = Sys_GetURLContent("http://".$ip."/web/cgi-bin/hi3510/param.cgi?cmd=snap");
$newstring = str_replace(' ','',$string);
$newstring = str_replace('varpath="','',$newstring);
$newstring = str_replace('"','',$newstring);
$newstring = trim($newstring);
#echo $newstring;
#$contents= file_get_contents("http://".$ip."/bin/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=1&-continue=0&-getpic");
$content= file_get_contents("http://".$ip.$newstring);
$savefile = fopen("IPS_GetKernelDir\media\Carport.jpg", "w");
fwrite($savefile, $content);
fclose($savefile);
#$ImageFile = "http://".$ip.$newstring; // Image-Datei
#$MediaID = IPS_CreateMedia(1);
#IPS_SetMediaCached($MediaID, true); // Image im MedienPool anlegen
#IPS_SetMediaFile($MediaID, $ImageFile, true);
IPS_LogMessage('WEBCAM SKRIPT:','Webcam Bild abgeholt.');
}
else
{
IPS_LogMessage('WEBCAM SKRIPT:','FEHLER: Webcam nicht erreichbar');
return;
}
?>
HIIIIIIIIIIIILLLLLFFFE,
Peter
Vielleicht fehlt dir diese Funktion.
IPS_SetMediaContent IP-Symcon :: Automatisierungssoftware
Du nimmst den content und schiebst ihn base64 codiert direkt in die MediaID.
Voraussetzung ist, dass dein Medienobjekt existiert und auf eine Datei zeigt.
Und nach dem setzen des Content musst du noch IPS_SendMediaEvent IP-Symcon :: Automatisierungssoftware aufrufen.
Michael
Wie gesagt, ich versteh es nicht. Die Doku habe ich mir rauf und runter abgeschaut.
Auch die Beispiele dort helfen mir nicht.
Was soll zum Beispiel bei SetMediaContent das „R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs“?
Ich habe den String wo ich das Bild bekomme und möchte das in ein Media-File haben.
Warum ist das so kompliziert?
Gesendet von iPhone mit Tapatalk
Ist jetzt etwas aus dem Zusammenhang gerissen, Aber so funktioniert es.
Ich hoffe mein Telefon kopiert das hier jetzt sinnvoll
Den erste Teil kannst du vergessen, wenn du schon ein MedienObjekt hast.
Eigentlich sind nur die letzten zwei Zeilen wichtig.
SetMediaEvent braucht man wohl doch nicht (außer im Dashboard).
$CoverID = @IPS_GetObjectIDByIdent('CoverIMG', 12345);
if ($CoverID == false) {
$CoverID = IPS_CreateMedia(1);
IPS_SetParent($CoverID, 12345);
IPS_SetIdent($CoverID, 'CoverIMG');
IPS_SetName($CoverID, 'Cover');
IPS_SetPosition($CoverID, 27);
IPS_SetMediaCached($CoverID, true);
$filename = "media" . DIRECTORY_SEPARATOR . "Cover_12345.png";
IPS_SetMediaFile($CoverID, $filename, False);
}
$CoverRAW = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . "nocover.png");
IPS_SetMediaContent($CoverID, base64_encode($CoverRAW));
Michael
Danke Michael,
hab es mit deiner Hilfe und bissel Anpassung hinbekommen.
Gruß,
Peter
Das wäre auch mal ein schönes Modul… Ist wirklich immer sehr kompliziert, ein einfaches Bild irgendwo hin zu speichern und anzeigen zu lassen…
Gesendet von meinem JY-S3 mit Tapatalk
Äh… Kürzer geht es auch mit einem Modul nicht.
Außerdem wäre der ImageGrabber immer die erste Wahl.
Überhaupt sollte man auf Dateizugriffe verzichten, gerade in Zeiten von Symbox, Ubuntu, MacOS baut man eher Fehler ein oder es läuft nicht unter jedem IPS 4.
Michael