Squeezebox Modul - erste Version

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

Vorheriges Thema - Nächstes Thema

oliv06

Zitat von: bugster_de am 24 September 2014, 12:08:05
Zum Thema talk:
auch das wurde in diesem Thread schon mehrfach hoch und runter diskutiert. Bitte also erstmal lesen, und dann noch offene Fragen stellen. Im Code des Moduls ist das zwar drin, was von einem anderen Entwickler implementiert wurde. Status ist:
- das talk geht nicht wieder zurück auf den letzten Status
- der andere Entwickler blickt seinen eigenen Code nicht mehr
- der andere Entwickler ist seit Wochen hier nicht mehr aktiv

Sprich, wenn ich mal irgendwann Zeit haeb,. dann fixe ich das. Ich will die Hoffnung hier aber nicht zu hoch hängen, da die Komplexität des Themas enorm hoch ist.
I am not sure you are talking about me because I read fhem forum using google translation ;-)
I have been in holidays, then quite busy so I did not look at the code again. At home I have another version of the talk function running, which is also a bit bugged, but perheaps less. If someone want to test it I can send it to him.
When I have time I come back to dev

MarcoE

#391
Hallo,
ich habe mal mir das Problem mit dem dummy Device welches durch den ampl: Parameter geschaltet wird (und worauf leider kein notify reagiert) näher angeschaut. Mein workaround besteht nun in einer Änderung in der 98_SB_PLAYER.pm in sub SB_PLAYER_Amplifier- die sieht nun so aus:

sub SB_PLAYER_Amplifier( $ ) {
    my ( $hash ) = @_;
    my $name = $hash->{NAME};

    if( ( $hash->{AMPLIFIER} eq "none" ) || (
            !defined( $defs{$hash->{AMPLIFIER}} ) ) ) {
        # amplifier not specified
        return;
    }

    my $setvalue = "off";

    Log3( $hash, 4, "SB_PLAYER_Amplifier($name): called" );

    if( AttrVal( $name, "amplifier", "play" ) eq "play" ) {
        my $thestatus = ReadingsVal( $name, "playStatus", "pause" );
        if( ( $thestatus eq "playing" ) || ( $thestatus eq "paused" ) ) {
            $setvalue = "on";
        }
    } elsif( AttrVal( $name, "amplifier", "on" ) eq "on" ) {
        if( ReadingsVal( $name, "power", "off" ) eq "on" ) {
            $setvalue = "on";
        }
    } else {
        Log3( $hash, 4, "SB_PLAYER_Amplifier($name): ATTR amplifier " .
              "set to wrong value [on|play]" );
    }
  my $actualState = Value("$hash->{AMPLIFIER}");

  if ( $actualState ne $setvalue)
  {
    fhem( "setstate $hash->{AMPLIFIER} $setvalue" );
    fhem( "trigger $hash->{AMPLIFIER} $setvalue" );
    Log3( $hash, 5, "SB_PLAYER_Amplifier($name): set $hash->{AMPLIFIER} $setvalue" );
   } else
   {
     Log3( $hash,5,"SB_PLAYER_Amplifier($name):no amplifier state change");
   }
    return;

}


sprich ich frage ab, ob der Zustand sich geändert hat und wenn ja mache ich zusätzlich zum set einen trigger.
Mit nur triggern ändert sich leider im webinterface der Zustand des dummy nicht und ohne trigger reagieren die notify nicht.
Ohne Zustandsabfrage gehen die notify auch jedes Mal los.
Geht das eleganter oder ist das überhaupt so notwendig?

Danke und Gruß,
Marco

dieda

Hallo bugster_de
und alle, die an diesem Modul beteiligt waren,

ein dickes Lob. War erstaunt, wie schnell und einfach sich diese Modul installieren lies. Nat. bleiben da noch ein paar Fragen und Ideen kommen mir nat. auch...

Das mit der Lautstärkeregelung bei Telefongesprächen, die Fenster-, Türen-, etc Abfrage beim Verlassen des Hauses....

Habe gleich 4 Clients mir eingerichtet. 1x Raspi, 2x Squeezeboxen und ein ausrangiertes HTC-Telefon (jeep, das ist dann noch einfacher und Noop-Prof einzurichten, wenn man dann noch mit Tasker nachhilft, klappts auch mit dem Batteriestatus...)

