Technologie

Malinowe Przepisy - Co [PI]szczy w Raspberry? - uzupełnienie

Grzegorz Marczak
Malinowe Przepisy - Co [PI]szczy w Raspberry? - uzupełnienie
4

W poprzednim artykule przybliżyłem ogólną koncepcję centrum muzycznego oraz podałem przykład na gotowe rozwiązanie opierające się o serwer MPD. W tej części chciałbym przybliżyć oprogramowanie Mopidy, które możemy zainstalować i skonfigurować np. na Raspbianie. Może się to okazać przydatne tym osobo...

W poprzednim artykule przybliżyłem ogólną koncepcję centrum muzycznego oraz podałem przykład na gotowe rozwiązanie opierające się o serwer MPD. W tej części chciałbym przybliżyć oprogramowanie Mopidy, które możemy zainstalować i skonfigurować np. na Raspbianie. Może się to okazać przydatne tym osobom, które chciałyby na tej samej malince uruchomić dodatkowe usługi.

Autorem wpisu jest Rafał Świętonowski.

Zacznijmy najpierw od tego czym jest mopidy. Jest to serwer muzyczny napisany w Pythonie. Po zainstalowaniu pełni jednocześnie rolę serwera MPD oraz HTTP. Aby móc zarządzać Mopidy z poziomu przeglądarki internetowej, trzeba doinstalować jeden z wielu dostępnych modułów (frontend extensions). To co jest bardzo dużą zaletą, to możliwość zwiększania funkcjonalności Mopidy za pomocą rozszerzeń (backend extensions). Oprogramowanie Mopidy w początkowej (startowej) konfiguracji może odtwarzać muzykę z lokalnych dysków i przesyłać muzykę z radia internetowego.

Przygotowanie RPI

Zacznijmy zatem od przygotowania naszej malinki. Jak poprzednio będę używał modelu RPI B+ z HifiBerry DAC. W tym celu zaopatrzymy się najpierw w najnowszy system Raspbian ze strony http://www.raspberrypi.org/downloads/. Następnie musimy odpowiednio przygotować kartę SD:

sudo dd bs=4M if=2014-09-09-wheezy-raspbian.img of=/dev/mmcblk0
sync (dla pewności, że wszystko się zapisało)

Ważne: należy upewnić się (najlepiej dwa razy) za pomocą jakiego urządzenia systemowego reprezentowana jest nasza karta SD. Przygotowanie karty SD z systemem używając parametru bs=4M powinno działać w większości przypadków. W sytuacji kiedy nasze RPI ma trudności z wystartowaniem z tak przygotowanej karty SD, możemy ustawić ten parametr na wartość bs=1M.

Aby w łatwy sposób podglądać stan „nagrywania” systemu na naszą kartę SD, możemy zamiast polecenia dd użyć polecenia dcfldd.

Po uruchomieniu RPI (o ile to konieczne) możemy uruchomić dobrze nam już znaną aplikację raspi-config i rozszerzyć system plików tak, aby można było wykorzystać całą pojemność karty SD.

pi@raspberrypi ~ $ sudo raspi-config

Następnie powinniśmy uaktualnić kernel (firmware) oraz system. W tym celu wykonujemy następujący ciąg komend:

pi@raspberrypi ~ $ sudo rpi-update
pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get dist-upgrade
pi@raspberrypi ~ $ sudo apt-get clean

a następnie restartujemy nasze RPI

pi@raspberrypi ~ $ sudo reboot

Po tych wszystkich operacjach, uruchomieniu RPI, musimy się zalogować (pierwsze uruchomienie nie wymagało tej czynności):

nazwa użytkownika: pi
hasło: raspberry

Instalacja i konfiguracja Mopidy

Możemy przystąpić do właściwych czynności związanych z zainstalowaniem Mopidy. Najpierw włączymy obsługę IPv6 w naszym systemie (bez tego czasami mogą pojawić się problemy w działaniu aplikacji).

pi@raspberrypi ~ $ sudo modprobe ipv6

Aby przy każdym uruchomieni RPI, moduł ipv6 był wczytywany automatycznie, musimy dodać odpowiedni wpis do pliku /etc/modules:

pi@raspberrypi ~ $ echo ipv6 | sudo tee -a /etc/modules

Czas zainstalować oprogramowanie. Najpierw dodamy wymagany klucz GPG dla repozytorium Mopidy:

pi@raspberrypi ~ $ wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
OK

Dla porządku w plikach konfiguracyjnych APT, utworzymy osobny plik dla repozytorium mopidy w katalogu /etc/apt/sources.list.d/ o nazwie mopidy.list

pi@raspberrypi ~ $ sudo nano /etc/apt/sources.list.d/mopidy.list

i wpiszemy następującą treść:

Teraz możemy zainstalować mopidy oraz wszystkie zależności pakietowe:

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get install mopidy

Możemy także zobaczyć listę dostępnych rozszerzeń (dostępnych jako pakiety) dla mopidy (backend extensions):

Posłużę się tym samym przykładem dotyczącym zewnętrznych usług dostarczania zawartości muzycznej co w poprzednim artykule i doinstalujemy obsługę spotify (będzie na później).

pi@raspberrypi ~ $ sudo apt-get install mopidy-spotify

