Умный дом на Home Assistant и 3D печать.
 
Telegram-канал FoxJoy
Почта: dm@foxjoy.ru
Гаражный медиацентр

Гаражный медиацентр

Всё началось с простой идеи: хочу в гараже музыку. Не просто колонку с блютузом, а нормальную систему: радио, плейлисты с сетевого диска, управление с телефона по WiFi, интеграция с умным домом. Чтобы включил — и играет. Чтобы громкость — качелькой на телефоне. Чтобы "Алиса, включи радио "Шоколад" в гараже" — и оно работало.

Железо: Андроид ТВ-приставка H96 Max, на Rockchip RK3318 (4 ГБ ОЗУ, 64 ГБ) — когда-то у меня на ней Home Assistant крутился, пока я его не переселил на мини ПК.  По этому я просто почистил операционку от всего ненужного.
Изначально я ставил Multitool multitool.img.xz и Armbian_23.08.0-trunk_Rk3318-box_bookworm_edge_6.3.13_minimal.img.xz - именно этот образ мне идеально подошёл. 
Для установки Multitool, потребуется Rufus. Информации в сети полно на эту тему.

RK3318 — это общий название чипа. Приставок на нём — сотни, и у всех разная начинка: Wi-Fi чипы (Realtek, SV6051, APS8811), разная разводка портов, разная память.  В общем нужно подбирать образ именно под свою приставку.

Если лень прошивать, то можно оставить Android, и поставить Kodi для Android.  Настроить SMB.
Но в этом есть лично для меня, очень много минусов, по этому не стал. Мой выбор: Armbian. 

Далее

База: ставим графический интерфейс и плеер

bash 

# Обновляем систему
sudo apt update && sudo apt upgrade -y # Ставим Kodi (наш плеер)
sudo apt install kodi -y # Ставим простой менеджер окон (чтобы были иконки)
sudo apt install matchbox -y

Почему Kodi, а не VLC? 
VLC — отличный плеер, но он "просто играет". Kodi — это медиасистема: библиотека, обложки, плагины, сетевые диски "из коробки" и плюс отличная интеграция с HA.

Нужно что бы всё запускалось само, так как дальше планировалось использовать приставку без монитора, клавы и мыши. 

bash 

# Создаём файл автозапуска
echo 'kodi-standalone &' > ~/.config/openbox/autostart # Перезагружаемся
sudo reboot

После перезагрузки: приставка загрузится и сразу будет интерфейс Kodi. Монитор можно отключать.

Музыка и потоковое радио

Сетевой диск (подключён к роутеру по USB): 
1.  В Kodi: Музыка → Файлы → Добавить музыку → Windows сеть (SMB) 
2.  Находим роутер 192.168.1.1 → папку Musik → ОК

Интернет-радио (плейлист): 
Создаём файл с любым названием, например choco.m3u на компьютере:

m3u 

#EXTM3U
#EXTINF:-1,Choco FM
https://choco.hostingradio.ru:10010/fm
#EXTINF:-1,Europa Plus
http://ep128.hostingradio.ru:8030/europaplus128.mp3
#EXTINF:-1,Radio Russia
http://icecast.vgtrk.cdnvideo.ru/rrzonam_mp3_192kbps
#EXTINF:-1,Autoradio
http://stream.au.ru/avtoradio_mp3_128kbps

Кладём в сетевую папку → в Kodi: Музыка → Файлы → открываем choco.m3u.
Готово. Радио играет.

Управление Kodi с телефона

Браузерные пульты в Kodi — так себе. А вот приложение Yatse (Android) или Official Kodi Remote (iOS) — это другое дело.

Настройка: 
1.  В Kodi: Настройки → Службы → Управление → включить:
    - Разрешить удалённое управление через HTTP 
    -  Разрешить управление приложениями 
2.  На телефоне: установить Yatse → оно само найдёт приставку в сети → подключиться.

Теперь управление плеером — в кармане. Громкость, переключение, плейлисты — всё с телефона.

Интеграция с Home Assistant

Добавляем Kodi в HA:
1.  В HA: Настройки → Устройства и службы → Добавить интеграцию → ищем Kodi 
2.  Вводим IP адрес на котором у вас висит приставка, например: 192.168.1.117, порт 8080, логин/пароль kodi (или какой вы установили)

Появляется сущность media_player.192_168_1_117.
А уж с этим проигрывателем можно из HA делать что угодно, в том числе не только из локально сети.

Удобная карточка в дашборде

Стандартная карточка media-control — рабочая, но скучная. Сделаем пульт с кнопками радио.

Пример карточки. Добавляем "Вручную" в Lovelace:

type: vertical-stack

