iRidium для Sonos
Набор инструментов для создания интерфейсов управления с использованием драйвера акустических систем Sonos.
документация обновлена 01.01.2024
iRidium для Sonos – это драйвер с помощью которого можно создать интерфейс для управления Hi-Fi системой без использования скриптов. Нативный драйвер более привычный для интеграторов и простой в изменении настроек.
Драйвер Sonos позволяет:
- Работать с устройствами в группе или отдельно,
- Составлять плейлисты и проигрывать радио,
- Управлять плеером,
- Выводить всю доступную информацию об исполнители, саундтреке или радиостанции в любом удобном формате.
Пример: Sonos
Подключение
Для работы в проекте с оборудованием Sonos потребуется узнать IP адрес акустической системы и указать его в настройках драйвера, для этого выполните следующие действия:
- Подключите оборудование Sonos, IP адрес оборудования устанавливается автоматически по DHCP.
- Скачайте программное обеспечение Sonos Controller для Sonos и запустите его. Произойдет автоматическое сканирование сети и оборудование отобразится в разделе "Rooms".
- Информация о сетевых настройках оборудования Sonos можно узнать несколькими способами:
3.1. Для ПК.

3.2. Мобильное приложение.

3.3. Сканирование локальной сети специальным ПО. Например, Advanced Port Scanner.
В результате сканирование получите список устройств, выберите необходимое. Системы Sonos будут подписаны в разделе "Manufacturer", как Sonos,inc.

После идентификации IP адреса можно приступать к настройке в iRidium studio.
Для подключения к оборудованию Sonos на роутере не должно быть блокировки UDP и мультикаст.
Подключение стриминговых сервисов
Для проигрывания медиаконтента из потоковых музыкальных сервисов, необходимо:
- Перейти в официальное приложение Sonos;
- Добавить музыкальный потоковый сервис на устройство Manage > Service Settings > Add (необходима авторизация в системе музыкального сервиса). После добавления они появятся в списке сервисов аккаунта Sonos, весь медиаконтент сервиса станет доступен в официальном приложении Sonos;
- Выбираем необходимый медиаконтент и нажимаем на него правой кнопкой мыши;
- В сплывающем контекстном меню выбираем из спиcка Add to Sonos Playlist или Add to Sonos Favorites;
- Переходим в i3 pro. В нашем проекте появился добавленный медиаконтент.
Работа в iRidium
- Создайте проект, выберите пункт "Add driver". В появившемся списке выберите "Sonos" и добавьте его.
Драйвер Sonos по умолчанию работает с одним устройством. Для того, чтобы синхронизировать все устройства Sonos их необходимо объединить в группу с помощью дополнительного драйвера Sonos group.
Более подробно о работе с нативными драйверами можно прочитать здесь.
- Заполните поля в свойствах драйвера необходимые для работы.
Свойства драйвера

- Name - имя драйвера, не изменяйте в готовом интерфейсе;
- Driver Type - информация о типе драйвера;
- Protocol - протокол передачи данных TCP;
- Log Level - глубина логирования;
- Host - IP-адрес оборудования;
- Port - порт подключения (по умолчанию 1443).
Настройка команд и фидбеков

Для управления оборудованием настройте команды (Commands) и каналы обратной связи (Feedbacks). Чтобы отправить команду, перетяните ее на графический элемент и укажите значение (Value), которое необходимо отправить. Чтобы отобразить значение с канала обратной связи, перетащите Feedback на графический элемент, и укажите, каким образом вывести значение (Value).
Подробнее о работе с графическими элементами написано в статье "Типы графических элементов".
Commands

