Serwer + VD do AirPlay i LAN

  • 0 Odpowiedzi
  • 925 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Serwer + VD do AirPlay i LAN
« dnia: Czerwiec 18, 2016, 10:47:04 am »
Hej,

Jako że korzystam właściwie wyłącznie z systemów iOS i OS X to naturalnym pomysłem na muzykę w nowym mieszkaniu z Fibaro był AirPlay. Niestety nie znalazłem rozwiązania które integrowało by go z Fibaro. Poniżej prezentuję mój pomysł na takie sterowanie w oparciu o serwer (Mac Mini z programem iTunes, podpiętym do Apple Music) i urządzenia wirtualne. Może kogoś to zainspiruje, może ktoś podpowie jakieś inne rozwiazanie...


Serwer: Mac Mini z oprogramowaniem iTunes (usługa Apple Music integrująca playlisty pomiędzy moimi urządzeniami) + GlassFish.
Sterowanie muzyką odbywa się za pomocą komend http. Za ich obsługę odpowiada prosty Servlet. Odbiera on komendy, wykonuje małą część logiki sterowania (reszta przeniesiona na VD) i za pomocą AppleScript steruje iTunesem.

Dostępne komendy (w zapytaniu przesyłamy odpowiednie parametry, różne komendy wymagają różnych parametrów:

/AirPlayMusic:

 - action=isPlaying - zwraca informację czy iTunes  odtwarza muzykę na jakimkolwiek urządzeniu
 - action=isPlayingRoom, room=NAZWA_GLOSNIKA - zwraca informację czy na danym głośniku jest aktualnie odtwarzana muzyka
 - action=isSpeakerEnabaled, room=NAZWA_GLOSNIKA- zwraca informację czy dany głośnik jest aktywny (wybrany jako aktualne źródło dźwięku
 - action=getVolume i setVolume, room=NAZWA_GLOSNIKA (w przypadku setVolume dodatkowo value=GLOSNOSC) - pobierają i ustawiają głośność dla danego głośnika
 - action=play, room=NAZWA_URZADZENIA, playlilst=NAZWA_PLAYLISTY - jeżeli muzyka nie jest odtwarzana na żadnym z głośników to na wskazanym głośniku rozpoczyna się odtwarzanie wybranej playlisty, jeżeli muzyka jest już odtwarzana to wskazany głośnik zaczyna grać trwającą playliste. Zwraca nazwę odtwarzanej playlisty.
 - action=setPlaylist, playlist=playlista - ustawia nową playliste
 - action=stopAll - zatrzymuje odtwarzanie muzyki na wszystkich głośnikach, rozłącza je z iTunesem
 - action=stop, room=NAZWA_URZADZENIA - jeżeli gra więcej niż 1 głośnik to odłącza wskazany, jeżeli wskazany głośnik jest jedynym to zatrzymuje odtwarzanie
 - action=getTitle - zwraca tytuł i wykonawcę  aktualnie granej piosenki
 - action=getPlaylist - zwraca nazwę aktualnej playlisty lub źródła muzyki
 - action= next, action=prev - następna, poprzednia piosenka

/WakeUpAlarm: uruchamia bezpośrednio w Sypialni playlistę Alarm na głośność podaną w parametrze vol. Funkcjonalność zrealizowana jako osoby Servlet aby wyeliminować możliwe błędy po stronie VD - wymusza włączenie głośnika, niezależnie od stanu VD sterującego muzyką.


Dodatkowe funkcje:

/RouterReebot: resetuje router za pomocą skryptu bash. W przypadku mojego modelu potrzebne były m.in. informacje z Cookies, nie miałem pomysłu jak to obsłużyć po stronie HC2.


Głośniki:
 - Głośnik AirPlay w Sypialni
 - Wzmacniacz sterowany switchem (On/Off) + AirPort Express jako źródło dźwięku w Łazience
 - Głośniki podpięte bezpośrednio do Maca Mini w Salonie



Na obecnym etapie mam przygotowane 2 VD do sterowania muzyką w sypialni i łazience.

Cechy wspólne:
- Włącz/wyłącz odtwarzanie. Jeżeli włączane urządzenie będzie 1 grającym to odtworzona zostaje wybrana na nim playlista, w przeciwnym wypadku zaczyna ono odtwarzać już wybraną playlistę.
- Wybór jednej z 4 playlist. Jeżeli chcemy odtwarzać konkretny album czy piosenkę wybieramy ją za pomocą aplikacji Apple Remote.
- Wyświetlenie tytułu i wykonawcy aktualnie odtwarzanej piosenki.
- Wyświetlenie źródła aktualnie odtwarzanej muzyki - nazwa playlisty lub zasobu (np. dla dowolnego albumy będzie to Muzyka).
- Poziom głośności reprezentowany sliderem. Osobno dla każdego głośnika.
- Zmiany playlsity czy głośności w iTunes są synchronizowane z VD.
- Osobne przyciski On/Off dla ułatwienia sterowania VD za pomocą scen i wspólny przycisk On/Off do podpięcia jako główny przycisk VD.
- Uruchomienie odtwarzania w iTunes powoduje uruchomienie VD i synchronizację tytuły, playlisty i głośności.
- Ikona sygnalizuje stan urządzenia: kolorowa - włączone, skala szarości - wyłączone.

Sypialnia:
- Przyciski Next i Prev: następna lub poprzednia piosenka
- Przesyłając muzykę bezpośrednio z innego urządzenia do głośnika (np. telefonu) plugin pokazuje stan Wyłączony. Nie ma wtedy możliwości sterowania odtwarzaniem - protokół AirPlay przewiduje sterowania za pomocą przycisków głośnika lub urządzenia przesyłającego muzykę.

Łazienka:
- Przycisk Weź Prysznic który uruchamia playlistę Prysznic i zadaną głośność. Jeżeli muzyka jest już odtwarzana, to wybór playlisty jest pomijany.
- Przycisk Rozszerz muzykę (do wykorzystania w scenach). Jeżeli muzyka jest już odtwarzana, to uruchamia głośnik na zadaną głośność. Stworzone w celu automatycznego uruchomienia już odtwarzanej muzyki po wejściu do łazienki.
- Dla działania muzyki w łazience potrzebny jest źródło dźwięku przesłane do AirPort Express i uruchomiony wzmacniacz. W przypadku gdy odtwarzamy muzykę z innego urządzenia, VD ma stan Wyłączony ale w polu playlista wyświetla tekst "Zewnętrzny streaming".


Następne w kolejności będzie VD dla Salonu i odtwarzanie komunikatów głosowych przez AirPlay.
Przy odtwarzaniu muzyki z serwera z iTunes nie ma możliwości wyboru różnych playlist na poszczególne głośniki. Można to prawdopodobnie zrealizować za pomocą innych odtwarzaczy. Z racji rozmiaru mieszkania (70m2) nie miałem takiej potrzeby.


Urządzenie VD do resetu HC2 i routera:
 - Ręczne resetowanie za pomocą przycisku.
 - Reset routera w przypadku błędu połączenia z określoną stroną. Testowane co 5 min, w przypadku gdy nie może się połączyć jest on resetowany. Rozwiązuje problem z przywieszającymi się routerami.

Screeny urządzeń i VD do resetu w załącznikach.