Squeezeboxserver

Begonnen von wilfo, 02 Oktober 2013, 17:25:28

Vorheriges Thema - Nächstes Thema

wilfo

Hallo

Ich bin Anfänger und als solcher noch ein bisschen überfordert bei der Fehlersuche

Ich habe in meiner Wohnung einen Squeezeboxserver, ne squeezebox und einen Raspberry mit Squeezlite laufen und versuche laut dieser Anleitung http://www.fhemwiki.de/wiki/Squeezebox meine Squeezebox anzusteuern.
Das sieht momentan so aus:
sub squeezebox($) {
 my ($state) = @_;
 if ($state eq "on")
 {
  system("wget -O /dev/null -q http://192.168.0.99:9000/status.html?p0=play&player=00%3A04%3A20%3A1f%3A69%3A79");
 }
 else
 {
  system("wget -O /dev/null -q http://192.168.0.99:9000/status.html?p0=stop&player=00%3A04%3A20%3A1f%3A69%3A79");
 }
}


Leider funktionierts nur zur hälfte, den er macht den falschen player an. Egal ob ich &player=00%3A04%3A20%3A1f%3A69%3A79 hinzufüg oder nicht er spricht immer den Raspberry statt der Squeezebox an

Puschel74

Hallo,

von welchem Gerät ist das

Zitathttp://192.168.0.99:9000

die IP?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

wilfo

das is der Squeezeboxserver
Es handelt sich um einen Raspberry Pi mir Raspbian als Betriebssystem

bugster_de

Hi,

ohne das ich das jetzt ausprobiert habe mal folgenden Vermutung:

?p0=stop&player=00%3A04%3A20%3A1f%3A69%3A79

Das hier steuert den Player mit der Nummer 0 an, da dies die erste Zahl hinter dem zweiten Argument &player=0 ist. Der SB Server verwirft dann den ganzen Rest, der danach kommt.
Und wenn ich mich richtig erinnere, dann muss den Player doch per nummer und nicht per MAC Adresse ansprechen, oder? Sprich Du must halt ausprobieren, welcher player welche Nummer hat.

Wie gesagt, habe ich jetzt nicht probiert, ist aber sicherlich einen Versuch wert


wilfo

Ein Versuch wars wert, aber leider is das nicht die Lösung.
Egal ob da 1, 2, ... stehter spricht immer den selben an.
Dazu kommt noch, wenn ich
http://192.168.0.99:9000/status.html?p0=play&player=00%3A04%3A20%3A1f%3A69%3A79
im Browser eingebe funktionierts, nur im FHEM nicht


Grüße



bugster_de

Hi,

auf welchem System läuft denn FHEM? Auf einer FB oder einem Linux Server?
Ich meine mich dunkel zu erinnern, dass ich mit einer ganz anderen Funktion mit system und wget auf der FB auch Probleme hatte.
Versuch doch mal:
i.) die doppelten Anführungsstriche " durch einfach zu ersetzen '  Macht bei Perl ja einen Unterschied in Bezug auf die Interpretation des Strings
ii.) nutze an Stelle von system() den qx() Aufruf von Perl. Dabei aber den Aufruf in der Klammer nicht in Anfürhungszeichen setzen. Ich fahre meinen HTPC ebenfalls per wget irgendwas runter und mit der Standardumsetzung in 98_WOL.pm ging es nicht. Erst mit der Umsetzung durch qx hat die FritzBox den Aufruf sauber abgesetzt.

Wenn das auch nicht hilft: Good Luck :-) Denn ich weiß sonst auch nichts

wilfo

Hi

FHEM läuft bei mir auf nen Raspberry, also Linux

Hab deine Tipps mal ausprobiert.
Leider wars das auch nicht. Es wird immer noch der Falsche Player gestartet

Dragonfly

Schau mal hier:
http://forum.fhem.de/index.php?t=msg&goto=73032&rid=852#msg_73032

Vielleicht liegt´s am wget ?!

Ich hab den SqueezeServer auf einer Synology laufen, da hab ich Probleme wenn ein Gerät (2 hab ich) nicht erreichbar ist, dann wird einfach das Erreichbare geschalten. Ist aber nach SqueezeServer unterschiedlich - bei anderen läuft dann eben kein Player, anstelle des Falschen.