Teraz kilka słów wyjaśnienia dotyczącego sposobu uruchamiania mopidy. Wersja aplikacji, która jest aktualnie dostępna, automatycznie dopisuje odpowiednie skrypt aby mopidy mógł startować automatycznie podczas uruchamiania RPI. W przypadku kiedy będziemy chcieli startować mopidy z konta własnego użytkownika (ręcznie), możemy dokonać pewnych zmian. Są dwa sposoby:

pi@raspberrypi ~ $ sudo dpkg-reconfigure mopidy
albo
pi@raspberrypi ~ $ sudo update-rc.d mopidy disable
pi@raspberrypi ~ $ sudo service mopidy stop

Ważne: Mopidy uruchamiane ręcznie z konta naszego użytkownika będzie miało w zupełnie innym miejscu pliki konfiguracyjne. Zamiast w katalogu /etc/mopidy, plik konfiguracyjny będzie w katalogu domowym: ~/.config/mopidy/.

Skrypt startujący (init script)  aplikację robi to jako użytkownik mopidy. Użytkownik ten musi mieć prawa do odczytu do wszystkich lokalnie podpiętych zasobów z muzyką, którą chcemy potem odtwarzać.

Aby sprawdzić poprawność działania aplikacji najpierw będziemy uruchamiali mopidy jako zwykły użytkownik (w naszym przypadki użytkownik pi)

Możemy wygenerować przykładowy plik konfiguracyjny uruchamiając mopidy:

Jak widać mopidy wskazuje nam na miejsca, które są problematyczne w pliku konfiguracyjnym i na co powinniśmy zwrócić uwagę, np. w przypadku rozszerzeń (backend extensions). Widać powyżej, że nie mamy włączonego lokalnego medium z muzyką ani skonfigurowanego rozszerzenia spotify.

Aby mopidy pracowało prawidłowo (można podłączyć się do serwera np. klientem mpd lub http) musimy wyeliminować błędy pojawiające się podczas startu aplikacji. W tym celu poddajemy edycji nasz plik konfiguracyjny. Wciskamy Ctrl+C i poprawiamy plik mopidy.conf w katalogu domowym użytkownika pi

pi@raspberrypi ~ $ nano .config/mopidy/mopidy.conf

Aby sprawdzić poprawność działania aplikacji, bez podpiętych mediów, proponuję na samym początku zmienić zapisy dla usługi lokalnej i w moim przypadku dla spotify  Wyłączymy te usługi.

Po dokonaniu tych zmian, dodatkowo możemy sprawdzić jak mopidy widzi nasz plik konfiguracyjny po zmianach:

pi@raspberrypi ~ $ mopidy config

Po ponownym uruchomieniu mopidy powinniśmy zobaczyć taki rezultat:

Testowanie

Teraz możemy przetestować połączenie za pomocą dowolnego klienta mpd (np. takiego jak w poprzednim artykule - Cantata) albo połączyć się za pomocą przeglądarki internetowej. Dla połączenia mpd numer portu to 6600 a dla połączenia http numer portu to 6680 (konfiguracja domyślna).

Widać powyżej, że nie mamy zainstalowanego żadnego klienta www na serwerze (frontend extensions). Poprawimy to teraz - zainstalujemy  klienta www (frontend extensions - web extensions).

Pod adresem https://docs.mopidy.com/en/latest/ext/web/ znajduje się lista takich klientów.

Aby w łatwy sposób zainstalować wybranego klienta, musimy najpierw dodać do systemu pakiet python-pip.

pi@raspberrypi ~ $ sudo apt-get install python-pip

Możemy teraz zainstalować klienta Moped (przykładowo oczywiście):

pi@raspberrypi ~ $ sudo pip install Mopidy-Moped

Po restarcie mopidy i wpisaniu odpowiedniego adresu w przeglądarce, zobaczymy coś takiego:

Jak widać wszystko działa poprawnie tylko jeszcze nie mamy czego słuchać:). Wcześniej dla poprawności wstępnej konfiguracji i działania aplikacji wyłączyłem w pliku konfiguracyjnym zarówno zapisy dotyczące zasobów lokalnych (dyski podpięte do RPI), jak również wyłączyłem jedyne zewnętrzne rozszerzenie, czyli mopidy-spotify. Zobaczmy co się stanie jak włączymy np. spotify (oczywiście musimy mieć konto premium w tym serwisie).

W tym celu jak wcześniej edytujemy odpowiedni plik konfiguracyjny:

pi@raspberrypi ~ $ nano .config/mopidy/mopidy.conf

i poprawiamy następujące zapisy:

Teraz ponowne uruchomienie mopidy i rezultat powinien być taki:

Widać komunikat podłączenia do spotify i pobranie playlist. A w przeglądarce...

Na koniec tej części przekopiujmy naszą konfigurację do katalogu /etc/mopidy i wystartujmy mopidy jako serwis.

pi@raspberrypi ~ $ sudo cp .config/mopidy/mopidy.conf /etc/mopidy/
pi@raspberrypi ~ $ sudo service mopidy start
pi@raspberrypi ~ $ sudo service mopidy status (sprawdzamy czy serwis wystartował)
[ ok ] mopidy is running.

Aby po kolejnym restarcie RPI, mopidy wystartowało automatycznie, wykonamy jeszcze komendę:

pi@raspberrypi ~ $ sudo update-rc.d mopidy enable

Zabawy z mopidy jest sporo a to dopiero początek możliwości konfiguracyjnych. Zapraszam na kolejny artykuł.

Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu

Więcej na tematy:

PoradnikRaspberry