Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Otto,

nur ein kleiner Tipp am Rande :)

Auflösen aller Gruppen:

set Sonos Groups Reset


Rauslösen eines einzelnen Player aus seiner Gruppe, ohne zu wissen, in welcher er steckt:

set Sonos_Wohnzimmer MakeStandaloneGroup


Grüße
Reiner

binford6000

Zitat von: Elektrolurch am 03 Januar 2018, 11:58:07
Hallo Reinerlein,
muss noch Mal auf den Befehl ExportSonosBibliothek zurückkommen.
Bei mir scheint der Sonos-Prozess sich nach kurzer Zeit nach dem Befehl zu beenden und startet dann wieder neu. Vielleicht hilft da folgender log-Eintrag:

...
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(\\%(?:\\=)?(\w|\\{ <-- HERE (?:\w|\\[^\w\\{}]|\\\\\\[\\{}])*\\}|\\\W))/ at FHEM/lib/MP3/Tag.pm line 2611.
...

Die Meldung aus: FHEM/lib/MP3/Tag.pm
sehe ich, wenn ich den ExportSonosBibliothek - Befehl starte nach einiger Zeit....
Jedenfalls gelingt es mir nicht mehr, das File mit den Export-Daten zu erzeugen.

Elektrolurch

Hallo Elektrolurch,
ich habe auch die Meldung
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/(\\%(?:\\=)?(\w|\\{ <-- HERE (?:\w|\\[^\w\\{}]|\\\\\\[\\{}])*\\}|\\\W))/ at FHEM/lib/MP3/Tag.pm line 2611.
in meinem Log, allerdings nur wenn ich folgendes ausführe:
fhem "set TYPE=SONOSPLAYER StartRadio /^Chilling/";

Gibt es da mittlerweile Abhilfe? Letztlich funktioniert ja alles und es ist nur ein Hinweis im Log...
VG Sebastian

aliate

Guten Abend,

