Sonos webcontroller interface howto

Har du en guide til en funktion eller et program? Har du tips og trick, som du gerne vil dele med andre? Post dem her.
Claus Henriksen
Forfatter
Indlæg: 794
Tilmeldt: 21. jan 2007, 17:45
Geografisk sted: Christianshavn

Sonos webcontroller interface howto

Indlæg af Claus Henriksen »

Det er ret irriterende at man ikke kan bruge Sonos controlleren på Linux uden at skulle finde sig i Wine og det fact at den fra tid til anden holder op med at virke under Wine. :cry:

Men så var det jeg stødte på Sonos controller webinterfacet http://www.purple.org/sonos/, som med lidt fingernemhed kan installeres på en linuxbox - eller bedre - en linuxbox på loftet. Så kan man tilgå Sonos gennem en browser gennem http://maskine:8001

For dem med Sonos og Ubuntu er her en lille howto baseret på mine erfaringer og siderne http://omegasales.wordpress.com/2012/05/07/running-sonos-on-linux-laptop-andor-server/ og http://www.snille.net/downloads/howtos/How%20to%20install%20Sonos%20Web%20controller.txt.

1. Installer de pakker som sonosweb kræver (her Ubuntu 12.04)
sudo apt-get install libuser-perl liblwp-useragent-determined-perl libhttp-daemon-perl libxml-simple-perl libhtml-template-perl libsoap-lite-perl libdata-dump-perl
2. Hent sonosweb og pak ud
wget http://www.purple.org/sonos/sonosweb-0.72.tar.gz
tar xvf sonosweb-0.72.tar.gz
3. Ret 2 fejl i sonos.pl
cd sonos
gedit sonos.pl
# gå til omkring linje 1800 og erstat
foreach my $queue (@{@{$main::ZONES{$zone}->{QUEUE}}}) {
# med
foreach my $queue (@{$main::ZONES{$zone}->{QUEUE}}) {

# gå til omkring linje 1275 og erstat
next if ($device->{LOCATION} !~ /xml\/zone_player.xml/);
# med
next if ($device->friendlyName !~ /Sonos/);
next if (!($device->friendlyName !~ /Sonos BRIDGE/));
next if (!($device->friendlyName !~ /Sonos DOCK/));
gem og luk

4. konfigurér sonosweb
./sonos.pl -config
Jeg har bare tastet <enter> og acceptereret standard indstillinger

5. start sonosweb controller webservicen i baggrunden på en maskine i en screen-session - denne session kan man komme ud af ved at skriver "ctrl-a" "d" og komme tilbage til med screen -R
sudo apt-get install screen
screen
./sonos.pl
ctrl-a d

6. Nyd det udmærkede web interface på http://maskinenavn:8001
Claus Gårde Henriksen / Jeg bruger ikke Ubuntu / Debian Stable 12
naucher
Indlæg: 359
Tilmeldt: 23. jan 2009, 21:14
IRC nickname: naucher
Geografisk sted: Aabenraa

Re: Sonos webcontroller interface howto

Indlæg af naucher »

Jeg forstår vist ikke helt, hvad og hvordan ...:

Jeg når fint til at hente og udpakke med:

Kode: Vælg alt

wget http://www.purple.org/sonos/sonosweb-0.72.tar.gz
tar xvf sonosweb-0.72.tar.gz

Det går også udmærket at få lavet de to ændringer i filen ~/Sonos/sonos.pl

Men så knækker filmen for mig.

Hvad mener du med
4. konfigurér sonosweb
./sonos.pl -config

Hvordan og hvad? Hvilken kommando? ...for det er vel stadig terminalkommandoer, der menes?

Derefter installerer jeg screen med

Kode: Vælg alt

sudo apt-get install screen
screen

Men den næste linje:

Kode: Vælg alt

./sonos.pl
.. giver ikke rigtigt mening for mig.

Måske pga. af ovenstående, får jeg blot "Ude af stand ..." fra FireFox, når jeg prøver at tilgå siden http://maskinnavn:8001
De bedste hilsner
Naucher

Begejstret Bruger
Lenovo Thinkpad L15 (årg. 2023) | 16,0 GB RAM | 400 GB disk || Ubuntu 23.10
Lenovo Thinkpad S540 (årg. 2014) | 8,0 GB RAM | 400 GB disk || Ubuntu 22.04LTS
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Sonos webcontroller interface howto

Indlæg af AJenbo »

Har du husket at udpakke den tar.gz du hentede hvor du finder sonos.pl og navigere til mappen så du kan køre det?
naucher
Indlæg: 359
Tilmeldt: 23. jan 2009, 21:14
IRC nickname: naucher
Geografisk sted: Aabenraa

Re: Sonos webcontroller interface howto

Indlæg af naucher »

Ja, jeg har hentet og udpakket. Jeg har også lavet de nævnte ændringer i sonos.pl

Men når du skriver: "køre det" Hvad mener du så? Hvordan "kører man"?
De bedste hilsner
Naucher

Begejstret Bruger
Lenovo Thinkpad L15 (årg. 2023) | 16,0 GB RAM | 400 GB disk || Ubuntu 23.10
Lenovo Thinkpad S540 (årg. 2014) | 8,0 GB RAM | 400 GB disk || Ubuntu 22.04LTS
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Sonos webcontroller interface howto

Indlæg af AJenbo »

Man køre sonos.pl ved at skrive ./sonos.pl i terimnalen mens man er i mappen, og så sammen med det parameter som er nævnt i guiden for at opnå det ønskede resultat.
naucher
Indlæg: 359
Tilmeldt: 23. jan 2009, 21:14
IRC nickname: naucher
Geografisk sted: Aabenraa

Re: Sonos webcontroller interface howto

Indlæg af naucher »

OK - den havde jeg så ikke lige fanget.
Men desværre giver kommandoen:

Kode: Vælg alt

./sonos.pl
... eller

Kode: Vælg alt

./sonos.pl -config
samme fejlmelding, nemlig:
Can't locate XML/Parser/Lite.pm in @INC (you may need to install the XML::Parser::Lite module) (@INC contains: . ./UPnP/lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl) at UPnP/lib/UPnP/Common.pm line 728.
BEGIN failed--compilation aborted at UPnP/lib/UPnP/Common.pm line 728.
Compilation failed in require at UPnP/lib/UPnP/ControlPoint.pm line 14.
BEGIN failed--compilation aborted at UPnP/lib/UPnP/ControlPoint.pm line 14.
Compilation failed in require at ./sonos.pl line 5.
BEGIN failed--compilation aborted at ./sonos.pl line 5.


Linje 5 i filen skriver: use UPnP::ControlPoint;
Linje 14 skriver: use HTTP::Daemon;
Linje 728 er en tom/blank linje

Hvad/hvor går det galt for mig?
De bedste hilsner
Naucher

Begejstret Bruger
Lenovo Thinkpad L15 (årg. 2023) | 16,0 GB RAM | 400 GB disk || Ubuntu 23.10
Lenovo Thinkpad S540 (årg. 2014) | 8,0 GB RAM | 400 GB disk || Ubuntu 22.04LTS
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Sonos webcontroller interface howto

Indlæg af AJenbo »

Se om det her er hvad der mangler:

Kode: Vælg alt

perl -MCPAN -e 'install HTTP::Daemon'
perl -MCPAN -e 'install UPnP::ControlPoint'
perl -MCPAN -e 'install XML::Parser::Lite'
naucher
Indlæg: 359
Tilmeldt: 23. jan 2009, 21:14
IRC nickname: naucher
Geografisk sted: Aabenraa

Re: Sonos webcontroller interface howto

Indlæg af naucher »

Tilsyneladende ikke helt - desværre :(
Skal man køre de tre kommandoer som sudo?

Når jeg kører

Kode: Vælg alt

perl -MCPAN -e 'install HTTP::Daemon'
får jeg dette output:
CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each configuration option instead.

Would you like to configure as much as possible automatically? [yes] yes

<install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or escalate your privileges. CPAN can help you by bootstrapping the local::lib module or by configuring itself to use 'sudo' (if available). You may also resolve this problem manually if you need to customize your setup.

What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
[local::lib] sudo

Autoconfigured everything but 'urllist'.

Now you need to choose your CPAN mirror sites. You can let me pick mirrors for you, you can select them from a list or you can enter them by hand.

Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes] yes
Trying to fetch a mirror list from the Internet
Fetching with LWP:
http://www.perl.org/CPAN/MIRRORED.BY

Looking for CPAN mirrors near you (please be patient)
.......................... done!

New urllist
http://www.pirbot.com/mirrors/cpan/
http://kvin.lv/pub/CPAN/
http://mirror.tje.me.uk/pub/mirrors/ftp.cpan.org/

Autoconfiguration complete.

commit: wrote '/home/naucher/.cpan/CPAN/MyConfig.pm'

You can re-run configuration any time with 'o conf init' in the CPAN shell
Fetching with LWP:
http://www.pirbot.com/mirrors/cpan/authors/01mailrc.txt.gz
Reading '/home/naucher/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
http://www.pirbot.com/mirrors/cpan/modules/02packages.details.txt.gz
Reading '/home/naucher/.cpan/sources/modules/02packages.details.txt.gz'
Database was generated on Fri, 02 Jan 2015 10:53:21 GMT
..............
New CPAN.pm version (v2.05) available.
[Currently running version is v2.00]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving the current session.

..............................................................DONE
Fetching with LWP:
http://www.pirbot.com/mirrors/cpan/modules/03modlist.data.gz
Reading '/home/naucher/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /home/naucher/.cpan/Metadata
HTTP::Daemon is up to date (6.01).

Derefter kører jeg

Kode: Vælg alt

perl -MCPAN -e 'install UPnP::ControlPoint' 
og får:
Reading '/home/naucher/.cpan/Metadata'
Database was generated on Fri, 02 Jan 2015 10:53:21 GMT
Warning: Cannot install UPnP::ControlPoint, don't know what it is.
Try the command

i /UPnP::ControlPoint/

to find objects with matching identifiers.

Til sidst kører jeg

Kode: Vælg alt

 perl -MCPAN -e 'install XML::Parser::Lite'
og får:
Reading '/home/naucher/.cpan/Metadata'
Database was generated on Fri, 02 Jan 2015 10:53:21 GMT
Running install for module 'XML::Parser::Lite'
Running make for P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz
Fetching with LWP:
http://www.pirbot.com/mirrors/cpan/authors/id/P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz
Fetching with LWP:
http://www.pirbot.com/mirrors/cpan/authors/id/P/PH/PHRED/CHECKSUMS
Checksum for /home/naucher/.cpan/sources/authors/id/P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz ok

CPAN.pm: Building P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for XML::Parser::Lite
Writing MYMETA.yml and MYMETA.json
cp lib/XML/Parser/Lite.pm blib/lib/XML/Parser/Lite.pm
Manifying blib/man3/XML::Parser::Lite.3pm
PHRED/XML-Parser-Lite-0.72.tar.gz
/usr/bin/make -- OK
'YAML' not installed, will not store persistent state
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/07-xmlrpc_payload.t .. ok
t/26-xmlrpc.t .......... ok
t/27-xmlparserlite.t ... ok
t/37-mod_xmlrpc.t ...... Undefined subroutine &XMLRPC::Test::Server::run_for called at t/37-mod_xmlrpc.t line 16.
# Looks like your test exited with 255 before it could output anything.
t/37-mod_xmlrpc.t ...... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 17/17 subtests
t/Lite.t ............... ok

Test Summary Report
-------------------
t/37-mod_xmlrpc.t (Wstat: 65280 Tests: 0 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 17 tests but ran 0.
Files=5, Tests=69, 4 wallclock secs ( 0.04 usr 0.01 sys + 0.39 cusr 0.06 csys = 0.50 CPU)
Result: FAIL
Failed 1/5 test programs. 0/69 subtests failed.
make: *** [test_dynamic] Fejl 255
PHRED/XML-Parser-Lite-0.72.tar.gz
/usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports PHRED/XML-Parser-Lite-0.72.tar.gz
Running make install
make test had returned bad status, won't install without force


Under første kommando står bl.a. noget med:

Kode: Vælg alt

 install CPAN
 reload cpan
Betyder det noget?
Hvordan gør man? ... for sådan lige umiddelbart giver disse kommandoer kun fejlmeldinger som resultat.

Under anden kommando står der, at UPnP::ControlPoint ikke kan installeres, men at man måske skal køre

Kode: Vælg alt

 i /UPnP::ControlPoint/ 

Hvordan gør man? ... for sådan lige umiddelbart giver denne kommando kun en fejlmelding som resultat.

Under sidste kommando står der bl.a. noget med, at YAML mangler, samt at der mangler noget "make"?

Hvordan så nu?
De bedste hilsner
Naucher

Begejstret Bruger
Lenovo Thinkpad L15 (årg. 2023) | 16,0 GB RAM | 400 GB disk || Ubuntu 23.10
Lenovo Thinkpad S540 (årg. 2014) | 8,0 GB RAM | 400 GB disk || Ubuntu 22.04LTS
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Sonos webcontroller interface howto

Indlæg af AJenbo »

Ja, det var min fejl det skulle være med sudo

Kode: Vælg alt

sudo perl -MCPAN -e 'install HTTP::Daemon'
sudo perl -MCPAN -e 'install UPnP::ControlPoint'
sudo perl -MCPAN -e 'install XML::Parser::Lite'


Siden det er perl der snakker tror jeg den mener noget i stil med:

Kode: Vælg alt

sudo perl -MCPAN -e 'i /UPnP::ControlPoint/'

Men Perl er ikke min stærke side.
naucher
Indlæg: 359
Tilmeldt: 23. jan 2009, 21:14
IRC nickname: naucher
Geografisk sted: Aabenraa

Re: Sonos webcontroller interface howto

Indlæg af naucher »

Tja - det hjalp ... lidt ...
De første to kommandoer gik fint (iflg. terminalens respons)
Men den sidste

Kode: Vælg alt

sudo perl -MCPAN -e 'install XML::Parser::Lite'
giver fortsat dette output:
Reading '/home/naucher/.cpan/Metadata'
Database was generated on Fri, 02 Jan 2015 10:53:21 GMT
Running install for module 'XML::Parser::Lite'
Running make for P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz
Checksum for /home/naucher/.cpan/sources/authors/id/P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz ok

CPAN.pm: Building P/PH/PHRED/XML-Parser-Lite-0.72.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for XML::Parser::Lite
Writing MYMETA.yml and MYMETA.json
cp lib/XML/Parser/Lite.pm blib/lib/XML/Parser/Lite.pm
Manifying blib/man3/XML::Parser::Lite.3pm
PHRED/XML-Parser-Lite-0.72.tar.gz
/usr/bin/make -- OK
'YAML' not installed, will not store persistent state
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/07-xmlrpc_payload.t .. ok
t/26-xmlrpc.t .......... ok
t/27-xmlparserlite.t ... ok
t/37-mod_xmlrpc.t ...... Undefined subroutine &XMLRPC::Test::Server::run_for called at t/37-mod_xmlrpc.t line 16.
# Looks like your test exited with 255 before it could output anything.
t/37-mod_xmlrpc.t ...... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 17/17 subtests
t/Lite.t ............... ok

Test Summary Report
-------------------
t/37-mod_xmlrpc.t (Wstat: 65280 Tests: 0 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 17 tests but ran 0.
Files=5, Tests=69, 3 wallclock secs ( 0.04 usr 0.01 sys + 0.35 cusr 0.02 csys = 0.42 CPU)
Result: FAIL
Failed 1/5 test programs. 0/69 subtests failed.
make: *** [test_dynamic] Fejl 255
PHRED/XML-Parser-Lite-0.72.tar.gz
/usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports PHRED/XML-Parser-Lite-0.72.tar.gz
Running make install
make test had returned bad status, won't install without force


Der er tilsyneladende noget med, at 'YAML' ikke er installeret, samt en fejl i linie 16 ?

Kommandoen

Kode: Vælg alt

 sudo perl -MCPAN -e 'i /UPnP::ControlPoint/' 
gav blot dette:
syntax error at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
Så det var nok ikke helt korrekt!?
De bedste hilsner
Naucher

Begejstret Bruger
Lenovo Thinkpad L15 (årg. 2023) | 16,0 GB RAM | 400 GB disk || Ubuntu 23.10
Lenovo Thinkpad S540 (årg. 2014) | 8,0 GB RAM | 400 GB disk || Ubuntu 22.04LTS
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Sonos webcontroller interface howto

Indlæg af AJenbo »

Jeg ville prøve med XML:: Parker eller Parser::Lite og hvis det ikke løser det bliver du nok nød til at Google lidt på hvordan man installerer den pakke