Aber wo ich ums Ver**** nichts weiterkomme sind die Favoriten und die Playlists. Da bräuchte ich noch mal einen Schubs.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

bugster_de

Hi,

die Favoriten und die Playlists sollten eigentlich von selbst vom LMS Server rüber nach FHEM geholt werden. Dafür musst du die aber natürlich im LMS Server auch definiert haben. Also einfach http://die.ip.meines.servers:9000 aufrufen und dort anlegen.

Du kannst das Abholen der Playlist und Favoriten auch noch mal in FHEM anstossen: am LMS Server set statusRequest aufrufen

Wenn das alles nicht hilft: verbose auf 5 stellen und Logfile hier posten

dieda

Danke, irgendwann hat es dann auch funktioniert. Was immo noch nicht so klappt ist die Ansprechbarkeit per FHEM. Meist hilft ein Neustart von FHEM.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

bugster_de

Hi,

jetzt habe ich mal Fragen:

ich habe neulich meinen LMS Server vom Windows-PC auf den Raspi umgezogen (auf dem auch FHEM läuft). Dabei habe ich auch gleich von LMS 7.7.3 auf 7.8 umgestellt. Im Prinzip geht das auch soweit. Die Standardfunktionen zur Steuerung der SBs von FHEM aus gehen auch. Allerdings kommen keine Infos mehr vom LMS Server an FHEM. Auf die Anfrage "listen 1" reagiert der LMS Server einfach gar nicht.

Hat das auch jemand? Ist die V7.8 noch so beta Zustand, dass das nicht geht? Meine iPENG App auf dem iPAD geht ohne Probleme (also muß es wohl an meinen Modulen liegen)

Und weitere Frage: ich habe auf dem Raspberry auch zwei virtuelle Player mittels Squeezeslave laufen. Zwei USB-Soundkarten dran (eine pro Raum). Das geht echt gut.
Nun wollte ich die eine Soundkarte durch eine deutlich höherwertige ersetzen (eine Soundblaster X-Fi HD). Da sagt mir Squeezeslave aber, dass dies nicht gehe, da die Samplingrate nicht unterstützt werde. Wenn ich den einen Player dann aber auf Squeezelite umstelle, dann habe ich ca. 45% CPU Load durch Squeezelite. Kennt den Effekt jemand?




bugster_de

@Dieda:
ZitatWas immo noch nicht so klappt ist die Ansprechbarkeit per FHEM. Meist hilft ein Neustart von FHEM.
kannst Du das genauer beschreiben, was das Problem ist? Sonst muß ich meine Glaskugel suchen gehen ;)

siggi85

Zitat von: bugster_de am 07 November 2014, 08:15:42
@Dieda:kannst Du das genauer beschreiben, was das Problem ist? Sonst muß ich meine Glaskugel suchen gehen ;)

Ich kenne das Phänomen. Der Reconnect des Moduls mit dem SB Server scheint manchmal nicht zu funktionieren. Ich starte momentan jede Nacht FHEM durch um das Problem zu umgehen. Habe momentan einfach zu wenig Zeit mal bissl Troubleshooting zu betreiben.

Zum Playerproblem: Da Squeezeslave Probleme mit TTS macht, nutze ich nur Squeezelite (habe 3 Raspis damit laufen, 2 squeezeplug und 1 raspbmc). Hast du die 45% Load denn im IDLE oder wenn Musik spielt? Und hast du mal die alte Soundkarte mit Squeezelite getestet?

bugster_de

Hi,

Zitat>>Der Reconnect des Moduls mit dem SB Server scheint manchmal nicht zu funktionieren.
kann ich bestätigen und ich habe schon gedebugged wie wild. mein Code ist identisch zu anderen Modulen (z.B. Homematic). Aber es scheint so, als ob die Verbidnung zum LMS auf tieferer Ebene von FHEM verloren geht und dann leider die re-connect Routinen in meinem Modul eben nicht aufgerufen werden. Das scheint auch unabhängig davon zu sein, ob der LMS dauerhaft durchläuft oder ein-/aus geschaltet wird.
Momentan löse ich das so, dass ich am SB-Server einach den modify Knopf drücke. Dadurch durchläuft das Modul einmal die komplette _define Routine und dann geht es. Macht mich auch irre, aber ich komme nicht dahinter, was das Problem genau ist.

