Перейти к основному содержимому

iRidium для Sonos

Набор инструментов для создания интерфейсов управления с использованием драйвера акустических систем Sonos.

документация обновлена 01.01.2024

iRidium для Sonos – это драйвер с помощью которого можно создать интерфейс для управления Hi-Fi системой без использования скриптов. Нативный драйвер более привычный для интеграторов и простой в изменении настроек.

Драйвер Sonos позволяет:

  • Работать с устройствами в группе или отдельно,
  • Составлять плейлисты и проигрывать радио,
  • Управлять плеером,
  • Выводить всю доступную информацию об исполнители, саундтреке или радиостанции в любом удобном формате.
Подсказка

Пример: Sonos

Подключение

Для работы в проекте с оборудованием Sonos потребуется узнать IP адрес акустической системы и указать его в настройках драйвера, для этого выполните следующие действия:

  1. Подключите оборудование Sonos, IP адрес оборудования устанавливается автоматически по DHCP.
  2. Скачайте программное обеспечение Sonos Controller для Sonos и запустите его. Произойдет автоматическое сканирование сети и оборудование отобразится в разделе "Rooms".

Sonos_app.PNG

  1. Информация о сетевых настройках оборудования Sonos можно узнать несколькими способами:

3.1. Для ПК.

Driver_sonos_pc.png

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

Driver_sonos_app.png

3.3. Сканирование локальной сети специальным ПО. Например, Advanced Port Scanner.

В результате сканирование получите список устройств, выберите необходимое. Системы Sonos будут подписаны в разделе "Manufacturer", как Sonos,inc.

Sonos_scan.png

После идентификации IP адреса можно приступать к настройке в iRidium studio.

Важно

Для подключения к оборудованию Sonos на роутере не должно быть блокировки UDP и мультикаст.

Подключение стриминговых сервисов

Для проигрывания медиаконтента из потоковых музыкальных сервисов, необходимо:

  1. Перейти в официальное приложение Sonos;
  2. Добавить музыкальный потоковый сервис на устройство Manage > Service Settings > Add (необходима авторизация в системе музыкального сервиса). После добавления они появятся в списке сервисов аккаунта Sonos, весь медиаконтент сервиса станет доступен в официальном приложении Sonos;
  3. Выбираем необходимый медиаконтент и нажимаем на него правой кнопкой мыши;
  4. В сплывающем контекстном меню выбираем из спиcка Add to Sonos Playlist или Add to Sonos Favorites;
  5. Переходим в i3 pro. В нашем проекте появился добавленный медиаконтент.

Работа в iRidium

  1. Создайте проект, выберите пункт "Add driver". В появившемся списке выберите "Sonos" и добавьте его.
примечание

Драйвер Sonos по умолчанию работает с одним устройством. Для того, чтобы синхронизировать все устройства Sonos их необходимо объединить в группу с помощью дополнительного драйвера Sonos group.

Более подробно о работе с нативными драйверами можно прочитать здесь.

  1. Заполните поля в свойствах драйвера необходимые для работы.

Свойства драйвера

Image_2020_05_20T09_14_55_546Z.png

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

Настройка команд и фидбеков

SendRecieve.png

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

Подробнее о работе с графическими элементами написано в статье "Типы графических элементов".

Commands

Driver_sonos_commands.png

  • 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

Driver_sonos_feedbacks.png

  • 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 mute1 - состояние активно
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 shuffleShuffle1 - доступна
0 - недоступна

Modes - режимы воспроизведения.

ПараметрЗначениеОписание
Mode repeatПовтор плейлиста1 - активен
0 - неактивен
Mode repeat oneПовтор трека1 - активен
0 - неактивен
Mode crossfadeРежим затухания1 - активен
0 - неактивен
Mode shuffleРежим shuffle1 - активен
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. Делается это следующим образом:

  1. Перенесите на нужный элемент фидбек Position millis при помощью Drag&Drop.

  2. Выберите строку "Ещё (More)", далее параметр Max .

Sonos_duration.png

Image (Current). Отображение обложки трека на элементе.

Для отображения обложки проигрываемого трека необходимо фидбек драйвера Image (Current) привязать к токену Image элемента (для вывода обложки радиостанции используется аналогичный метод). Делается это следующим образом:

  1. Перенесите на нужный элемент фидбек Image (Current) при помощью Drag&Drop.

  2. Выберите строку "Ещё (More)", далее Состояние 1 (State 1) , Image .

Sonos_image.png

примечание

