Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Fischei

Zitat von: krikan am 09 September 2015, 14:18:23
http://forum.fhem.de/index.php/topic,10033.msg259741.html#msg259741

Diesen Beitrag hab ich schon gefunden aber da werde ich nicht ganz schlau. Wo finde ich die Datei genau?
Wird diese dann durch ein update wieder überschrieben?

Die can't connect Meldung bekomme ich auch ab und zu aber bei der IP handelt es sich um die IP von einer meiner Sonos-Boxen:
Loading device description failed with error: 500 Can't connect to 192.168.1.3:1400 at ./FHEM/00_SONOS.pm line 3590 thread 1

Das macht keinen Sinn, dass ich diese auf ignore setze, oder?

Danke

ujaudio

Da ich Sonos meist ausgeschaltet habe und nur gezielt einschalte, verschwinden eigentlich die Geräte. Leider steht in FHEM immer noch appeared. Damit funktioniert auch mein notify nicht, welches auf "appeared" reagieren soll, weil dieser Status Dauerzustand ist - obwohl die Geräte definitiv stromlos sind. GIbt es da irgendeinen Trick?
Einen lieben Gruß
Jürgen

dev0

#2042
Zitat von: dev0 am 19 August 2015, 13:58:47
Wenn Ich meine 3 Sonosräume (1x Connect, 1x Play:1 und 2x Play:3 (L+R)) über den Sonos Controller gruppiere und dann ebenfalls mit der Sonos Software den Master der Gruppe aus der Gruppe herausnehme, dann wird einer der beiden ehemaligen Slaves ein Master für den verbliebenen Slave. In FHEM ist der verbliebe Slave dann im transportState ERROR, obwohl er die Musik des neuen Masters abspielt.

Sorry, wenn ich mich selbst zitiere und dadurch den Beitrag pushe, aber kann das jemand nachvollziehen oder liegt das an meiner Umgebung?

/Uli

SVLoneStar

Hallo,
ich habe meine Play:1 seit gestern in FHEM eingebunden. Folgende(s) Problem(e):

Log meldet dauernd (leider ohne timestamps, da von STDOUT umgeleitet?):
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328, <$client> line 4.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328, <$client> line 4.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328, <$client> line 4.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328, <$client> line 4.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.
Loading device description failed with error: 401 Unauthorized at ./FHEM/00_SONOS.pm line 3590 thread 1.

...und so weiter und so fort.

Den Hinweis von justme1968 (Andre) aus http://forum.fhem.de/index.php/topic,10033.msg259741.html#msg259741 bezgl. der Anpassung in LWP/Protocol/http.pm habe ich umgesetzt, der 'odd number of elements'-Fehler ist leider geblieben. Muss ich da ggf. was neu übersetzen?

Der andere Fehler (401 Unauthorized) stammt wohl von folgender Code-Stelle in 00_SONOS.pm:

eval {
$SONOS_Controlpoint = UPnP::ControlPoint->new(SearchPort => 8008 + threads->tid() - 1, SubscriptionPort => 9009 + threads->tid() - 1, SubscriptionURL => '/eventSub', MaxWait => 30, IgnoreIP => \%ignoredIPs);
$SONOS_Search = $SONOS_Controlpoint->searchByType('urn:schemas-upnp-org:device:ZonePlayer:1', \&SONOS_Discover_Callback);
$SONOS_Controlpoint->handle;
};
$error = $@;

Zu diesem Fehler habe ich im Forum leider nix finden können...

Sprachausgabe auf den Play:1 (via SPEAK in einem notify) funktioniert, die Verbindung zur Sonos selbst sowie der benötigte Share scheint also nicht das Problem zu sein...?

Was mache ich falsch?

Besten Dank und Gruß,
Stefan
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors

Elektrolurch

#2044
Hallo Reinerlein,

in den letzten Tagen war ich fleißig und es hat mich richtig begeistert, was man mit dem tollen Modul alles so anstellen kann, aber leider habe ich doch noch einige Fragen.

1. Beim Starten von fhem bekomme ich aus dem Sonos-Modul folgende Meldung:
Smartmatch is experimental at ./FHEM/00_SONOS.pm line 5383.