im Nachgang zu meinem Post (https://forum.fhem.de/index.php/topic,10033.msg747983.html#msg747983) meine aktuelle Lösung:

([Turm_Wohnen_Sonos_KNX:"-100"] and [Sonos_Wohnzimmer:state] ne "PLAYING" and [Sonos_Bad:state] ne "PLAYING" and [Sonos_Kueche:state] ne "PLAYING")(set Sonos_Wohnzimmer Volume 0)(set Sonos_Wohnzimmer Play)(set Sonos_Wohnzimmer Volume 10 1)
DOELSEIF([Turm_Wohnen_Sonos_KNX:"-100"] and [Sonos_Wohnzimmer:state] ne "PLAYING" and [Sonos_Kueche:state] eq "PLAYING" and [Sonos_Kueche:IsMaster] == 1)(set Sonos_Wohnzimmer Volume 0)(set Sonos_Kueche AddMember Sonos_Wohnzimmer)(set Sonos_Wohnzimmer Volume 10 1)
DOELSEIF([Turm_Wohnen_Sonos_KNX:"-100"] and [Sonos_Wohnzimmer:state] ne "PLAYING" and [Sonos_Bad:state] eq "PLAYING" and [Sonos_Bad:IsMaster] == 1)(set Sonos_Wohnzimmer Volume 0)(set Sonos_Bad AddMember Sonos_Wohnzimmer)(set Sonos_Wohnzimmer Volume 10 1)
DOELSEIF([Turm_Wohnen_Sonos_KNX:"-100"] and [Sonos_Wohnzimmer:state] eq "PLAYING" and [Sonos_Wohnzimmer:IsMaster] == 0)(set Sonos_Wohnzimmer Volume 0 1)(set Sonos_Wohnzimmer MakeStandaloneGroup)(set Sonos_Wohnzimmer Volume 10)
DOELSEIF([Turm_Wohnen_Sonos_KNX:"-100"] and [Sonos_Wohnzimmer:state] eq "PLAYING" and [Sonos_Wohnzimmer:IsMaster] == 1)(set Sonos_Wohnzimmer Volume 0 1)(set Sonos_Wohnzimmer Pause)(set Sonos_Wohnzimmer Volume 10)
DOELSEIF([Turm_Wohnen_Sonos_KNX:"100"])(set Sonos_Wohnzimmer Next)


Ursprünglich wollte ich mir ja das abbilden jedes möglichen Zustandes durch den Einsatz von Variablen sparen, doch leider komme ich so auf keine Lösung. Obiges DOIF funktioniert jedoch genau nach meinen Vorstellungen. Wenn bereits ein Player in einem Raum spielt so wird der nächste automatisch in die Gruppe mit aufgenommen und am Ende auch wieder ausgeschlossen.

Schönen Abend
Hermann

Jamo

Hallo Alle zusammen,
ich möchte direkt nach dem Einschalten meiner Funksteckdosen für meine Sonos Play1 erstmal eine beliebig lange "WelcomeMessage" abspielen, und danach einen bekannten Radio Sender abspielen.
Das funktioniert auch mit folgendem Code, allerdings fängt zuerst der Radiosender manchmal für 1 bis 2 Sekunden zu spielen, dann kommt die Sprachdurchsage, und danach gehts mit dem Radio weiter. Das stört mich wirklich, und ich bekomme es einfach nicht hin. Wie schaffe ich es das erst die Welcomemessage abgespielt wird, ohne das erst der Radiosender angeht für 1-2 Sekunden? Da ich nicht weiss wie lange die WelcomeMessage ist, kann ich den Code nicht umdrehen, ich starte also zuerst das Radio und spiele dann die WelcomeMessage ab. Wie macht Ihr das?

Sonos_Alle ist eine structure auf die presence readings für alle Sonos_Play1:
define Sonos_Alle_n notify Sonos_Alle:appeared {\
  fhem("set Sonos Mute 1");;\
  SonosMakeGroups();;\
  MyStartFavourite("Sonos_Schlaf","Antenne");;\
  fhem("set Sonos Mute 0");;\
  WelcomeMessage()}


Mit SonosMakeGroups gruppiere ich nach dem Einschalten die Player und setzte unterschiedliches Volume:
sub SonosMakeGroups() {
  if (ReadingsVal("Sonos_Schlaf","SlavePlayer","NA") ne "['Sonos_Bad','Sonos_Flur','Sonos_Kueche','Sonos_Kueche_RF','Sonos_Schlaf_RF']") {
    fhem("set Sonos_Schlaf,Sonos_Kueche,Sonos_Bad Volume 6;set Sonos Groups [Sonos_Schlaf,Sonos_Kueche,Sonos_Flur,Sonos_Bad];set Sonos_Schlaf SnapshotGroupVolume;set Sonos_Flur Volume 8")}}



sub MyStartFavourite($$) {
  my ($Device,$Sender) = @_;
  return undef if(!$Device or !defined($Sender));
    if    ( $Sender eq "Antenne"    || $Sender eq "antenne")         {fhem("set $Device StartFavourite /(?i)ANTENNE.*/     ")}
    elsif ( $Sender eq "AbsHOT"     || $Sender eq "absolut hot")     {fhem("set $Device StartFavourite /(?i)Absolut.HOT/   ")}
. . . .
    elsif ( $Sender eq "SWR3"       || $Sender eq "SWR drei")        {fhem("set $Device StartFavourite /(?i)SWR3.*/        ")}}


sub WelcomeMessage() {
  my $Wettervorhersage = "Hier die Vorhersage für meine Stadt für " . TimeNow() . ". Aktuelle Außentemperatur: " . "schlimm kalt " °C, und es ist jetzt " . "echt schlechtes Wetter" . ". Die Vorhersage für heute: " . "Es wird noch schlimmer" . ". ";
  if (ReadingsVal("rr_Inoma_wakeuptimer1","running","nA") eq "1")) {fhem("set Sonos_Schlaf Speak 12 de $Wettervorhersage")} else {fhem("set Sonos_Schlaf Speak 12 de Schön das Du da bist, kommt ja sonst keiner, bla bla bla")}
}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Otto123

