API SpinetiX
API Spinetix
Какие языки программирования можно использовать, если нужен дополнительный функционал? ==
Основной язык плеера — javascript + SVG. Есть собственная библиотека jSignage. Это эффекты, построение слоев и анимации, REST и работа с внешними данными. Можно использовать PHP в виде отдельных модулей и отдельные элементы node.js CSS и HTML не поддерживаются. HTML5 поддерживается на уровне технологий SVG Tiny 1.2 Micro DOM (uDOM) API, JavaScript, XMLHttpRequest Level 1 API,HTMLImageElement, HTML Canvas 2D Context API.
Как использовать Telnet, управление по HTTP
Управление в плеерах SpinetiX — двухстороннее. Это означает, что плеер может управлять внешним устройством, и внешнее устройство может управлять плеером. Пояснение по синтаксису для HTTP REST, Telnet и др. — https://youtu.be/i-zwjJuVm5I в видеоролике и материалах для скачивания. Есть аналогичный виджет, работающий по протоколу PJLink. Пример использования здесь – https://dstools.ru/spinetix-panasonic
Управление экранами и проекторами через PJLink
Плееры могут общаться со средствами отображения через протокол PJLink. Для экранов и проекторов Panasonic существуют готовые модули, обеспечивающие контроль состояния средств отображения и управление. Виджеты размещаются в календаре в заданное время. Читайте кейс ""Как контролировать экран и переключение источника сигнала?"" – https://dstools.ru/spinetix-panasonic
Поддерживаются ли RAW TCP, Sockets и т.п.?
Да, поддерживаются. С использованием этих инструментов построены виджеты работы с PJLink
Можно ли читать данные, например, бегущую строку, с UNC ресурса (\\IvanSergeych\MyDocuments….)?
Нет. Данные можно читать только с HTTP ресурсов. Если есть необходимость использовать локальные данные с ПК, воспользуйтесь виртуальными вебсерверами, к которым можно подключить локальную папку. Мы используем XAMPP.
Какие форматы внешних данных можно читать?
CSV, TXT, XML, RSS, ICS, JSON. Тонкая настройка парсеров доступна в Elementi X (переназначение колонок, фильтры и т.п.), а также с помощью присоединенных javascript инструкций.
Как добыть данные из localStorage
- Включить Advanced, WebStorage API.
- В браузере http://192.168.50.57/webstorage?name=НАЗВАНИЕПЕРЕМЕННОЙ
- Список всех хранящихся переменных без содержимого: http://192.168.50.57/webstorage
- Для ajax запросов использовать API ключ, без него работать не будет.
- В браузер вывалятся данные в json формате
- Превратить в людской формат можно здесь https://json-csv.com/
- Годно для доставания записанных данных. Например, результатов голосования.
Как управлять плеером по координатам через event
ВАРИАНТ 1. Используем готовый скрипт:
- Видеоинструкция от Никиты: https://gofile.me/70CBj/Q9BhjF139
- Проект-заготовка: https://gofile.me/70CBj/OMMFN9Kmg
В этом проекте:
Видно курсор, удобно для теста.
Чтобы его скрыть, комментим в индексе эту строчку:
jSignage.UI.cursor({type: 'circle', size: 30, color: 'blue'}).addTo('svg');
В файле fse.js готовые функции и описание команд
ВАРИАНТ 2. Без готового скрипта:
Пример команды по координатам х45 y20:
http://[адрес плеера]:1234/event?mousedown=x%3D45,y%3D20,button%3D0&mouseup=x%3D45,y%3D20,button%3D0
Матчасть на спинетикс вики:
- https://support.spinetix.com/wiki/Shared_Variables#fireSharedEvent.28.29
- https://support.spinetix.com/wiki/Shared_Variables_legacy_server#Event_command
Все про управление воспроизведением + Interactive playlist + html
Управление воспроизведением строится на основе подачи плееру команд через API порт. Самый простой способ — http. Второй по популярности — telnet. Дальше идут udp, сокеты и т.п.
Синтаксис http. GET или POST запрос должен выглядеть так: http://[ip_address]:1234/update?container_name1=switch_value1&container_name2=switch_value2&rpc-api-key=КЛЮЧAPI
В конце добавлять ключ API. Связано с безопасностью CORS. Пример добавки к запросу: &rpc-api-key=637bbac5-b79c-4af8-9628-edeb6d3fbc8c
Получить ключ: контрольный центр, Advanced, RPC Security, Enable AJAX CORS, скопировать ключ
Где:
- ip_address это IP плеера
- 1234 это порт API (Контрольный центр, Network API, может быть любым)
- update это служебная команда обновления/назначения переменных
- container_name1 это контейнер с переключаемым контентом №1. Назначается в настройках контейнера. Управляемые контейнеры лежат в Виджеты/Интерактив. Мы используем самодельный, в приложении.
- switch_value1 это название сценария, включаемого в контейнере
- container_name2 это контейнер с переключаемым контентом №2
- switch_value2 это название сценария, включаемого в контейнере
Контейнеров может быть сколько угодно, в т.ч. невидимых (с трансляцией команд в RS-232, выполняющих служебные задачи, отправляющих какие-либо запросы, предзагружающих картинки и т.п.). Если надо синхронное переключение на нескольких плеерах (видеостена или просто отдельные устройства), то используется название контейнера, далее @ip мастер-плеера. Мастер это плеер, отвечающий за синхронное переключение. Никаких специальных настроек не нужно, просто выбрать мастером переключения и все. Должен быть открыт API. См. приложенный Interactive playlist, там название контейнера - switch@192.168.50.100 Это для видеостен.
Пример команды: http://192.168.50.100:1234/update?switch=mainPlaylist
Видео про синтаксис: https://www.youtube.com/watch?v=i-zwjJuVm5I
В приложении html, которым мы пользуемся для переключения сценариев и картинка-объяснение как он работает. Если владеешь html хотя бы в базе — разберешься. Если что спрашивай.
HTML размещается прямо в проекте на плеере. Создаешь отдельного пользователя, далее с любого телефона открываешь http://192.168.50.100:81/m/index.html и управляешь воспроизведением. 81 порт это порт доступа к файлам плеера.
СКАЧАТЬ
- HTML интерфейс управления контентом. Скачать Файл:M.7z
- Виджет: Интерактивный плейлист. Скачать Файл:Interactive Playlist2.zip