Sonos steuern

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

Vorheriges Thema - Nächstes Thema

aherby

kleiner Nachtrag, wird auch bei folgenden Befehl ausgelöst der Absturz
aber noch ohne das Update.

define Radio.FFH notify BT3_Planet_FFH.Long.1-.* set Sonos_Wechselraum Volume 13 ;; set Sonos_Wechselraum PlayURI http://streams.ffh.de/radioffh/aac/hqlivestream.m3u ;; set Sonos_Wechselraum Play
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

Reinerlein

Hi Alex,

das ist dann wieder der Befehl PlayURI, der das Problem macht.
Ich empfehle aber, die drei Anweisungen auf den PlayURI-Befehl zurückzudrehen. Das wird dann wesentlich schneller ausgeführt.

PlayURI kann ja die Lautstärke setzen, und startet sowieso die Wiedergabe. Vielleicht solltest du dir deine wichtigsten Radiotitel auch bei Sonos in die Radiofavoriten packen, und dann ein "StartRadio" absetzen. Dort musst du dann zwar einen zweiten Befehl für die Lautstärke absetzen, hast dafür aber alle Titelinformationen und Cover im Controller vorliegen... falls das wichtig sein sollte...

Und zumindest FFH gibt es doch bestimmt bei TuneIn, oder?

Grüße
Reinerlein

rapster

Hallo Reinerlein,

irgendwie habe ich seit heute das Problem eines fehlenden Covers, siehe angehängtes Bild (evtl. erst heute bemerkt, vor paar Tagen ging das aber noch.)

Firefox Ausgabe für "Rechtsklick => Grafik anzeigen":
ZitatAnfrage für Nicht-Sonos-Player: /proxy/aa?url=https%3A%2F%2Fd2b1xqaw2ss8na.cloudfront.net%2Fstatic%2Fimg%2FdefaultoriginalL.png

Gruß Claudiu

Reinerlein

Hi Claudiu,

ich habe da eine Vermutung, die ich aber erst heute Abend zuhause probieren kann. Ich hatte für die Coverermittlung noch etwas für die Darstellung der Cover bei der Gerätewiedergabe eingebaut.

Diese Sicherheitsabfrage trifft nun anscheinend auch die Spotify-Cover, schließt diese damit aus und verursacht diese Sicherheitsmeldung...

Grüße
Reinerlein

aherby

Hallo Reinerlein,

auf den ersten Blick und test funktioniert das Abspielen der Musik wieder und bisher stürzt der FHEM auch nicht mehr ab.
teste es weiter und würde mich melden wenn noch ein Fehler auftaucht.

Kannst du mir aber bitte noch erklären warum bei meinem Wohnzimmer unten zwei
Button-Leisten sind?


Danke
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

aherby

Nachtrag,

sorry für das doppelte Foto.

was meinst du bitte genau mit :
"Hi Alex,

das ist dann wieder der Befehl PlayURI, der das Problem macht.
Ich empfehle aber, die drei Anweisungen auf den PlayURI-Befehl zurückzudrehen. Das wird dann wesentlich schneller ausgeführt.

PlayURI kann ja die Lautstärke setzen, und startet sowieso die Wiedergabe. Vielleicht solltest du dir deine wichtigsten Radiotitel auch bei Sonos in die Radiofavoriten packen, und dann ein "StartRadio" absetzen. Dort musst du dann zwar einen zweiten Befehl für die Lautstärke absetzen, hast dafür aber alle Titelinformationen und Cover im Controller vorliegen... falls das wichtig sein sollte...

Und zumindest FFH gibt es doch bestimmt bei TuneIn, oder?

Grüße
Reinerlein

,,

genzugenommen der Satz: "Ich empfehle aber, die drei Anweisungen auf den PlayURI-Befehl zurückzudrehen. Das wird dann wesentlich schneller ausgeführt."

Ja FFH nutzt TuneIn, leider nur für den Bereich Frankfurt - für Nordhessen gibt es kein eigenes.
Habe die Sender auch in Songs-Favoriten aber noch nicht in den Radio-Favoriten.
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

Reinerlein

Hi Alex,

erstmal zu den Screenshots: Das schaue ich mir an, da wurde wohl für eine weitere Sonos-Komponente deines Wohnzimmers (sind ja einige :) ) eine Steuerung und Anzeige erzeugt.
auch die Alias-Namen sind noch nicht Aussagekräftig genug, finde ich... das passe ich noch an...

Zu meiner Anmerkung:
Ich meinte, dass die drei Anweisungen (Lautstärke, URI-Abspielen und Start der Wiedergabe) auch direkt vom Befehl "PlayURI" durchgeführt werden. Dem kannst du ja eine Lautstärke mitgeben, und Starten der Wiedergabe macht er auch gleich mit.
Die Hauptzeit, die beim Ausführen eines Befehl von der Fhem-Oberfläche aus verloren geht, wird in Fhem und der Kommunikation zum SubProzess verbraucht. Alles, was ich dort (im SubProzess) in einer Reihe ausführe landet demnach viel schneller beim Player...