Squeezelite: die 45% load habe ich immer. Also egal ob alte oder neue Soundkarte und egal ob Musik spielt oder nicht. Und ich habe die 45% pro Instanz. Sprich wenn ich zwei starte, dann habe ich 90% Load. Bei drei Instanzen schmiert der RPi ab. Ich muß aber ehrlicher weise sagen, dass ich mich da noch nicht 100% ins Detail eingefuchst habe und z.B. Logfiles durchgesehen hätte.


siggi85

#399
Zitat von: bugster_de am 07 November 2014, 10:32:58
Hi,
kann ich bestätigen und ich habe schon gedebugged wie wild. mein Code ist identisch zu anderen Modulen (z.B. Homematic). Aber es scheint so, als ob die Verbidnung zum LMS auf tieferer Ebene von FHEM verloren geht und dann leider die re-connect Routinen in meinem Modul eben nicht aufgerufen werden.

Das ist ja echt mysteriös. Ich kann nur hoffen, dass du oder jemand anderes das kleine Bit was uns dazwischen pfuscht findet und den Fehler beheben kann.  ;) Mal schauen ob ich mir das demnächst mal zu Gemüte führe, aber mach dir nicht  zu viele Hoffnungen, bin nicht so der Programmierer.  ::)

ChrisD

Hallo,

Hast du schon versucht meine Änderung einzubauen ?

Seitdem ich den Code bei mir geändert habe, habe ich keine Probleme mehr mit verlorenen Verbindungen gehabt. Die Änderung sorgt dafür dass das Modul nicht in einer Schleife hängt aus der es von selbst nie wieder rauskommt.

Grüße,

ChrisD

bugster_de

#401
Hi Chris,

ja ich habe den Code eingebaut und das On/Off des Verstärkers ging gar nicht mehr ....  Habe es angepasst und jetzt scheint es zu gehen.

In Contrib ist eine Version eingecheckt. Hier sind ein paar Bugfixes aufgenommen. Ausserdem hat das Modul jetzt eine Doku.
Einen RIESEN-DANK an Siggi85, der die Doku geschrieben hat !!!


dieda

Zitat von: bugster_de am 09 November 2014, 18:45:09
Hi Chris,

ja ich habe den Code eingebaut und das On/Off des Verstärkers ging gar nicht mehr ....  Habe es angepasst und jetzt scheint es zu gehen.

In Contrib ist eine Version eingecheckt. Hier sind ein paar Bugfixes aufgenommen. Ausserdem hat das Modul jetzt eine Doku.
Einen RIESEN-DANK an Siggi85, der die Doku geschrieben hat !!!



Ich muss da zur Sicherheit mal nachhaken. Ist das gerade geschehen oder ist das schon länger her? Ich möchte ja ein paar Squeezeboxen headless laufen lassen und nur über einen FS20-Schalter ein- oder aus.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Future

Hallo,
wie schon mal geschrieben .... DANKE für das Modul  ;)

hab aber jetzt was festgestellt:
Der Wecker/Alarm ist in fhem nach einem Neustart von fhem nicht mehr in den readings bzw ich kann ihn nicht mehr über fhem steuern. Im Sqeezeplayer ist er nach wie vor vorhanden und funktioniert auch.
Mein "problemchen"  ::)
ich hab einen Taster der alarm1 oder alarm2 ein bzw ausschaltet. aber nach einem restart von fhem sind beide Wecker/Alrme im fhem nicht mehr vorhanden, dann muss ich erst den alarm am Sqeezeserver löschen und mit fhem neu anlegen. löschen deswegen.... fhem legt einen neuen Wecker/Alarm am Sqeezeserver an...... am ende hatte ich 10 gleiche Wecker definiert und verschlafen  ;D weil nix mehr ging ( deswegen ist es mir aufgefallen )
kann man die bereits vorhanden Wecker/Alarme nicht auslesen ?

Gruß
Future
FHEM 5.6 auf Brix
1xCUL433, 12x Elro AB440SC
Onkyo TX-NR515, Coolstream NEO, Samsung UE46F6500, HMLAN, 3x HM-PB-2-WM55-2, 2x HM-PB-6-WM55, 4x HM-CC-RT-DN, 3x HM-TC-IT-WM-W-EU, 1x HM-RC-4-2, 3x HM-LC-Sw1PBU-FM,1x HM-WDS10-TH-O

DJAlex

Kann ich bestätigen gleiches Problem bei mir. Nur das ich nichtmal neustarten muss. Er vergisst die Wecker auch so.