Інтернет-радіо в Home Assistant: як слухати українські станції по всьому дому

Home Assistant є повноцінним медіахабом, який об’єднує в одну систему колонки Google, Sonos, WiiM, саморобні ESP32-приймачі та будь-які DLNA-пристрої. Масштаб спільноти теж показовий: на State of the Open Home 2025 прозвучала оцінка у 2 мільйони активних інсталяцій, причому аналітику вмикає приблизно чверть користувачів. Для українського слухача це означає просту річ: улюблені станції можна запускати в будь-якій кімнаті одним дотиком, автоматизацією або голосом, і для цього не потрібні платні сервіси.

Найбільше часу в такому проєкті забирає пошук робочих адрес потоків. Станції змінюють сервери, переходять з MP3 на AAC, додають HLS, і посилання з форуму трирічної давності часто вже мертве. Тому почнімо з джерела потоків, а потім розберемо відтворення на конкретних платформах.

Архітектура домашнього радіо

Схема складається з трьох рівнів. Перший рівень становить джерело: адреса аудіопотоку станції у форматі Icecast або Shoutcast, рідше HLS. Другий рівень займає Home Assistant, який зберігає список станцій, формує команди і запускає автоматизації. Третій рівень утворюють кінцеві пристрої, тобто сутності media_player: Chromecast, Sonos, LinkPlay-колонки, ESP32-радіо, смарт-телевізори.

Сам Home Assistant звук не декодує. Він передає колонці URL, і далі пристрій сам підключається до сервера станції. Звідси випливає перша технічна вимога: колонка має підтримувати кодек потоку. MP3 128–320 кбіт/с відтворює практично все, AAC і AAC+ підтримують Chromecast, Sonos і WiiM, HLS потребує окремої перевірки на кожному пристрої. Друга вимога стосується формату посилання. Більшість колонок очікує пряму адресу потоку, і файл .m3u чи .pls у полі media_content_id вони сприймають через раз. Плейлисти зручно використовувати там, де їх уміє читати проміжний шар, наприклад Music Assistant або прошивка ESP32-радіо.

Варто врахувати і зміни в самій платформі. У релізі 2026.9 інтеграцію VLC видалили, оскільки вона працювала лише на застарілому типі інсталяції Home Assistant Core; інтеграція VLC via Telnet залишилася доступною. Тож старі інструкції з відтворенням радіо безпосередньо на сервері через VLC сьогодні вже неактуальні.

Плейлист українських станцій

Найшвидший спосіб зібрати перевірені потоки дає каталог radioteka.com.ua. На сайті зібрані українські станції з робочими адресами трансляцій. Ви відкриваєте сторінки потрібних радіо, додаєте їх в Обране, а потім у розділі Обране завантажуєте готовий плейлист зі своєю добіркою. Так з’являється єдиний файл, у якому вже є Українське радіо, Промінь, Культура, Хіт FM, Radio ROKS чи будь-які регіональні станції, які ви слухаєте.

radioteka віддає плейлист одразу в кількох форматах, і кожен має своє призначення в розумному домі:

  • M3U читають Music Assistant, VLC, Kodi, більшість медіасерверів і IPTV-плеєрів; цей формат зручно покласти в теку /media Home Assistant;
  • PLS класичний формат Winamp і Shoutcast, його приймають Music Assistant, OwnTone і багато апаратних інтернет-приймачів;
  • KaRadio список станцій для однойменної прошивки ESP8266/ESP32, який імпортується через веб-інтерфейс пристрою;
  • yoRadio готовий playlist.csv для прошивки yoRadio на ESP32, яку можна інтегрувати з Home Assistant через MQTT.

Якщо вам потрібна лише одна станція для кнопки чи автоматизації, відкрийте її сторінку на radioteka і скопіюйте пряму адресу потоку. Саме вона піде в YAML-приклади нижче.

Базове відтворення через media_player.play_media

Будь-яку станцію можна запустити стандартною дією media_player.play_media. Вона працює однаково для Chromecast, Sonos, LinkPlay, DLNA і більшості інших плеєрів:

action: media_player.play_media
target:
  entity_id: media_player.kukhnia
data:
  media_content_id: "https://ПРЯМА-АДРЕСА-ПОТОКУ"
  media_content_type: music