Ich denke, dass das der .. Operator für Bereichsabfragen, der in der perl-Version unter debian (Cubie) nicht, bzw. bedingt unterstützt wird.
Nach Neustart -> noch keine Player im Netz gefunden
Aber offensichtlich laufen noch die Sonos-Prozesse
2015.09.13 21:48:11 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.09.13 21:48:11 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.09.13 21:48:11 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 449.
...
2015.09.13 21:53:38 1: SONOS0: Nothing could be read from TCP-Channel (the first level) even though the Read-Function was called.
Eine funktionelle Beeinträchtigung gibt es nicht. Die Meldungen sind halt etwas störend, denn ich versuche meine Logs möglichst sauber zu halten... :-)

2. Da gibt es zwei Befehle, was machen die? Kann Sonos aus einem Stereo-Signal ein (Pseudo-) Surround berechnen? Eine Verbreiterung der Stereobasis wäre ja ev. für Lautsprecher interessant, die links und rechts neben dem TV stehen.

◦ SurroundEnable <State>
Legt den Zustand des Surround-Zustands fest. Liefert den aktuell gültigen Surround-Zustand.
◦ SurroundLevel <Level>
Setzt den Surroundlevel auf den angegebenen Wert. Der Wert kann zwischen -15 und 15 liegen.

3. externer Eingang
Es gibt das reading LineInConnected. Ich habe da ein Sendermenü für Radiostationen gebastelt und mit dem Auswahlpunkt "extern" wollte ich auf den LineIn umschalten.
Irgendwo hatte ich gelesen, dass das mit dem unten aufgeführten Befehl  unter Angabe des Sonos-Playernamens gehen würde... Tut aber nicht.

elsif($val eq 'extern')
{
fhem("set $master StartRadio  $master");
} # extern input
$master ist Sonos_G_stezimmer

Dann blende ich in der rg für externen Eingang das Logo wie folgt aus:

SonosCC:<{(ReadingsVal($DEVICE,'LineInConnected',0)==0)?SONOS_getCoverTitleRG($defs{$DEVICE}->{master}):undef}@infoSummarize2>
Das funktioniert auch, wenn ich ein Kabel anstecke mit einer externen Tonquelle wird das Logo des z.B. laufenden Radioprogramms ausgeblendet.
Nur Umschalten tut der Player nicht auf den externen Eingang. Ev. muss ich über den normalen Sonos-Kontroller da noch was "enablen"?

4. Ich habe mir den hash des Bibliothekbaums eingelesen und mir entsprechend der Kategorien in "Structure" eine Menühierarchi aufgebaut (Einstieg mit Albums,artist ... Genres,...).
Wählt man  bspw. Artists aus, dann über das nächste Menü den Buchstabenbereich (z.B. H-P), bekommt man im drittten Menü eine Liste der Interpreten und wählt man dann einen Interpreten aus, bekommt man im 4. Menü die Alben dazu.
Damit werden dann für den search - Befehl die Felder / Filter gefüllt und die gewünschten Titel abgespielt, bzw. zur Abspielliste hinzugefügt. Das funktioniert auch schon ganz ok.

Nun meine Frage:
Die Infos im hash sind ja url-codiert, d.h. ich wende uri_unescape darauf an, ersetze die Leerzeichen durch # und baue mir  so mein fhem-Menü zusammen.
Offensichtlich gibt es aber da Zeichen, die uri_unescape nicht korrekt zurückwandelt.
Hier ein Beispiel:

Haindling,Hannes#Wader,Hanns#Dieter,Hanns#Dieter;#Degenhardt#Hüsch##Franz#Josef;#Neuss,#Wolfgang;#Süverkrüp,,Harvey#Mandel,Heinrich#Steiner#/#Nordmark-Sinfonie-Orchester,Heinrich#Steiner#/#Nordmark-Sinfonie-