Ich weiß nicht wieso das eigentlich nur bei mir nicht geht(Durchsage innerhalb Radio), aber das ist ja egal. Ich muss es mal noch im Detail untersuchen.  ;D

Als Idee:
Ich starte den radiostream lange bevor ich ihn hören will. Ich habe nämlich null Bock auf jeden tag die gleiche Werbemessage beim Start des Streams.
Also zuerst das
defmod a40 at *05:50:00 set Sonos Groups [Sonos_Bad, Sonos_BadWanne, Sonos_Kueche];;sleep 20;;set Sonos_Bad GroupMute 1;;sleep 5;;set Sonos_Bad,Sonos_BadWanne,Sonos_Kueche Volume 15;;set Sonos_Bad StartRadio Radio%20PSR%20102.9%20(Pop)

und dann das:
defmod di_GutenMorgen DOIF ([05:51-11:00] and ["LichtBWaSw_02:on"]) (set Sonos_Bad GroupMute 0)

Wenn Du jetzt  Einfach nicht Mute nimmst sondern Lautstärke 0, dann spielst Du Deine Nachricht mit Lautstärke x und anschließend setzt Du die Lautstärke wie gewünscht fürs Radio?

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

Hotbird

ich hab noch ne ältere Version von 21_SONOSPLAYER.pm und 00_SONOS.pm. Nachdem damit letztes Jahr etwas nicht geklappt hat ( Favoriten nach "Strom an" laden ) hab ich die aus dem update excludiert.. Jetzt habe ich ein normales update gemacht (update all ) und die Sonos werden gar nicht mehr angesprochen.. Kommt sich da irgendwas in die quere?