Адресу підставте з картки станції на radioteka. Перевірити потік до написання автоматизацій зручно в розділі «Інструменти розробника → Дії»: якщо станція заграла звідти, вона гратиме і з дашборду. Додатково встановіть інтеграцію Radio Browser, вона додає в медіабраузер Home Assistant світовий каталог станцій. Українські радіо там теж є, проте адреси в ньому додають користувачі, тому для щоденного прослуховування надійніше тримати власний перевірений список.

Music Assistant як центр домашнього радіо

Для дому з кількома колонками різних виробників найзручнішим рішенням є Music Assistant. Це окремий сервер, який ставиться як застосунок у Home Assistant OS і має офіційну інтеграцію з ядром. Він приймає станції з будь-яких джерел і розсилає звук на Chromecast, Sonos, AirPlay, DLNA, Snapcast, Squeezebox та інші протоколи.

Станції в Music Assistant потрапляють кількома шляхами. Окрему станцію можна додати через пункт «Add item from URL» у розділі Radio, і це працює також для локальних Icecast-потоків; для роботи з плейлистами підтримуються формати M3U, M3U8 і PLS. Тобто плейлист, завантажений з radioteka, достатньо покласти в теку медіа, підключити її як файлове джерело, і увімкнути в налаштуваннях імпорт плейлистів у бібліотеку Music Assistant. Улюблені станції з’являться в інтерфейсі з назвами, і їх можна позначити як обрані для швидкого доступу.

Окремий плюс Music Assistant помітний у мультирумі. За словами учасників спільноти, при групуванні колонок сервер забирає з інтернету один потік і локально розподіляє його на кожен пристрій. Для слабкого мобільного інтернету чи Starlink із лімітом трафіку це відчутна економія: п’ять кімнат споживають стільки ж, скільки одна.

Запуск станції через Music Assistant в автоматизаціях виглядає так:

action: music_assistant.play_media
target:
  entity_id: media_player.vitalnia_ma
data:
  media_id: "Радіо Промінь"
  media_type: radio

Chromecast і Google Nest

Колонки Google Nest Audio, Nest Mini, а також телевізори з Google TV і Chromecast Audio додаються в Home Assistant інтеграцією Google Cast автоматично, через mDNS. Для радіо вони добре працюють з прямими адресами MP3 і AAC. Плейлисти .m3u та .pls Chromecast самостійно розбирає нестабільно, тому в play_media передавайте адресу потоку, взяту з картки станції на radioteka, або запускайте станцію через Music Assistant, який сам розпакує плейлист.

Групи динаміків, створені в застосунку Google Home, Home Assistant бачить як окрему сутність media_player. Відправлена на таку групу станція звучатиме синхронно в усіх кімнатах групи. Зміна складу групи можлива тільки в Google Home, тому для гнучкого мультируму з довільним набором кімнат краще використовувати Music Assistant.

Sonos

Інтеграція Sonos в Home Assistant локальна і не вимагає облікового запису. Вона дає повне керування гучністю, групуванням і джерелами. Радіопотоки Sonos приймає через media_player.play_media з типом music. Для коректного відображення назви станції в застосунку Sonos і для режиму «живого» ефіру адресу варто передавати з префіксом x-rincon-mp3radio:// замість https://. Цей прийом давно використовується в спільноті Home Assistant і працює для MP3- та AAC-потоків.

Групування Sonos виконується стандартними діями media_player.join і media_player.unjoin. Головна колонка групи отримує станцію, решта синхронно відтворює той самий звук з мінімальною затримкою, оскільки синхронізацію забезпечує сама екосистема Sonos.

LinkPlay, WiiM, Arylic та Audio Pro

Платформа LinkPlay лежить в основі стримерів WiiM, підсилювачів Arylic, частини колонок Audio Pro, Edifier і десятків менш відомих брендів. Починаючи з Home Assistant 2024.08, плеєри на чипсеті LinkPlay підтримуються офіційно, без сторонніх компонентів. Підключення відбувається локально й не потребує облікових даних, а пристрої зазвичай знаходяться автоматично через Zeroconf.

Офіційна інтеграція дає два додаткові інструменти. Пресети, налаштовані на пристрої, запускаються дією linkplay.play_preset, а кілька LinkPlay-пристроїв об’єднуються в мультирум через media_player.join і media_player.unjoin. На цьому зручно побудувати схему, де шість найулюбленіших українських станцій записані в пресети через застосунок WiiM Home, а Home Assistant лише перемикає їх за номером. Пресет виконується прошивкою колонки, тому станція стартує навіть за тимчасових проблем зі зв’язком із сервером Home Assistant.

action: linkplay.play_preset
target:
  entity_id: media_player.wiim_pro
