View ID

Hallo Andreas,

in den Eigenschaften einer View steht doch immer die ID des Media-Files (habe ich zumindest so verstanden). Nun habe ich festgestellt, dass einige Views die gleiche ID haben (und zwar eine falsche) und eine View hat die ID=0 im IPSVIEW obwohl im IPS eine richtige 5stellige hinterlegt ist. Mache ich einen Denkfehler oder stimmt das was nicht ?

Grüße Frank

VIEW-ID.jpg

…und da fällt mir noch etwas ein: Kann man die View-ID variabel in IPS erkennen ? Und zwar so, dass man die ID der VIEW direkt zuordnen kann, auch wenn es sich um die Kopie einer anderen handelt.
Beispiel: Ich baue eine View „Mobile“ und kopiere diese für verschiedene Endgeräte wie S7 oder IPhone. Jetzt drücke ich einen Button und will erkennen, ob es über die S7- oder Iphone-Kopie gedrückt wurde. Vlt. gibt es eine einfache Möglichkeit und ich komme nur nicht drauf.

Grüße Frank

Das mit der ID ist ein Bug - sehe ich mir an.

Erkennen eines spezifischen Clients ist derzeit noch nicht möglich (zumindest fällt mir da spontan auch nichts ein, normalerweise wäre das SENDER Feld dafür vorgesehen, das ist aber bei kopierten Views auch immer gleich …).

wäre es evtl. eine Möglichkeit, bei der Variable Sender ein Schlüsselwort einzugeben wie z.B. $VIEW-ID und dieses Schlüsselwort beim Kopieren durch die View-ID des Zielclients zu ersetzen ? Ich bin jetzt nicht der Experte, aber könnte ich das über eine Stringfunktion ändern wenn ich diese auf $data oder $content im Funtionsaufruf "function writeViewContent " anwende oder funtioniert das nicht ?

das wäre durchaus eine Möglichkeit, die Du probieren könntest (die saubere Variante wäre sicher die entsprechenden Elemente in der JSON Struktur zu verändern, ist aber entsprechend aufwendiger). Hab in meinem Blog auch mal ein Skript vorgestellt, mit dem man eine View kopieren kann, dort könnest Du Dir das einbauen …

hat funktioniert :smiley:

function writeViewContent ($ID, $viewObj) {
       $name    = IPS_GetName($ID);
        // Write Data to View

        $data        = json_encode($viewObj);
       showMemoryUsage("json_encode '$name'");
        $viewObj = null;
	$data = str_replace('$VIEW_ID',$ID,$data); # hier wird die Variable $VIEW_ID durch die echte View-ID ersetzt

        $content     = base64_encode($data);
       showMemoryUsage("base64_encode '$name'");
        $data = null;
	   
        IPS_SetMediaContent($ID, $content);
       showMemoryUsage("IPS_SetMediaContent '$name'");
        $resultContent = null;