Wenn du das als Sonos-Favoriten hast, kannst du den Befehl "StartFavourite" (zusammen mit einem Lautstärkesetzen) verwenden. Dann solltest du auch wieder die gewohnten Informationen angezeigt bekommen...

Grüße
Reinerlein

Reinerlein

Hi Alex,

noch eine Frage:
Kannst du mir zu allen Wohnzimmer-Playern mal das Reading "fieldType" und den jeweiligen Devicenamen mitteilen?

Danke schon mal...

Grüße
Reinerlein

justme1968

hallo reinerlein,

ich versuche mich auch gerade das erste mal an sonos und deinem modul.

leider bekomme ich beim define die meldung das das sonor modul nicht geladen werden kann weil das UPnP und das MP3 modul nicht geladen bzw. gefunden werden.

wenn ich mir deinen code anschaue wird $gPath zwar richtig bestimmt, das 'use lib ...' danach hat aber überhaupt keine auswirkungen. wenn ich mir davor und danach @INC ausgeben lasse ist es identisch. wenn ich in das use lib den korrekten pfad von hand $gPath zu verwenden eintrage funktioniert es.


hast du irgendeine idee woran das liegen könnte?

das ganze passiert mit ActivePerl-5.20 auf einer intel synology diskstation.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinerlein

Hi Andre,

hmm.. ich glaube du bist wahrscheinlich der erste, der das jetzt auf einer Diskstation ausprobiert.

Das mit dem $gPath (bzw. der Code da in der Nähe) ist ziemlich experimentell entstanden, da es ja für die beiden Startvarianten (als Fhem-Bestandteil und als Standalone-SubProzess) die Pfade korrekt ermitteln soll.

Vorab einige Fragen, da ich damit noch nichts zu tun hatte:
- Die normalen Fhem-Pfade passen? Also, alle Module in "FHEM" und darunter dann der "lib"-Ordner, in dem auch die UPnP- und MP3-Ordner angelegt und befüllt wurden?
- Man darf Prozesse neu erzeugen? Der SubProzess wird von Fhem aus mittels eines fork und Exec-Aufrufs gestartet. Landet dabei irgendeine Ausgabe in der Konsole? Standardmäßig landet das nicht im Fhem-Log.
- Gibt es irgendeine Firewall auf der Kiste, die das Belegen eines Ports (vermutlich 4711) verhindern könnte?
Falls der Port vielleicht belegt ist, wähle mal einen anderen; er ist beliebig und muss nur frei sein...

Hat vielleicht schon mal jemand das ganze auf einer Synology zum Laufen gebracht?

Grüße
Reinerlein

justme1968

das system ist aus fhem sicht ein mehr oder weniger 'normales' linux system. die active perl version die ich jetzt verwende ist ein ganz normaler installer für intel basierte linux systeme. die ipkg perl verision die ich vorher verwendet habe kann keine threads. die synology eigene auch nicht (und ist noch in anderer hinsicht unvollständig).

die normalen fhem pfade passen in so fern als das $attr{global}{modpath}/FHEM/lib alle module enthält. die UPnP und MP3 ordner sind auch vorhanden.

fhem.pl steht wo ganz anders. aber das ist erst weiter unten ein problem.