- Name - имя команды;
- Type - тип команды:
- Control - тип команд для управления оборудованием;
- Selection - тип команд для навигации:
Control
| Параметр | Значение | Описание |
|---|---|---|
| Play/Pause | Воспроизведение трека, пауза | — |
| Volume | Регулировка громкости | 0-100 |
| Mute | Приглушить звук | 1 - приглушить звук 0 - отключить приглушение звука |
| Relative volume | Регулировка громкости относительно текущего значения фидбека "Volume" | 0-100 |
| Next | Воспроизведение следующего трека | Value |
| Previous song | Воспроизведение предыдущего трека | Value |
| Seek | Перемотка трека | Value используется на элементе типа Level с фидбеком Duration |
| Seek relative | Перемотка трека относительно текущего положения на тайм-лайне | Value Отрицательное значение в мс (прим. -5000) - перемотка в обратную сторону Положительное значение в мс (прим. 25000) - перемотка вперед |
| Group volume | Команда для регулировки громкости в условиях группы (для нескольких устройств) | 0-100 |
| Group relative volume | Регулировка громкости относительно текущего значения фидбека "Volume" в условиях группы | 0-100 |
| Group mute | Выключает звук в условиях группы | 1 - включить звук группы 0 - отключить звук группы |
| Update state | Обновить состояние фидбеков | Value |
| Repeat | Повтор списка воспроизведения | 1 - включить повтор списка 0 - отключить повтор списка |
| Repeat one | Повтор текущего трека | 1 - включить повтор текущего трека 0 - отключить повтор текущего трека |
| Crossfade | Режим затухания в конце трека и плавное увеличение звука в начале следующего | True/False |
| Shuffle | Проигрывает случайную песню | 1 - включить Shuffle 0 - отключить Shuffle |
| Reset error | Команда сброса значения фидбека "Error status" | Value |
Selection
| Параметр | Значение | Описание |
|---|---|---|
| Explorer | Команда для навигации (реализована с помощью Advanced List) | Value |
| Explorer back | Команда для возвращения к предыдущей папке/странице (Advanced List) | Value |
| Explorer root | Команда для возвращения к корневой странице | Value |
| Queue | Команда выбора трека из очереди | Value |
| Clear queue | Команда удаления списка треков из очереди | Value |
Feedbacks

- Name - имя фидбека;
- Type - тип фидбека
- Control - тип фидбеков управления оборудованием;
- List - тип фидбеков листа воспроизведения.
Для удобства фидбеки драйвера разбиты по различным категориям в зависимости от их назначения.
Control
Control - фидбеки управления.
| Параметр | Значение | Описание |
|---|---|---|
| Play | Текущее состояние воспроизведения (play/pause) | 1 - состояние Play 0 - состояние Pause |
| Player name | Имя/название плеера | Value |
| Volume | Текущая громкость | 0-100 |
| Mute | Состояние параметра Mute (заглушить) | 1 - состояние Mute активно 0 - состояние Mute неактивно |
| Group name | Имя/название группы | Value |
| Group Volume | Текущая громкость группы | 0-100 |
| Group mute | Состояние параметра Group mute | 1 - состояние активно 0 - состояние неактивно |
| Error | Ошибка | Value |
| Playbackstate | Текущее состояние плеера | Play, Pause, Idle |
| Position millis | Текущая позиция на тайм-лайне (мс) | Value |
| Is coordinator | Показывает главное устройство в группе | 1 - master устройство 0 - slave устройство |
| Error status | Отображает текущий статус ошибки | 1 - ошибка обнаружена 0 - ошибка не обнаружена Статус сохраняется до команды Reset error |
Stream, Radio - фидбеки для потока/стрима.
| Параметр | Значение | Описание |
|---|---|---|
| Container image | Вывод изображения | Value |
| Container name | Название радиостанции | Value |
| Current show name | Название шоу | Value |
| Container type | Тип контента (обычно Track) | Value |
| Container service | Название сервиса | Value |
| Current stream info | Исполнитель + название трека | Value |
Indicators - индикаторы доступности команд.
| Параметр | Значение | Описание |
|---|---|---|
| Can skip | Включить следующий трек | 1 - доступна 0 - недоступна |
| Can skip back | Включить предыдущий трек | 1 - доступна 0 - недоступна |
| Can seek | Перемотка трека | 1 - доступна 0 - недоступна |
| Can pause | Пауза | 1 - доступна 0 - недоступна |
| Can stop | Остановить воспроизведение | 1 - доступна 0 - недоступна |
| Can repeat | Повтор плейлиста | 1 - доступна 0 - недоступна |
| Can repeat one | Повтор трека | 1 - доступна 0 - недоступна |
| Can crossfade | Эффект затухания | 1 - доступна 0 - недоступна |
| Can shuffle | Shuffle | 1 - доступна 0 - недоступна |
Modes - режимы воспроизведения.
| Параметр | Значение | Описание |
|---|---|---|
| Mode repeat | Повтор плейлиста | 1 - активен 0 - неактивен |
| Mode repeat one | Повтор трека | 1 - активен 0 - неактивен |
| Mode crossfade | Режим затухания | 1 - активен 0 - неактивен |
| Mode shuffle | Режим shuffle | 1 - активен 0 - неактивен |
Current track info - информация о текущем треке.
| Параметр | Значение | Описание |
|---|---|---|
| Service | Сервис воспроизведения | Value |
| Album | Название альбома | Value |
| Type | Тип контента | Value |
| Image | Обложка трека | Value |
| Artist | Исполнитель | Value |
| Name | Название трека | Value |
| Duration (ms) | Длительность (мс) | Value |
| Time | Длительность | Формат 00:00:00 |
| Time passed | Прошедшее время | Формат 00:00:00 |
| Time remaining | Оставшееся время | Формат 00:00:00 |
| Name/Artist/Stream | Объединённое значение | Value |
| Album/Show | Альбом или шоу | Value |
Next track info - информация о следующем треке.
| Параметр | Значение | Описание |
|---|---|---|
| Next track Service | Сервис | Value |
| Next track Album | Альбом | Value |
| Next track Type | Тип контента | Value |
| Next track Image | Обложка | Value |
| Next track Artist | Исполнитель | Value |
| Next track Name | Название трека | Value |
| Next track Duration (ms) | Длительность (мс) | Value |
| Next track Time | Длительность | Формат 00:00:00 |
List
| Параметр | Значение | Описание |
|---|---|---|
| Explorer | Папки/плейлисты/сервисы/радиостанции/треки | Value |
| Queue | Очередь воспроизведения | Value |
Position millis. Отображение продолжительности трека на элементе Level.
Динамическое изменение продолжительности трека применяется к элементу Level.
Для отображения обложки необходимо фидбек драйвера Position millis привязать к токену Max элемента Level. Делается это следующим образом:
-
Перенесите на нужный элемент фидбек Position millis при помощью Drag&Drop.
-
Выберите строку "Ещё (More)", далее параметр Max .

