Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

gibacht

Hallo,

ich lese die ganze Zeit mit... Die Alarme habe ich jedoch nicht im Einsatz und kann auch leider nichts beisteuern.
Aktuell beschäftige ich damit, die synced und syncvolume in das Readingsgroup zu bekommen. Dafür hatte ich entsprechende Userreadings definiert. Die Comamnds habe ich auch drin und des funktioniert soweit. Einziges Problem sind die ständigen "Connection lost"-Meldungen, die ích nur in der RG-Ansicht bekomme. (Mit longpoll scheint das nichts zu tun zu haben).
Habt ihr das auch?

Grüße
Dirk
HMLAN, TVserver Headless YAVDR mit LMS und FHEM, Rasperry PI Openelec als Clients.

wmr72

Hallo,

ich hab um das Problem einzugrenzen aus der ReadingsGroup alle Attribute rausgeworfen, also auch keine Commands mehr. Trotzdem wird sie nicht upgedated. Das geänderte Reading auf der Detailseite wird wie gesagt auch erst bei Reload sichtbar, und zwar unabhängig von wo ein "set sb_player alarm1 off/on" kommt, das hat bei mir nichts damit zu tun, dass das set auf der Detailseite abgesetzt wird. Das Phänomen hab ich auch, wenn ich es in einem anderen Browsertab oder per telnet absetze. Longpoll funktioniert prinzipiell schon, bei anderen Devices klappt das.

VG,
WMR

ChrisD

Hallo,

Kannst du schauen wie das Attribut 'donotnotify' bei dem Player steht ?

Grüße,

ChrisD

wmr72

Hi,

das Attribut stand auf true, keine Ahnung wie das da hin kam, ich kann mich zumindest nicht erinnern das bewusst gesetzt zu haben. Umstellen auf false jedenfalls behebt das Problem. Nächster Schritt wird jetzt die Commands wieder dranzuhängen.
Danke für die Hilfe!

Grüße,
WMR

Markus M.

+1 für updateReadingsOnSet ;)
Bekommen wir an irgendeiner Stelle im Server-Modul eigentlich eine Rückmeldung beim Setzen der Werte?
Falls ja, könnte man die evtl. hernehmen?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

ChrisD

Hallo,

@Markus M.: Ich versuche es umzusetzen, einen Teil hast du ja bereits geschrieben. Der Server liefert auf jeden Befehl eine Antwort, diese wird im Moment verwendet um die Readings zu aktualisieren. Dies muss auch weiterhin gemacht werden, da die Steuerung des Servers und der Player auch von extern erfolgen kann. Das führt aber dazu dass die Aktualisierung der Werte im Frontend nicht immer korrekt erfolgt wie im vorigen Beitrag beschrieben.

@wmr72: Das Attribut wird automatisch gesetzt wenn der Player definiert wird. Ich kenne nicht den Grund wieso dies gemacht wurde. Wenn das Attribut gelöscht wird, wird übrigens 'true' als Defaultwert genommen (also keine Events). Aus Kompatibilitätsgründen möchte ich dies aber nicht ändern.

@Dirk: Wann treten die "Connection lost"-Meldungen auf, bei Änderungen (Update Readings), Befehlen oder auch wenn nichts passiert ?
Verwendest du bereits die aktuelle FHEM-Version (mit dem fhemweb.js Umbau) ?
Gibt es Meldungen im FHEM-Logfile ?
Kannst du apptime verwenden um zu sehen ob eine Funktion FHEM länger blockiert ?

Grüße,

ChrisD

gibacht

Hallo,

fhemweb.js habe ich nicht im Einsatz.
Habe den Fehler bzw. die Ursache für die Connection Lost gefunden.
Es lag an den Userreadings, die ich erstellt hatte um die Internalvals aktualiert anzeigen zu können.
(Bitte um Nachsicht, der ein oder andere wird dabei bestimmt schmunzeln).
Habe mir jetzt ein paar dummys gebastelt und die ins RG aufgenommen.... Funktioniert!

