Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Schiri1986

Zitat von: twistedtails am 29 Januar 2017, 10:35:25
Moin zusammen,

ich habe gerade neu mit Fhem angefangen und hätte eine kurze Frage zur Sonos-Steuerung.

Ich würde gerne über das Tablet-UI per Knopfdruck auf allen Boxen in der Gruppe einen Radiosender wiedergeben, sodass ich nach dem Aufwachen am Morgen relativ einfach die Musik einschalten kann.
Hat jemand vielleicht einen Programmschnipsel oder ein paar Schlagwörter an den ich ansetzen kann?

Die Einzelwiedergabe ist bereits ohne Probleme möglich, da gibt es ja bereits einige Programmbeispiele im Forum.

Danke vorab für eure Unterstützung.

Ohne jetzt groß nachzudenken, würde ich sagen: Du musst dir eine kleine Routine schreiben, die die folgenden beiden Befehle in dieser Reihenfolge ausführt:

set Sonos Groups [Sonos_Bad, Sonos_Kueche];;set Sonos_Bad StartRadio DEINRADIOSENDER

Wobei du das natürlich durch deine Devices ersetzen musst. Der erste Player, den du in der Gruppe definierst, muss anschließend (weil er der Master ist) den Befehl für das Radio bekommen.

Otto123

Zitat von: elmer am 28 Januar 2017, 21:49:44
Ja, ich mache das ganze mit CallMonitor, also fehlt bei mir der Code mit der internen Nummer, bei mir sieht es so aus.

   
CallMonitor:event:.ring {my $name=(ReadingsVal("CallMonitor","external_name",0));;
if($name eq "M...... Handy") {fhem ("set Sonos_Kueche Speak 70 de $name ruft an.")};;

PS: Shortcuts geht irgendwie bei mir nicht, ich glaube das liegt an meinem geblockten Java oder NoScript...

Ok, eben habe ich diesen Code mit meiner Nummer eingefügt aber der Sonos reagiert immer noch auf allen Anrufen.

my $number=(ReadingsVal("CallMonitor","internal_number",95....));;
Sorry Elmer, ich kann nicht mehr liefern als einen komplett funktionierenden Code. Du darfst natürlich nicht nur die internal $number als Variable beschreiben Du musst sie auch auswerten.  :-\

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elmer

@Otto123

Dein Code geht aber nicht bei mir wenn ich den vollständig übernehme, da kommt dann keine einzige Durchsage mehr.

Otto123

Zitat von: elmer am 29 Januar 2017, 16:55:45
@Otto123

Dein Code geht aber nicht bei mir wenn ich den vollständig übernehme, da kommt dann keine einzige Durchsage mehr.
Und soll ich jetzt raten, was Du falsch abgeschrieben hast? Ich meine klar funktioniert mein Code nicht bei Dir:
Andere Telefonnummer
Nicht Ausgabe Sonos sondern Ausgabe auf dem Fernseher.
Meine Namen sind alle anders.

Also wie wäre es wenn Du z.B. ein list von DEINEM notify zeigst?
Oder von mir aus Dein define komplett!
Und bitte in Codetags, die bekommst Du mit der # Taste über den Smilies.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elmer

#2734
CallMonitor:.*ring { \
my $number=(ReadingsVal("CallMonitor","internal_number",99));;
  my $Anrufer=(ReadingsVal("CallMonitor","external_number",99));;
  my $AnruferName=(ReadingsVal("CallMonitor","external_name",99));;
  if (($number == 959634) and Value("SONOS") eq "on"){
    fhem "Speak SONOS showtext Anruf von $AnruferName $Anrufer";;
  }
}
if($name eq "M..... Handy") {fhem ("set Sonos_Kueche Speak 70 de $name ruft an.")};;


Ich bekomme das einfach nicht zum laufen, so sieht es im Moment aus aber da geht jetzt gar nichts mehr...

Wenn ich es so mache geht es, aber reagiert eben auf alle ankommenden Anrufe, wie schreibe ich es richtig?

CallMonitor:event:.ring {my $name=(ReadingsVal("CallMonitor","external_name",0));;
if($name eq "M..... Handy") {fhem ("set Sonos_Kueche Speak 70 de $name ruft an.")};;

Otto123

#2735
Hallo Elmer,

CallMonitor:.*ring {
  my $number=(ReadingsVal("CallMonitor","internal_number",99));;
  my $Anrufer=(ReadingsVal("CallMonitor","external_number",99));;
  my $AnruferName=(ReadingsVal("CallMonitor","external_name",99));;
  if ($number == 959634) { fhem "set Sonos_Kueche Speak 70 de $AnruferName $Anrufer ruft an";;}}


Zur Erklärung:
Das notify reagiert auf .*ring du kannst sicher auch event:.ring nehmen. Hab ich nicht probiert.
Die ersten 3 Zeilen laden Werte aus dem CallMonitor.
Die letzte Zeile testet die Nummer und gibt den Text aus. Ob Du da Name und Nummer drin haben willst musst Du wissen.

Bei mir musste ich abtesten ob der Sat Receiver an ist, deswegen war die if Bedingung anders. Das Du Deine if Zeile da einfach hin anhängst war witzlos.

Das Deine if Bedingung auf alle ankommenden Rufe reagieren soll, verstehe ich nicht!?

if($name eq "M..... Handy") 

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Avatar

Hallo Reinerlein,

ZitatHallo Reinerlein,

ich habe das Problem nun weiter geprüft. Solange ich den Sub über die IP ausschließe, ist die Fehlermeldung

Subscription request failed with error: 500 Internal Server Error at ./FHEM/00_SONOS.pm line 5396 thread 1.


weg. Allerdings habe ich dann auch keine Infos mehr über den Sub.

Ich kann nur bestätigen was "juemuc" gemeldet hat. Es sind die Surround/Sub welche wenn di IP ausgeschlossen wird, der fehler nicht mehr auftaucht.
Aber wie schon erwähnt fehlt dann jegliche Information von denen, was ja auch nicht das Ziel ist.

Grüsse
Eric


Reinerlein

Hi Eric,

funktioniert es denn, wenn du das Attribut "minVolume" (u.ä., also auch "maxVolume" oder so) von dem Device löschst?
Dann müsste ich da nur eine Ausnahme einsetzen...

Grüße
Reiner

elmer

@Otto123

Konnte leider heute erst testen ob es geht, und was soll ich sagen, jaaa es geht endlich so wie ich es wollte.

Danke für die Hilfe

Reinerlein

Hallo Eric,

konntest du das mit dem minVolume mal testen?
Wenn ja, wie lautet denn der PlayerType für die problematischen Player? Dann kann ich den Verbindungsversuch für die Renderinginformationen dafür direkt unterbinden...

Grüße
Reiner

Avatar

Hallo Reiner

Es scheint zu funktionieren, dass die Fehlermeldung weg ist. Ich habe bei einem Surround das Attr minVolume gelöscht. Beim zweiten liess ich noch das Attr. stehen. Da habe ich jetzt die Fehlermeldung zweimal ansonsten ist sie 4mal vorhanden.
Habe es dann bei dem zweiten auch gelöscht und nun sind die Meldungen im Log nicht mehr vorhanden.

Grüsse
Eric

Reinerlein

Hi Eric,

super... kannst du mir noch kurz die angezeigten verschiedenen PlayerType-Readings nennen? Ich habe die selber nicht...

Danke schon mal.

Grüße
Reiner

JoeALLb

Hm, ist es nur bei mir so, wollt emal in die Runde fragen:
Seit meinem letzten Update (davor was FHEM grob 1 Jahr unverändert!) habe ich
auf einem relativ schnellen Gerät große Verzögerungen.
Ein Notify zum Verbinden von 2 Gruppen wird schon lange abgesetztm bevor ich im Eventmonitor
das dazugehörige Event angezeigt bekomme.
Auch FHEM-Telnet blockiert für ca. 10 Sekunden, wenn ich über den Sonos-Controller
auf einen anderen Titel wechsle.
Da ich hier in den letzten Messages nichts diesbezüglich gelesen habe, befürchte ich fast, dass es mit meinem System zusammenhängt...
aber Idee habe ich noch keine!

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Avatar

Hallo Reiner

Ich hoffe dies ist was du benötigst:

SubWoofer:
playerType = Sub
fieldType = SW

bei den Surround's ist es etwas anders. Bei mir sind es Play1 Lautsprecher somit ergibt sich:
playerType = S1
fieldType = RR (für den rechten)
fieldType = LR (für den linken)


Grüsse
Eric

Reinerlein

Hi Eric,

danke, und du hast das Problem auch bei den beiden Play1, wenn sie als SurroundBox eingerichtet sind?
Bei dem Sub kann ich mir das ja erklären, der hat das ja dann Hardwarebedingt nicht, da er niemals alleine funktionsfähig wäre, aber die beiden Play1 sollten eigentlich normal klappen...

Grüße
Reiner