Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Andre,

habe gerade noch eine neue Version eingecheckt, die folgende Änderungen beinhaltet:

  • Der Getter "EthernetPortStatus" hat jetzt auch die Portnummern 2 und 3 zur Auswahl.
  • Es gibt ein neues Reading "OutputFixed" sowie ein zugehöriger Setter zum Setzen des Wertes.
Außerdem ist das Wiki wegen der Schrittweite aktualisiert...

Wie immer: jetzt im SVN oder Morgen im Update...

Grüße
Reinerlein

justme1968

wow. das war schnell. klasse. danke.

du weisst ja wie das mit den fingern und dem arm ist... :) gleich noch ein wunsch und zwei vorschläge:

- du erinnerst dich ja an die komischen pfade auf meiner synology. ich wollte eigentlich den perl lib path direkt im fhem start script anpassen so das die module in lib gefunden werden. aus irgendwelchen gründen funktioniert das aber nicht und fhem beendet sich ohne fehlermeldung sofort wenn ich das mache. d.h. ich muss nach jedem update daran denken '/usr/local/FHEM/share/fhem/FHEM/lib' an den use lib in zeile 376 mit einzubauen. sonst wird das sonos modul nicht geladen. könntest du das vielleicht so mit einchecken ?

- durch das nicht laden sind mir irgendwie die attribute eines der sonos player durcheinander gekommen. wie wäre es wenn man diese per kommando auf die werte die beim autocreate erzeugt werden zurück setzen kann ?

- wenn das SONOS modul nicht geladen wird führt das dazu das im SONOSPLAYER modul threads->tid() nicht verfügbar ist und fhem sich direkt wieder beendet weil das use threads nur in SONOS und nicht in SONOSPLAYER enthalten ist.

statt ein use thread einzubauen würde ich aber vorschlagen ein require "$attr{global}{modpath}/FHEM/00_SONOS.pm einzubauen. das würde gleich mit abfangen das die funktionen aus 00_SONOS die in 21_SONOSPLAYER verwendet werde nicht da sind und fhem dann deshalb aussteigt.

das player modul ist ja ohne das sonos modul nicht wirklich sinnvoll und so würde fhem beide nicht laden und wenigstens starten wenn es irgendwelche probleme beim laden von sonos gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinerlein

Hi Andre,

kurze Rückmeldung:
- Das mit der require-Anweisung habe ich drin
- Das mit deinem Synology-Pfad auch
- Zu dem Attributresetten: Da bin ich mir noch nicht sicher, wie ich das so schreiben kann, damit es für mich keine Codeverdoppelung ist. Das muss schließlich auf verschiedenen "Ebenen" passieren. Die ursprüngliche Erzeugung (bzw. die Aufforderung dazu, und damit auch der genaue Umfang) liegt im SubProzess, ein ResetAttributesToDefault würde allein innerhalb Fhem liegen (bzw. nur über unsinnige Umwege im SubProzess :) ).
Bisher nutzbare Alternative: Im Devicedetail unten auf "Delete this Device" klicken. Damit werden alle automatisch angelegten, zusätzlichen, Devices mit weggelöscht. Wenn du dann das "disable"-Attribut am Sonos-Device einmal kurz aktivierst, und wieder löschst, ist dein Device wieder da. Unter Umständen hat es halt einen anderen Namen (falls du diesen mal geändert haben solltest), den kann man ja aber auch schnell wieder anpassen...

Aber ich denke da mal drauf rum... die anderen Änderungen bringe ich dann zusammen mit den nächsten Bugfixes rüber... da kommen bestimmt welche zum neuen Feature :)

Grüße
Reiner

justme1968

danke!

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

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

JoeALLb

Wow,  cool,  was hier alles entwickelt wird.
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

mannitb303

Hallo,

ich bin echt am verzweifeln. Habe FHEM auf einem Raspberry PI B+ frisch installiert, habe laut der Anleitung im WIKI die Module welche für Sonos nötig sind installiert. Sonos Modul wird geladen, aber immer als Disconnected angezeigt.  Ich verbinde mich mit meinem RPI per Putty von meinem Windows Rechner. Wenn ich nun FHEM starte sehe ich in der Ausgabe 00_SONOS.pm is listening to Port 4711 im Log-File steht Can't connect to 192.168.178.20:4711: Connection refused. Sind die Ports immer gleich bzw. was macht der Port 4711 genau habe bei Sonos nichts darüber gefunden, habe eine PLAY5.
Muss noch dazu sagen das beim Update-Befehl bei unterschiedlichen Dateien immer ein INET Timeout kommt. Allerdings hat er das SONOS sowie das SONOSPLAYER Modul geladen.

