SONOS Favouriten durchschalten

Begonnen von ripperle, 30 Oktober 2018, 10:59:08

Vorheriges Thema - Nächstes Thema

ripperle

Hallo zusammen,

ich habe ein Problem und komme nicht so richtig weiter, vllt kann mir hier jemand helfen.

Was will ich tun?
Bei meinem Sonos Lautsprecher die Favouriten Liste durchschalten.

Was habe ich bis jetzt gemacht?
Über eine Perl Funktion (geschrieben in myUtils) kann ich:

  • mit get Favourites die aktuellen Favouriten auslesen
  • mit set StartFavourite einen beliebigen Favouriten starten (Leerzeichen müssen mit "%20" ersetzt werden)
  • mit dem reading currentSource den aktuell spielenden Favouriten ermitteln

Wo liegt das Problem
Ich möchte aus der Liste der Favouriten herausfinden welcher aktuell gespielt wird, um dann den nächsten zu starten. Also z.B. habe ich folgende Favouriten aus der get Favourites Liste in einem array gewonnen (mittels Regex etc.):
Favourite[0]='Radio 1'
Favourite[1]='Hitradio 2'
Favourite[2]='Classic Radio 3'

Nun suche ich in einer schleife ob bzw. welcher Favourite gerade gespielt wird (pseudo code):
nextIndex = -1;
for(my $i=0; $i <= $#Favourite; $i++){
  if(currentSource == Favourite[i]){
    nextIndex = i + 1;
    last;
  }
}
if(nextIndex < 0){
# no favourite found!
  return;
}
if(nextIndex > $#Favourite){
  nextIndex = 0;
}

fhem(set Sonos_Wohnzimmer StartFavourite $Favourite[nextIndex]);



Leider stimmt die currentSource welche ich über das reading currentSource bekomme, nicht mit dem favouriten namen überein. So heist Favourite[2] z.B. "The Classic Radio 3" oder evtl. auch "Classic" anstatt "Classic Radio 3"

Hat jemand ein ähnliches Problem gehabt und kann mir hier einen tipp geben wie man das lösen kann?

Gruß
ripperle

binford6000

Hallo ripperle,
zunächste denke ich mal dass dein Post im Bereich "Multimedia" besser aufgehoben wäre...

ZitatLeider stimmt die currentSource welche ich über das reading currentSource bekomme, nicht mit dem favouriten namen überein. So heist Favourite[2] z.B. "The Classic Radio 3" oder evtl. auch "Classic" anstatt "Classic Radio 3"

Hast du mal versucht anstatt currentSource currentFavouriteName zu verwenden?
VG Sebastian

ripperle

Zitatzunächste denke ich mal dass dein Post im Bereich "Multimedia" besser aufgehoben wäre...
...Geschmacksache :)


ZitatHast du mal versucht anstatt currentSource currentFavouriteName zu verwenden?
Gute Frage! Da steht bei mir leider nichts drin...  :o

Esjay

Zitat von: ripperle am 30 Oktober 2018, 11:23:53
...Geschmacksache :)
Du erwartest Unterstützung in Bezug auf Sonos, von daher wäre ein Blick in die Maintainer.txt. ganz gut gewesen. Die besagt nämlich folgendes:

ZitatFHEM/00_SONOS.pm             Reinerlein           Multimedia

Da nicht jeder überall mitlesen möchte, ist das immer recht hilfreich!

Grüße

binford6000

ZitatGute Frage! Da steht bei mir leider nichts drin...  :o
Hmmm... bei mir schon. Leider das gleiche:

currentFavouriteName RADIO BOB! BOBs Hardrock
currentSource        RADIO BOB! BOBs Hardrock

VG Sebastian

ripperle

#5
Aha das ist ja Interessant. Dann stellt sich die Frage warum das reading bei mir leer ist?!

Das steht im zugehörigen Sonos Artikel:
ZitatcurrentFavouriteName: Enthält den Namen des Quellfavoriten, der den aktuellen Titel zur Liste hinzugefügt hat. Dazu müssen die Favoriten mittels "get FavouritesWithCover" ermittelt worden sein, und die Liste im Reading "Favourites" zur Verfügung stehen.

Leider bleibt das reading currentFavouriteName bei mir leer...

@binford6000
Könnte es an irgendwelchen alten Versionen bei mir liegen? Habe gerade nochmal ein update all durchgeführt, allerdings ohne Erfolg?!


Gruß

EDIT:
Screenshot hinzugefügt

binford6000

Moin,
das ist merkwürdig denn mal kurz Hitradio antenne 1 als Favourite hinzugefügt
und get FavouritswithCovers gemacht:
currentFavouriteName Hitradio antenne 1 2018-10-31 08:17:09
currentNormalAudio 0 2018-10-31 07:52:15
currentOriginalTrackNumber 2017-10-12 10:11:01
currentPlaylistName 2018-10-06 11:26:07
currentRadioName 2018-10-31 08:17:09
currentSender Hitradio antenne 1 2018-10-31 08:17:09
currentSenderCurrent 2018-10-29 17:15:41
currentSenderInfo MAX GIESINGER - ZUHAUSE 2018-10-31 08:17:26
currentSource Hitradio antenne 1 2018-10-31 08:17:09
currentStreamAudio 1 2018-10-31 07:39:47
currentTitle 2018-10-31 07:39:47


Was zeigt denn ein version? Bei mir siehts so aus:
00_SONOS.pm                 16658 2018-04-25 06:00:12Z Reinerlein
21_SONOSPLAYER.pm           16478 2018-03-24 22:47:43Z Reinerlein


VG Sebastian

ripperle

@binford6000
Kannst du bitte mal noch nachschauen wie der Radiosender "Hitradio antenne 1" bei dir in der Favoritenliste heist? Bei mir steht da eben "antenne 1" drin, was ja genau mein Problem ist?!

Vielen Dank!

binford6000

Zitat von: ripperle am 31 Oktober 2018, 09:54:24
@binford6000
Kannst du bitte mal noch nachschauen wie der Radiosender "Hitradio antenne 1" bei dir in der Favoritenliste heist? Bei mir steht da eben "antenne 1" drin, was ja genau mein Problem ist?!

Vielen Dank!

Im Favourites Reading wir er so angezeigt:
'Title' => 'Hitradio antenne 1',

currentFavouriteName Hitradio antenne 1

currentSource Hitradio antenne 1

VG Sebastian

ripperle

Mhh weis jetzt nicht ob wir das gleiche meinen...

Wenn ich get Favourites aufrufe bekomme ich das:
LastActionResult
GetFavourites: "DASDING","Radio Swiss Jazz (Jazz)","SWR3 Elchradio","antenne 1","bigFM"
2018-10-31 15:46:01


Die readings 'Title' oder auch 'currentFavouriteName' bleiben leer., das reading 'currentSource' liefert 'Hitradio antenne 1' (und NICHT 'antenne 1')...

Wenn ich get FavouritesWithCovers aufrufe bekomme ich ebenfalls kein Inhalt in den readings 'Title' oder auch 'currentFavouriteName'...

Die Module sehen gleich aus...
00_SONOS.pm 16658 2018-04-25 06:00:12Z Reinerlein
21_SONOSPLAYER.pm 16478 2018-03-24 22:47:43Z Reinerlein



binford6000

Das ist wirklich komisch...  ::)
Reden wir denn vom selben "Hitradio antenne 1" aus TuneIn?

binford6000

Selbst in LastActionResult stehts korrekt drin:
GetFavouritesWithCovers: {'...,'Title' => 'Hitradio antenne 1'},'FV:2/42' => {'Ressource' => 'x-sonosapi-stream:s143782?sid=254&flags=8224&sn=0','Cover' => 'http://cdn-radiotime-logos.tunein.com/s143782g.png',...}}

VG Sebastian

ripperle

Ja genau diesen radio Sender von tunein meine ich...

GetFavouritesWithCovers: {..... 'Title' => 'antenne 1','Ressource' => 'x-sonosapi-stream:s25770?sid=254&flags=8224&sn=0','Cover' => 'http://cdn-profiles.tunein.com/s25770/images/logog.jpg'}}

Habe zwischenzeitlich nen workaround, bei dem ich in nem dummy device einfach ne Zahl speicher und die dann einfach hoch zähle...
Wenn man dann natürlich über die app den Sender verstellt bekomme ich das nicht mit... Net ganz so schön aber naja...

Wäre trotzdem schön wenn wir noch raus finden was da los ist...  ;D

juemuc

#13
Hallo,

ich habe das über 2 DOIF gelöst.
defmod Bad_Favoriten_V_DOIF DOIF ([Sonos_Bad:"UD"] and \
[Sonos_Bad:transportState] eq "PLAYING") \
({my @fav = split(/\|/,"[Sonos_Bad:FavouritesListAlias]");;;;\
my $pos = SONOS_posInList("[currentFavouriteName_Bad]",\
   @fav);;;;\
my $anz=$#fav;;;;\
if ($pos < $anz)\
   {$pos=$pos+1}\
else\
   {$pos=0};;;;\
my $next_current_favorit=$fav[($pos)];;;;\
my $ncf = urlEncode($next_current_favorit);;;;\
fhem("set Sonos_Bad StartFavourite $ncf")})
attr Bad_Favoriten_V_DOIF do always
attr Bad_Favoriten_V_DOIF initialize initialized

defmod Bad_Favoriten_Z_DOIF DOIF ([Sonos_Bad:"DU"] and \
[Sonos_Bad:transportState] eq "PLAYING") \
({my @fav = split(/\|/,"[Sonos_Bad:FavouritesListAlias]");;;;\
my $pos = SONOS_posInList("[currentFavouriteName_Bad]",\
   @fav);;;;\
my $anz=$#fav;;;;\
if ($pos > 0)\
   {$pos=$pos-1}\
else\
   {$pos=$anz};;;;\
my $next_current_favorit=$fav[($pos)];;;;\
my $ncf = urlEncode($next_current_favorit);;;;\
fhem("set Sonos_Bad StartFavourite $ncf")})
attr Bad_Favoriten_Z_DOIF do always
attr Bad_Favoriten_Z_DOIF initialize initialized


Allerdings erkennt FHEM das Drücken der Tasten nicht immer.

Viele Grüße
Jürgen

PS: Ich empfehle auch den Bereich Multimedia. Dies war Zufall, dass ich hier lese.
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

ripperle

Das Problem ist das ich
a) überhaupt kein reading mit dem currentFavouriteName habe
b) alle anderen readings die man nutzen könnte um den aktuellen favourite zu ermitteln etwas anderes drin steht wie mir get favourites oder get favorites with cover liefert...
Im konkreten Beispiel bekomme ich nur "antenne 1" anstatt "Hitradio Antenne 1" sodass ich nicht ermitteln kann, welcher favourite gerade abgespielt wird..