Grüße Dirk
HMLAN, TVserver Headless YAVDR mit LMS und FHEM, Rasperry PI Openelec als Clients.

chris1284

#517
hab das modul heute entdeckt und habe bereits eine pi als player und einen LMS auf meinem NAS laufen.
geladen von https://codeload.github.com/mhop/fhem-mirror/zip/master , version hat das modul leider nicht um zu schauen ob es das aktuellste ist.
das modul will keine saubere verbindung zum LMS aufbauen:
ZitatLogitech Media Server Version: 7.7.1 - r33735 @ Mon Nov 28 16:49:58 MST 2011
Hostname: NAS
IP-Adresse des Servers: 192.168.2.2
Server-HTTP-Portnummer: 9000
Anzahl erkannter Player: 1

meine def des sb_servers
define LMS SB_SERVER 192.168.2.2:9000
attr LMS DbLogExclude .*
attr LMS alivetimer 120
attr LMS doalivecheck true
attr LMS httpport 9000
attr LMS maxcmdstack 200
attr LMS maxfavorites 30
attr LMS room 98_Multimedia
attr LMS verbose 5


nach reboot gibts diese Meldung
Zitatconfigfile: LMS: unknown attribute httpport. Type 'attr LMS ?' for a detailed list.
httpport hat jedoch das modul angelegt.... wo ist der fehler?
der status ist opened, LASTANSWER <h1>400 Bad Request</h1>
log
Zitat2015.01.18 14:03:19 3: Opening LMS device 192.168.2.2:9000
2015.01.18 14:03:19 3: LMS device opened
des weiteren, was ist hier der hintergrund?
Zitat
2015.01.18 14:05:55 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ku_sen_th
2015.01.18 14:05:58 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:az_light_ledschlauch
2015.01.18 14:05:58 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:az_light_ledschlauch
2015.01.18 14:06:02 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:KS300
2015.01.18 14:06:04 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_sen_th
2015.01.18 14:06:05 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_sen_th
2015.01.18 14:06:06 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_sen_th
2015.01.18 14:06:19 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ChristinsiPhone
2015.01.18 14:06:22 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ku_hz
2015.01.18 14:06:23 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ku_hz_Clima
2015.01.18 14:06:23 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ku_hz_Weather
2015.01.18 14:06:23 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_hz
2015.01.18 14:06:24 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_hz_Clima
2015.01.18 14:06:24 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:bz_hz_Weather
2015.01.18 14:06:30 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:ku_sen_th
2015.01.18 14:06:32 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:az_hz
2015.01.18 14:06:32 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:az_hz_Clima
2015.01.18 14:06:33 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:az_hz_Weather
2015.01.18 14:06:34 4: SB_SERVER_Notify(LMS): calledOwn:LMS Device:SysMon

ChrisD

Hallo,

Die Version die du heruntergeladen hast ist die letzte offizielle Version. Ich habe diese in der Zwischenzeit mit Hilfe von Markus M. erweitert und leicht korrigiert. Meine aktuelle Version findest du unter https://github.com/ChrisD70/FHEM-Modules.

Kannst du bitte diese Version ausprobieren. Ziel ist es einen stabilen Stand zu erreichen und diesen wieder in https://github.com/mhop/fhem-mirror zu integrieren.

Die Meldungen bezüglich httpport und dem notify sind darin behoben.

Die Meldung
ZitatLASTANSWER <h1>400 Bad Request</h1>
deutet darauf hin dass du eine Verbindung zum Web-Port aufbaust und nicht zum CLI-Port. Versuche die Definition des Servers von
define LMS SB_SERVER 192.168.2.2:9000indefine LMS SB_SERVER 192.168.2.2:9090zu ändern. Für die Kommunikation wird das CLI verwendet, der httpport wird im Moment nur für die Coverbilder benötigt.

Grüße,

ChrisD

chris1284

sauber. das problem lag aber noch ganz wo anderst. auf einem NSA325V2 läuft cli nicht auf 9090 sondenr kaum dokumentierten port 9595 ...
mit dem port geht es sofort, player kann gesteuert werden und die server-stati (version zb ) passen

