Raspberry Pi i system multi-room oparty na Logitech Media Server

Niedawno przyszła pocztą kolejna Malinka (pierwszą miałem v1 B+, teraz wskoczyła 3 z promocji na Banggood), mogłem więc w nocy dokończyć kolejny projekt.

Zawsze chciałem mieć dźwięk multi-room. Nigdy jednak nie kupiłem głośników które by go obsługiwały (Denon Heos, Sonos, Samsung M) – między innymi ze względu na cenę – aż tak często nie słucham żeby wydać na nie 6-8k PLN. Wolę wydać na coś innego.

Od momentu kiedy kupiłem pierwszą Malinę, chciałem z niej zrobić coś w stylu małego centrum muzycznego. Volumio, Runeaudio czy Moodeaudio są fajne, piękne, ale nie obsługują multiroom (tutaj chyba się to zmieniło w kontekście Volumio i da się to zrobić).

Założenie projektu było następujące:
– multiroom który obsługuje radia internetowe, moją muzykę, spotify, deezer
– możliwe tanio, ale z możliwością zrobienia Hi-Fi gdzie będę uważał za stosowne

Udało mi się (no, nie był to wielki wyczyn w sumie) postawić Logitech Media Server na Raspberry Pi. Produkt co prawda już oficjalnie nie jest rozwijany przez Logitech (szkoda wielka), ale udostępnili kod, dlatego produkt nie dość, że żyje to jeszcze jest rozwijany.

Lista potrzebnych elementów:
– Raspberry Pi. Działa dobrze i na v1 B+, ale postawiłem go finalnie na nowo zakupionej wersji 3 – większa moc i więcej RAM
– karta muzyczna. Jakość standardowego jacka w Pi3 jest podła, trzeba go więc czymś zastąpić. Zacząłem od czegoś bardzo prostego i taniego – http://allegro.pl/karta-muzyczna-dzwiekowa-na-usb-7-1-hurt-f-vat-i6453599436.html
– głośniki – podpiąłem na szybko głośnik przenośny jaki miałem w domu

Instalacja LMS jest prosta: http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-stand-alone-squeezebox-server-and-player-for-bbq/, system wstaje sam, poniżej opis komend.

