SONOS: Start eines Radio Senders auf allen SonosPlayer

Begonnen von choetzu, 19 Juli 2017, 20:27:05

Vorheriges Thema - Nächstes Thema

choetzu

Hallo,

ich habe 4 SonosPlayer im Einsatz. Nun möchte ich ein Alarm definieren (DOIF) welcher alle SonosPlayer startet und zwar mit dem selben Radio Sender.
Das Starten aller SonosPlayer ist nicht so ein Akt, das schaffe ich.. Aber das Laden des Radio Senders gelingt mir nicht.

Der Radio Sender heisst "SFR 3" und ist bei mir auch unter den Favoriten gespeichert.

wenn ich nun

set Sonos_.* LoadFavourite SRF 3

mache, geht das nicht. Unter LastActionResult kommt dann, man solle "SRF 3" eingeben. Doch auch das geht nicht.

das selbe mit LoadRadio geht auch nicht.

Weiss jemand rat?

Lg c
Raspi3, EnOcean, Zwave, Homematic

juemuc

Hallo,

versuche mal folgendes
my $ncf = urlEncode($next_current_favorit);;  fhem("set Sonos_Schlaf StartFavourite $ncf")
Du musst das aber auf Deine Umgebung anpassen.

VG
Jürgen
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).

choetzu

Danke für deine Hilfe.

Aber wo genau muss ich das eingeben und was - nebst dem Sonos Player - muss ich an meine Umgebung anpassen.

Sorry, ich brauch da etwas Unterstützung. Danke
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hallo choetzu,

ich verwende der Einfachheithalber immer die Variante mit dem regulären Ausdruck.
In den meisten Fällen brauchst du nur jedes Leerzeichen durch einen Punkt zu ersetzen (heißt dann zwar: beliebiges Zeichen an dieser Stelle, passt aber meistens trotzdem nur genau auf einen Eintrag):

set Sonos_.* LoadFavourite /SRF.3/


Grüße
Reinerlein

Hotbird

steht der auch genauso in Deinen Favoriten? Ich hatte auch mal Probleme mit dem Sender laden. Da lag es aber daran, dass bei meinem Sender noch ziemlich viel dahinter stand. Hab den dann in den Favoriten umbenannt, da hat es dann geklappt. Vielleicht solltest Du acuh das Leerzeichen aus dem Sendernamen nehmen unter den Favoriten.

choetzu

Zitat von: Reinerlein am 20 Juli 2017, 00:13:08
Hallo choetzu,

ich verwende der Einfachheithalber immer die Variante mit dem regulären Ausdruck.
In den meisten Fällen brauchst du nur jedes Leerzeichen durch einen Punkt zu ersetzen (heißt dann zwar: beliebiges Zeichen an dieser Stelle, passt aber meistens trotzdem nur genau auf einen Eintrag):

set Sonos_.* LoadFavourite /SRF.3/


Grüße
Reinerlein

Herzlichen Dank. Das funktioniert wenn man es in der Befehlseingabe macht. Somit gut. Warum aber (aus reiner Neugierde) geht es nicht, wenn ich im entsprechenden Sonosplayer-Device bei "set SONOS_Bad LoadFavourite" dann /SRF.3/ oder auch nur SRF.3 eingebe?

Zitat von: Hotbird am 20 Juli 2017, 09:18:55
steht der auch genauso in Deinen Favoriten? Ich hatte auch mal Probleme mit dem Sender laden. Da lag es aber daran, dass bei meinem Sender noch ziemlich viel dahinter stand. Hab den dann in den Favoriten umbenannt, da hat es dann geklappt. Vielleicht solltest Du acuh das Leerzeichen aus dem Sendernamen nehmen unter den Favoriten.

wie hast du gemerkt, dass da hinten viel dran hängt? Bei mir steht in den Favoriten nur SRF 3

Lg c
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

das sollte natürlich genauso gehen, weil intern ja auch dasselbe gemacht wird... steht denn etwas im Log, warum es nicht gemacht wird?

Grüße
Reinerlein

choetzu

Hallo Reinerlein,

jetzt wollt ich es nochmals testen um den Logauszug zu posten. Nun klappts auch. ;) Offensichtlich eine Fehlmanipulation meinerseits. Sorry.

Andere Frage: ist es eigentlich möglich anstelle der Einbindung von Sonosplayers mittels  Sonos_.*:FILTER=TYPE=SONOSPLAYER die vorhanden Sonosplayers zu gruppieren? Mittels DOIF? Jetzt löse ich mein Alarm wie folgt. Es gibt aber zwischen den einzelnen Sonosplayers Verzögerungen, was natürlich unschön ist, auch wenn es sich um einen Alarm handelt ;)