Speziell der Eintrag:
Hannes#Wader,Hanns#Dieter,Hanns#Dieter;#Degenhardt#Hüsch##Franz#Josef;#Neuss,#Wolfgang;#Süverkrüp,,
wird nach uri_escape dann nicht mehr im hash des Bibliothekbaums gefunden. Ich versuche gerade herauszufinden, welches Zeichen da problematisch ist, d.h. den Orinalwert im hash mit der Rückwandlung zu vergleichen.

Einen Tipp, was ich da beim codieren / dekodieren beachten muss?
Eingestellt ist UTF-8 bei den Sonos-Attributen. Habe einen Radiosender mit kyrillischen Buchstaben in der Favoritenliste, der wird von fhem auch nicht angezeigt. In die Codierungsgeschichte müsste ich mich mal tiefer bzgl. Web einarbeiten.

5.  Titelreihenfolge bei Kategorie=Albums bei Befehl  " startSearchlist"
my $cmd = "set $master startSearchlist $kategorie $kategoriename $titel" . '/'. $album . '/' . $interpret . ' ' . $option;
Ich habe den Eindruck, dass startSearchlist nicht in der Original Trackreiehenfolge die Titel abspielt. In der "Option" hatte ich auch kein "*" gesetzt. Shuffle steht auch auf 0 am Player.

6. Ich bekomme kein "disappear vom Player, wenn ich den ausschalte.
Lösung: Den Beitrag dazu hatte ich schon vor einiger Zeit gelesen und den pingtype auf ICMP gestellt. Nun startet fhem über die init.d und nicht mehr manuell aus dem root-Account -> dann geht ICMP nicht mehr. Da die Fehler im Sub-Prozess generiert werden und nicht im Log landen, ist mir das nicht aufgefallen.
Habe den pingtype auf tcp geändert und jetzt gehts.
7. Loudness. Welchen Einstellbereich hat die Lodness?

Gruß

Elektrolurch

configDB und Windows befreite Zone!

justme1968

#2045
hallo reiner,

ich habe gesehen das tobias in sein tts modul voice rss (http://www.voicerss.org/) als tts provider eingebaut hat. die klingt für meine ohren sehr viel natürlicher als google und die umlaute sind besser.

es wäre klasse wenn du das als alternative zu google direkt im sonos modul einbauen könntest. ich weiss das es über die SpeakX attribute nachrüstbar ist. aber direkt wäre einfacher :)

gruss
  andre

ps: wenn du es nicht direkt einbauen magst wäre es klasse im SpeakX attribut den text auch url escaped zur verfügung zu haben :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Fischei

Zitat von: Fischei am 09 September 2015, 14:29:13
Diesen Beitrag hab ich schon gefunden aber da werde ich nicht ganz schlau. Wo finde ich die Datei genau?
Wird diese dann durch ein update wieder überschrieben?

Die can't connect Meldung bekomme ich auch ab und zu aber bei der IP handelt es sich um die IP von einer meiner Sonos-Boxen:
Loading device description failed with error: 500 Can't connect to 192.168.1.3:1400 at ./FHEM/00_SONOS.pm line 3590 thread 1

Das macht keinen Sinn, dass ich diese auf ignore setze, oder?

Danke

Kann mir hier echt keiner weiter helfen? Weiß nicht wie ich den Fehler beheben soll.

dev0

WLAN Empfangsprobleme der Box kannst Du ausschließen?

Fischei

Zitat von: dev0 am 16 September 2015, 15:49:06
WLAN Empfangsprobleme der Box kannst Du ausschließen?

Also der Fehler "Loading device description failed with error: 500 Can't connect to 192.168.1.3:1400 at ./FHEM/00_SONOS.pm line 3590 thread 1" kommt jetzt nicht mehr. Ich hatte in letzter Zeit immer I-Net Abbrüche, da meine Fritzbox einen Defekt hatte. Evtl lag es an dem. Mit der neuen Fritzbox funktioniert es jetzt.

Bezüglich dem Fehler "Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328, <$client> line 5.":
Ich hab jetzt die Datei aus dem oberen Post gefunden und geändert. Datei war unter /usr/share/perl5/LWP/Protocol.
Hier hab ich die Zeile "$self->_extra_sock_opts($host, $port)," auskommentiert. Fehler kommt aber leider immer noch, auch nach einem Neustart.