Serwer:
sudo apt-get install -y libsox-fmt-all libflac-dev libfaad2 libmad0
wget -O logitechmediaserver_all.deb $(wget -q -O – „http://www.mysqueezebox.com/update/?version=7.9.0&revision=1&geturl=1&os=deb”)
sudo dpkg -i logitechmediaserver_all.deb
sudo chown -R squeezeboxserver:nogroup /usr/share/squeezeboxserver/

Do odtwarzania na tym samym sprzęcie użyłem Squeezelite.

sudo alsamixer – tutaj możemy sprawdzić naszą kartę muzyczną po naciśnięciu F6, wybrać poziom dźwięku, etc.

Instalacja bibliotek:
sudo apt-get install -y libflac-dev libfaad2 libmad0

Katalog tymczasowy i ściągnięcie squeezelite:
mkdir squeezelite
cd squeezelite
wget -O squeezelite-armv6hf.tar.gz http://www.gerrelt.nl/RaspberryPi/squeezelite_ralph/squeezelite-armv6hf.tar.gz
tar -xvzf squeezelite-armv6hf.tar.gz
sudo mv squeezelite squeezelite-armv6hf

sudo mv squeezelite-armv6hf /usr/bin

sudo chmod a+x /usr/bin/squeezelite-armv6hf
sudo /usr/bin/squeezelite-armv6hf -l

Poniżej kilka przykładów wywołania i sprawdzenia czy działa karta muzyczna, którą wybraliśmy.

sudo /usr/bin/squeezelite-armv6hf -o default:CARD=ALSA -s 192.168.1.200

W przypadku karty USB możemy podać:
sudo /usr/bin/squeezelite-armv6hf -o front:CARD=Device,DEV=0 -s 192.168.1.200

Dla HDMI:
sudo /usr/bin/squeezelite-armv6hf -o hw:CARD=ALSA,DEV=1

Teraz konfiguracja uruchomienia squeezelite przy starcie systemu:
cd /home/pi/squeezelite
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite_settings.sh
sudo mv squeezelite_settings.sh /usr/local/bin
sudo chmod a+x /usr/local/bin/squeezelite_settings.sh

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
sudo chmod a+x /etc/init.d/squeezelite

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite.service
sudo mv squeezelite.service /etc/systemd/system
sudo systemctl enable squeezelite.service

cd /home/pi

Ważna sprawa. Musimy zmienić w ustawieniach naszą kartę muzyczną na taką, jakiej będziemy używać.

sudo nano /usr/local/bin/squeezelite_settings.sh

Szukamy:
SL_SOUNDCARD=”sysdefault:CARD=ALSA”
Zmieniamy na wybraną przez nas
SL_SOUNDCARD=”hw:CARD=ALSA,DEV=1″

Można jeszcze zmienić wyświetlaną nazwę:
SL_NAME=”Denon”

Co ciekawe, u mnie wysyłanie na HDMI działa tylko w momencie jeżeli przy starcie systemu odbiornik (u mnie amplituner) był włączony. Później chodzi tygodniami, ale przy restarcie musi go widocznie wykryć.

I na koniec
sudo /etc/init.d/squeezelite start

Sprawdzić wszystko możemy wchodząc na adres raspberry z portem 9000, dla przykładu 192.168.1.200:9000

Konieczne będzie założenie konta na http://mysqueezebox.com/ i podanie danych logowania na naszym serwerze.

Teraz clue! Mądrzy ludzie opracowali PiCorePlayer (https://sites.google.com/site/picoreplayer/home), który jest udostępniony w formie image zajmującego kilkadziesiąt megabajtów. Zgrywasz na kartę, wkładasz, działa. Jeżeli chcesz – ustawiasz połączenie po WiFi i voila – standalone player (jeżeli ktoś chce to może go nawet użyć w samochodzie, bo Malinę zasilisz po USB przecież). Można sobie każdą z instalacji nazwać jak chcesz – Łazienka góra, Łazienka dół, Salon, Sypialnia…

Dostęp do playera czy serwera możemy mieć (oprócz strony internetowej) również przez aplikację Squeezer na Android czy też iPhone (na który jest jeszcze iPeng). Można włączać, wyłączać odtwarzacze, grupować je, decydować czy muzyka gra na jednym czy na wszystkich, dla każdego z playerów można ustawić osobny alarm.

Poszło wszystko 'od strzału’. Radio 3, Antyradio, setki (jeśli nie tysiące) innych stacji dostępnych za kliknięciem. Na deezer posłuchałem Death-metalu, z Tune-in Radio stacji EBM, z mojej kolekcji bajek dla dzieci, z listy pluginów LMS pobrałem ważny dla mnie Bandcamp. Aplikacja Spotify też jest, ale tego nie zdążyłem jeszcze sprawdzić. Można dodawać do ulubionych, tworzyć własne listy odtwarzania, itp, itd. Możliwości konfiguracyjne są bardzo duże.

Minimalny koszt to jakieś 80 PLN za Rpi1 B+ (na serwer) + zapewne 70 PLN za Rp1 B + karta muzyczna + głośniki. Powiedzmy, że 200 PLN za możliwość odtwarzania na dwóch sprzętach.

Dalej poszło już z górki:
– zakup dwóch Rpi B na PiCorePlayery – około 160 PLN
– do salonu gdzie mam porządny sprzęt grający – połączenie ze wzmacniaczem Denon po HDMI – instalacja Squeezelite
– do sypialni tania karta muzyczna + głośniki komputerowe (mogą być i zasilane po USB)
– do łazienki i sauny BlitzWolf (http://www.banggood.com/BlitzWolf-BW-AP1-20W-Mini-12V-Hi-Fi-Audio-Stereo-Power-Digital-Car-Amplifier-FM-MP3-p-1053566.html?rmmds=search) + głośniki łazienkowe. Widzę komplety za 60-80 PLN – nie potrzebuję tam Mozarta w HiFi

Każdemu tutaj oczywiście wedle potrzeb – są i sprzęty DAC (HiFiBerry) za kilkaset złotych które dają świetną jakość dźwięku.

W domoticz jest obsługa Logitech Media Server, w związku z tym:
– jako że nie lubię, gdy sprzęt chodzi i pobiera energię bez potrzeby – każdy player wraz z głośnikiem (jeżeli aktywny) podpięty pod gniazdko 433MHz i zrobione sceny, które: włączą player, ustawią ulubioną stację (oczywiście z możliwością zmiany telefonem), zaczną grać na przykład w łazience o 6:45 gdy wstajemy i idziemy się kąpać a wyłączą o 7:30 gdy wychodzimy z domu
– obsługa pasywnych nie ma sensu pod włącznikiem, bo tutaj Malina pobiera bardzo mało prądu w stanie spoczynku

W Domoticz możemy dodać serwer z poziomu Hardware, gdzie podajemy adres i port. System automatycznie wykryje nasze odtwarzacze.

Jak dla mnie combo Logitech Media Server + piCorePlayer jest fantastycznym systemem dla moich potrzeb.

Życzę miłego słuchania i zapraszam do kontaktu.

22 komentarze do “Raspberry Pi i system multi-room oparty na Logitech Media Server”

  1. A to zależy 😉 Z jednej (powiedzmy głównej, tam gdzie postawiłem Logitech Media Server) dźwięk wychodzi po HDMI, tam odtwarza Squeezelite. Ale pozostałe, owszem, każda ma prostą kartę na USB i PiCorePlayer. Nie zależało mi specjalnie na jakości tym razem. Dla testów i sprawdzenia możesz podpiąć głośniki i do gniazda jack.

    Odpowiedz
  2. Prawie mi się udało. Serwer startuje i uruchamia się po wpisaniu IP maliny (192.168.0.116:9000), ale co dziwne działa również z 192.168.0.117:9000. A w Squeezer jest automatycznie dodawany jako 192.168.0.117:9090. Już nic nie rozumiem. Na androidzie nie wyszukuje żadnych stacji. Natomiast przez przeglądarkę wyszukuje stacje ale nie odtwarza nic.

    Odpowiedz
  3. Nawet nie zdążyłem odpisać (coś się stało z system powiadamiania o komentarzach na blogspot i nie dostaję e-maili), ale widzę, że sobie poradziłeś. Co mnie niezmiernie cieszy 🙂 Używam LMS już długo i bardzo sobie go chwalę.

    Odpowiedz
  4. Czy LMS i Domoticz mogą działać na tym samym Raspberry, czy musisz mieć 2 osobne Maliny?
    Rozumiem, że z Domoticzem łączysz tylko serwer LMS. Co w przypadku, gdy playery są wyłączone? (pisałeś o włącznikach na 433MHz) Domoticz pewnie ich nie widzi i żeby uruchomić odtwarzacz, najpierw z poziomu Domoticza trzeba by było włączyć gniazdko (kilkanaście sekund na uruchomienie) i dopiero po tym może być włączony odtwarzacz. Zgadza się?

    Odpowiedz
  5. Cześć!

    LMS i Domoticz mogą działać na jednym Raspberry, nie ma z tym żadnego problemu. Zresztą – taką na początku miałem konfigurację, ale z powodów typowo wydajnościowych wolałem te dwa serwisy rozdzielić. A dwa – Max2Play bardzo ładnie zarządza serwisami LMS oraz innymi.

    Co do gniazdek – dokładnie jest tak jak piszesz. W tym momencie został mi tylko jeden piCorePlayer skonfigurowany na Raspberry. Gdy chcę go włączyć, to:
    – włączam gniazdko (433Mhz, ale chcę się ich w najbliższym czasie pozbyć)
    – czekam kilkanaście sekund aż piCorePlayer pojawi się dostępny
    – włączam muzykę i słucham

    Jednak to gniazdko jest na tyle rzadko włączane i wiem, że zostanę w tym miejscu dłużej (dla ścisłości, muzyka w saunie), że mogę te kilka sekund poczekać. W przypadku, powiedzmy, kuchni – Raspberry powinno być cały czas włączone.

    Odpowiedz
  6. Cześć, masz pomysł jak rozwiązać stream muzyki w drugą stronę? Mam pomysł na umieszczenie np. w łazience Rpi z głośnikami, oraz Rpi z glośnikami przy TV i amplitunerze Denon (Rpi przed HDMI do Denon). Rozumiem, że mogę puścić streama z serwera Rpi na oba Rpi wtedy będzie grało w łazience i na Denon. a W 2 stronę? Jak stream będzie z TV na Denon i chciałbym to puścić do głośników w łazience? Z góry dzięki za wskazówki!

    pozdrawiam,
    Kamil

    Odpowiedz
  7. Mniej więcej rozumiem, ale co chcesz streamować z TV? Przesłanie dźwięku z Denona do Raspberry to raczej się nie uda, przynajmniej jakoś nie mogę w głowie znaleźć takiego rozwiązania. Raspberry z tego co wiem nie obsługuje ARC.

    Odpowiedz
  8. Ja multiroom mam rozwiązany inaczej. Jedno Rpi 3 do tego dwie karty 7.1 – skonfigurowane jako każda karta 4 wyjścia stereo. Mam łącznie z dwóch kart 8 wyjść stereo. Głośniki w suficie w pomieszczeniach. Obsługa podobnie jak w artykule. Każde wyjście stereo jest niezależnie sterowane i ma swoją nazwę. Z poziomu openhaba komunikaty, powiadomienia etc.

    Odpowiedz
  9. Hey,
    kolega pytał o pomysły na radio w łazience
    U mnie to:
    1 dedykowane RPi3 – na niej KODI, ustawiona automatyczna stacja z wybraną muzyką (24h chillout).
    2. do RPI niej podłączone głośniki, ułożone na podwieszanym suficie.
    3. głośniki, tj. ich wzmacniacz, wpięte do gniazdka sterowane przez RFlink.
    4. do tego czujka ruchu w łazience, reagująca na wejście
    5. w łazience są LEDy, podłączone do sterownika Milight

    W domu jest jeszcze inne RPi, które jest sercem całej automatyki.
    Więc teraz mamy taki scenariusz:
    1. po wejściu do łazienki czujka ruchu wykrywa ruch i jest to odnotowywane przez główne RPi, gdzie jest zbudowana logika zachowań:
    a) jeśli wykryty ruch ma miejsce w porach nocnych, u mnie to 23-5, to włączane są łazienkowe LEDy, ale na niskim poziomie intensywności i wskazanym kolorze. Czyli tak, że wejść do łązienki bez zapalania głównych, intensywnych świateł i nawet LEDY żeby nie raziły śpiących jeszcze oczu :-).
    b) jeśli ruch ma miejsce między 5 a 23 to LEDy zapalane są intesywniej, ponadto włączane jest poprzez RFlink gniazdo zasilajace wzmaczniacz głośników. Co powoduje, że włączana jest muzyka z łazienkowego KODI. Logika w głównym RPi decyduje, na jak długo ta muzyka ma być włączana, to to jest trochę modulowane w ciągu dnia.

    Wady tego rozwiązania – jednak trzeba poświęcić RPi, które ja akurat miałem luzem. No i że pracuje ono 24/7/365.
    Ale efekt włączającej się muzyczki i ledów – bezcenny
    pozdrawiam

    Odpowiedz
  10. Cześć, bardzo fajny projekt i chciałbym zrobić bardzo podobne rozwiązanie jednak jeszcze mi brak doświadczenia. Mam rozłożone kable w 12-tu pomieszczeniach 2×0.75mm2 audio i czy to nie za słaby kabel na maksymalną odległość do 20-25m? Czy na końcu w razie słabo grającego głośnika można dać wzmacniacz by grało to głośniej? Najlepiej jak by mi to wszystko leciało z jednej malinki którą chcę wstawić w kotłowni. Mam też opcje włożenia malinki do każdego pomieszczenia w których mam kabel audio, skrętkę 5e, ytdy 12×0.5 i dociągnę zasilanie 3×1.0mm2 ze światła i mogę mieć tam fazę cały czas bez włączonego światła, bo kabel jest 5×1.5mm2. Nie dawno dowiedziałem się, że kable audio jakie powinienem mieć to 2×1.5 do 20m, ale na 2×0.75 też gra mi muzyka. Proszę podpowiedzcie jak dobrać sprzęt do malinki 3, by można było sterować tym z i najlepiej z kotłowni.

    Dzięki i pozdrawiam serdecznie

    Odpowiedz

Dodaj komentarz