Некоторые изображения радиостанций/сервисов не выводятся - это ошибка протокола 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.

  1. Для создания попапа Explorer, нарисуйте элемент Advanced List.

  2. Создайте 3 попапа “Templates”. Назовите их TplFavorite (для вывода папок “Playlists” и “Favorites”), TplRoot (для вывода содержимого папки “Playlists”)и TplPlayList (для вывода содержимого папки “Favorite”). На каждом из попапов создаются элементы “Lable” - некие шаблоны, в которые будут выводиться папки, информация о плейлистах, обложки и названия треков.

Sonos_Explorer1.png Sonos_Explorer2.png

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

Sonos_Explorer3.png

  1. После создания элементов вернитесь к элементу Advanced List.

  2. Перейдите в настройки темплейта, нажав кнопку “Template setting”.

Sonos_Explorer4.png

  1. Добавьте попапы с темплейтами. Впишите в строчке Code type , как показано на рисунке.

Sonos_Explorer5.png

  1. Для настройки темплейта нужно открыть его двойным кликом. Затем добавить туда лейблы. Разберем настройку темплейта “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

Sonos_Explorer6.png

  1. По аналогии настройте лейблы оставшихся темплейтов “TplRoot” и “TplPlayList”.

“TplRoot”, введите Directory в поле Type. Создайте лейбел lbl.Name.Text, внесите в поле Value значение name.

Sonos_Explorer7.png

TplPlayList , введите playlist в поле Type. Создайте лейблы:

  • lbl.Name.Text, внесите в поле Value значение name.
  • lblTrackCount - внесите в поле Value значение trackCount.

Sonos_Explorer8.png

  1. После настройки лейблов и темплейтов, привяжите команду и фидбек “Explorer” на элемент Advanced List.

Для привязки команды, нажмите на элемент (Advanced List), а затем в окне Programming нажать на + напротив события Press.

Sonos_Explorer9.png

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

Sonos_Explorer10.png

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

Sonos8.png

Настройка Queue

Попап “Queue” нужен для вывода информации о треках в текущей очереди воспроизведения, а также для выбора определённого трека, из этой самой очереди.

  1. Создайте элемент Advanced List. Создайте темплейт TplQueue (для вывода информации треков из очереди воспроизведения). Темплейт имеет следующие лейблы:
  • lblName
  • lblType
  • lblNextImage1
  1. Настройте темплейт и лейблы.

Tpl.Queue , введите playlisttrack в поле Type. Создайте лейблы:

  • lbl.Name, внесите в поле Value значение name;
  • lblType- внесите в поле Value значение description;
  • lblNextImage 1- внесите в поле Value значение imageUrl.

Sonos_Queue2.png

  1. Перенсите при помощи Drag&Drop команду и фидбек Queue на Advanced List.

Привязка команды:

Sonos_Queue.png

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

Sonos_Queue1.png

Sonos group

Драйвер "Sonos groups" служит для управления устройствами Sonos в группе.

примечание
  • Данный драйвер является дополнением к драйверу акустических систем Sonos и не подразумевает отдельного использования в проекте.

Свойства драйвера

Sonos_group1.png

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

Настройка команд и фидбеков

SendRecieve.png

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

Подробнее о работе с графическими элементами написано в статье "Типы графических элементов".

Commands

Sonos_group2.png

  • Name - имя команды;
  • Type - тип команды:
    • Group - команда группировки устройств;
    • Ungroup - команда разгруппировки устройств;
    • Select - команда выбора устройств для группировки.

Feedbacks

Sonos_group3.png

  • Name - имя фидбека;
  • Type - тип фидбека:
    • Players - cписок текущего состояния устройств ( cгруппированы или не сгруппированы).

Настройка Popup groups

Попап “Popup groups” необходим для выбора и группировки / разгруппировки устройств из списка.

  1. Создайте попап (Popup groups) и добавьте на него Advanced List.

  2. Создайте 2 попапа “Templates”. Назовите их TplPlayer (элемент, обозначающий одно устройство), TplGroup (элемент, обозначающий группу устройств). На каждом из попапов создаются элементы “Lable” - некие шаблоны, в которые будет выводиться информация о группах (название, количество устройств, координатор).

Sonos_group4.png

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

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

  1. После создания элементов вернитесь к элементу Advanced List.

  2. Перейдите в настройки темплейта, нажав кнопку “Template setting”.

Sonos_group7.png

  1. Добавьте попапы с темплейтами. Впишите в строчке Code type , как показано на рисунке.

Sonos_group8.png

  1. Для настройки темплейта нужно открыть его двойным кликом. Затем добавить туда лейблы. Разберем настройку темплейта “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.

Sonos_group9.png Sonos_group10.png

  1. После настройки лейблов и темплейтов, привяжите команду “Select” на элемент Advanced List.

Для привязки команды, нажмите на элемент (Advanced List), а затем в окне Programming нажать на + напротив события Release.

Sonos_group11.png

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

Sonos_group12.png

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

Sonos_group13.png

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

Sonos_group14.png