andre07

Hallo Reinerlein

Heute sind meine Sonos gekommen und ich wollte gleich mal die Sprachausgabe testen funktioniert leider nicht
bei mir. Die Dateien werden aber erzeugt befinden sich freigegebenen Ordner. Im Im fhemlog steht dies
2015.09.16 22:09:47.063 3: SONOS1: Combine loaded chunks into "/opt/fhem/SonosSpeak/RINCON_5CAAFD243CDE01400_MR_Speak_20150916-220946.mp3"
2015.09.16 22:09:47.120 3: SONOS1: Start temporary playing of "\\192.168.2.108\SonosSpeak/RINCON_5CAAFD243CDE01400_MR_Speak_20150916-220946.mp3"

Der pfad ist doch falsch \SonosSpeak/RINCON
außerdem habe ich  im sonoslog diese Meldungen
2015-09-16_18:07:36 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Success!
2015-09-16_19:29:48 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Success!
2015-09-16_21:54:34 Sonos_Schlafzimmer LastActionResult: DoWork-Exception ERROR: 500 Can't connect to 192.168.2.113:1400 at FHEM/lib/UPnP/ControlPoint.pm line 802 thread 1.
2015-09-16_21:59:18 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2015-09-16_22:00:02 Sonos_Schlafzimmer LastActionResult: Pause: Success!
2015-09-16_22:00:10 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2015-09-16_22:01:59 Sonos_Schlafzimmer LastActionResult: Speak0: MP3-Creation ERROR during downloading: 404 Not Found
2015-09-16_22:08:33 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2015-09-16_22:09:47 Sonos_Schlafzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2015-09-16_22:13:12 Sonos_Schlafzimmer LastActionResult: Speak0: MP3-Creation ERROR during downloading: 404 Not Found


Andre


Capeghost

Hallo,

ich hätte mal wieder ein kleineres Problem, bei dem ich gerade irgendwie auf dem Schlauch stehe bzw. mir die notwendige Idee für die komplette Umsetzung fehlt.
Folgende Situation: 2 Sonos-Player Esszimmer und Bad - wenn auf beiden zufällig der gleiche Radiosender, soll eine Gruppierung erfolgen mit dem Esszimmer als Master. Das funktioniert auch soweit mit:

define di_Merge_Sonos_Bad_with_Sonos_Esszimmer DOIF ([Sonos_Esszimmer:transportState] eq "PLAYING" and [Sonos_Bad:transportState] eq "PLAYING" and [Sonos_Bad:currentSender] eq [Sonos_Esszimmer:currentSender])  (set Sonos_Esszimmer AddMember Sonos_Bad)

Wenn nun im Bad direkt über den Knopf am Gerät bzw. im Esszimmer via
define Fern2Taste1links_Notify notify Fern2Taste1links:toggle set Sonos_Esszimmer Pause
Pause gewählt wird, möchte ich, dass am jeweils anderen Gerät der aktuelle Sender weitergespielt wird.

Ich habe das jetzt aktuell mit
define di_Ungroup_Sonos_Bad_from_Sonos_Esszimmer DOIF ([Sonos_Esszimmer:transportState] eq "STOPPED" and [Sonos_Bad:currentTitle] eq "Gruppenwiedergabe")  (set Sonos_Esszimmer RemoveMember Sonos_Bad) (set Sonos_Esszimmer Play)
umgesetzt. Das hat zur Folge, dass es beim Wählen von Pause im Bad alles funktioniert, nur umgekehrt beim Auslösen des Notify für das Esszimmer geht der Player im Bad aus und der Player im Esszimmer nach einem kurzen Aussetzer beim Ungroup wieder an.
Wie bekomme ich meine gewünschte Lösung hin bzw. wie frage ich das Auslösen des Notify im dann wohl notwendigen doelseif richtig ab? Ich hoffe, Ihr könnt mir weiterhelfen.

Danke.

Gruß

Capeghost

schlingi

Hallo,

