Разработка мобильного приложения для умного дома (мультимедиа)
Управление мультимедиа в умном доме — это телевизоры, ресиверы, стриминговые устройства, мультирум-аудио. Задача приложения: единый пульт управления со всем оборудованием в доме, включая создание аудиозон и синхронизацию контента.
Протоколы управления AV-техникой
HDMI CEC — управление телевизорами через HDMI шину. Через адаптер Pulse-Eight или встроенный CEC в Raspberry Pi можно посылать команды (включить, сменить вход, регулировать громкость) с мобильного через MQTT-мост. Прямого API из приложения нет — только через бэкенд с CEC-адаптером.
IP Control — большинство современных AV-ресиверов Denon, Yamaha, Onkyo поддерживают Telnet или HTTP на порту 23 или 80. Команды через сокет: MVUP, MVDOWN, SICD (смена входа). На Flutter: dart:io Socket. На React Native: react-native-tcp-socket. Нет публичного SDK — только документация протоколов для каждого производителя.
Sonos — REST API через локальную сеть. Sonos HTTP API на порту 5005 (через sonos-http-api bridge) или официальный Sonos Platform API (OAuth2, облако). Управление воспроизведением (play, pause, next), громкостью, мультирум-группировкой. Подписка на события через polling или UPnP SUBSCRIBE.
Apple TV — MediaRemoteTV протокол (MRP) или HomeKit. Через HomeKit на iOS можно управлять Apple TV без Apple TV SDK. HMAccessory с HMServiceTypeTelevision. Без HomeKit — через ATV Remote framework или отправку команд через tvOS Companion Link (нужен pairing).
Chromecast/Google TV — Google Cast SDK для iOS и Android. Официальный google_cast Flutter plugin нестабилен — чаще используют flutter_cast_framework или нативный код через Platform Channel.
Kodi — JSON-RPC API, http://{host}/jsonrpc. Полный контроль над медиатекой, воспроизведением, плагинами. Отличный вариант для домашних медиацентров.
Мультирум-аудио
Воспроизвести один источник звука в нескольких комнатах одновременно — технически нетривиально из-за синхронизации.
Sonos — внутренняя синхронизация между колонками. API: POST /zones/{roomName}/group для объединения зон. Задержка между колонками < 1ms. Управление группой из приложения — стандартное.
Snapcast — open-source решение для синхронного мультирум-аудио. Клиенты на Raspberry Pi в каждой комнате. REST API сервера: GET /jsonrpc с методами Server.GetStatus, Client.SetVolume, Group.SetMute. На Flutter: http запросы к Snapcast серверу через домашнюю сеть.
AirPlay 2 — iOS нативный. AVRoutePickerView для выбора AirPlay 2 приёмников. Несколько приёмников одновременно через AVAudioSession.setPreferredOutputNumberOfChannels. На сторонних устройствах (Raspberry Pi) — Shairport Sync с AirPlay 2 поддержкой.
Universal Remote: ИК-управление
IR Blaster устройства (Broadlink RM4, BestCon RM4C) — отправляют ИК-команды телевизорам и кондиционерам без Wi-Fi на самом устройстве. Broadlink Python SDK (broadlink) хорошо задокументирован. На Node.js сервере: const device = new broadlink.genDevice({type: 0x6039, ...}) → device.sendCode(irCode).
База ИК-кодов: IRDB (github.com/probonopd/irdb), Pronto Hex формат. На Flutter показываем список брендов и моделей — пользователь выбирает свой телевизор, загружаем коды из базы.
Проблема: IR коды для каждой модели телевизора разные. Нужна база на тысячи моделей или функция «обучения» — записать существующий пульт через Broadlink.
Интеграция со стриминговыми сервисами
Deep link на стриминговую платформу через приложение: intent://www.netflix.com/watch/...#Intent;scheme=https;package=com.netflix.mediaclient;end (Android) или nflx://www.netflix.com/watch/... (iOS). Запуск конкретного контента на телевизоре из мобильного приложения.
Через Chromecast: Cast SDK позволяет запустить Netflix/YouTube приложение на Chromecast и начать воспроизведение через RemoteMediaClient.load() с MediaInfo содержащим contentId.
Сроки
Базовое управление одной системой (Kodi, Sonos или AV-ресивер одного бренда) — 3–4 недели. Universal remote с ИК, мультирум-аудио, несколько протоколов, зоны — 2–4 месяца. Стоимость зависит от набора оборудования и требований к офлайн-работе.