Image (Current). Отображение обложки трека на элементе.
Для отображения обложки проигрываемого трека необходимо фидбек драйвера Image (Current) привязать к токену Image элемента (для вывода обложки радиостанции используется аналогичный метод). Делается это следующим образом:
-
Перенесите на нужный элемент фидбек Image (Current) при помощью Drag&Drop.
-
Выберите строку "Ещё (More)", далее Состояние 1 (State 1) , Image .

Некоторые изображения радиостанций/сервисов не выводятся - это ошибка протокола Sonos.
Is Coordinator. Работа устройств в группе.
За обозначение роли устройства отвечает feedback Is Coordinator . Значение 0 свидетельствует, что устройство работает в режиме Slave , 1 - устройство в режиме Master.
Принцип работы устройств в группе предполагает назначение двух ролей для устройств:
- Master - главное устройство, дублирующее команды для остальных устройств в группе;
- Slave - подчиненное устройство, получающее установки от Master.
Значение 0 свидетельствует, что устройство работает в режиме Slave , 1 - устройство в режиме Master.
Update State. Актуализация значений фидбеков
Update State - команда очищает значение фидбеков и опрашивает устройство сонос снова для вывода актуальной информации. Иногда при работе драйвера с устройствами Sonos может быть рассинхрон, для его ликвидации используйте эту команду.
Обновляет значение фидбеков: Service, Album, Type, Image, Artist, Name, Duration, Time passed, Time remaining, Duration (ms), Time.
Настройка Explorer
Попап “Explorer” нужен для вывода папок/плейлистов/треков. А также, для навигации и выбора определённого плейлиста, которые составляются с помощью родного приложения Sonos.
-
Для создания попапа Explorer, нарисуйте элемент Advanced List.
-
Создайте 3 попапа “Templates”. Назовите их TplFavorite (для вывода папок “Playlists” и “Favorites”), TplRoot (для вывода содержимого папки “Playlists”)и TplPlayList (для вывода содержимого папки “Favorite”). На каждом из попапов создаются элементы “Lable” - некие шаблоны, в которые будут выводиться папки, информация о плейлистах, обложки и названия треков.

Пример отрисованных элементов Label для попапа TplFavorite.
-
После создания элементов вернитесь к элементу Advanced List.
-
Перейдите в настройки темплейта, нажав кнопку “Template setting”.

- Добавьте попапы с темплейтами. Впишите в строчке Code type , как показано на рисунке.
- Для настройки темплейта нужно открыть его двойным кликом. Затем добавить туда лейблы. Разберем настройку темплейта “TplFavorite”. В строке Type - введите favorite, затем добавляем следующие лейблы с нужными токенами: lbl.Name.Text; lbl.Type.Text; lbl.NextImage 1.State 1.Image.
После добавления лейблов, пропишите каждому из них значение Value. Для записи в строках Value, нужно кликнуть по строке 3 раза. Value для лейблов:
- lbl.Name.Text - name
- lbl.Type.Text - description
- lbl.NextImage - imageUrl

- По аналогии настройте лейблы оставшихся темплейтов “TplRoot” и “TplPlayList”.
“TplRoot”, введите Directory в поле Type. Создайте лейбел lbl.Name.Text, внесите в поле Value значение name.

TplPlayList , введите playlist в поле Type. Создайте лейблы:
- lbl.Name.Text, внесите в поле Value значение name.
- lblTrackCount - внесите в поле Value значение trackCount.