bei mir funktioniert die Einbindung der Sonos-Boxen perfekt. Ich habe allerdings ein grundsätzliches Problem mit der Sprachausgabe. Bei mir kommt dabei ständig der Fehler: "FHEMWEB SSL/HTTPS error:" Der Sonos Player stoppt, aber die Sprachausgabe erfolgt nicht. Ich vermute, dass es daran liegt, dass mein FHEM und raspberry über https erreichbar ist? Vielleicht ist auch mein Eintrag in der fhem.cfg falsch:
"attr Sonos targetSpeakURL \\https://192.168.178.33:8083/fhem\SonosSpeak" . Allerdings habe ich es auch mit : "attr Sonos targetSpeakURL \\192.168.178.33:8083/fhem\SonosSpeak" und "attr Sonos targetSpeakURL \\192.168.178.33\SonosSpeak" ausprobiert. Ohne Erfolg... Wer kann weiterhelfen?

dev0

Kann man denn auf die Dateien über die TargetSpeakURL mit user/pass des Sonos Players zugreifen?

Reinerlein

Hallo zusammen,

oh mann... hier ist ja einiges zusammengekommen, als ich keine Zeit hatte reinzuschauen :)

Ich versuche das mal ein bißchen aufzudröseln:
@schlingi: der Parameter targetSpeakURL darf nur mit DoppelBackslash beginnen, und beschreibt einen UNC-Pfad der Form "\\Rechnername\Freigabename\Pfad_innerhalb_der_Freigabe". Der Port ist dabei nicht der http-port, sondern meistens der Standard-Port 445 und wird also nicht angegeben. Der Zugriff erfolgt dann mittels SMB (Server Message Block) als "Windows"-Client. Sonos greift also immer auf solche Windows- (oder kompatible wie Samba) Freigaben zu. Kein SSL oder https...
Das bedeutet, dass auf dem Rechner mit der IP 192.168.178.33 eine Windows-Freigabe erreichbar sein muss (weil es z.B ein Windows-Server oder ein NAS ist), oder du musst Z.B. Samba installieren. Im Wiki gibt es dazu eine Schnell-Beschreibung...

@andre07: Wenn der Pfad mit SonosSpeak falsch ist, dann musst du ihn richtig konfigurieren :) Spaß beseite... wieso sollte der falsch sein? Im konfigurierten Verzeichnis werden die Dateien mit der eindeutigen Kennung des Players angelegt (das ist diese UUID, die mit RINCON_ beginnt)...
Ab und zu scheint aber auch Google bei dir nicht erreichbar zu sein, oder Sonos kommt an die abgelegten Dateien nicht ran... dazu am Besten erstmal die Dateirechte prüfen (Hilfe dazu auch im Wiki)...

@justme1968: Das mit der Konfiguration einer alternativen URL schaue ich mir mal an... das lässt sich sicherlich machen...

@Elektrolurch: Das muss ich erstmal durchgehen :)

@dev0: Ich versuche das mal die Tage nachzustellen, und mal zu schauen, was das Modul bei mir da so macht...

@Jürgen: Das Abschalten der Player wird durch einen Pingcheck festgestellt (wenn es funktioniert :) ). Du solltest mal den Log hochdrehen, und die Ausgaben nach der Ping-Überprüfung durchforsten. Vielleicht geht da etwas schief, oder er darf etwas nicht oder so... dann kannst du mit dem Parameter pingType spielen...

So, erstmal... ich versuche die angekündigten Themen so schnell wie möglich anzugehen, war in den letzten Tagen leider verhindert...

Grüße
Reiner

SVLoneStar

Hallo Reiner - schade, ich war bei Deinen Antworten nicht dabei...;-))


Gesendet von iPad mit Tapatalk
FHEM 21222 auf Gigabyte NUC, CubieTruck & RasPis (Test)
CUL 868MHz, nanoCUL 868MHz, nanoCUL 433MHz, JeeLink Clone, JeeLink Classic, HM-CFG-USB2, Rademacher
Devices: FHT, FS20, KS300, MAX, IT, HMS100, LaCrosse, PCA301, Revolt, HomeMatic, ESA2000, UNIRoll, Sonos, Duofern, Tasmota, MySensors