gibacht

Hi,

ich habe noch einen Logeintrag gefunden...
PERL WARNING: Argument "?" isn't numeric in numeric eq (==) at ./FHEM/98_SB_PLAYER.pm line 2331.

Das scheint ja nur bei mir aufzutreten... Eine Idee?
Oder soll ich es einfach ändern, so wie es vorgeschlagen wird?

Danke!

Gruß
Dirk
HMLAN, TVserver Headless YAVDR mit LMS und FHEM, Rasperry PI Openelec als Clients.

ChrisD

Hallo,

Die Warnung kann bei jedem auftreten, ich habe den Code geändert. Auf https://github.com/ChrisD70/FHEM-Modules befindet sich eine neue Version (0017) mit folgenden Änderungen:

- alarmsEnabled verwendet überall on/off
- shuffle song und album hinzugefügt
- Attribut updateReadingsOnSet hinzugefügt, wenn auf true werden die Readings bereits beim 'set' (mit einigen Ausnahmen) aktualisiert (experimentell, bitte testen)
- Zeichencodierung geändert für die playlist Befehle, bitte testen !
- Fehlermeldung bei ISREMOTESTREAM behoben
- Dokumentation vervollständigt (ist aber noch immer nicht komplett)

Grüße,

ChrisD

chris1284

das player-modul funktioniert übrigens auch super mit https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer auf meinem wand-tablet. der player läuft stumpf immer im hintergrund

chris1284

ich habe nun 3 player und mir fehlt zum mediaserver noch eine playerfunktion. und zwar beim sync kann ich aktuell in fhem nur sync mit player x oder player y auf einmal wählen.
ich würde mir ein
set player01 sync [alle anderen player] wünschen. sprich mit einem klick synce ich player 2 und 3 mit 1 oder 1,2 mit 3 usw

siggi85

Zitat von: marvin78 am 26 Juni 2014, 15:23:14
Das geht. Zuerst einen Player mit einem anderen Verbinden:


set SB cliraw sync SB2

Und dann einen weiteren Player zur Gruppe hinzufügen

set SB cliraw sync SB3

usw.

Ich habe mir dafür eine Funktion in der myUtils hinterlegt:


sub squeezeSync($$;$) {
  my ($slaves,$art,$master)=@_;
  my @dvs=();
  my $dev="";
  my $command="";
  my $i=0;
  @dvs=split(",",$slaves);
  if ($art eq "connect" && defined($master)) {
  foreach (@dvs) {
       $i++;
           $dev=$_;
       fhem("set $dev:FILTER=STATE!=on on");
           fhem("set $master cliraw sync $dev");
           Log 1,"Squeezebox: $dev synced to $master";
  }
      fhem("set $master play");
      return 1;
  }
  elsif ($art eq "disconnect") {
  foreach (@dvs) {
      $dev=$_;
      fhem("set $dev cliraw sync -;sleep 1;set $dev:FILTER=STATE!=off off");
          Log 1,"Squeezebox: $dev unsynced";
        }
    return 1;
  }
  else{return 0};
}


Aufruf:

squeezeSync(slave1[,slave2,slave..],connect|disconnect,master)

master kann beim disconnect weg gelassen werden.

Beispiele:

2 Squeezeboxen miteinander verbinden (SB1 spielt etwas):


squeezeSync("SB2","connect","SB1")


3 Squeezeboxen miteinander verbinden (SB1 spielt etwas):


squeezeSync("SB2,SB3","connect","SB1")


Eine Squeezebox aus der Gruppe lösen:


squeezeSync("SB2","disconnect")



usw.

Vorausetzung ist hier, dass alle Player im Media Server den gleichen Namen haben, wie in FHEM!!!

Ich benutzte diese Subroutine. Statt cliraw gibt es mittlerweile einen nativen sync Befehl des Moduls (glaube zu Hause habe ich das schon angepasst), aber sollte auch so immer noch funktionieren. :)

EDIT: Allerdings eine Möglichkeit mehrere Player direkt über das Modul zu syncen wäre sicher auch keine schlechte Idee. ;)