Założenia
Do stworzenia tego typu odtwarzacza możemy wykorzystać standardowe komponenty Home Assistant (rozwiązanie jest o tyle dobre, że optymalizujemy swój serwer, nie instalujemy dodatkowych wtyczek, które w miarę rozbudowy naszego smart home mogą obciążać nasze urządzenie centralne).
Moim głównym założeniem było przygotowanie takiego rozwiązania, które pozwoli w pierwszej kolejności wybrać pomieszczenie a następnie stację radiową i odtworzenie jej. W bardziej rozbudowanej wersji stworzyłem również (tym razem z wykorzystaniem niestandardowych dodatków) możliwość zarządzania muzyką w konkretnych pokojach w moim domu.
Wygląd i funkcjonalność
Postanowiłem stworzyć nową kartę o nazwie „Muzyka” z poziomu której będę zarządzał odtwarzaczem, dodatkowo potem skonfiguruję dla każdego pokoju specjalną kartę w które poza zarządzaniem oświetleniem będzie możliwość wybrania interesującej muzyki właśnie dla tego pomieszczenia.
Powyższy przykład jest zrealizowany z wykorzystaniem podstawowych komponentów, wygląda przejrzyście i działa bardzo dobrze.
Dla bardziej zaawansowanych użytkowników lub osób lubiących minimalistyczny styl stworzyłem wersję bardziej kompaktową. Do jej stworzenia wykorzystałem Dodatki Interfejsu użytkownika z HACS (Home Assistant Community Store). Były to: Mini Media Player oraz layout-card.
Wideo-poradnik
Jak zwykle najłatwiej wytłumaczyć wszystko na filmie, dlatego zapraszam do obejrzenia poradnika:
Skrypty odtwarzacza
Jako uzupełnienie filmu umieszczam wszystkie skrypty, które możesz sobie skopiować i wkleić do swojego Home Assistanta.
scripts.yaml
#Skrypt Odtwarzacza Multimedialnego
mediaplayer_play:
alias: Graj / Play
sequence:
- service: media_player.volume_set
data:
entity_id: >
{% if is_state("input_select.mediaplayer_glosnik", "Sypialnia") %} media_player.sypialnia_wszystkie
{% elif is_state("input_select.mediaplayer_glosnik", "Salon") %} media_player.ramka
{% elif is_state("input_select.mediaplayer_glosnik", "Dzieci") %} media_player.glosnik_dzieci
{% endif %}
volume_level: '{{ states("input_number.mediaplayer_glosnosc") }}'
- service: media_player.play_media
data:
entity_id: >
{% if is_state("input_select.mediaplayer_glosnik", "Sypialnia") %} media_player.sypialnia_wszystkie
{% elif is_state("input_select.mediaplayer_glosnik", "Salon") %} media_player.ramka
{% elif is_state("input_select.mediaplayer_glosnik", "Dzieci") %} media_player.glosnik_dzieci
{% endif %}
media_content_id: >
{% if is_state("input_select.mediaplayer_zrodlo", "Antyradio") %} http://ant-waw-01.cdn.eurozet.pl:8602
{% elif is_state("input_select.mediaplayer_zrodlo", "Radio Zet") %} http://radiozetmp3-01.eurozet.pl:8400
{% elif is_state("input_select.mediaplayer_zrodlo", "Zlote Przeboje") %} http://wroclaw.radio.pionier.net.pl:8000/pl/zloteprzeboje.ogg
{% endif %}
media_content_type: 'music'
extra:
thumb: >
{% if is_state("input_select.mediaplayer_zrodlo", "Antyradio") %} https://hejsmart.pl/ha/antyradio.png
{% elif is_state("input_select.mediaplayer_zrodlo", "Radio Zet") %} https://hejsmart.pl/ha/radiozet.png
{% elif is_state("input_select.mediaplayer_zrodlo", "Zlote Przeboje") %} https://hejsmart.pl/ha/zloteprzeboje.png
{% endif %}
title: "{{states('input_select.mediaplayer_zrodlo')}}"
configuration.yaml
w pliku konfiguracyjnym musisz dodać poniższe linijki (które definiują nowo dodane pliki)
input_number: !include input_number.yaml
input_select: !include input_select.yaml
Sprawdź czy posiadasz też definicję pliku ze skryptem script: !include scripts.yaml
input_select.yaml
#źródło odtwarzacza
mediaplayer_zrodlo:
name: 'Co chcesz słuchać'
options:
- 'Antyradio'
- 'Radio Zet'
- 'Zlote Przeboje'
initial: 'Radio Zet'
icon: mdi:radio
#Głośnik odtwarzacza
mediaplayer_glosnik:
name: 'Gdzie chcesz słuchać'
options:
- 'Sypialnia'
- 'Salon'
- 'Dzieci'
initial: 'Sypialnia'
icon: mdi:speaker-wireless
input_number.yaml
#Głośność Odtwarzacza
mediaplayer_glosnosc:
name: Głośność
icon: mdi:volume-high
initial: 0.3
min: 0
max: 1
step: 0.05
mode: box
Dashboard – skrypt
type: horizontal-stack
cards:
- type: entities
entities:
- entity: input_number.mediaplayer_glosnosc
- entity: input_select.mediaplayer_glosnik
- entity: input_select.mediaplayer_zrodlo
footer:
type: buttons
entities:
- entity: script.mediaplayer_play
name: Uruchom / Play
icon: mdi:play
- type: vertical-stack
cards:
- type: media-control
entity: media_player.sypialnia_wszystkie
name: Sypialnia
- type: media-control
entity: media_player.ramka
name: Salon
- type: media-control
entity: media_player.glosnik_dzieci
name: Dzieci
Bardzo dziekuje I poizdrawiam
Czy jest możliwość uruchomienia podobnego rozwiązania z wykorzystaniem amplitunera Denon, Marantz. HA wykrywa mi taki amplituner jako mediaplayer, jednak domyślnie mogę go tylko włączyć/wyłączyć, zmienić źródło i głośność. Muzyki nie odtwarza.
Może ma Pan już jakieś gotowe rozwiązanie.
Gotowego rozwiązania nie mam, ponieważ takiego sprzętu nie posiadam, natomiast jeżeli amplituner posiada encję media_player.jakas_nazwa_urzadzania to spokojnie możesz w skrypcie dodać ją jako entity_id urządzenia.
Sprawdź proszę w Home Assistatnt. Wpisz je tutaj w komentarzu, postaram się pomóc.
Czy posiadane glosniki Google Home maja juz mozliwosc korzystania z PL i sterowania domem po polsku?
Zrobiłem wg poradnika i mam problem:
Po kliknięciu na button uruchamia się skrypt i automatycznie się wyłącza. Muzyka nie gra. Gdzie może być problem?
Ogromne dzięki za super poradnik. Zastanawiam się jak ten skrypt (lub podobny) rozbudować o możliwość uruchamiania wybranej stacji radiowej o określonej porze w wybrane dni tygodnia. Coś takiego byłoby super funkcjonalnością.
Witam jaka jest strona do radia. Chodzi o linki
Jeżeli chodzi Ci link do listy stacji radiowych to: http://fmstream.org/
Hej, udało mi sie wszystko ładnie ogarnąć według poradnika, chociaz moje głośniki nie chciały do konca współpracowac 🙂 Mam jednak jeden problem, nie jestem w stanie wymusic, żeby ten panel media control kolorował się jak u Ciebie – próbowałem już z różnymi linkami, formatami obrazów, dla pojedynczego wpisu, z lokalną ścieżką – żadna opcja nie działa :/ Masz moze jakas wskazówke? W necie niewiele znalazłem póki co. Z góry dzięki 🙂
Hej, chodzi Ci o „okładki” (logo w tle) radia? umieść tutaj część swojego kodu ze definicją okładek.
No właściwie też mam ten problem a w dodatku nie odtwarza stacji radiowych
Czy można ogarnąć ten odtwarzacz muzyczny wykorzystując radio browser? Jest tam o wiele więcej stacji radiowych.Pozdrawiam
Oczywiście, że można skorzystać z RadioBrowser. W tym poradniku chciałem bardziej skupić się na możliwościach wyboru elementów od siebie nie zależnych. Od tamtej pory zostały w Home Assistant wprowadzone zmiany, teraz w zakładce Media masz źródła muzyki na na dole masz głośniki i możesz od razu wysłać konkretną muzykę na głośnik (w taki sposób właśnie będziesz mógł, po zainstalowaniu Radio Browser stworzyć ten scenariusz o który Ci chodzi.)
Świetny poradnik. Wszystko działa jak trzeba, poza jednym :). Niestety z media playerem homepod mini nie chce działąć.
Panie Bartoszu, świetna robota, dziękuję bardzo. Może Pan doradzić jak zmienić wybór radiostacji i zamiast drop down menu zrobić ikony radiostacji do kliknięcia, a zamiast menu wyboru głośnika, ikony wyboru głośnika?