wie gesagt: der $gPath der über  $gPath = $attr{global}{modpath}.'/FHEM'; gefunden wird passt. nur die use lib ($gPath.'/lib', $gPath.'/FHEM/lib', './FHEM/lib', './lib', './FHEM', './', zeile bewirkt nichts. wenn ich davor und danach @INC ausgebe hat sich nichts geändert das $gPath verwendet. nur wenn ich in der liste strings ohne variablen verwende (in meinem fall /usr/local/FHEM/share/fhem/FHEM/lib) geht es. ich baue dem pfad in mein fhem start script ein und dann sollte es gehen.


aber es gib noch eine zweite stelle die nicht gepasst hat. für den start des UPnP servers musste ich noch folgendes ändern:

- nicht direkt perl starten sondern mit $^X denjenigen perl interpreter der auch fhem gestartet hat.
  -> ich habe auf dem system mehrere perl versionen und die version die für fhem konfiguriert ist ist (noch) nicht die im standard pfad.

- den pfad zum 00_SONOS modul nicht von $0 ableiten sondern von $attr{global}{modpath} wie alle anderen pfade die nach FHEM/lib zeigen sollen

die komplette zeile schaut dann so aus:exec("$^X $attr{global}{modpath}/FHEM/00_SONOS.pm $port $verboselevel ".(($attr{global}{mseclog}) ? '1' : '0'));

damit geht das starten.

mehr morgen. dann sollte der play:1 in der post sein :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinerlein

Hi Andre,

danke für die Unterstützung.

Ich habe die Startzeile so übernommen.
Das mit dem @INC kam, glaube ich, für den Start des SubProzesses selbst. Als Perl-Fhem-Modul brauchte man nur die Konstanten Angaben './lib' bzw. './FHEM/lib'...

Grüße
Reinerlein

d00773

Hallo Reiner
hallo FHEMler

bei mir discovert er seit irgend einem Update ende Dezember keine Player mehr.... ;-(

ich habe heute alle Sonos-Referenzen aus der cfg rausgeworfen, und ein "update force" / init 6 gemacht und ein define Sonos SONOS localhost:4711 30 und nix kommt....

Bedienen liessen sich die Player auch nicht mehr, daher die Radikalkur

Dann habe ich noch auf deine aktuelle dev Version  ($Id: 00_SONOS.pm 7379 2014-12-31 13:35:22Z rleins $) updatet, aber selbiges verhalten....

System lief bis vor Kurzem tip-top.

HW ist ein RasberryPi.


Logauszug....:
2015.01.09 21:59:53 3: Probing CUL device /dev/ttyAMA0
2015.01.09 21:59:53 3: Can't open /dev/ttyAMA0: Keine Berechtigung
2015.01.09 21:59:53 1: usb create end
2015.01.09 21:59:53 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2015.01.09 21:59:53 0: Server started with 137 defined entities (version $Id: fhem.pl 7358 2014-12-29 16:03:31Z rudolfkoenig $, os linux, user fhem, pid 2381)
2015.01.09 21:59:54 3: Device CUL_HM_HM_TC_IT_WM_W_EU_31CF77 added to ActionDetector with 000:10 time
2015.01.09 21:59:54 3: Device Fenster_Schlafzimmer added to ActionDetector with 000:50 time
2015.01.09 21:59:54 3: Device Wetterstation_Terrasse added to ActionDetector with 000:10 time
2015.01.09 21:59:57 3: Opening Sonos device localhost:4711
2015.01.09 21:59:57 3: Can't connect to localhost:4711: Verbindungsaufbau abgelehnt
2015.01.09 22:01:00 1: SONOS0: Connection accepted from localhost.localdomain:60822
2015.01.09 22:01:00 1: localhost:4711 reappeared (Sonos)
2015.01.09 22:01:01 3: SONOS1: UPnP-Thread gestartet.
2015.01.09 22:01:02 1: SONOS2: Restore-Thread gestartet. Warte auf Arbeit...
2015.01.09 22:02:03 1: SONOS0: Connection accepted from localhost.localdomain:60824
2015.01.09 22:02:33 1: SONOS0: Connection accepted from localhost.localdomain:60825
2015.01.09 22:03:06 1: SONOS0: Connection accepted from localhost.localdomain:60827
2015.01.09 22:03:36 1: SONOS0: Connection accepted from localhost.localdomain:60828
2015.01.09 22:04:09 1: SONOS0: Connection accepted from localhost.localdomain:60830

Kann ich das Discovern der Player irgend wie Anstossen?

Danke, Gruss & gute Nacht

Micha




Reinerlein

Hi Micha,

hmm... das sieht sehr wenig aus. Dabei scheint es so, als würde der SubProzess ja starten (das wichtigste ist dort die Ausgabe "UPnP-Thread gestartet").

Dieser Thread ist derjenige, der die eigentlich Arbeit und Kommunikation zu den Playern übernimmt... Das kann man auch nicht weiter anstossen. Das erste, was dieser Thread ins Netz sendet, ist eine Aufforderung an alle Player, sich zu melden.... Das tun die dann eigentlich auch...

Befindet sich der Pi denn auch noch im selben Subnet wie deine Sonos-Player? UPnP kann nicht über einen Router arbeiten...
Ansonsten stell mal das Verbose-Attribut des Sonos-Devices auf 5. Dann sieht man noch mehr Ausgaben...

Und die aktuellste Version ist die im Fhem Subversion (also das, was per Update einen Tag später kommt). Meinen Dev-Server aktualisiere ich nur noch in Einzelfällen zum Testen...

Grüße
Reinerlein

d00773

Hallo Reinerlein

Danke, Deine Gedanken haben mich auf die richtige Spur gebracht.
Tata, ich habe den Uebeltaeter erwischt...
Es ist ein billiger Nway Switch von Conrad der bis ebend zwischen dem RasPi und dem Sonos hing.
Nachdem der raus ist, ging Alles ganz wunderbar.
Deine Arbeit hat sich wirklich gelohnt. Vielen Dank dafuer an dieser Stelle.

Gruesse
Micha