- После настройки лейблов и темплейтов, привяжите команду и фидбек “Explorer” на элемент Advanced List.
Для привязки команды, нажмите на элемент (Advanced List), а затем в окне Programming нажать на + напротив события Press.

Далее, в открывшемся окне выбираем Send tag и осуществляем привязку Select Item -> Commands -> Explorer.

Привязка фидбека, нажмите на элемент Advanced List, затем перейдите в Data source (находится возле Template setting). Выбираем Driver -> Feedbacks -> Explorer. На этом этапе - настройка попапа Explorer завершена!

Настройка Queue
Попап “Queue” нужен для вывода информации о треках в текущей очереди воспроизведения, а также для выбора определённого трека, из этой самой очереди.
- Создайте элемент Advanced List. Создайте темплейт TplQueue (для вывода информации треков из очереди воспроизведения). Темплейт имеет следующие лейблы:
- lblName
- lblType
- lblNextImage1
- Настройте темплейт и лейблы.
Tpl.Queue , введите playlisttrack в поле Type. Создайте лейблы:
- lbl.Name, внесите в поле Value значение name;
- lblType- внесите в поле Value значение description;
- lblNextImage 1- внесите в поле Value значение imageUrl.

- Перенсите при помощи Drag&Drop команду и фидбек Queue на Advanced List.
Привязка команды:

Привязка фидбека:

Sonos group
Драйвер "Sonos groups" служит для управления устройствами Sonos в группе.
- Данный драйвер является дополнением к драйверу акустических систем Sonos и не подразумевает отдельного использования в проекте.
Свойства драйвера
- Name - имя драйвера, не изменяйте в готовом интерфейсе;
- Driver Type - информация о типе драйвера;
- Protocol - протокол передачи данных TCP;
- Log Level - глубина логирования.
Настройка команд и фидбеков

Для управления оборудованием настройте команды (Commands) и каналы обратной связи (Feedbacks). Чтобы отправить команду, перетяните ее на графический элемент и укажите значение (Value), которое необходимо отправить. Чтобы отобразить значение с канала обратной связи, перетащите Feedback на графический элемент, и укажите, каким образом вывести значение (Value).
Подробнее о работе с графическими элементами написано в статье "Типы графических элементов".
Commands
- Name - имя команды;
- Type - тип команды:
- Group - команда группировки устройств;
- Ungroup - команда разгруппировки устройств;
- Select - команда выбора устройств для группировки.
Feedbacks
- Name - имя фидбека;
- Type - тип фидбека:
- Players - cписок текущего состояния устройств ( cгруппированы или не сгруппированы).
Настройка Popup groups
Попап “Popup groups” необходим для выбора и группировки / разгруппировки устройств из списка.
-
Создайте попап (Popup groups) и добавьте на него Advanced List.
-
Создайте 2 попапа “Templates”. Назовите их TplPlayer (элемент, обозначающий одно устройство), TplGroup (элемент, обозначающий группу устройств). На каждом из попапов создаются элементы “Lable” - некие шаблоны, в которые будет выводиться информация о группах (название, количество устройств, координатор).
Пример отрисованных элементов Label для попапа TplGroup:

Пример отрисованных элементов Label для попапа TplPlayer:

-
После создания элементов вернитесь к элементу Advanced List.
-
Перейдите в настройки темплейта, нажав кнопку “Template setting”.

- Добавьте попапы с темплейтами. Впишите в строчке Code type , как показано на рисунке.
- Для настройки темплейта нужно открыть его двойным кликом. Затем добавить туда лейблы. Разберем настройку темплейта “TplGroup”. В строке Type - введите group (для TplPlayer Type = player ), затем добавляем следующие лейблы с нужными токенами: lbl.Name.Text, Selection.Value, lbl.Name 1.Value.
После добавления лейблов, пропишите каждому из них значение Value. Для записи в строках Value, нужно дважды кликнуть по строке лейбла. Value для лейблов:
- lbl.Name.Text - name,
- Selection.Value - selected,
- lbl.Name 1.Value - coordinator.
- После настройки лейблов и темплейтов, привяжите команду “Select” на элемент Advanced List.
Для привязки команды, нажмите на элемент (Advanced List), а затем в окне Programming нажать на + напротив события Release.

Далее, в открывшемся окне выбираем Send tag и осуществляем привязку Select Item -> Commands -> Select.

- Привяжите фидбек Players к элементу. Для этого нажмите на элемент Advanced List, затем перейдите в Data source (находится возле Template setting). Выбираем Driver -> Feedbacks -> Players.

- Добавьте на попап 2 кнопки для группировки и разгруппировки устройств и перетяните на них соответственно команды Group и Ungroup , отправляя в канал любое значение.