Gruß

Stefan 

Reinerlein

Hi Stefan,

der Port 4711 ist willkürlich gewählt, und du kannst auch einen anderen nehmen. Er muss nur auf deinem Pi frei sein. Er ist nur für die Kommunikation zwischen den beiden Prozessen des Sonos-Moduls zuständig, und hat nichts mit deinen Zoneplayern zu tun...

Hast du in deinem Sonos-Device in Fhem als Netzwerkverbindung "localhost:4711" stehen? Beim Verbindungsversuch steht was von einer IP-Adresse. Nicht das diese falsch ist, bzw. der Server an eine andere Schnittstelle gebunden wurde (ich weiss jetzt nicht, ob dein Pi überhaupt mehrere Netzwerkschnittstellen hat).
Ich vermute mal, dass du dort die IP-Adresse deines Zoneplayers eingetragen hast, oder?

Ansonsten müsstest du mal mehr von deiner config posten, und die genauen Log-Ausgaben... dann können wir das Problem sicherlich eingrenzen...

Grüße
Reinerlein

der-Lolo

Guten Morgen Reinerlein,
seit meinem update gestern ist der wurm in meinem Log drin...
trotz Global verbose 2 werden level 3 nachrichten ausgegeben, das hat vermutlich nichts mit dem Sonos Modul zu tun...
Was mir jetzt aber auffällt ist das alle 30sek ein connect stattfindet den ich mir nicht erklären kann...

Zitat2015.02.08 10:03:50 3: SONOS0: Connection accepted from localhost:49055
2015.02.08 10:03:20 3: SONOS0: Connection accepted from localhost:49033
2015.02.08 10:02:50 3: SONOS0: Connection accepted from localhost:49022
2015.02.08 10:02:28 0: SONOS1: Setting LogLevel to new value: 2
2015.02.08 10:02:20 3: SONOS0: Connection accepted from localhost:49000

ein setzen des Sonos Devices auf verbose 2 bringt auch keine Änderung.
beachte bitte ich nutze reverseLog

Hast Du eine Idee was da los ist?

Reinerlein

Hallo der-Lolo,

Diese Verbindungen stellen die IsAlive-Überprüfung des SubProzesses durch den Fhem-Part des Moduls dar.
Wenn das mal nicht klappt, dann versucht der Fhem-Part den SubProzess neuzustarten...
Die sind also normal.

Beachte bitte, dass das Setzen des Verbose-Levels erst nach einem Neustart des SubProzess wirkt. Wenn du das also zur Laufzeit setzt und es wirken soll, dann musst du einmal kurz das Attribut "disable" am Sonos-Devices aktivieren, etwas warten und wieder löschen...

Grüße
Reinerlein

mannitb303

Hallo Reinerlein,

danke für die Antwort. Bin gerade dabei meinen RPi nochmals komplett neu aufzusetzen, mit der neuesten Wheezy.
Im Sonos Device habe ich die IP von meiner Play5 stehen, da ich in der Fritzbox immer die gleiche IP vergeben lasse. Mein RPi hat nur einen LAN-Anschluss und auch nur ein Device eth0:.
Sollte ich Localhost oder die IP im Sonos Device eintragen bzw. wenn ich die IP eintrage muss ich auf dem RPi Ports freigeben, wenn ja wie? Ich sehe mit nmap welche Ports auf meinem RPi freigegeben sind, wenn der 4711 (bsp.) nicht auftaucht muss ich ihn freigeben, die Komunikation ist doch nur intern (Sorry bin etwas genervt, habe auch noch eine IPV6 mit DS-Lite Problem)?

Werde es wie hier im Thread auf Seite 68 von miadam009 nochmals probieren.

Vorerst mal Danke

Gruß

Stefan


Reinerlein

Hi Stefan,

noch kurz zum Klarstellen:
Du brauchst nie irgendwo eine IP-Adresse eines Zoneplayers eingeben. Beim Definieren des Sonos-Devices solltest du *genau* das folgende eingeben:

define Sonos SONOS localhost:4711 30
Alles andere ist für Leute, die bestimmte Probleme haben, oder sich anderweitig damit auskennen :)

Es gibt dann später noch diverse Attribute, die du für bestimmte Funktionalitäten benötigst... aber eins nach dem anderen...

Grüße
Reinerlein

mannitb303