data:
  preset_number: 1

Решту станцій із плейлиста radioteka відтворюйте звичайним play_media з прямою адресою потоку.

Мультирум на змішаному обладнанні

У реальному будинку рідко стоїть техніка одного бренду: на кухні Nest Mini, у вітальні Sonos, у спальні WiiM з пасивними колонками. Нативні групи кожної екосистеми між собою не синхронізуються. Тут знову допомагає Music Assistant, який створює власні групи плеєрів поверх різних протоколів і вирівнює затримки. Для повністю локального й дуже точного мультируму на Raspberry Pi та старих ПК підходить Snapcast, з яким Music Assistant теж уміє працювати.

Сценарій «радіо по всьому дому» в такій конфігурації зводиться до однієї групи Music Assistant, наприклад media_player.ves_dim, на яку відправляється станція. Автоматизація може вмикати її о 7:00 у будні з гучністю 20%, а при відкритті вхідних дверей увечері додавати до групи передпокій.

ESP32-радіо на KaRadio та yoRadio

Окремий клас пристроїв становлять саморобні інтернет-приймачі на ESP32. Плата з декодером VS1053 або I2S-ЦАП, дисплей і енкодер обходяться в кілька сотень гривень і перетворюють старі колонки на автономне радіо, яке грає навіть без смартфона поруч.

Прошивка yoRadio найкраще інтегрується з розумним домом. Для зв’язку з Home Assistant потрібна інтеграція MQTT і компонент yoradio, скопійований у custom_components; плейлист пристрою вміщує до 65535 станцій. Розробник також додав підтримку віддаленого відтворення з Home Assistant через Local Media, Radio Browser і TTS, тому приймач можна використовувати і для голосових оповіщень. Плейлист у форматі yoRadio з radioteka завантажується через веб-інтерфейс пристрою, і всі обрані станції одразу з’являються в меню приймача та в сутності Home Assistant.

KaRadio працює на ESP8266 і ESP32 і керується через HTTP-API та telnet. Готовий список станцій у форматі KaRadio з обраного на порталі radioteka імпортується через веб-сторінку пристрою. Цікаво, що yoRadio вміє імпортувати файл WebStations.txt від KaRadio, тож при переході з однієї прошивки на іншу список станцій зберігається.

Кнопки радіо на дашборді

Останній крок полягає в тому, щоб радіо вмикалося з панелі одним дотиком. Найгнучкіша схема складається зі скрипта зі словником станцій і карток-кнопок, які передають у скрипт назву станції та кімнату.

Скрипт у scripts.yaml:

radio_play:
  alias: Увімкнути радіостанцію
  mode: restart
  fields:
    station:
      description: Назва станції
    player:
      description: Плеєр або група
  variables:
    stations:
      "Українське радіо": "https://АДРЕСА-ПОТОКУ-1"
      "Радіо Промінь": "https://АДРЕСА-ПОТОКУ-2"
      "Радіо Культура": "https://АДРЕСА-ПОТОКУ-3"
      "Хіт FM": "https://АДРЕСА-ПОТОКУ-4"
  sequence:
    - action: media_player.volume_set
      target:
        entity_id: "{{ player }}"
      data:
        volume_level: 0.25
    - action: media_player.play_media
      target:
        entity_id: "{{ player }}"
      data:
        media_content_id: "{{ stations[station] }}"
        media_content_type: music

Картка кнопки на дашборді:

type: button
name: Промінь на кухні
icon: mdi:radio
tap_action:
  action: perform-action
  perform_action: script.radio_play
  data:
    station: "Радіо Промінь"
    player: media_player.kukhnia

Кілька таких кнопок, вкладених у картку grid з трьома колонками, утворюють компактний пульт на 6–9 станцій. Під ним розмістіть стандартну картку media-control для потрібного плеєра: вона покаже назву станції з ICY-метаданих потоку, регулятор гучності та кнопку зупинки. Для вибору кімнати додайте помічник input_select зі списком плеєрів і передавайте в скрипт player: "{{ states('input_select.radio_room') }}". Тоді одна кнопка станції відправлятиме звук туди, куди вказує перемикач кімнат, включно з групою «весь дім» з Music Assistant.

Для власників LinkPlay-пристроїв кнопки можна прив’язати безпосередньо до linkplay.play_preset, а для ESP32-приймачів на yoRadio до сутності, створеної MQTT-компонентом. Список станцій при цьому залишається єдиним: один плейлист з Обраного на radioteka, експортований у формат кожного пристрою.