Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild-URL aus item laden?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Bild-URL aus item laden?

    Hallo,

    in Verbindung mit dem Yamaha-Plugin, an dem ich arbeite, erhalte ich als Album-Art eine URL, an der das Bild für den aktuell abgespielten Song (oder Radiosender) abgerufen werden kann. Diese URL ändert sich natürlich mit jedem neuen Song und ist auf dem Yamaha-Gerät abgelegt (per http erreichbar).

    Diese URL schreibe ich mit dem Plugin in ein item (wohin auch sonst...) - jetzt möchte ich dieses Bild gern anzeigen. Ich habe aber keine Möglichkeit gefunden, mit multimedia.image oder multimedia.slideshow ein item statt einem Pfad bzw. Verzeichnis zu übergeben.

    Ist das überhaupt machbar? Muss ich das mit JS machen? (Wie?)

    Gruß
    Sebastian

    #2
    Ich bin selbst überrascht, dass es dafür noch kein Widget gibt. Ein solches Widget wäre recht einfach zu programmieren. Aber wie soll ich es nennen, wenn es multimedia.image bereits gibt?

    Kommentar


      #3
      geht doch mit einem basic.print mit html als typ? einfach den img tag reinpacken. so mache ich das bisher..

      wenn du was baust, dann bitte so, dass man auch einen link für das bild übergeben kann. so starte ich bspw meine enigma2 streams vom screenshot des aktuellen senders aus.
      ff.PNG

      Code:
      <span id="room_office-sytreamurl" data-item="mm.enigma2.vusolo2.current.servicestream" class="text" data-widget="basic.print" data-format="html" data-formula="VAR" data-thresholds="" data-colors="" data-is-sv-widget="true">
      
      <a href="http://192.168.178.32:80/web/stream.m3u?ref=1:0:19:283F:3FB:1:C00000:0:0:0:">
      <img class="ui-corner-all" id="mjpgImage" style="width:95%" alt="Processing..." src="https://xxxxxx.myds.me/vusolo2/grab?format=png&amp;r=720&amp;1:0:19:283F:3FB:1:C00000:0:0:0:">
      </a>
      
      </span>
      Das mittlere ist der Iteminhalt.
      Zuletzt geändert von psilo; 07.01.2018, 16:52.

      Kommentar


        #4
        Stimmt, ich wusste, irgendwo hatte ich schon eine Lösung dafür gesehen.
        Ein dediziertes Widget wäre wahrscheinlich trotzdem sinnvoll. Das mit dem Link werde ich mir versuchen zu merken.

        Kommentar


          #5
          Ah, danke, das werde ich mal probieren.

          Ein Aktualisieren (wenn sich die URL ändert) wäre dann aber bestenfalls mit JS machbar, richtig? Denn basic.print schreibt die URL "fest" in die HTML-Seite?

          Da wäre ein Widget mit "refresh"-Möglichkeit natürlich bequemer... aber ich werde es erstmal so probieren.

          Kommentar


            #6
            Okay, das war einen Versuch wert - aber basic.print schreibt das Ganze in ein "span"-Tag, das hilft mir natürlich nicht. Ich verstehe nichtmal die Logik im widget.print-JS. Wie komme ich denn im JS-Code an den Iteminhalt (insb., wenn mehrere Items an das Widget übergeben werden)? Gibt es dazu irgendwo eine Doku?

            Kommentar


              #7
              zum reload: in shng einfach einen timestamp an den neuen img link als parameter hängen!

              Kommentar


                #8
                Zitat von psilo Beitrag anzeigen
                zum reload: in shng einfach einen timestamp an den neuen img link als parameter hängen!
                Es ändert sich ja nicht das Bild hinter der URL, sondern die URL ändert sich - und dann brauche ich nur ein "update"-Event. Ich weiß nur noch nicht, wie das geht (s.o.)

                Kommentar


                  #9
                  was für ein update event denn? ändere doch einfach das html im item.. auf sv seite ist nichts zu tun. also auch keine js events abfangen etc..

                  oder beschreibe genauer. ich verstehe dein setting ggf nicht..

                  Kommentar


                    #10
                    Ich habe ein item in sh.py definiert. Das Plugin ändert den Inhalt des Items periodisch auf neue String-Werte - die URL vom jeweils aktuellen Bild. Dieses Bild möchte ich in der SV anzeigen lassen - ich muss also 1. den Inhalt des Items als Text in die Seite schreiben, damit das per IMG-Tag angezeigt werden kann und 2. dann später den Inhalt vom IMG-Tag ändern und den Browser veranlassen, das Bild neu zu laden.

                    Mit "update-Event" meinte ich eine Möglichkeit, das geänderte Item automatisch in der SV aktualisieren zu lassen (das geht ja zB bei Schaltern auch). Wie das technisch umgesetzt wird, weiß ich nicht.

                    Möglicherweise geht das auch ohne IMG-Tag - aber da fehlt mir schon der Punkt, an dem ich zu suchen anfangen könnte.

                    Ich wollte das mit einem Widget machen, aber es gibt noch kein passendes. Der Versuch, selbst eins zu schreiben, scheitert daran, dass ich nicht weiß, wie ich im Widget auf das Item zugreifen kann (woher bekomme ich das? das Widget bekommt ca. 5 oder 6 items übergeben)...

                    Kommentar


                      #11
                      also nochmal: schreibe anstatt der url gleich das ganze img html in das item. dann geht das doch

                      bei jeder neuen url ändert sich das src attribut und damit das html im item. die sv updated das dann. das geht bei mir 1a

                      item servicestream in https://github.com/smarthomeNG/plugi...gma2/README.md

                      Code:
                      [[[[servicestream]]]]                
                      type = str                
                      visu_acl = rw                
                      eval = '<a href="http://'+sh.vusolo2._enigma2_device._host+':'+sh.vusolo2._enigma2_device._port+'/web/stream.m3u?ref='+sh.enigma2.vusolo2.current.servicereference()+'"><img class="ui-corner-all" id="mjpgImage" style="width:95%" alt="Processing..." src="http://'+sh.vusolo2._enigma2_device._host+':'+sh.vusolo2._enigma2_device._port+'/grab?format=png&r=720&'+sh.enigma2.vusolo2.current.servicereference()+'"></a>'                
                      eval_trigger = init | enigma2.vusolo2.current.servicereference
                      Zuletzt geändert von psilo; 10.01.2018, 19:58.

                      Kommentar


                        #12
                        Dann fehlt mir immer noch die Möglichkeit, das item direkt in den HTML-Code zu schreiben...?

                        Kommentar


                          #13
                          Das machst du dann mit basic.print widget

                          Kommentar


                            #14
                            Ah, jetzt verstehe ich das so langsam...

                            Danke euch erstmal

                            Kommentar


                              #15
                              So, und das Drama geht weiter. Entweder steh ich in letzter Zeit total auf dem Schlauch, oder ich weiß es einfach nicht mehr.

                              Nachdem die Zuweisung soweit läuft, dass im Item das komplette IMG-Tag mit URL gespeichert ist, wollte ich es mit basic.print ausgeben.

                              Das Ergebnis:

                              637a1068-ff44-4777-9fdb-f7ebc049e45a.png

                              Im Seitenquelltext steht auch nicht der IMG-Link, sondern:

                              HTML-Code:
                              <span data-item="dg.bad.wxbad.albumarturl" class="text" data-widget="basic.print" data-format="" data-formula="VAR" data-thresholds="" data-colors="">---</span>
                              und der Inhalt wird vom JS reingeschrieben. Dann hat der HTML-Parser das natürlich nicht zur Verfügung. Ich habe aber auch keinen Plan, wie man das ggf. "nachrendern" kann.

                              Im Widget habe ich das so eingebracht:
                              HTML-Code:
                                          {{ basic.print('', item_art) }}
                              Benutze ich das basic.print falsch? In der 2.8er Doku finde ich auch nichts mehr dazu...

                              Kommentar

                              Lädt...
                              X