Ankündigung

Einklappen
Keine Ankündigung bisher.

HowTo: mehrere Items in einem/r Widget/Zeile im UI anzeigen

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

    HowTo: mehrere Items in einem/r Widget/Zeile im UI anzeigen

    Hallo zusammen,

    eigentlich wollte ich das hier in der offiziellen openHAB Google Gruppe posten aber seit einiger Zeit ist es mir dort nicht mehr möglich irgendetwas zu posten. Verfasste Beiträge werden automatisch gelöscht und man erhält nicht mal eine Info warum das passiert.
    Wie auch immer, immerhin kann ich das hier posten und hoffe das ich damit eventuell dem ein oder anderen weiterhelfe:

    bin mir nicht sicher ob das der ein oder andere bereits weiss aber ich habe eine Möglichkeit gefunden mehrere Items in einer einzigen Zeile bzw. Widget im UI anzeigen zu lassen (siehe Screenshot).

    Wie ihr seht zeige ich Album Art, den aktuellen Track sowie den nächsten Track aus der Playliste in einem einzigen Widget an.
    Dies funktioniert ganz einfach in dem man HTML verwendet (das funktioniert soweit in den Web-Clients -> wie sich die nativen Clients hier verhalten kann ich nicht sagen da ich das noch nicht getestet habe).

    Damit das funktioniert müsst ihr einfach ein neues Text Item definieren und z.B. eine einfach (noch unvollständige) HTML Tabellen Struktur als Wert zuweisen:

    String sonosKitchenCurrentlyPlaying "<table border='0' cellspacing='0' cellpadding='0'><tr>[%s]</tr></table>"

    Das [%s] wird durch eine Regel ersetzte die angestoßen wird sobald sich der Transport State, Album Art oder momentaner Titel ändert.


    rule "Sonos Kitchen CurrentlyPlaying"
    when
    Item sonosKitchenTransportState received update or
    Item sonosKitchenCurrentTrack received update or
    Item sonosKitchenCurrentAlbumArt received update
    then
    var transportState = ""
    switch(sonosKitchenTransportState.state.toString)
    {
    case "PLAYING" : transportState = "<u>currently playing</u>"
    case "PAUSED_PLAYBACK" : transportState = "<u>currently paused</u>"
    case "STOPPED" : transportState = "<u>currently stopped</u>"
    default : transportState = "<u>currently stopped</u>"
    }

    sonosKitchenCurrentlyPlaying.postUpdate("<td align='center'><img src='images/"+sonosKitchenCurrentAlbumArt.state.toString+" ' width='100' height='100'/></td><td valign='top'><font size='1px' color='gray'>"+transportState+"</font><br/><font size='2px'>"+sonosKitchenCurrentTrack.state.toStri ng+"</font></td>")
    end

    Wie ihr seht kann man so sehr einfach HTML Konstrukte erzeugen die mehrere Informationen beinhalten.

    Hoffe das hilft eventuell dem ein oder anderen von euch der versucht ähnliches zu bewerkstelligen.

    Gruß, DonGyros
    Angehängte Dateien

    #2
    Vielen Dank!
    Könntet du noch einen Auszug aus der *.Items reinstellen ?

    Kommentar


      #3
      Hi,

      das ist aber ein interessanter Hack, die Screenshots sehen schick aus! In den anderen UIs wird es leider nicht funktionieren, aber wenn man nur das ClassicUI einsetzt, kann man damit leben.

      Zitat von DonGyros Beitrag anzeigen
      aber seit einiger Zeit ist es mir dort nicht mehr möglich irgendetwas zu posten. Verfasste Beiträge werden automatisch gelöscht und man erhält nicht mal eine Info warum das passiert.
      Kannst Du mir als PM Deine Google-e-Mail-Adresse geben? Vermutlich bist Du irgendwann versehentlich auf die Spammer-Liste geraten und wirst nun automatisch geblockt. Ich sollte es hoffentlich schaffen, Dir da wieder freizugeben.

      Grüße,
      Kai

      Kommentar


        #4
        @milymat:

        sicher, anbei die relevanten Zeile für ein Sonos-Device aus der Items-Datei:

        Code:
        Group groupSonos
        Group:Switch:OR(ON, OFF) groupSonosPlayPause "Laufende Sonos [(%d)]" (groupSonos)
        
        String sonosKitchenTransportState "[%s]" (groupSonos) {sonos="<[kitchen:transportstate]", autoupdate="true"}
        Number sonosKitchenCmd
        Switch sonosKitchenPlayPause "Sonos Play/Pause" (groupSonos, groupSonosPlayPause) {sonos="*[ON:kitchen:play], *[OFF:kitchen:pause]", autoupdate="true"}
        Switch sonosKitchenNext "Sonos Next"  <next> (groupSonos) {sonos="*[ON:kitchen:next]", autoupdate="true"}
        Switch sonosKitchenPrevious "Sonos Previous"  <prev> (groupSonos) {sonos="*[ON:kitchen:previous]", autoupdate="true"}
        Number sonosKitchenVolume "Volume [%.1f]"  (groupSonos) {sonos="<[kitchen:volume]", autoupdate="true"}
        Number sonosKitchenRadiostationNr "Radio"	
        String sonosKitchenPlayRadiostation "Sonos RadioStation"  (groupSonos) {sonos=">[kitchen:radio]", autoupdate="false"}
        String sonosKitchenCurrentAlbumArt "&nbsp;[%s]" (groupSonos) {sonos="<[kitchen:currentalbumart]", autoupdate="true"}
        String sonosKitchenCurrentTrack "&nbsp;[%s]" (groupSonos) {sonos="<[kitchen:currenttrack]", autoupdate="true"}
        String sonosKitchenCurrentlyPlaying "<table border='0' cellspacing='0' cellpadding='0'><tr>[%s]<td>&nbsp;</td></tr></table>"
        Und der entsprechende Auszug aus der Sitemap (auch nur für ein Device):

        Text label="Musik" icon="grey/audio_audio"
        {
        Frame label="Übersicht"
        {
        Switch item=groupSonosPlayPause mappings=[OFF="Stop all"] icon="grey/control_all_on_off"
        }
        Frame label="Küche:Play3"
        {
        Switch item=sonosKitchenCmd label="&nbsp;" mappings=[1=Prev, 2=Pause, 3=Play, 4=Next] icon="sonos_remotecontrol"
        Text item=sonosKitchenCurrentlyPlaying
        Selection item=sonosKitchenRadiostationNr mappings=[0=off, 1="Big FM", 2="Das Ding", 3="NRJ"]
        Slider item=sonosKitchenVolume icon="grey/audio_volume_high"
        }
        }

        Kommentar


          #5
          @kkreuzer:

          ja, in den nativen Clients scheint es nicht zu funktionieren. Hab den iOS Client vorhin mal getestet und da funktioniert das wie gesagt nicht. In meinem Fall kann ich aber gut damit leben da dieser native Client (zumindest in meinem Fall) nicht wirklich stabil läuft.

          Kommentar

          Lädt...
          X