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 (//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
Hallo,
von welchem Gerät ist das
Zitathttp://192.168.0.99:9000 (//192.168.0.99:9000)
die IP?
Grüße
das is der Squeezeboxserver
Es handelt sich um einen Raspberry Pi mir Raspbian als Betriebssystem
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
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
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
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
Schau mal hier:
http://forum.fhem.de/index.php?t=msg&goto=73032&rid=852#msg_73032 (//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
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
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
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.
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
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
@Juergen
das ist ja auch cool. Auf die Idee bin ich noch gar nicht gekommen, dass man auf der SB auch Nachrichten ausgeben kann !
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..?
Hi
ich glaube das ganze hat wegen der falschen Angabe der MAC-Adresse nicht funktioniert.
Bei mir funktioniert folgende Angaben in der fhem.cfg seit längerer Zeit schon einwandfrei.
Jeden Player kann ich einzeln regeln.
define SqueezeBad dummy
attr SqueezeBad group Sound
attr SqueezeBad room Bad,Sound
attr SqueezeBad webCmd play:pause:stop:next:back:5:10:15:20:25:30:35:40:45:50:55:60:65:70:75:80:85:90:95:100
define SqueezeBad_ntfy notify SqueezeBad:.* {\
my $v=Value("SqueezeBad");;\
my $server='http://192.168.178.69:9000';;\
my $player="&player=b8:27:eb:fc:e9:26";;\
my $bef1="/status.html?p0=play";;\
my $bef2="/status.html?p0=pause";;\
my $bef3="/status.html?p0=mixer&p1=volume&p2=$v";;\
my $bef4="/status.html?p0=stop";;\
my $bef5="/status.html?p0=playlist&p1=jump&p2=+1";;\
my $bef6="/status.html?p0=playlist&p1=jump&p2=-1";;\
if ($v eq "play") {GetFileFromURL "$server$bef1$player"};;\
if ($v eq "pause") {GetFileFromURL "$server$bef2$player"};;\
if ($v eq "stop") {GetFileFromURL "$server$bef4$player"};;\
if ($v eq "next") {GetFileFromURL "$server$bef5$player"};;\
if ($v eq "back") {GetFileFromURL "$server$bef6$player"};;\
if ($v > "0") {GetFileFromURL "$server$bef3$player&start=0"};;\
}