#1571
So...... nachdem ich jetzt zum 3. mal den RPi neu aufgesetzt habe, geht es immer noch nicht. Jetzt kommt configfile: Cannot load module SONOS.
Habe ein Update gemacht, im log steht (nur ein Auszug):
2015.02.08 12:34:29 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_HXB.pm
2015.02.08 12:34:29 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_KM271.pm
2015.02.08 12:34:29 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_LIRC.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_MAXLAN.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_MQTT.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_MYSENSORS.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_NetzerI2C.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_OWX.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_OWX_ASYNC.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_RPII2C.pm
2015.02.08 12:34:30 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_SONOS.pm
2015.02.08 12:34:31 3: update get http://fhem.de/fhemupdate4/svn/FHEM/00_TCM.pm



Gebe ich bei fhem erneut 'update' ein kommt:

Events (global only):
2015-02-08 13:24:45 Global global Got remote controlfile with 1457 entries.
2015-02-08 13:24:45 Global global Got local controlfile with 1457 entries.
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_multiple.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_noArg.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_slider.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_svg.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_textField.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/fhemweb_time.js ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/darktouchpadsvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/darktouchpadsvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios6touchpadsvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios6touchpadsvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios7touchpadsvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios7touchpadsvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/iostouchpadsvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/iostouchpadsvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/darksmallscreensvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/darksmallscreensvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios7smallscreensvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/ios7smallscreensvg_style.css ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/iossmallscreensvg_defs.svg ./unused
2015-02-08 13:24:46 Global global mv ./www/pgm2/iossmallscreensvg_style.css ./unused
2015-02-08 13:24:46 Global global nothing to do...


Bei update check kommt:

Got remote controlfile with 1457 entries.
Got local controlfile with 1457 entries.
nothing to do...


Sorry für den vielen Text, aber ich flipp bald aus. Gestern hat es das Modul noch geladen, da kam nur der Can't connect to 192.168.178.20:4711: Connection refused Fehler, jetzt läd er das Modul wieder nicht. Habe den RPi neu aufgesetzt nach http://www.meintechblog.de/2013/05/fhem-server-auf-dem-raspberry-pi-in-einer-stunde-einrichten/ und Sonos nach der Anleitung von maidam009 im Thread auf Seite 68. 
Habe diesmal allerdings das neueste Raspian Wheezy vom 31.01.2015 von der Raspberrypi Homepage genommen.

Nochmals Sorry falls irgendwas falsch gepostet sein sollte.

Gruß

Stefan

mannitb303

Hallo Reinerlein,

mist Antwort überschnitten.  ;D
Ok, habe jetzt auch localhost eingetragen, bringt aber nix weil das Modul gar nicht geladen wird (siehe vorheriges neues Problem).

Gruß

Stefan


mannitb303

Hallo,

hat sich erledigt, Fehler behoben.
Soap Lite war nicht richtig installiert.
Habe im Log
Can't locate Class/Inspector.pm in @INC (@INC contains: fhem.p/lib fhem.p/FHEM/lib ./FHEM/lib ./lib ./FHEM ./ /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.14.2/SOAP/Lite.pm line 435.
übersehen. ::)

@ reinerlein: Habe localhost:4711 im Device eingetragen. Sonosplayer wird angelegt und ist steuerbar.

Danke. ;D

Reinerlein

Hi Stefan,

ok, ich habe mir gerade den Post von damals mal durchgelesen.
Das ist sehr alt! :)

Im Wiki steht eigentlich alles, was du wirklich machen musst:
- Voraussetzung: Laufendes Fhem (zunächst ohne Sonos-Modul)
- Dann die beiden notwendigen Perl-Pakete mittels Debian-Packagemanager installieren. Das ist unter http://www.fhemwiki.de/wiki/SONOS#Hinweis_f.C3.BCr_Debian-Systeme beschrieben. In deinem Fall also
sudo apt-get install libwww-perl
sudo apt-get install libsoap-lite-perl

- Fhem (immer noch ohne Sonos-Modul) neustarten und auf eventuelle Fehler im Log entsprechend reagieren. Das muss erstmal ohne Sonos-Modul sauber laufen...
- In der Eingabezeile von Fhem "define Sonos SONOS localhost:4711 30" eingeben.
Nun sollte das erstmal laufen, und deinen Player automatisch erkennen und anlegen...

Anschließend noch ein "save config" durchführen, und alles steht in deiner fhem.cfg und damit auch nach einem Fhem-Neustart zur Verfügung...

Grüße
Reinerlein