UPD FHEM/00_FBAHAHTTP.pm
UPD FHEM/00_OWX.pm
update: skipping FHEM/00_SONOS.pm, matches exclude_from_update
UPD FHEM/00_THZ.pm
UPD FHEM/00_ZWDongle.pm
UPD FHEM/01_FHEMWEB.pm
UPD FHEM/10_CUL_HM.pm
UPD FHEM/10_EQ3BT.pm
UPD FHEM/10_FBDECT.pm
UPD FHEM/10_FRM.pm
UPD FHEM/10_KNX.pm
UPD FHEM/10_MYSENSORS_DEVICE.pm
UPD FHEM/10_SOMFY.pm
UPD FHEM/13_KS300.pm
UPD FHEM/14_CUL_TCM97001.pm
UPD FHEM/20_FRM_AD.pm
UPD FHEM/20_FRM_OUT.pm
UPD FHEM/20_FRM_PWM.pm
UPD FHEM/20_N4HBUS.pm
UPD FHEM/21_HEOSPlayer.pm
UPD FHEM/21_N4HMODULE.pm
update: skipping FHEM/21_SONOSPLAYER.pm, matches exclude_from_update
UPD FHEM/22_HOMEMODE.pm
UPD FHEM/24_TPLinkHS110.pm
UPD FHEM/26_KM273.pm
UPD FHEM/30_DUOFERN.pm
UPD FHEM/30_HUEBridge.pm
UPD FHEM/31_Aurora.pm
UPD FHEM/31_HUEDevice.pm
UPD FHEM/31_PLAYBULB.pm
UPD FHEM/32_TechemHKV.pm
UPD FHEM/32_WifiLight.pm
UPD FHEM/34_ESPEasy.pm
UPD FHEM/36_LaCrosse.pm
UPD FHEM/42_SYSMON.pm
UPD FHEM/47_OBIS.pm
UPD FHEM/50_MOBILEALERTSGW.pm
UPD FHEM/50_TelegramBot.pm
UPD FHEM/51_I2C_TSL2561.pm
UPD FHEM/51_MOBILEALERTS.pm
UPD FHEM/51_RPI_GPIO.pm
UPD FHEM/53_GHoma.pm
UPD FHEM/55_InfoPanel.pm
UPD FHEM/59_HCS.pm
UPD FHEM/70_BRAVIA.pm
UPD FHEM/70_WINCONNECT.pm
UPD FHEM/72_FB_CALLLIST.pm
UPD FHEM/72_FRITZBOX.pm
UPD FHEM/73_AMADCommBridge.pm
UPD FHEM/73_ElectricityCalculator.pm
UPD FHEM/73_GardenaSmartBridge.pm
UPD FHEM/73_MPD.pm
UPD FHEM/73_PRESENCE.pm
UPD FHEM/74_AMADDevice.pm
UPD FHEM/74_GardenaSmartDevice.pm
UPD FHEM/74_Unifi.pm
UPD FHEM/74_UnifiVideo.pm
UPD FHEM/74_XiaomiBTLESens.pm
UPD FHEM/74_XiaomiFlowerSens.pm
UPD FHEM/76_msgDialog.pm
UPD FHEM/77_UWZ.pm
UPD FHEM/82_LGTV_WebOS.pm
UPD FHEM/88_xs1Bridge.pm
UPD FHEM/90_at.pm
UPD FHEM/91_notify.pm
UPD FHEM/92_FileLog.pm
UPD FHEM/93_DbLog.pm
UPD FHEM/93_DbRep.pm
UPD FHEM/93_PWMR.pm
UPD FHEM/95_Alarm.pm
UPD FHEM/95_YAAHM.pm
UPD FHEM/95_holiday.pm
UPD FHEM/96_SIP.pm
UPD FHEM/96_allowed.pm
UPD FHEM/97_PiXtendV2.pm
UPD FHEM/98_ArduCounter.pm
UPD FHEM/98_BOSEST.pm
UPD FHEM/98_DLNARenderer.pm
UPD FHEM/98_DOIF.pm
UPD FHEM/98_GOOGLECAST.pm
UPD FHEM/98_HMinfo.pm
UPD FHEM/98_HMtemplate.pm
UPD FHEM/98_Modbus.pm
UPD FHEM/98_SVG.pm
UPD FHEM/98_TRAFFIC.pm
UPD FHEM/98_apptime.pm
UPD FHEM/98_autocreate.pm
UPD FHEM/98_backup.pm
UPD FHEM/98_configdb.pm
UPD FHEM/98_dewpoint.pm
UPD FHEM/98_structure.pm
UPD FHEM/98_telnet.pm
UPD FHEM/98_update.pm
UPD FHEM/98_weekprofile.pm
UPD FHEM/99_Utils.pm
UPD FHEM/DevIo.pm
UPD FHEM/HMConfig.pm
UPD FHEM/HttpUtils.pm
UPD FHEM/TcpServerUtils.pm
UPD FHEM/YahooWeatherAPI.pm
UPD FHEM/firmware/ArduCounter.hex
UPD FHEM/firmware/JeeLink_LaCrosseGateway.bin
UPD FHEM/lib/74_AMADautomagicFlowset_4.0.13.xml
UPD FHEM/lib/Device/Firmata.pm
UPD FHEM/lib/Device/Firmata/Constants.pm
UPD FHEM/lib/Device/Firmata/Platform.pm
UPD FHEM/lib/Device/Firmata/Protocol.pm
UPD FHEM/lib/UPnP/ControlPoint.pm
UPD FHEM/lib/fhem_zwave_deviceconfig.xml.gz
UPD FHEM/lib/openzwave_manufacturer_specific.xml
UPD contrib/commandref_join.pl
UPD docs/commandref_frame.html
UPD docs/commandref_frame_DE.html
UPD www/codemirror/fhem_codemirror.js
UPD www/images/fhemSVG/logic.svg
UPD www/images/fhemSVG/mqtt.svg
UPD www/images/fhemSVG/mqtt_broker.svg
UPD www/images/fhemSVG/mqtt_device.svg
UPD www/pgm2/alarm.js
UPD www/pgm2/defaultCommon.css
UPD www/pgm2/f18.js
UPD www/pgm2/f18style.css
UPD www/pgm2/fhemweb.js
UPD www/pgm2/fhemweb_fbcalllist.js
UPD www/pgm2/fhemweb_iconButtons.js
UPD www/pgm2/fhemweb_iconRadio.js
UPD www/pgm2/fhemweb_uzsu.js
UPD www/pgm2/fhemweb_weekprofile.js
UPD www/pgm2/svg.js
UPD www/pgm2/zwave_neighborlist.js


