Hallo,
Ich habe einen Logitech LMS auf meinem PC (Server) laufen und einen Squeezebox Player (piCorePlayer) auf einem Raspberry Pi laufen. Einbindung und Abspielen läuft super. Jetzt habe ich bei meiner TabletUI Oberfläche auch die Anzeige von Artist, Titel und Cover implementiert. Jetzt ist es aber so, dass bei Titelwechsel diese Dinger nicht aktualisiert werden. Erst wenn ich die Seite refreshe kommt (logischerweise) das aktuelle Cover/Artist/Titel.
Da ich das Cover über image und den Titel über label eingebunden habe, bringt, soweit ich das verstehe, das WEB longpoll hier nichts.
Hat jemand eine Idee, wie ich die Aktualisierung automatisch hinbekommen könnte?
Hier der Code und Bild angehängt.
Nur der Auszug der Anzeige von Titel/Cover:
<div class="row"> <!-- 2. Reihe Anfang -->
<div class="cell">
<div data-type="label"
data-device="Wohnzimmer_SB_Player"
data-get="currentArtist"
class="">
</div>
</div>
<div class="cell">
<div data-type="image"
data-device="Wohnzimmer_SB_Player"
data-get="coverarturl"
data-size="200px"
data-opacity = "1"
style="">
</div>
</div>
<div class="cell">
<div data-type="label"
data-device="Wohnzimmer_SB_Player"
data-get="currentTitle"
class="">
</div>
</div>
</div> <!-- 2. Reihe ende -->
der ganze Code vom Wohnzimmerbereich:
<li data-row="1" data-col="2" data-sizex="3" data-sizey="4">
<header>Wohnzimmer</header>
<div class="sheet">
<div class="row">
<div class="cell">
<div data-type="switch"
data-device="Wohnzimmer_SB_Player"
data-icon="fa-step-backward"
data-background-icon="-"
data-set-on="next"
data-set-off="next"
data-on-color="#58ACFA"
data-off-color="#aa6900"
class="inline">
</div>
</div>
<div class="cell">
<div data-type="switch"
data-device="Wohnzimmer_SB_Player"
data-get="playStatus"
data-set-on="play"
data-set-off="pause 1"
data-icon="fa-play"
data-get-on="playing"
data-get-off='["paused","stopped"]'
data-on-color="blue"
data-on-background-color="green"
class="inline">
</div>
</div>
<div class="cell">
<div data-type="switch"
data-device="Wohnzimmer_SB_Player"
data-icon="fa-step-forward"
data-background-icon="-"
data-set-on="next"
data-set-off="next"
data-on-color="#58ACFA"
data-off-color="#aa6900"
class="inline">
</div>
</div>
</div> <!-- 1. Reihe ende -->
<div class="row"> <!-- 2. Reihe Anfang -->
<div class="cell">
<div data-type="label"
data-device="Wohnzimmer_SB_Player"
data-get="currentArtist"
class="">
</div>
</div>
<div class="cell">
<div data-type="image"
data-device="Wohnzimmer_SB_Player"
data-get="coverarturl"
data-size="200px"
data-opacity = "1"
style="">
</div>
</div>
<div class="cell">
<div data-type="label"
data-device="Wohnzimmer_SB_Player"
data-get="currentTitle"
class="">
</div>
</div>
</div> <!-- 2. Reihe ende -->
<div class="row"> <!-- 3. Reihe Anfang -->
<div class="cell">
<!-- Aktivität Musik ist "2" beim Harmony-Hub Ankleideraum -->
<div data-type="switch"
data-device="Wohnzimmer_Hub"
data-icon="fa-power-off"
data-background-icon="fa-square-o"
data-get="activityStatus"
data-get-off="0"
data-get-on="2"
data-set-on="activity Musik; set Wohnzimmer_SB_Player play"
data-set-off="activity PowerOff; set Wohnzimmer_SB_Player pause 1"
data-on-color="#58ACFA"
data-on-background-color="#58ACFA"
data-off-color="grey"
data-off-background-color="grey">
</div>
</div>
<div class="cell">
<div data-type="select"
data-device="Wohnzimmer_SB_Player"
data-list="SERVERPLAYLISTS"
data-get="playlists"
data-set="playlists"
data-cmd="set"
class="inline w3x">
</div>
</div>
<div class="cell">
</div>
</div> <!-- 3. Reihe ende -->
</div> <!-- Sheet ende -->
</li>
lg
bart
Hallo,
ändert sich den die Url des Coverart nicht?
Das Image widget unterstützt eine Aktualisierung des Bildes
data-refresh Interval in Sekunden, nachdem das Bild aktualisiert werden soll data-refresh="30"
aber besser wäre es vielleicht über ein userreading bei Titeländerung die Coverart url an das userreading zu übergeben das hier ein event entsteht das das Bild neu lädt.
Hallo,
Super danke für die schnelle Rückmeldung.
Das mit dem Refresh ist schon ein guter Workaround. Mit dem event meinst du, dass ich für das Squeezebox-Player device das
event-on-change-reading
setze und dann z.B. auf das
currentTitle
schaue und entsprechend dann das image bzw. die Label nur eben dann refreshe?
Kann man das so machen?
lg
bart
Hallo,
ja sowas in der Art. Ich kenne den Squeezebox Player nicht und seine integration in FHEM, aber wie wird den der link fürs coverart bereitgestellt?
Ich nutze das Yamaha Modul für meinen Yamaha Receiver da wird das Coverart_url Reading aktualisiert wenn der Titel sich ändert.
Gruß Rolf
Hallo Rolf,
Es ist ein normales Device mit Internals und Readings und bekommt den URL auf das Reading coverarturl
vom PC (Server) als .jpg. Wenn man den nächsten Titel wählt, holt der SB-Player den nächsten Titel vom Server und gekommt einen neuen URL (soweit ich das verstanden habe). Den neuen URL bekommt er auch richtig (bzw. auch die neuen Titel als Text), man sieht ihn auch, wenn man im TabletUI manuell die Seite nachlädt.
Hier die Internals:
Internals:
AMPLIFIER none
ARTWORKURL ?
CANPOWEROFF 1
COVERARTLINK none
COVERARTURL http://x.x.x.x:xxxx/music/current/cover_200x200.jpg?player=xxxxxxx&x=92873
COVERID f50a43be
DEF xxxxxx
DISPLAYTYPE none
FAVREF
FAVSELECT -
FAVSET favorites
FAVSTR Pop,toad,SM26
FHEMUID xxxxxxxx
IODev SqueezeBoxServer
ISREMOTESTREAM 0
LASTALARM 1
LASTANSWER mode stop
LASTInputDev SqueezeBoxServer
MODEL squeezeplay
MSGCNT 66435
NAME Wohnzimmer_SB_Player
NOTIFYDEV global
NR 239
NTFY_ORDER 50-Wohnzimmer_SB_Player
PLAYERIP x.x.x.x:57010
PLAYERMAC xxxxxx
PLAYERNAME Wohnzimmer_SB_Player
SBSERVER x.x.x.x:xxxx
SERVERPLAYLISTS
STATE on
SYNCED no
SYNCGROUP none
SYNCGROUPPN none
SYNCMASTER none
SYNCMASTERPN none
SYNCMASTERS
SYNCVOLUME 0
SqueezeBoxServer_MSGCNT 66435
SqueezeBoxServer_TIME 2018-12-02 20:44:01
TYPE SB_PLAYER
WILLSLEEPIN ?
Readings:
Readings:
2018-12-02 20:44:01 alarmsDefaultVolume 50
2018-12-02 20:44:01 alarmsEnabled on
2018-12-02 20:44:01 alarmsFadeIn on
2018-12-02 20:44:01 alarmsFadeSeconds 1
2018-12-02 20:44:01 alarmsSnooze 9
2018-12-02 20:44:01 alarmsTimeout 60
2018-12-02 20:44:01 connected 1
2018-12-02 20:44:01 coverarturl http://x.x.x.x:xxxx/music/current/cover_200x200.jpg?player=xxxxxx&x=92873
2018-12-02 20:44:01 currentAlbum WWW.iM1MUSIC.NET
2018-12-02 20:44:01 currentArtist Taio Cruz Ft. Flo-Rida
2018-12-02 17:04:01 currentMedia file:///D:/iTunes_Songs/Music/Taio%20Cruz/WWW.iM1MUSIC.NET/Hangover.mp3
2018-12-02 20:44:01 currentPlaylistName Party Mix 2018
2018-12-02 20:44:01 currentPlaylistUrl
2018-12-02 20:44:01 currentTitle Hangover
2018-12-02 20:44:01 currentTrackPosition 0
2018-12-02 20:44:01 duration 243.226
2018-12-02 20:44:01 favorites -
2018-12-02 17:06:26 lastir 00020017
2018-12-02 17:06:26 lastunknowncmd menustatus ARRAY(0x99e2c24) add xxxxx
2018-12-02 20:44:01 playStatus stopped
2018-12-02 20:44:01 playlistCurrentTrack 21
2018-12-02 20:44:01 playlistTracks 42
2018-12-02 20:44:01 playlists Party_Mix_2018
2018-12-02 20:44:01 power on
2018-12-02 20:44:01 presence present
2018-12-02 20:44:01 repeat all
2018-12-02 20:44:01 shuffle song
2018-12-02 20:44:01 signalstrength wired
2018-12-02 20:44:01 state on
2018-12-02 20:44:01 synced none
2017-09-07 00:16:05 talkStatus idle
2018-12-02 20:44:01 volume 61
2018-12-02 20:44:01 volumeStraight 61
lg
bart
Hallo,
Die Aktualisierung sollte automatisch erfolgen, du kannst versuchen beim image noch
class="nocache"
hinzuzufügen.
Falls dies nicht hilft kannst du den Event-Monitor von FTUI aktivieren um zu überprüfen ob das Event von FHEM überhaupt in FTUI ankommt, z.B.:
<div data-type="eventmonitor">EM</div>
Nach einem Klick auf EM siehst du die Events.
Grüße,
ChrisD
Hallo,
eigentlich sieht das alles gut aus, wenn du das Device in FHEM anschaust wird die coverart_url bei einem neuen Titel aktualisiert(wird rot)?
Was dann auch bedeutet das ein event ausgelöst werden sollte.
Gruß Rolf
Hallo,
Danke für die vielen Antworten.
class="nocache"
Hab ich bei den data-devices hinzugefügt. Leider sehe ich weder im FTUI über den Eventmonitor die Events, noch sehe ich, dass im Device vom SB-Player die Zeilen rot werden. :-\
D.h. im FHEM ändert sich der URL auch nur dann, wenn ich die Seite refreshe.
Fehlt mir da im SB-Player Device ein Setting?
lg
bart
Hallo,
hast Du beim Device in fhem das Attribut ftui_support gesetzt?
gm
Hallo,
Nein ftuisupport Attribut war nicht da. Ich habe es nun auf "1" und beim anderen Player auf "all" gesetzt, jedoch keine Veränderung. Hab auch verschiedene Browser probiert, naja, Offline Daten hatte ich vorher nicht gelöscht, sollte ja aber zumindest mit dem "nocache" kein Problem sein, oder?
Ich meine, dass ich erst vor kurzem das Squeeze Modul upgedatet hätte. Vielleicht ist da was schiefgelaufen. Gibt es da ein Reading wo ich das checken kann? Oder würde sonst der Rest sowieso auch nicht klappen?
lg
bart
Hallo,
Da bereits in FHEM keine Events erzeugt werden kann in FTUI auch nichts passieren. Welchen Wert haben die Attribute
- donotnotify
- do_not_notify
- event-on-change-reading
- event-on-update-reading
?
Grüße,
ChrisD
Hallo ChrisD,
event-on-change Attribut habe ich gar keines gesetzt.
donotnotify true
Müssen die geändert /aktiviert werden?
Das ftuiSupport hab ich nun zwischenzeitlich wieder weggegeben.
Alle Attributes:
Attributes:
IODev SqueezeBoxServer
amplifier play
coverartheight 200
coverartwidth 200
donotnotify true
fadeinsecs 10
room Wohnzimmer
ttslanguage de
ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob
volumeLimit 100
volumeStep 10
lg
bart
Hallo,
donotnotify muss auf false stehen damit Events erzeugt werden.
Grüße,
ChrisD
Hallo ChrisD,
Vielen vielen Dank!
Das war der Fehler!
lg
bart
Hallo,
Wie mache ich, dass man das Thema als "gelöst" erkennt? Einfache unten auf "Thema schließen" gehen?
lg
bart