Mein Alarm-DOIF
([ALARM:state] eq "on")
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER StartFavourite /SRF.3/)
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER Volume 75)

DOELSEIF
([ALARM:state] eq "off")
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER Volume 25)
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER Stop)

DOELSE
Raspi3, EnOcean, Zwave, Homematic

Hotbird

Hab das in der Ausgabe von FHEM gesehen wenn ich den Sender übers Handy geladen habe. Da stand dann youFm-young fresh Musik-so und so am Nachmittag... Umbenannt in den Favoriten und es ging [emoji16]

choetzu

Guten Tag,

ich komme auf meinen Taster oben zurück. Zwar funktioniert es so, aber es dauert eine Ewigkeit, bis sich Sonos mit dem Sender verbindet. Mit der SONOS App gehts viel schneller. Das selbe gilt fürs Ausschalten.

Habt Ihr eine Ahnung wieso?

([Taster_EnO:"channelB:.BI"])
(set Sonos_Bad__Schlafz Stop)
(set Sonos_Bad__Schlafz Volume 30)
(set Sonos_Bad__Schlafz StartFavourite /SRF.3/)


DOELSEIF
([Taster_EnO:"channelB:.B0"])
(set Sonos_Bad__Schlafz Stop)


Beim Einschalten wird folgendes geloggt:

