Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Detlef,

leider kann man das nicht einfach so mitteilen. Das andere Problem ist aber, dass ich gar kein unsubscribe aufrufe. Ich mache nur ein subscribe- und später nur noch renew-Aufrufe...

Um mal einzugrenzen, an welcher Stelle das überhaupt passiert, kannst du eine kleine Änderung in deiner ControlPoint.pm durchführen?
In Zeile 716 aus dem "carp" ein "croak" machen (das ist die unsubscribe-Prozedur, wo der Aufruf Schlussendlich fehlschlägt). Damit bricht der Thread tatsächlich bei diesem Fehler ab, und mit ein bißchen Glück steht dann im Log, wo es im Modul passiert ist...

Danke schon mal...

Grüße
Reiner

det.

Hallo Reiner,
Danke - gemacht - mal sehen was so passiert - ich melde mich
LG
det.

det.

Zitat von: Reinerlein am 30 August 2015, 13:02:37
Um mal einzugrenzen, an welcher Stelle das überhaupt passiert, kannst du eine kleine Änderung in deiner ControlPoint.pm durchführen?
In Zeile 716 aus dem "carp" ein "croak" machen (das ist die unsubscribe-Prozedur, wo der Aufruf Schlussendlich fehlschlägt). Damit bricht der Thread tatsächlich bei diesem Fehler ab, und mit ein bißchen Glück steht dann im Log, wo es im Modul passiert ist...
(in cleanup) Unsubscription request failed with error: 500 Can't connect to 192.168.2.70:1400 (No route to host) at FHEM/lib/UPnP/ControlPoint.pm line 1018 thread 1
genau die eine Zeile ist entstanden, hoffe das hilft oder soll ich den LOG level mal raufsetzen, wobei mir das schon als Fix reicht, eine Fehlermeldung nach Ausschalten der SONOS Player - also pro Tag ist besser als der ganze Block Müll im LOG wie vor der Änderung.
LG
det.

Reinerlein

Hi Detlef,

leider hat das Modul so keinen stabilen Zustand :)
Kannst du den Loglevel mal auf 5 stellen (am Sonos-Device)? Der kleine Zusatz "(in cleanup)" sagt mir leider noch nicht soviel...

Grüße
Reiner

Elektrolurch

Hallo Reinerlein,

komme leider mal wieder nicht weiter.
Was geht:
- Player gruppieren und ungruppieren
- Radio - Streams abspielen
- Text per speak - Befehl ausgeben.

Leider geht aber der startSearchlist - Befehl nicht. Das Radioprogramm stoopt, er scheint auch die Titel zu finden, dann kommt aber eine UPnP-Fehlermeldung, die ich nicht deuten kann:

2015.09.02 13:25:36 2: main::SonosCC_Player_not: LastActionResult: cmd LoadSearchlist res Retrieved all titles of category "Artists" with searchvalue "Beatles" and filter "10set/.*/.*" (#0). Startlist: Success!.
2015.09.02 13:25:38 2: main::SonosCC_Player_not: LastActionResult: cmd Play res Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2015.09.02 13:25:38 1: main::SonosCC_CC_not: name SonosCC rd currentAlbumArtURI val ./www/images/default/SONOSPLAYER/Sonos_G_stezimmer_AlbumArt.png
2015.09.02 13:25:38 1: main::SonosCC_CC_not: name SonosCC rd transportState val STOPPED
2015.09.02 13:25:38 1: main::SonosCC_CC_not: name SonosCC rd numberOfTracks val 0
2015.09.02 13:25:38 1: main::SonosCC_CC_not: name SonosCC rd currentTrack val 0

Sonos kann auf das freigegebene Laufwerk zugreifen. Die Titel wurden auch alle indiziert.
Was könnte das Problem sein?

Danke schon mal.

Elektrolurch
configDB und Windows befreite Zone!

Reinerlein

Hi Elektrolurch,

der UPnP-Fehler ist scheinbar eine Folge davon, dass er keine Titel finden konnte (die gefundene Anzahl Titel ist das hinter dem #-Symbol in den Klammern, hier also 0), und er dann versucht eine leere Abspielliste zu starten...

Er scheint keine Titel zu finden, die genau auf "10set" passen.
Meintest du da nicht eher ein Album, und dann vielleicht auch mit mehr Platzhaltern? Also z.B. "/10.Set/", oder wenn die Groß-/Kleinschreibung egal sein soll: "/(?i)10.set/"...

Grüße
Reinerlein

Elektrolurch

Ok. Ich glaube, ich verstehe die Syntaqx da falsch.

Ich dachte, die Titel- und anderen Filter wären optional.
Suchen wollte ich nach Artists Beatles und das Ergebnis auf 10 Titel einschränken.

In der Commandref sind die Filter mit [[.../.../]] angegeben, also doch optional....
Oder muss ich ich das dann so hinschreiben:

set Sonos_G_stezimmer LoadSearchlist Artists Beatles .*/.*/.*/ 10

By the way:
Wenn manh nach einem nicht vorhandenen Artist sucht, kommt die Liste der verfügbaren Artists zurück, sow wie es in fhem mit dem "set device ?" - Befehl ist. Ist das so gewollt und könnte man damit nicht auch ein Auswahlmenü befüllen?


Elektrolurch
configDB und Windows befreite Zone!

Reinerlein

Hi Elektrolurch,

ja, die Parameter sind optional, nur wenn du die Anzahl angeben willst, dann muss da was hin, sonst passt die Parameterstelle nicht mehr. Das kannst du dann aber auf einen Schrägstrich reduzieren, oder auf zwei Schrägstriche (aber nicht auf drei, das ist einer zuviel), oder auf ein ".*"... was auch immer dir am sprechendsten aussieht :)

Bei der Anzahl kann man schön mit einem Sternchen eine zufällige Auswahl einfügen lassen, sonst sind es immer die ersten 10 gefundenen (im Normalfall also immer die gleichen, es sei denn, es kommen neue Titel in die Bibliothek).

Das Phänomen, was du ansprichst ist eher eine Folge der Hilfestellung für den Anwender. Wie üblich wollte ich dort zurückgeben, was man alles angeben darf. Natürlich kann man das auch weiterverwenden :)
Ich habe aber nicht getestet, was bei sehr großen Listen so mit Fhem passiert :)

