Default Image Media Image

Hallo zusammen,

lässt sich für ein Media Image ein default Bild definieren ?
Ich habe in meiner view das Sonos Cover integriert, jedoch sieht das etwas merkwürdig aus wenn nichts gespielt wird, da dann dieses bunte Miniaturbildchen angezeigt wird

Gruß,

Ein MediaImage sollte eigentlich immer ein gültiges Bild enthalten, falls nicht dann wird eben das Default Image angezeigt das einen Fehler signalisiert.

Hab das bei mir so gelöst, dass ich bei einem fehlenden Cover ein transparentes Image setze, siehe
https://ipsview.brownson.at/?p=2118

Hallo Andreas,

ich hab eigentlich deine Anleitung befolgt und mir das Skript angelegt, allerdings weist das einen Fehler auf…
Ich hab aber nicht ganz verstand für was die zweite Media Datei da ist?
Muss ich dort das transparente Cover einsetzen ?

Gruß,

ja genau, im 2. MediaImage ist das transparente Image abgelegt und wird dann auf das Cover kopiert :wink:

Ok, dann muss ich das morgen mal testen.

Hast du mir eventuell hierfür auch einen Lösungsansatz:

Gruß,
Adrian.

Also das mit dem Media Image funktioniert so jetzt perfekt :ok_hand:
Hast du evtl. Zu meiner anderen Frage eine Idee / Lösung ?

Gruß,

Hab damit leider noch nichts gemacht - aber sollte das nicht mit einem Popup machbar sein so für jede Gruppe ein Value oder AssoziationButton vorhanden ist?

Hallo Andreas,

Also mit dem AssoziationButton funktioniert das Prinzipiell schon.

Allerdings möchte ich quasi mehrere aufs mal gruppieren daher sozusagen das anwählen von 3 speakern und dann ein Button „Speichern“ um das abzuschließen.

Meine Idee hierzu wäre:

Ich brauch ein PopUp das enthält meine 5 Speaker, daneben ein Button / Runde Check Box die die InstanzID der jeweiligen speaker enthält.

Die ausgewählten speaker muss ich in ein Array schreiben.

Mit dem Button „Speichern“ muss ich mit dem entsprechenden Command SNS_SetGroup das Array durchgehen und die Funktion für jeden speaker im Array durchführen.

Das PopUp muss außerdem die Instanz iD des Masters enthalten, sprich der speaker von dem aus das PopUp geöffnet wurde.

Soviel zur Theorie, ich weiß leider nur absolut nicht wie ich das umsetzen kann…

Gruß,

Hallo Andreas,

also Grundsätzlich Funktioniert das, was mir jedoch aufgefallen ist, bei jeder Aktualisierung bekomme ich eine Fehlermeldung bzw. eine Meldung im Meldungsfenster, gelb hinterlegt „Result for Event XXXXXX“ mehr steht leider nicht dabei…

Bei sämtlichen Radio Sendern werden die Cover nicht angezeigt, hast du hierfür einen Workaround ?
Im schlimmsten Falle könnte man ja die Radio Cover Lokal Speichern und aufrufen, wenn das über den TuneIn Link nicht funktioniert.

Gruß,

Die Meldung kommt vermutlich von einem Deiner Skripts.

Cover bei Radio scheitert vermutlich am Zugriff, kopiere Dir mal die URL aus dem Sonos Modul und versuche im Browser darauf zuzugreifen :wink:

Hallo Andreas,

Die Meldung kommt von dem „Cover-Skript“ aber ich weis eben nicht wo das Problem liegt ? :sweat_smile:

Ja wenn ich die URL im Browser eingebe dann bekomme ich die Meldung Access Denied…

Kann ich in dein Cover Skript die Anfrage einbauen ob gerade SWR3 spielt und dementsprechend auf ein lokales Media Element zugreifen ?

Gruß,

ja, erweitere einfach die if Abfrage im Skript und binde noch ein zusätzliches MediaImage ein.

Also irgendwie bekomme ich das nicht hingebogen…


<?php

    $coverUrl = GetValue(30867);
    $mediaIDCover = 33367;
    $mediaIDDefault = 39138;
    $mediaIDRadio = 53870;
    $radioStation = GetValue(38182);



    if ($coverUrl <> '' && $radioStation == '-') {
        $curl_handle=curl_init();
        curl_setopt($curl_handle, CURLOPT_HEADER, false);
        curl_setopt($curl_handle, CURLOPT_URL,  $coverUrl);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 20);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
        $coverContent = curl_exec($curl_handle);
        curl_close($curl_handle);

    } 
            if ($radioStation == "SWR3")
    {
        $coverContent = IPS_GetMediaContent($mediaIDRadio);
    }

    else {
        $coverContent = base64_decode(IPS_GetMediaContent($mediaIDDefault));
    }

    IPS_SetMediaFile($mediaIDCover, 'media/SonosCover.jpg', false);
    IPS_SetMediaCached($mediaIDCover, true);
    IPS_SetMediaContent($mediaIDCover, base64_encode($coverContent));

Ich hab allerdings auch leider immer noch die Warnungen im Log bei jedem Starten des „Cover-Skriptes“, ist das bei dir auch der Fall?
Die Warnung taucht selbst bei deiner „reinen“ Ursprungsvariante.

Gruß,

Versuch mal folgendes:

<?php

    $coverUrl = GetValue(30867);
    $mediaIDCover = 33367;
    $mediaIDDefault = 39138;
    $mediaIDRadio = 53870;
    $radioStation = GetValue(38182);

    if ($radioStation == "SWR3") {
        $coverContent = IPS_GetMediaContent($mediaIDRadio);
    } else if ($coverUrl <> '' ) {
        $curl_handle=curl_init();
        curl_setopt($curl_handle, CURLOPT_HEADER, false);
        curl_setopt($curl_handle, CURLOPT_URL,  $coverUrl);
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($curl_handle, CURLOPT_TIMEOUT, 20);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
        $coverContent = curl_exec($curl_handle);
        curl_close($curl_handle);
    }  else {
        $coverContent = base64_decode(IPS_GetMediaContent($mediaIDDefault));
    }

    IPS_SetMediaFile($mediaIDCover, 'media/SonosCover.jpg', false);
    IPS_SetMediaCached($mediaIDCover, true);
    IPS_SetMediaContent($mediaIDCover, base64_encode($coverContent));

Funktioniert leider nicht :frowning:

da fehlt auf jeden Fall noch das base64_decode :wink:

$coverContent = base64_decode(IPS_GetMediaContent($mediaIDRadio));

Hallo Andreas,

funktioniert leider auch nicht und ich habe durch das Skript 15.000 Meldungen im Log

„Result for SkriptID“ mehr steht leider nicht drin…

Gruß,
Adrian

Das Problem ist doch das eigentlich beide if Bedingungen zutreffen oder?

Die 15.000 Meldungen können aber nicht von diesem Skript kommen - das wird ja nur bei einer Änderung der Cover Url ausgelöst.

es soll ja immer nur ein Zweig auslösen, entweder Radio oder URL oder leer.