API SpinetiX: различия между версиями
Нет описания правки |
|||
(не показано 37 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
=API Spinetix = | |||
[https://support.spinetix.com/wiki/ | *[https://support.spinetix.com/wiki/Network_API Network API (REST, переменные, управление сценариями)] | ||
*[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/Web_Storage_API Javascript, REST 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/JSignage:Graph_API Graph API (графическая подсистема, построение векторных чартов, графиков, диаграмм)] | |||
*[https://support.spinetix.com/wiki/Configuration_API Configuration API (массовое конфигурирование плееров) ] | |||
*[https://support.spinetix.com/wiki/Status_API Status API (быстрый мониторинг состояния)] | |||
*[https://support.spinetix.com/wiki/JSignage_QRCode_API QR Code API (генерация QR кодов из переменных)] | |||
== Какие языки программирования можно использовать, если нужен дополнительный функционал? ==== | == Какие языки программирования можно использовать, если нужен дополнительный функционал? ==== | ||
Основной язык плеера — javascript + SVG. Есть собственная библиотека jSignage. Это эффекты, построение слоев и анимации, REST и работа с внешними данными. Можно использовать PHP в виде отдельных модулей и отдельные элементы node.js | Основной язык плеера — 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. | 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 | |||
В этом проекте: | |||
Видно курсор, удобно для теста. | |||
Чтобы его скрыть, комментим в индексе эту строчку: | |||
<code>jSignage.UI.cursor({type: 'circle', size: 30, color: 'blue'}).addTo('svg');</code> <br /> | |||
В файле fse.js готовые функции и описание команд | |||
ВАРИАНТ 2. Без готового скрипта: | |||
Пример команды по координатам х45 y20: | |||
<code>http://[адрес плеера]:1234/event?mousedown=x%3D45,y%3D20,button%3D0&mouseup=x%3D45,y%3D20,button%3D0 | |||
</code> | |||
Матчасть на спинетикс вики: | |||
*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 порт это порт доступа к файлам плеера. | |||
[[Файл: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. Используем готовый скрипт:
- Видеоинструкция от Никиты: 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