LG

wilfo

So, hatte grad wieder ein bisschen zeit zu testen

Ich hoff ich habs schon erwähnt das ich mit FHEM erst anfang

also ich habs jetzt auf die art in der fhem.cfg probiert

define Squeezebox_ntfy notify (Squeezebox:.*) {\
    my $v=Value("Squeezebox");;\
    my $server='http://192.168.0.99:9000';;\
    my $player="&player=00:04:20:1f:69:79";;\
    if ($v eq "on") {GetFileFromURL "" . $server . "/status.html?p0=play" . $player . ""};;\
    }

das ruf ich mit "trigger Squeezebox_ntfy" auf oder ?
wenn ja, tut sich nix

lg

wilfo

So,
Stunden(Tage) an Probiererei später hab ichs nun geschafft.
sieht jetzt so aus     define Squeezebox dummy
    attr Squeezebox setList state:Ein/Play,Aus
    define Squeezebox_ntfy notify Squeezebox:.* {\
    my $v=Value("Squeezebox");;\
    my $server='http://192.168.0.99:9000';;\
    my $player="&player=192.168.0.9";;\
    my $bef1="/status.html?p0=play";;\
    my $bef2="/status.html?p0=stop";;\
    if ($v eq "Ein/Play") {GetFileFromURL "$server$bef1$player"};;\
    if ($v eq "Aus") {GetFileFromURL "$server$bef2$player"};;\
    }


Ich hoffe ich kann hiermit noch jemanden vor ähnlichen Stunden bewahren.

LG Wilfo

bugster_de

Hi,

Danke für den Hinweis, wie es nun geht.

Sehe ich das richtig, dass man für den Player nicht die MAC Adresse sondern die IP-Adresse angeben muß? Das ist tasächlich ein sehr hilfreicher Hinweis!

Ansonsten sehe ich keinen wirklichen Unterschied zwischen den verschiedenen Versuchen die Du unternommen hast.




JuergenL

Hallo,

ich verwende die SqueezeBox schon seit Jahren als Statusanzeige fuer FHEM in einem Shellscript. Und da verwende ich den Namen des Players in der SB-Server-Weboberfläche.
Meine SqueezeBox im Wohnzimmer heißt da "SqueezeboxWZ", deshalb sieht der wget-Aufruf dann so aus:

wget -T 0.1 -t 1 --quiet -O /dev/null "http://${server}:9000/status.txt?p0=display&p1=FHZ Statusmeldung -- ${msg:0:19}&p2=${msg:20}&p3=15&player=SqueezeboxWZ"

Die FHEM-Meldung (Variable $msg) teile ich hinter dem 19. Zeichen auf, ab dem 20. Zeichen kommt sie dann auf Zeile 2. Dadurch stehen dann Datum und Uhrzeit der Meldung auf Zeile 1.
In der Variable $server ist natürlich der SB-Server.

Übrigens spricht "...&player=*" alle Boxen an.

Gruß,
Jürgen


wilfo

Hi,

@Bugster

Um wirklich kompetent sagen zu können wo "der" gravierende Unterschied ist fehlt mir leider das Wissen.
Ich werds aber mit exakt diesen Zeilen nochmal mit der Mac probieren sobald ich wieder daheim bin.

@ Juergen

Mit den Namen hab ichs nie probiert, aber ein versuch ist es auch wert. Probier ich auch wenn ich wieder daheim bin

Grüße Wilfo

bugster_de

@Juergen
das ist ja auch cool. Auf die Idee bin ich noch gar nicht gekommen, dass man auf der SB auch Nachrichten ausgeben kann !

moonsorrox

Zitat von: JuergenL am 13 November 2013, 14:27:37
Hallo,

ich verwende die SqueezeBox schon seit Jahren als Statusanzeige fuer FHEM in einem Shellscript.

das ist ja mal interessant, hast du ein Screenshot davon..? Welchen Status liest du aus..? Oder besser was wird angezeigt..?
Ich habe zwei Classics und ein Boom im Einsatz..! die zeigen nur immer Datum, Wochentag und Uhrzeit an, wird das weiter angezeigt..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM