API SpinetiX: различия между версиями

Материал из База знаний SpinetiX
 
(не показаны 22 промежуточные версии этого же участника)
Строка 2: Строка 2:
<translate>
<translate>


= API Spinetix =
=API Spinetix =


* [https://support.spinetix.com/wiki/Network_API Network API (REST, переменные, управление сценариями)]
*[https://support.spinetix.com/wiki/Network_API Network API (REST, переменные, управление сценариями)]


* [https://support.spinetix.com/wiki/JSignage_API jSignage API (скрипты для упрощения парсинга, анимации, запросов, построения виджетов и т.п.)]
*[https://support.spinetix.com/wiki/JSignage_API jSignage API (скрипты для упрощения парсинга, анимации, запросов, построения виджетов и т.п.)]


* [https://support.spinetix.com/wiki/RPC_API RPC API (Remote procedure call, мониторинг и управление через RPC)]  
*[https://support.spinetix.com/wiki/RPC_API RPC API (Remote procedure call, мониторинг и управление через RPC)]  


* [https://support.spinetix.com/wiki/Web_Storage_API Javascript, REST API]
*[https://support.spinetix.com/wiki/Web_Storage_API Javascript, REST API]


* [https://support.spinetix.com/wiki/JavaScript_COM_API COM Port API]
*[https://support.spinetix.com/wiki/JavaScript_COM_API COM Port API]


* [https://support.spinetix.com/wiki/USB_I/O_API USB API]
*[https://support.spinetix.com/wiki/USB_I/O_API USB API]


* [https://support.spinetix.com/wiki/JSignage:Graph_API Graph API (графическая подсистема, построение векторных чартов, графиков, диаграмм)]
*[https://support.spinetix.com/wiki/JSignage:Graph_API Graph API (графическая подсистема, построение векторных чартов, графиков, диаграмм)]


* [https://support.spinetix.com/wiki/Configuration_API Configuration API (массовое конфигурирование плееров) ]
*[https://support.spinetix.com/wiki/Configuration_API Configuration API (массовое конфигурирование плееров) ]


* [https://support.spinetix.com/wiki/Status_API Status API (быстрый мониторинг состояния)]
*[https://support.spinetix.com/wiki/Status_API Status API (быстрый мониторинг состояния)]


*[https://support.spinetix.com/wiki/JSignage_QRCode_API QR Code API (генерация QR кодов из переменных)]
*[https://support.spinetix.com/wiki/JSignage_QRCode_API QR Code API (генерация QR кодов из переменных)]
Строка 55: Строка 55:
*Превратить в людской формат можно здесь https://json-csv.com/
*Превратить в людской формат можно здесь https://json-csv.com/
*Годно для доставания записанных данных. Например, результатов голосования.  
*Годно для доставания записанных данных. Например, результатов голосования.  
</translate>


== Как управлять плеером по координатам через event ==
== Как управлять плеером по координатам через event ==
Строка 63: Строка 62:
*Проект-заготовка: https://gofile.me/70CBj/OMMFN9Kmg
*Проект-заготовка: https://gofile.me/70CBj/OMMFN9Kmg


В этом проекте:  
В этом проекте:
#Видно курсор, удобно для теста.
 
Видно курсор, удобно для теста.
 
Чтобы его скрыть, комментим в индексе эту строчку:
Чтобы его скрыть, комментим в индексе эту строчку:
<code>jSignage.UI.cursor({type: 'circle', size: 30, color: 'blue'}).addTo('svg');</code>
<code>jSignage.UI.cursor({type: 'circle', size: 30, color: 'blue'}).addTo('svg');</code> <br />
#В файле fse.js готовые функции и описание команд
 
В файле fse.js готовые функции и описание команд


ВАРИАНТ 2. Без готового скрипта:
ВАРИАНТ 2. Без готового скрипта:
Строка 78: Строка 80:
*https://support.spinetix.com/wiki/Shared_Variables#fireSharedEvent.28.29
*https://support.spinetix.com/wiki/Shared_Variables#fireSharedEvent.28.29
*https://support.spinetix.com/wiki/Shared_Variables_legacy_server#Event_command
*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 порт это порт доступа к файлам плеера.
[[Файл:Interactive playlist 1.jpg|800px]]
СКАЧАТЬ
*HTML интерфейс управления контентом. Скачать  [[Файл:M.7z|мини|Управлялка контентом]]
*Виджет: Интерактивный плейлист. Скачать  [[Файл:Interactive Playlist2.zip|мини]]
</translate>

Текущая версия от 12:26, 20 декабря 2024


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. Используем готовый скрипт:

В этом проекте:

Видно курсор, удобно для теста.

Чтобы его скрыть, комментим в индексе эту строчку: 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

Матчасть на спинетикс вики:

Все про управление воспроизведением + 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, скопировать ключ

Где:

  1. ip_address это IP плеера
  2. 1234 это порт API (Контрольный центр, Network API, может быть любым)
  3. update это служебная команда обновления/назначения переменных
  4. container_name1 это контейнер с переключаемым контентом №1. Назначается в настройках контейнера. Управляемые контейнеры лежат в Виджеты/Интерактив. Мы используем самодельный, в приложении.
  5. switch_value1 это название сценария, включаемого в контейнере
  6. container_name2 это контейнер с переключаемым контентом №2
  7. 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