Bild in eine Kachel per HTML Box einfügen

Hallo zusammen.

ich versuche seit einiger Zeit ein hochgeladenes Bild per HTML Box in eine Kachel einzulesen:

hier der Wert den die String Box enthält: <img src="http://meineSymconIP:3777/media/43366.jpg style=„width:100%; height:auto;“>

Es wird aber einfach nicht angezeigt. Habe schon die Foren durchgeschaut, aber ich finde nicht wirklich was dazu, warum das so ist.

Info: betreibe Symcon auf einer Synology per Host

Was mache ich falsch? Wäre toll, wenn mir einer hier kurz auf die Sprünge helfen könnte.

Ganz lieben Dank dafür

Armin

Der media Ordner ist nicht per WebServer erreichbar.
Das geht nur per „user“-Ordner oder per WebHook

Danke Dir. Heißt, ich muss die Bilder in den User Ordner hochladen? und nicht über Media das Bild in Symcon direkt hochladen.

Frage: wie würde das mit dem WebHook gehen ?

Vielen Dank

Armin

Wenn du unbedingt eine HTMLBox haben willst, dann wäre der User Ordner der einfach, auch wenn nicht mehr empfohlene Weg. Und dann müssen die Dateien dort im Dateisystem liegen. Innerhalb des Objektbaums brauchst du sie dann nicht.

Wobei… du kannst auch ein PHP Skript im User Ordner platzieren, welches dann die Medienobjekte ausliest und diese dann ausliefert.

So würde auch der Webhook funktionieren.
Das Script muss dann entsprechend die HTTP Header wie MIME-Typ setzen und den Inhalt vom Bilder ausgeben.

Ungetestet, mal eben aus was anderem kopiert.
Im Hook Control muss dann ein hook (z.B. /hook/MeinHook) auf diese Script zeigen.



switch ($_SERVER['HOOK']){
  case '/hook/MeinHook/43366.jpg':
    DeliveryLocalFile('media/43366.jpg', 'image/jpeg');
  case '/hook/MeinHook/12345.png':
    DeliveryMediaObjekt(12345, 'image/png');

  break;
}

function DeliveryMediaObjekt(int $MediaId, string $MimeTyp)
{
    http_response_code(200);
    header('Connection: close');
    header('Server: Symcon ' . IPS_GetKernelVersion());
    header('Expires: 0');
    header('Cache-Control: no-cache');
    $ContentType = 'Content-Type: ' . $MimeType;
    header($ContentType);
    echo base64_decode(IPS_GetMediaContent($MediaID));
    fclose($fp);
}

function DeliveryLocalFile(string $File, string $MimeTyp)
{
    $DirName = pathinfo($File, PATHINFO_DIRNAME);
    $Extension = pathinfo($File, PATHINFO_EXTENSION);
    if ($DirName == '.') {
        $File = IPS_GetKernelDir() . $File;
    }
    $fp = @fopen($File, 'rb');
    if ($fp === false) {
        http_response_code(404);
        header('Content-Type: text/plain');
        header('Connection: close');
        header('Server: Symcon ' . IPS_GetKernelVersion());
        header('Expires: 0');
        header('Cache-Control: no-cache');
        die('File not found!');
    }
    http_response_code(200);
    header('Connection: close');
    header('Server: Symcon ' . IPS_GetKernelVersion());
    header('Expires: 0');
    header('Cache-Control: no-cache');
    $ContentType = 'Content-Type: ' . $MimeType;
    header($ContentType);
    @fpassthru($fp);
    fclose($fp);
}

Nochmals ganz vielen Dank.

Wenn ich deine Nachricht lese, kommt bei mir das Gefühl hoch, dass ich wohl altbacken unterwegs bin.

Daher mein freundliche Nachfrage….Wie würde man das heute moderner in Symcon abbilden.

Herzlichen Dank und beste Grüße

Armin

Webhook. Siehe oben.

Was willst du den erreichen? Nur ein Bild in einer Kachel anzeigen? Das geht auch ohne HTML.

Genau, wenn du erklärst, was du gerne machen möchtest und woher das Bild kommt, welches du anzeigen möchtest, wäre das hilfreich.

Lädst du das Bild hoch, gibt es das Bild bereits in Symcon??

Möchtest du ab und zu das Bild wechseln oder soll immer dasselbe angezeigt werden??

Allenfalls wäre das Modul von @da8ter ‘Universelle Geräte-Kachel’ etwas für dich

Danke an Euch

Ich will bedingt durch die Wettersituation die Hintergrundkachel ändern.

Die Bilder wollte ich unter Media hochladen

Wenn es ein geniales Modul gibt. Gerne

VG

Armin

Vielleicht ist ja auch mein Bildmodul hilfreich [Tile] Bildbetrachter (ImageViewer)

@Armin:

Genau, das geht super mit dem Bildbetrachter, UND was ich auch schon gemacht habe,

man kann eine Instanz Bildbetrachter erstellen, da gar nichts einstellen und in “Image” mit Hilfe von “bearbeiten” eine beliebige ARD des Bildes eingeben.

Dann in der Visu die Instanz Image verlinken.

Nachtrag: Weil Fehlermeldung kommt: Image Instanz kopieren, dann die Bildbetrachter Instanz löschen. Und die Kopierte Image ID verlinken.