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
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
Kommentar