cards:
  - type: media-control
    entity: media_player.192_168_1_117
    name: Kodi гараж
  - square: false
    type: grid
    columns: 2
    cards:
      - show_name: true
        show_icon: true
        type: button
        name: Choco FM
        icon: mdi:radio
        tap_action:
          action: call-service
          service: media_player.play_media
          target:
            entity_id: media_player.192_168_1_117
          data:
            media_content_id: https://choco.hostingradio.ru:10010/fm
            media_content_type: music
        hold_action:
          action: none
        show_state: true
        icon_height: 20px
      - show_name: true
        show_icon: true
        type: button
        name: Европа Плюс
        icon: mdi:music
        tap_action:
          action: call-service
          service: media_player.play_media
          target:
            entity_id: media_player.192_168_1_117
          data:
            media_content_id: http://ep128.hostingradio.ru:8030/europaplus128.mp3
            media_content_type: music
        hold_action:
          action: none
        show_state: true
        icon_height: 20px
      - show_name: true
        show_icon: true
        type: button
        name: BossaNova
        icon: mdi:emoticon-cool
        tap_action:
          action: call-service
          service: media_player.play_media
          target:
            entity_id: media_player.192_168_1_117
          data:
            media_content_id: http://strm112.1.fm/bossanova_mobile_mp3
            media_content_type: music
        hold_action:
          action: none
        show_state: true
        icon_height: 20px
      - show_name: true
        show_icon: true
        type: button
        name: Wow Music Cover
        icon: mdi:car
        tap_action:
          action: call-service
          service: media_player.play_media
          target:
            entity_id: media_player.192_168_1_117
          data:
            media_content_id: https://stream.vyshka24.ru/wowcover
            media_content_type: music
        hold_action:
          action: none
        show_state: true
        icon_height: 20px

Теперь в дашборде: сверху — плеер, снизу — 4 кнопки любимых радиостанций.

Важный момент: в YAML параметры media_content_id и media_content_type должны быть внутри data, а не в target. Иначе HA выдаст ошибку. Проверено на себе :)

Бонус: эквалайзер

У меня довольно мощный усилитель и большие колонки. Басов хватает, а вот средних частот — многовато, а высоких — маловато.

Ставим системный эквалайзер через ALSA

bash 

# Ставим плагины
sudo apt install ladspa-sdk caps -y # Создаём конфиг ~/.asoundrc
cat > ~/.asoundrc << 'EOF'
pcm.!default {
    type plug
    slave.pcm "eq_plug"
}
pcm.eq_plug {
    type equal
    slave.pcm "dmix"
    channels 2
    band_1 { freq 250; width 1.0; gain -3 }
    band_2 { freq 800; width 1.5; gain -6 }
    band_3 { freq 2000; width 1.0; gain -3 }
    band_4 { freq 4000; width 1.0; gain +4 }
    band_5 { freq 8000; width 1.0; gain +6 }
}
EOF # Перезапускаем Kodi
sudo systemctl restart kodi

Звук стал интереснее: убрал "коробочность", добавил "воздуха". 

А как же CasaOS, которую я ставил с самого начала?

В начале пути я поставил CasaOS — красивую веб-панель для управления сервисами. И теперь вопрос: А не зря ли?
- Для задачи "плеер в гараже" — да, можно было обойтись.

Но! CasaOS не мешает. Он просто "живёт" в фоне, ест ~200 МБ ОЗУ (из 4 ГБ — совсем не критично).

Зато с ним удобно: закинуть файл на приставку, посмотреть логи, обновить систему — всё в браузере, SSH конечно тоже есть :)

И если завтра захочется запустить на этой же приставке что-то ещё, блокировщик рекламы или торрент-качалку — в CasaOS это делается в два клика.

Не стал удалять, то что работает и не мешает. Пусть будет. Каши не просит.

В итоге что у меня получилось:

Плеер Kodi с автозапуском

  • Музыка с сетевого диска (SMB)
  • Радио плейлист .m3u с прямыми ссылками
  • Управление - Приложение Yatse с телефона
  • Умный дом - Интеграция с Home Assistant и возможность управления и создание автоматизаций
  • Звук Системный эквалайзер (ALSA + ladspa)
  • Интерфейс - удобная карточка в дашборде
  • Веб-панель - CasaOS (для удобства)

Моя гаражная приставка — не сервер, не лаборатория, не полигон для экспериментов. Это просто удобная штука, которая играет музыку, когда я этого хочу с удобствами управления.

И если для этого пришлось пройти путь от почему не работает VLC до как встроить эквалайзер в ALSA — значит, так было надо. Зато теперь: включил, нажал кнопку в телефоне — и в гараже играет музыка.

И в заключении - у большинства родных корпусов этой ТВ-приставки, ужасная вентиляция. Её скорее нет, чем она есть, по этому процессор под нагрузкой греется. Я нашёл модель готового корпуса с лучшей вентиляцией, на ножках и с возможностью закрепить кулер сверху. У меня как раз подошёл размером 8х8см от старого блока питания. Нижняя крышка подходит от родного корпуса, по этому её печатать нет необходимости.

Вид не особо импозантный, но за то троттлинг ему не грозит.
Где я нашёл это корпус - не могу вспомнить. Прошу прощения у автора, что не публикую ссылку откуда качал, но обязательно это сделаю, если автор вдруг найдётся.
STL файл на модель ниже.