Ich heiße Andreas, bin neu hier und beschäftige mich seit einigen Tagen mit der CCU2 und dem Steuern von Sonos-Lautsprechern.
Bisher hatte ich eine Lösung mittels .cgi- und .php-Scripten, mittels denen ich eine 8-Tasten-Fernbedienung zum Steuern der Lautsprecher nutzen konnte.
Nun versuche ich das Ganze in HomeGear mit dem Sonos-Modul abzubilden.
Meine Anforderung sieht so aus:
Ich möchte über zwei Tasten (je kurzer und langer TDruck) der Fernbedienung einen der vier Sonos auswählen. Der Name des Sonos wird in der Systemvariablen Sonosplayer gespeichert. Funktioniert auch.
Jetzt will ich aber im Script nicht direkt den Namen eines Sonos reinschreiben, sondern mich auf den Wert der SysVar Sonosplayer beziehen. Sie enthält den Namen des zu steuernden Lautsprechers.
Zuvor mit den PHP-Scripten hat das funktioniert, da ich mittels SystemExec dann die Variable im Aufruf einbauen konnte:
Code: Alles auswählen
string stdout;
string stderr;
string mySysVar = dom.GetObject("Sonosplayer");
var sonos = mySysVar.ValueList() .StrValueByIndex(";",mySysVar.Value());
string url = "http://server/sonos2.php?zonen=" # sonos # "&action=clearqueue";
system.Exec("wget -q -O - " # url # "", &stdout, &stderr);
string url = "http://server/sonos2.php?zonen=" # sonos # "&action=serverlist&serverfile=server/music/playlists/Andreas.m3u";
system.Exec("wget -q -O - " # url # "", &stdout, &stderr);
system.Exec("/usr/local/etc/config/addons/www/sonos2/sonos2.cgi " # sonos # " shuffle true next", &stdout,&stderr);
system.Exec("/usr/local/etc/config/addons/www/sonos2/sonos2.cgi " # sonos # " volume 10", &stdout,&stderr);
system.Exec("/usr/local/etc/config/addons/www/sonos2/sonos2.cgi " # sonos # " play", &stdout,&stderr);
Code: Alles auswählen
string mySysVar = dom.GetObject("Sonosplayer");
var SPlayer = mySysVar.ValueList() .StrValueByIndex(";",mySysVar.Value());
WriteLine("Inhalt SPlayer ist: " # SPlayer # ".");
SPlayer.DPByHssDP("ADD_URI_TO_QUEUE").State("x-file-cifs://server/music/playlists/Andreas.m3u");
SPlayer.DPByHssDP("VOLUME").State(5);
Setze ich den Namen des Gerätes direkt ein, funktioniert es:
Code: Alles auswählen
string mySysVar = dom.GetObject("Sonosplayer");
! var SPlayer = mySysVar.ValueList() .StrValueByIndex(";",mySysVar.Value());
var SPlayer = dom.GetObject("Play1Flur:1");
WriteLine("Inhalt SPlayer ist: " # SPlayer # ".");
SPlayer.DPByHssDP("ADD_URI_TO_QUEUE").State("x-file-cifs://server/music/playlists/Andreas.m3u");
SPlayer.DPByHssDP("VOLUME").State(5);
Wo habe ich hier den Denkfehler? Wie muß ich die Variable bzw. deren Wert umsetzen, damit ich das wie gewünscht steuern kann?
Viele Grüße,
Andreas