sobald ich das durchführe ist Sonos gar nicht mehr ansprechbar...

Reinerlein

Hi Hotbird,

du hast die Datei "FHEM/lib/UPnP/ControlPoint.pm" geupdated.
Dort hat sich die Schnittstelle zur Verwendung geändert, sodass die alten Sonos-Dateien nicht mit dieser neuen ControlPoint-Version zusammenarbeiten können...

Grüße
Reinerlein

P.S.: Im Log müsste es dazu auch eine Fehlermeldung geben. Da sollte man schon mal reinschauen...

Hotbird

das heißt jetzt das ich die auch ausklammern muss, oder ein update auf die neuen Sonosdateien machen muss? Mhh, den Rest hätte ich ja schon gerne als update... Naja, ich mach erstmal nen Backup vom laufenden System :-)
Danke auf jeden Fall für die schnelle antwort!

dantist

Ich habe etwas (vermutlich dummes) gemacht und einen Sonos-Raum umbenannt, indem ich ein Search & Replace über die fhem.cfg habe laufen lassen. Das scheint soweit auch funktioniert zu haben, allerdings taucht der alte Namen noch in nicht anklickbarer Form auf, inkl. Albumcover und funktionierenden Play/Pause/etc. Buttons. Wie kann ich das sauberziehen?

Reinerlein

Hi dantist,

ich weiß nicht, welchen Stand du hast.
In der aktuellen Version werden neben dem Hauptdevice nur die vier Readingsgroups für "Favoriten", "Radios", "Playlisten" und der aktuellen "Queue" angelegt.

Was genau bei dir passiert ist, kann man von hier nicht wirklich nachvollziehen...
Einfacher wäre vermutlich ein "rename Sonos_OldName Sonos_Newname" gewesen, und im Anschluß noch die vier Readingsgroups :)

Du kannst dir aber mit

list TYPE=SONOSPLAYER
zumindest mal alle definierten Player auflisten lassen.

Die ReadingsGroups findest du dann mit

list Sonos_.+RG_.+:FILTER=TYPE=readingsGroup


Grüße
Reinerlein

dantist

Den Rename-Befehl habe ich danach auch gefunden  ;D

Der Fehler war ein vergessenes group-Attribut, das vom Find & Replace nicht erwischt wurde.

elmer

Ich mache alle Durchsagen mitset TYPE=SONOSPLAYER:FILTER=presence=appeared:FILTER=currentTitle!=Gruppenwiedergabe Speak 37 de $ausgabe

Meistens auf allen Sonos Lautsprechern, das ist natürlich nicht synchron.

Jetzt habe ich alle Lautsprecher im Sonos Modul in eine Gruppe gesteckt und die Ansagen kommen jetzt synchron. Leider wird jetzt jede Ansage doppelt gemacht, wie kann ich das unterbinden?

Reinerlein

Hi elmer,

ohne das Problem jetzt wirklich gefunden zu haben, würde ich dir empfehlen, auf IsMaster zu filtern:

set TYPE=SONOSPLAYER:FILTER=presence=appeared:FILTER=IsMaster=1 Speak 37 de $ausgabe


Grüße
Reinerlein

elmer

Wenn ich das ganze mit IsMaster=1 mache ist alles wieder asynchron.

Reinerlein

Hi elmer,

komisch. Was liefert denn ein

list TYPE=SONOSPLAYER:FILTER=presence=appeared:FILTER=IsMaster=1
?

Da sollten nur Masterplayer erscheinen, die ja jeweils ihre Gruppe versorgen.

Grüße
Reinerlein