Für das Füllen von kompletten Listen ist eher das Feature "ExportSonosBibliothek" gedacht. Dort bekommt man dann alles in eine Datei geliefert, was Sonos so kennt... Im Wiki gibt es unter http://www.fhemwiki.de/wiki/SONOS#Die_Funktionalit.C3.A4t_.22ExportSonosBibliothek.22 eine Beschreibung dazu...

Grüße
Reinerlein

CQuadrat

Hallo Zusammen,

im Rahmen einer Anruferkennung würde ich gerne die folgenden beiden Befehle hintereinander ausführen:
set Sonos_Esszimmer Speak 40 de Ein Anruf von blabla
gefolgt von
set Sonos Mute on

Erst bei einem disconnect des Telefons wird dann wieder mit
set Sonos Mute off
die Sonos-Geräte laut geschaltet.

Leider wird der Mute-Befehl sofort ausgeführt, sodass schon während der Textausgabe auf lautlos geschaltet wird.

Ich meine, dass ich hier im Forum schon mal etwas gelesen habe , wie man Befehle hintereinandschreibt, sodass sie sequentiell nach erfolgter Durchführung abgearbeitet werden. Ich glaube das war sogar von Rudi persönlich eingestellt. Leider kann ich das trotz intensivster Bemühung der Suchfunktion nicht mehr finden. Dunkel meine ich mich aber zu erinnern, dass durch Doppelung von Semikolons zwischen den Befehlen das erreicht werden kann. Damit habe ich aber leider erfolglos herumexperimentiert.

Wenn ich mit

{fhem("set Sonos_Esszimmer Speak 40 de Ein Anruf von blabla;;;;set Sonos Mute on")}

versuche, liest er mir das hinter dem "blabla" auch vor  :(

Wer kann mir hier einen Tipp geben?


Danke und Gruß

Christoph
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

dev0

Wenn Du weiss wie lang die Ansage ist (X sek), dann kannst Du das mit dem fhem sleep machen:
set player Mute on; set player Speak 40 blabla; sleep X; set player Mute off;
Wenn Du nicht weiss oder abschätzen kannst wie lang die Ansage ist, dann könnte man das mit Hilfe von MP3::Tag ermitteln.

/Uli

Reinerlein

Hi Christoph,

das Problem ist, dass der Speak-Befehl so asynchron abläuft, dass Fhem während der Durchsage nix mehr von weiss, und alles normal weiterverarbeitet wird :)

Was du aber tun kannst, ist den Mute-Befehl *vorher* auszuführen. Der Speak-Befehl sichert/merkt sich den Mute-Zustand und stellt ihn nach der Durchsage wieder her. Hierbei hast du nur das Problem, wenn das Telefonat kürzer als die Durchsage ist, dass nach dem Unmute (wegen des Disconnects) dann der Wiederherstellungsteil nach der Durchsage wieder auf Mute schaltet...
Die Semikolon-Schreibweise ist eine normale Verkettung von Fhem-Befehlen, und erreicht dasselbe wie hintereinander ausführen der Befehle... Das Sonos-Modul merkt sich die Anweisungen sowieso nochmal selbst und schiebt sie der Reihe nach an die Player. Nur Speak (bzw. die Überwachung dazu) läuft dabei nochmal in einem eigenen Thread und damit nebenher zu allen anderen Anweisungen...

Grüße
Reiner

CQuadrat

Vielen Dank für die Infos.

Ich dachte mir schon fast, dass hier speak aus der Reihe tanzt.

Mit den Tipps hier werde ich aber sicherlich irgendetwas Brauchbares hinbekommen.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

micomat

#2022
Hi,
ich versuche grad nach WIKI meinen PLAY1 einzubinden.
Leider scheitere ich aber schon hieran:


root@fhempi:/opt/fhem/FHEM# apt-get install libxml-parser-lite-perl             Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libxml-parser-lite-perl


EDIT:
Habs via CPAN installiert.

Bekomme jetzt folgenden Fehler beim define:

2015.09.05 09:40:42 1: reload: Error:Modul 00_SONOS deactivated:
Attempt to reload UPnP/ControlPoint.pm aborted.
Compilation failed in require at ./FHEM/00_SONOS.pm line 165.
BEGIN failed--compilation aborted at ./FHEM/00_SONOS.pm line 165.

2015.09.05 09:40:42 0: Attempt to reload UPnP/ControlPoint.pm aborted.
Compilation failed in require at ./FHEM/00_SONOS.pm line 165.
BEGIN failed--compilation aborted at ./FHEM/00_SONOS.pm line 165.


Repository Update habe ich mehrfach durchgefuehrt :-(

Gruß,
Markus
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

dev0

Alle anderen Abhängigkeiten hast Du auch installiert?

LWP::Simple
LWP::UserAgent
SOAP::Lite
HTTP::Request



micomat

ja und nach einem gesunden Neustart geht auch nun alles :)
Danke
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200