[SLOT_0] ;только нулевой слот
mode = opusLANПрограммный модуль приёма и воспроизведения аудиопотока по локальной сети через RTP с декодированием кодека Opus.
Совместимость
Требуется подключение к локальной сети. Модуль работает только в нулевом слоте.
Принцип работы
Источник потока на стороне ПК — приложение AntiDante: оно берёт звук с любого аудиоустройства Windows и отправляет его RTP-потоком с нужными параметрами.
Аудиопайплайн состоит из трёх элементов: RTP-приёмник → Opus-декодер → I2S-выход.
Режим приёма определяется опцией multicastAddress: если адрес задан, модуль
подключается к multicast-группе, иначе принимает unicast-поток на порт port.
Адрес можно сменить на лету командой setMulticastAddress.
Для синхронного воспроизведения на нескольких приёмниках модуль непрерывно подстраивает тактовую частоту I2S под реальный самплрейт источника. Целевая задержка синхронизации задаётся опцией latencyMs и должна быть одинаковой на всех приёмниках.
В отличие от audioLAN поток сжат кодеком Opus: требования к сети значительно ниже ценой чуть большей задержки.
| Параметр | Значение |
|---|---|
| Протокол | RTP (unicast / multicast) |
| Кодек | Opus |
| Самплрейт | 48000 Гц (настраиваемый, 8000–96000) |
| Разрядность | 16 бит (фиксированная) |
| Каналы | 2 (стерео) |
| Задержка | ~100 мс |
Топики
База топика события:
<deviceName>/audioStream_<slot>— напримерmoduleBox/audioStream_0
База топика действия:
<deviceName>/audioStream_<slot>— напримерmoduleBox/audioStream_0
Полный топик — база плюс направление и имя: moduleBox/audioStream_0/action/setVolume.
Опции
Доступные опции:
- disableOnStart — флаг, стартовать в выключенном состоянии и ждать
action/enableсо значением1. По умолчанию модуль активен сразу. - volume — число(int), громкость. Диапазон 0–100. По умолчанию 100.
- multicastAddress — строка, multicast адрес IPv4 - если задан режим multicast иначе unicast. По умолчанию 239.0.7.0.
- port — число(int), порт приёма потока. По умолчанию 7777.
- sampleRate — число(int), частота дискретизации Гц. Диапазон 8000–96000. По умолчанию 48000.
- bufSize — число(int), размер jitter-буфера мс. Диапазон 50–5000. По умолчанию 50.
- latencyMs — число(int), целевая задержка синхронизации мс - одинаковая на всех приёмниках. Диапазон 40–500. По умолчанию 50.
События
| Топик | Payload | Описание |
|---|---|---|
audioStream_<slot>/event/enable | 0 / 1 | Активен 1 или спит 0 |
audioStream_<slot>/event/volume | целое, % | Текущая громкость |
audioStream_<slot>/event/address | строка | Текущий адрес потока |
Пример: топик moduleBox/audioStream_0/event/address, payload 239.0.7.1.
Команды
| Топик | Payload | Описание |
|---|---|---|
audioStream_<slot>/action/setVolume | 0–100 | Установить громкость |
audioStream_<slot>/action/setMulticastAddress | строка | Сменить multicast адрес на лету - IPv4 или 0 для unicast |
audioStream_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) модуль |
Индикация
- Светодиод выключен — модуль в состоянии DISABLE.
- Светодиод горит постоянно — модуль активен, поток принимается.
- Светодиод мигает — модуль активен, но поток не обнаружен.
Примеры
[SLOT_0]
mode = opusLAN
options = multicastAddress:239.0.7.0, volume:100, latencyMs:50
[SLOT_1]
mode = button_led
;нажатие и отпускание переключают источник потока
crosslink = button_1/event/press:1->audioStream_0/action/setMulticastAddress:239.0.7.1, button_1/event/press:0->audioStream_0/action/setMulticastAddress:239.0.7.0Подробнее — внутренние связи (crossLink).
Архив
Описание модуля для прошивок до перехода на конституцию — opusLAN (архив).