2018-09-26 12:31:18 DOIF Sonos_Power_Taster_DOIF cmd_1_1
2018-09-26 12:31:18 DOIF Sonos_Power_Taster_DOIF cmd_1_2
2018-09-26 12:31:18 DOIF Sonos_Power_Taster_DOIF cmd_1
2018-09-26 12:31:19 EnOcean Taster_EnO channelB: BI
2018-09-26 12:31:19 EnOcean Taster_EnO BI
2018-09-26 12:31:19 SONOSPLAYER Sonos_Bad__Schlafz LastActionResult: Stop: Success!
2018-09-26 12:31:19 SONOSPLAYER Sonos_Bad__Schlafz LastActionResult: SetVolume: 30
2018-09-26 12:31:19 SONOS Sonos LastProcessAnswer: 1537957879
2018-09-26 12:31:20 SONOSPLAYER Sonos_Bad__Schlafz LastActionResult: StartFavourite: Success!
2018-09-26 12:31:20 SONOS Sonos LastProcessAnswer: 1537957880
2018-09-26 12:31:21 SONOS Sonos LastProcessAnswer: 1537957881
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz numberOfTracks: 2
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackURI: http://http://stream.srg-ssr.ch/drs3/aacp_96.m3u
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackHandle: http://http://stream.srg-ssr.ch/drs3/aacp_96.m3u|x-sonosapi-stream:s24862?sid=254&flags=8224&sn=0Sounds!,p258464/getaa?s=1&u=x-sonosapi-stream%3as24862%3fsid%3d254%26flags%3d8224%26sn%3d0Playlistobject.item
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackPosition: 0:00:00
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackPositionSec: 0
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTitle: Playlist
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentSender: 
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentStreamAudio: 0
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentNormalAudio: 1
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz infoSummarize1:  'Playlist'
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz infoSummarize2: STOPPED =>  'Playlist'
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackPositionSimulated: 0:00:00
2018-09-26 12:31:21 SONOSPLAYER Sonos_Bad__Schlafz currentTrackPositionSimulatedSec: 0
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentTrackURI: http://http://stream.srg-ssr.ch/drs3/aacp_96.m3u
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentTitle: Playlist
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentSender: 
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentStreamAudio: 0
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentTrackHandle: http://http://stream.srg-ssr.ch/drs3/aacp_96.m3u|x-sonosapi-stream:s24862?sid=254&flags=8224&sn=0Sounds!,p258464/getaa?s=1&u=x-sonosapi-stream%3as24862%3fsid%3d254%26flags%3d8224%26sn%3d0Playlistobject.item
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer currentNormalAudio: 1
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer GroupVolume: 40
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer infoSummarize1:  'Playlist'
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer infoSummarize2: STOPPED =>  'Playlist'
2018-09-26 12:31:21 SONOSPLAYER Sonos_Wohnzimmer numberOfTracks: 2
2018-09-26 12:31:22 SONOS Sonos LastProcessAnswer: 1537957881
2018-09-26 12:31:44 SONOSPLAYER Sonos_Bad__Schlafz display_covertitle:   if (!document.getElementById("global_fulldiv_SonosBadSchlafz")) {  var newDiv = document.createElement("div");  newDiv.setAttribute("id", "global_fulldiv_SonosBadSchlafz");  document.body.appendChild(newDiv);    var newScript = document.createElement("script");  newScript.setAttribute("type", "text/javascript");  newScript.appendChild(document.createTextNode('function refreshFullSonosBadSchlafz() {  var fullDiv = document.getElementById("element_fulldiv_SonosBadSchlafz");  if (!fullDiv) {  return;  }  var elementHTML = decodeURIComponent(fullDiv.innerHTML);  var global = document.getElementById("global_fulldiv_SonosBadSchlafz");  var oldGlobal = global.innerHTML;    var hash = document.getElementById("hash_SonosBadSchlafz");  var hashMatch = /(.+?)<.div>/i;  hashMatch.exec(elementHTML);    if ((oldGlobal != "") && (!hash || (hash.innerHTML != RegExp.$1))) {  global.innerHTML = elementHTML;  }    if (oldGlobal != "") {  setTimeout(refreshFullSonosBadSchlafz, 1000);  var playing = document.getElementById("prog_playing_SonosBadSchlafz");  if (playing && playing.innerHTML == "1") {  setTimeout(refreshTimeSonosBadSchlafz, 100);  }  }  } function refreshTimeSonosBadSchlafz() {  var playing = document.getElementById("prog_playing_SonosBadSchlafz");  if (!playing || (playing && (playing.innerHTML == "0"))) {  return;  }    var runtime = document.getElementById("prog_runtime_SonosBadSchlafz");  var starttime = document.getElementById("prog_starttime_SonosBadSchlafz");  if (runtime && starttime) {  var now = new Date().getTime();  var percent = (Math.round(now / 10.0) -  Math.round(starttime.innerHTML * 100.0)) / runtime.innerHTML;  document.getElementById("progressbarSonosBadSchlafz").style.width = percent + "%";    setTimeout(refreshTimeSonosBadSchlafz, 100);  }  }'));    document.body.appendChild(newScript);  }  %3Cstyle%20type%3D%22text%2Fcss%22%3E.SONOS_Transportstate%20%7B%20height%3A%200.8em%3B%20margin-top%3A%20-6px%3B%20margin-left%3A%202px%3B%20%7D%3C%2Fstyle%3E%3Cdiv%20id%3D%22cover_currentSonosBadSchlafz%22%20style%3D%22position%3A%20fixed%3B%20top%3A%200px%3B%20left%3A%200px%3B%20width%3A%20100%25%3B%20height%3A%20100%25%3B%20z-index%3A%2010000%3B%20background-color%3A%20rgb%2820%2C20%2C20%29%3B%22%20onclick%3D%22document.getElementById%28%27cover_currentSonosBadSchlafz%27%29.style.display%20%3D%20%27none%27%3B%20document.getElementById%28%27global_fulldiv_SonosBadSchlafz%27%29.innerHTML%20%3D%20%27%27%3B%22%3E%3Cdiv%20style%3D%22position%3A%20absolute%3B%20top%3A%2010px%3B%20left%3A%205px%3B%20display%3A%20inline-block%3B%20height%3A%2035px%3B%20width%3A%2035px%3B%20background-image%3A%20url%28%2Ffhem%2Fsonos%2Fcover%2Ftunein_round.png%29%3B%20background-repeat%3A%20no-repeat%3B%20background-size%3A%20contain%3B%20background-position%3A%20center%20center%3B%22%3E%3C%2Fdiv%3E%3Cdiv%20style%3D%22width%3A%20100%25%3B%20top%205px%3B%20text-align%3A%20center%3B%20font-weight%3A%20bold%3B%20color%3A%20lightgray%3B%20font-size%3A%20200%25%3B%22%3EBad%20%2F%20Schlafz.%3Csvg%20class%3D%22SONOS_Transportstate%20audio_stop%22%20data-txt%3D%22Stopped%22%20version%3D%221.0%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20%20width%3D%22468pt%22%20height%3D%22468pt%22%20viewBox%3D%220%200%20468%20468%22%20%20preserv


Irgendwie scheint er Probleme mit dem Cover zu haben. Kann man das ausschalten?
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

ich finde drei Sekunden bis zum Start des Radios jetzt nicht viel. Das das Cover erst später an Fhem geliefert wird, kann viele Gründe haben.
Das Cover selbst wird ja aus dem Internet geladen (manchmal direkt vom Fhem-Modul, manchmal über den entsprechenden Sonos-Player). Das kann etwas dauern, aber 20 Sekunden erscheinen mir da auch etwas viel...

Grüße
Reiner

choetzu

Hey Reiner
danke für deine Antwort. Kann es sein, dass diese 20 Sekunden auch andere Dienste blockieren? Und kann man das Coverladen irgendwie unterdrücken?
Wenn ich apptime max eingebe, dann scheint es ziemlich zu verzögern:

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
tmr-SONOSPLAYER_TriggerCoverTitleLater   HASH(0x4366c80)                      22778        5  112528.52 22505.70 24177.67  5623.32 26.09. 19:54:25 HASH(Sonos_Bad__Schlafz)
Logging                                  DbLog_Log                            22709     3286  125918.30    38.32     0.00     0.00 26.09. 19:54:25 HASH(Logging); HASH(Sonos_Bad__Schlafz)

lg c
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

Naja, die Cover selbst werden vom Modul eigentlich gar nicht mehr geladen (nur noch, wenn du das Attribut "getLocalCoverArt" gesetzt hast).
Erst dein Browser lädt es dann. Das Modul baut nur den IMG-Tag (bzw. DIV-Tag mit Background-Image) mit der passenden URL (also entweder über die Modul-Proxy-Funktionalität oder direkt vom Player) zusammen, und liefert den HTML-Code dann nur aus.

Die Max-Time dabei überrascht mich wirklich. Eigentlich werden nur einige ReadingsVal-Aufrufe durchgeführt, und viel Text zusammengesetzt. Aber vielleicht zählt in diese Zeit auch das Übermitteln der Daten an den Browser mit rein?

Ich habe den Code dazu mal gerade überflogen, und auf Anhieb auch nichts sehen können, was so lange verzögern könnte...

Hmm... da bin ich gerade echt überfragt.

Grüße
Reinerlein

choetzu

danke für deine schnelle Antwort.

Hängt es evtl. damit zusammen, dass mein Reading MusicServicesList bruuutal viel Infos enthält? Genau so wie ZoneGroupState.. ist das normal? Wenn ich z.B. den Eventmonitor einschalte und auf Sonos läuft Radio, dann gibt es auch Fehlermeldungen.

lg c
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

ja die beiden Readings sind groß, werden aber auch nicht ständig aktualisiert.
"MusicServicesList" nur, wenn Sonos da was hinzufügt (bzw. beim ersten Start, wenn es noch leer ist), und das andere immer bei Zonenumbauten...

Was für Fehlermeldungen kommen denn?

Grüße
Reinerlein

choetzu

Hallo Reinerlein
Danke. Siehe Anlage, da ist die Fehlermeldung. Meistens, wenn beim Radiostreamen der Titel ändert.
Hilft dir das weiter?
Lg c
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

ja, das ist eine Meldung, die im Event-Monitor kommt.
Ich schreibe in dieses covertitle-Event eine ganze Menga Javascript-Code (du kannst auf das Cover des aktuellen Titels klicken, und erhältst dann eine Ganz-Seiten-Cover-Ansicht, die sich ebenfalls dynamisch aktualisiert).
Dieser Code (bzw. die einfache Darstellung dazu) funktioniert anscheinend nicht sauber im Event-Monitor. Irgendwas wird da in der HTML-Struktur der Event-Seite verwurstelt, und führt dann zu diesem Fehler...

Das ist aber erstmal nicht besorgniserregend... Wichtiger wären Fehler.Meldungen im Log (sowohl Fhem-Seite als auch SubProzess-Seite).

Grüße
Reinerlein

choetzu

#17
Hey Reinerlein

Das ist genau mein Problem. Es gibt keine Fehlermeldungen. Wenn ich aber Sonos starte, z.B. mit Taster, dann blockiert es Fhem für ungefähr 20 - 30 Sekunden komplett. Also ausschalten oder Fhem aufrufen geht nicht. Wo kann ich suchen?

Lg C

Edit: meine Sonos landschaft besteht noch aus der ersten Generation (zp..). Könnte dies eine rolle spielen?
Raspi3, EnOcean, Zwave, Homematic

Reinerlein

Hi choetzu,

hmm... du könntest in die Prozeduren, die den Coverkram zusammenbauen, mal Logausgaben mit Zeitstempel einbauen, um die Stelle zu finden, wo genau die Zeit verloren geht...

Einfach in "SONOSPLAYER_TriggerCoverTitleLater" einsteigen. Das ist die Stelle, die vom Notify aus aufgerufen wird...

Dann, wenn das noch nicht erhellend ist, in "SONOSPLAYER_Detail" weitermachen...

Dort wird dann "SONOS_getCoverTitleRG" aufgerufen, welches dann wiederum "SONOS_getCoverRG" und "SONOS_getTitleRG" aufruft...

Welche Player du hast, sollte nicht wichtig sein... das ganze sollte sich ja auch nur auf in Fhem vorhandene Werte beziehen...

Grüße
Reinerlein