Logo Logo ru
  • iRidi Pro
    Основные компоненты
    • Приложение i3 Pro
    • iRidi Pro Server
    • iRidi Studio
    • iRidium studio v. 1.3.8 (устаревшая версия)
    Java Script в iRidi
    • Руководство
    • Справочник
    • Примеры
    • JS драйвера
    другие
    • Личный Кабинет
    • iRidium Cloud
    • iRidium Transfer
    • Push-уведомления
    • Лучшая практика
    Лицензирование
    • Лицензирование и передача проекта
    • Оффлайн-лицензирование
    • Активация iRidi Pro Server
  • Продукты
    i3 lite
    • Приложение i3 lite
    • Регистрация и лицензирование
    • Сервер
    • Модули
    KNX Home Server
    • Приложение i3 KNX
    • KNX Home Server
    BUS77 HOME SERVER
    • Приложения Bus77 Home и Bus77 Lite
    • Bus77 Home Server
    Решения
    • BYOD - решение для гостиниц
    • Портал жителя - решение для МКД
    iRidi SCADA
    • iRidi SCADA
  • Bus77
    НАСТРОЙКА BUS77
    • Основы Bus77
    • Приложения Bus77 Home и Bus77 Lite
    • Работа с драйвером Bus77 в iRidi Studio
    • Настройка шины Bus77 в iRidi Studio
    ПРОТОКОЛ BUS77
    • Характеристики CAN (Bus77)
    • Описание протокола
    • Исходники на GitHub
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
  • Поддерживаемое оборудование
    Драйверы
    • Список драйверов
    • ProAV драйвера
    • AV & Custom Systems
    • JS драйвера
    • Сторонние драйвера и фриланс
    Протоколы и интерфейсы
    • Голосовое управление
    • 1-Wire
    • BACnet IP
    • Bus77
    • KNX
    • KNX IP BAOS
    • Weinzierl kBerry
    • Microsoft Exchange
    • Modbus
    • MQTT
    • NFC
    • ODBC
    • Onvif
    • SIP
    • SNMP
    • Wake On Lan
    • Z-Wave
    • ZigBee
    Производители
    • AMX
    • AVCiT
    • Beckhoff ADS
    • Biamp Tesira
    • Bluesound
    • Casambi
    • BSS Harman
    • Clipsal
    • ControlArt 7Port
    • Crestron
    • DigiBird
    • Domintell
    • Duotecno
    • EIDE
    • EPSNET
    • Global Cache
    • HDL Buspro
    • Helvar
    • IEAST
    • INELS BUS
    • INELS Wireless
    • Intesis
    • Kleger
    • Kramer VIA
    • Kramer 3000
    • Larnitech
    • Legrand Netatmo
    • LG TV
    • Lutron
    • Lutron Homeworks QS
    • MyHome
    • Nest
    • Novastar
    • Panasоnic PTZ
    • Philips Dynalite
    • PJLink
    • Satel
    • SamsungTV
    • Sonos
    • Somfy
    • SpinetiX
    • Televic Conference
    • TIS
    • Tion
    • URRI
    • Velbus
    • Velocio
    • Vinteo
    • WyreStorm
    • WiiM
    • Xicato
    • Yamaha
    • ZONT
    • Z-Wave.me
    Протестированное оборудование
    • Панель HDL S57
    • Панель HDL S10
    • SIP-домофон
    • Akuvox
    • Arlight
    • Divus
    • QBic TD-1050 PRO
    • QBic TD-1060 Slim
    • QBic TD-1070
    • Sigur
    • Uni-Ubi
    • Velocio
  • Оборудование iRidi

    Серверы
    • HS Сервер
    • ProAV Control Processor Basic
    • ProAV Control Processor Advanced
    • Спецификация контроллеров UMC
    • Настройка контроллера UMC C2
    • Настройка контроллера UMC C3
    • Настройка контроллера HDL IntelliCenter 2 (UMC C4)
    Модули расширения
    • I-PX-RS1
    • I-PX-RS4
    • I-PX-IR3
    KNX
    • KNX Home Server
    • KNX IP Interface
    Панели управления
    • iRidium Panel 7
    • Touch Panel P3
    • Touch Panel P6
    • Touch Panel P8
    • Touch Panel P10
    • Tabletop Touch Panel 10
    • AV Remote Control
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
    • Differences
Сайт iRidium mobile
Содержание
    Инструменты‌
    • Сведения о странице
    • Постоянная ссылка
    • Версия для печати
    • Спецстраницы
    • Связанные правки
    • Ссылки сюда
    Login / Create Account
    Материал из for iRidium developers
    Перейти к: навигация, поиск
    Эта страница является переводом страницы Editor Server Tools. Перевод выполнен на 100%.

    Other languages:
    English • ‎русский

    Содержание

    • 1 iRidium Studio
    • 2 Проект iRidium Server
      • 2.1 I/O. Связь с оборудованием
        • 2.1.1 Добавление драйвера
        • 2.1.2 Переменные драйвера и сервера
        • 2.1.3 Создание панельного проекта
      • 2.2 Schedule. Расписания
        • 2.2.1 Настройки
        • 2.2.2 Астротаймер
          • 2.2.2.1 Настройка астротаймера
        • 2.2.3 Настройки повторения (Repeat)
      • 2.3 Routine. Сценарии (рутины)
        • 2.3.1 Настройки
        • 2.3.2 Использование расписания в сценариях
      • 2.4 Модификация данных на сервере
        • 2.4.1 Примеры модификаторов
      • 2.5 Запись и чтение переменных
      • 2.6 Шлюзование данных между виртуальным каналом и тегом
      • 2.7 Шлюзование данных между драйверами
      • 2.8 Активация сценария с панели управления
      • 2.9 Периодические действия
      • 2.10 Запросы к базе данных
      • 2.11 Построение графиков
    • 3 Синхронизация панели управления и Сервера
    • 4 Загрузка проекта на Сервер

    iRidium Studio

    P.2 Creating a server project
    « P.1 First steps Ч.3 Working with drivers »

    Редактор iRidium Studio включает инструменты для настройки команд и получения данных обратной связи от управляемого оборудования. Операции по настройке связи с оборудованием производятся во вкладке I/O и в редакторе скриптов.


    Проект iRidium Server

    Проект iRidium Server - это программа, которая работает на Сервере, и обеспечивает связь Сервера с оборудованием автоматизации.


    Взаимодействие сервера и панели управления

    ServerPrincipalSceemDriverLayer.png

    Составляющие Сервера

    • Драйверы - подключаются к оборудованию, хранят список переменных, которыми можно управлять. Они связаны с каналами сервера
    • Каналы сервера - промежуточные переменные между панелями управления и каналами драйверов. Каналы сервера объединяют переменные всех драйверов в единое пространство
    • Виртуальные переменные - хранят данные сервера и результаты работы JavaScript, не связанные с реальными переменными драйверов
    • База данных - ведет запись истории изменения переменных сервера
    • JavaScript - описывает сценарии, логику, расписания (интеллектуальные функции сервера), позволяет модифицировать данные при прохождении через сервер
    • Web сервер - позволяет подключиться к iRidium Server через веб-интерфейс для просмотра состояния и настройки. Обеспечивает работу REST API , с помощью которого сторонние приложения и системы могут управлять функциями сервера по НТТР


    Управление сервером

    • i3 pro - приложение-клиент iRidium, который запускает визуализацию управления сервером. Включает:
      • драйвер iRidium Server в i3 pro - этот драйвер устанавливает соединение с сервером по TCP
      • JavaScript в i3 pro - позволяет создать сценарии, которые работают на панели управления (например, управляют графическим интерфейсом)
      • Графический интерфейс в i3 pro - визуальный интерфейс управления оборудованием автоматизации
    • Web-интерфейс - интерфейс управления настройками сервера, который можно открыть в браузере. Он не отображает пользовательскую визуализацию
    • Сторонние приложения - приложения и устройства, которые могут управлять сервером, отправляя ему HTTP команды, настроенные в соответствии с REST API сервера


    Шаги настройки серверного проекта зависят от поставленных задач автоматизации, поэтому могут отличаться (какие-то шаги можно пропустить).

    Общим является то, что сервер подключается к определенному оборудованию автоматизации, поэтому связь с оборудованием мы настроим в первую очередь.


    I/O. Связь с оборудованием

    В простейшем случае применения сервера требуется подключение к оборудованию с нескольких панелей управления. Настроим передачу данных через сервер, обеспечив работу нескольких панелей управления

    В процессе решения этой задачи, мы выполним несколько действий:

    1. создадим серверный проект
    2. добавим в него список драйверов, которыми нужно управлять
    3. настроим команды и каналы обратной связи для этих драйверов
    4. создадим проект для i3 pro на базе серверного проекта


    Добавление драйвера

    Создайте новый проект для сервера: File > New > New Server Project.... Откройте вкладку I/O

    информацию о настройке каждого драйвера и его каналов вы найдете в разделе Управление оборудованием

    Создайте проект для сервера:

    Из базы данных

    Перетяните драйвер из Device Panel в окно I/O > DRIVERS:

    Editor add custom driver toServer.png

    Настройте драйвер: укажите Host, Port и др. параметры подключения

    Импорт из файла конфигурации

    Editor project device panel import add drivers.png

    iRidium поддерживает импорт из файлов:

    • ETS Project (*.pr3, *.pr4, *.pr5, *.knxproj) - импорт групповых адресов из ETS (KNX)
    • Simpl project (*.smw) - импорт джоинов Crestron
    • Clipsal project (*.xml) - импорт групп Clipsal
    • iRidium Archive Project (*.irpz) – импорт драйверов из проектов iRidium
    • iRidium Server Project (*.sirpz) – импорт драйвера iRidium Server из проекта iRidium
    • Modbus CSV Files (*.csv) - импорт регистров Modbus из csv таблицы


    Поиск устройств в локальной сети

    Editor project device panel scan add drivers.png

    iRidium поддерживает сканирование локальной сети для обнаружения оборудования определенного типа. Сканирование позволяет быстро создать список устройств и команд для них:

    • HDL-BUS Pro Net (UDP) – оборудование в системе HDL-BUS Pro
    • Lutron Net (UDP) – оборудование в системе Lutron
    • DuoTecno (TCP) – оборудование системе DuoTecno
    • Domintell (UDP) – оборудование в системе Domintell



    На основе проекта визуализации

    Если у вас уже есть проект для панели управления (*.irpz), созданный в iRidium V2 или V3, вы можете автоматически сформировать проект для сервера. В результате, вы получите проект для панели управления, который подключается к серверу, и проект для сервера, который подключается к оборудованию, настроенному ранее в проекте визуализации. Такая конвертация - самый быстрый способ получить Серверное решение.

    Editor Convert PanelProject toServer.png

    Будьте внимательны, iRidium server в отличие от i3 pro не поддерживает:

    • графический интерфейс,
    • токены проекта и
    • большинство системных токенов.


    Поэтому обращения к графическим элементам и токенам приведут к сбою работы скрипта. Следует вручную исправить скрипт: удалить ошибочные обращения, обращения к токенам проекта можно заменить на обращения к виртуальным каналам и тегам.


    Переменные драйвера и сервера

    Вкладка I/O серверного проекта визуально разделена на две части: DRIVERS и IRIDIUM SERVER:

    • во вкладке DRIVERS вы видите настройки подключения к оборудованию автоматизации.
    • во вкладке IRIDIUM SERVER вы видите проекцию переменных оборудования автоматизации на переменные сервера. С помощью переменных сервера мы объединяем все каналы оборудования в единое пространство имен. Панель управления будет обращаться к переменным сервера, а те, в свою очередь, передадут данные на оборудование.


    Проекция драйвера на переменные IRIDIUM SERVER состоит из вкладок:

    • Driver Tokens - переменные драйвера. Отображают статус подключения к оборудованию
    • Channels - переменные, которыми можно управлять
    • Tags - переменные, от которых можно получить обратную связь


    Записывая значение в канал Сервера, мы активируем команду оборудованию. То же с обратной связью - она будет передана из Feedback драйвера в соответствующий тег Сервера.


    Переменные сервера можно записывать, читать и модифицировать с помощью JavaScript. Модификация означает промежуточное преобразование данных на сервере - перед отправкой команды оборудованию, или перед передачей обратной связи на панель управления.


    Driver Tokens

    Переменные драйвера. Отображают статус подключения к оборудованию

    Server Token Relations.png
    • Online - состояние подключения к управляемой системе (Online/Offline = 1/0)
    • Status - статус подключения к системе (Offline/Connecting/Online/Waiting = 0...3)
    • Host - доменное имя удаленной системы
    • HostPort - порт на удаленной системе, к которому подключается i3 pro
    • IP - IP-адрес управляющей панели
    • HostIP - IP-адрес удаленной системы, к которой подключен i3 pro
    • Port - локальный порт клиента, через который осуществляется связь с удаленным устройством

    Токены драйвера хранят информацию о подключении сервера к управляемому оборудованию. Их можно сохранить в базу данных и использовать для построения графиков или вывода лога.


    ▼ Commands / Channels, Virtual Channels

    Commands / Channels - переменные, с помощью которых можно управлять оборудованием.

    Виртуальные переменные сервера, которыми можно управлять. Не связаны напрямую с управляемым оборудованием. Вы можете создать такие переменные вручную и записать в них результаты работы приложения: числа, строки, массивы. Данные для записи формируются в JavaScript на сервере, или с панели управления.

    Работа с Virtual идентична работе с Project Tokens, использует те же правила и функции API.

    Virtual tags On Server.png
    Commands / Channels
    Server Tag Relations.png
    Virtual Channels
    Virtual tags On Server.png
    • Name - короткое имя канала
    • Full Name - полное имя канала сервера, используйте для обращения к переменной из JS на сервере. Будет отображаться в панельном проекте.
    • Description - описание переменной, опционально
    • Script Modifier - скриптовая функция-модификатор, которая позволяет выполнить промежуточное преобразование значений перед отправкой их в канал драйвера или после получения их с панели управления и скрипта.


    ▼ Feedbacks / Tags, Virtual Tags


    Переменные, от которых нужно получить обратную связь

    Server Fb Relations.png

    Виртуальные переменные сервера, от которых можно получить обратную связь. Не связаны напрямую с управляемым оборудованием.

    Virtual tags 1 On Server.png
    Feedback / Tags
    Server Fb Relations.png
    Virtual Tags
    Virtual tags 1 On Server.png

    Tags

    • Name - короткое имя
    • Full Tag Name - полное имя для обращения из скрипта
    • Description - описание (опционально)
    • Access - тип переменной: Public - можно изменить с панели управления, Private - можно изменить только с сервера
    • Script Modifier - выполнить JavaScript функцию каждый раз при активации тега - это позволяет модифицировать полученные данные перед передачей на панель управления
    • Persist - восстановить последнее значение переменной в случае перезагрузки Сервера
    • Store In DB - сохранение всех измененных значений в базу данных
    • DB Save Strategy - способ сохранения данных в базу: периодически или при изменении
      • Deadband - погрешность изменения, значения больше которой нужно записывать в базу. Если Deadband: 0.5, изменение на 0.3 не будет записано в базу
      • Interval - переменная будет записываться в базу с указанной периодичностью



    Создание панельного проекта

    Когда драйверы в серверном проекте настроены, вы можете создать проект для панели управления - визуализацию управления сервером.

    Проект генерируется на базе серверного, т.к. должен содержать информацию о переменных сервера.

    СПОСОБЫ СОЗДАНИЯ ПАНЕЛЬНОГО ПРОЕКТА

    Есть несколько способов добавить драйвер iRidium Server в проект панели управления.


    Быстрое создание проекта

    Правой кнопкой мыши нажмите на проект Сервера и выберите пункт "Create Panel Project"

    FastCreateUIbasedOnServer.png

    Будет создан панельный проект с пустой страницей и драйвером iRidium Server, в который перейдут все теги сервера. С ними можно будет работать как с командами и каналами обратной связи - привязывать к элементам для управления и отображения, обрабатывать с помощью iRidium Script.

    FastSincWithSource.png
    При внесении изменений в серверный проект, вы можете быстро синхронизировать его с панельным проектом. Выберите драйвер iRidium Server и нажмите Sinc with Source.


    Файл серверного проекта, с которым будет синхронизироваться драйвер, можно заменить в строке Source Project


    Добавление iRidium Server в готовый проект визуализации

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

    FromDBSincWithSource.png
    1. добавьте драйвер iRidium Server из базы данных
    2. укажите путь к проекту *.sirpz, с которым нужно синхронизировать проект визуализации
    3. вы получите драйвер iRidium Server с актуальным списком команд и каналов обратной связи.

    Когда основа для проекта визуализации готова, можно перейти к разделу Визуализация управления iRidium Server - в нем описаны настройки управления переменными сервера.

    Если сервер, в вашем случае, должен не только предавать данные на панели управления, но и модифицировать их, запускать сценарии, сохранять базу данных и т.д, изучите остальные разделы инструкции:


    Schedule. Расписания

    Раздел Schedule в серверном проекте - это планировщик, реализованный в виде расписания с событиями. События могут срабатывать однократно или с заданной периодичностью.

    События планировщика используют для инициации команд, созданных в разделе Routine (в списке сценариев). Событие в расписании может повторяться с периодичностью от 1 дня до 1 раза в несколько лет.


    Нажмите на вкладку Schedule в проекте iRidium Server - окно настройки событий в расписании. В расписании можно создать любое число событий:

    Scheduler setup1.png

    - добавить событие
    - удалить событие. При этом перестанут работать сценарии, для которых это событие использовалось как условие срабатывания
    - изменить настройки события


    Настройки

    Scheduler setup2.png
    • Name - название события
    • Description - краткое описание (не обязательно)
    • Start - дата и время начала события
    • Finish - дата и время завершения события. Галочка "Specify the Date" по умолчанию снята, это значит, что событие закончится в тот же день, что началось. Поставив галочку, вы можете указать дату окончания события.
    • Repeat - нужно ли повторять событие. Если нужно, указывается интервал повторения события. Примеры и описание настроек повторения см. ниже
    • End - когда завершить повторение события (если включено повторение)
      • Never - никогда
      • Date - в указанную дату

    Астротаймер

    Астротаймер предназначен для создания расписаний и правил, связанных с восходом и закатом Солнца. Например, Вам необходимо создать расписание, по которому уличное освещение будет включаться на закате и отключаться на рассвете.
    В таком случае можно использовать простое фотореле, но у него есть ряд недостатков:

    • за состоянием фотодатчика надо следить (если загрязнится, то свет будет гореть и днем)
    • если появится паразитная засветка датчика, то освещение не включится, когда это необходимо
    • нельзя включать свет с опережением\запаздыванием относительно уровня освещения


    Астротаймер лишен всех этих недостатков.
    Далее рассмотрим, как настроить данный пример.

    Для работы с астротаймером не требуется подключение к интернету.

    Настройка астротаймера

    1 Создайте серверный проект или откройте уже имеющийся.
    2 В разделе Config, в полях Latitude и Longitude укажите свои координаты в виде десятичной дроби и нажмите кнопку Save.

    Astrotimer 1.png


    3 Добавьте оборудование, с которым будете работать и настройте его.
    4 В разделе Schedule создайте расписание, по которому будут работать устройства освещения. Началом события укажите закат (Sunset), а окончанием – восход (Sunrise) следующего дня.

    Astrotimer 2 1.png


    5 В разделе Routine создайте правила:
    Правило 1:
    WHEN → Event start

    Astrotimer 3.png


    THEN → отправить значение в канал устройства, чтобы оно включилось

    Astrotimer 4.png


    Astrotimer 5.png


    Правило 2:
    WHEN → Event finish

    Astrotimer 6.png


    THEN → отправить значение в канал устройства, чтобы оно отключилось

    Astrotimer 7.png


    BUT ONLY IF → устройство в данный момент включено (Feedback == 1)

    Astrotimer 8.png


    Astrotimer 9.png


    На этом настройка завершена. Сервер автоматически рассчитает время восхода и заката Солнца, в зависимости от Вашего расположения.

    Настройки повторения (Repeat)

    Repeat - периодичность повторения созданного события. Варианты настройки:

    Scheduler setup3.png
    • Never - не повторять событие
    Scheduler setup4.png
    • Every Day - каждый день, в указанное время
    • Every Week - в тот же день недели, что началось, каждую неделю. Например, каждый Пн
    • Every 2 Weeks - в тот же день недели, что началось, каждую 2ю неделю. Например, каждое второе Вс
    • Every Monts - в ту же дату, что началось, каждый месяц. Например, каждое 23е число
    • Every Year - в ту же дату и месяц, что началось, каждый год. Например, каждое 1 января
    Scheduler setup7.png
    Scheduler setup6.png
    Scheduler setup8.png
    • Custom - позволяет настроить повторение по дням, неделям, месяцам, годам, но с большим периодом. Например, каждые 3 дня, или каждый 2й понедельник указанных месяца.
      • Repeat Settings: (только для Repeat: Custom)
      • Periodicity - периодичность повторения
        • By Days - повторять каждый N-й день, начиная с даты начала события. Например, каждый 2й день
          • Every: <N> Days - интервал повторения в днях, от 1 до 365
        • By Weeks - повторять каждую N-ю неделю, в указанные дни недели, начиная с даты начала события. Например, четверг каждой 2й недели
          • Every: <N> Weeks - интервал повторения в неделях, от 1 до 52
          • On specified days of week - укажите дни недели, в которые нужно повторять событие
        • By Months - повторять каждый N-й месяц. Выберите принцип повторения: в указанные числа месяца / в указанные дни месяца. Например, каждый 2й месяц, 23 число. Или каждый 1й понедельник месяца.
          • Every: <N> Months - интервал повторения в месяцах, от 1 до 12
          • On specified dates of month - повторение в указанные числа месяца. Можно выбрать несколько чисел
          • On specified days of month - повторение в указанные дни месяца: 1й понедельник, 4е воскресенье, ...
        • By Years - повторять каждый N-й год
          • Every: <N> Years - интервал повторения в годах
          • On specified months -месяцы года, когда событие будет повторяться. Оно сработает в дату начала события
          • On specified days - для повторения в указанный день недели, а не дату месяца, поставьте галочку "At specified Day". Например, можно настроить срабатывание в 1й понедельник месяца

    Routine. Сценарии (рутины)

    Routine - это сценарий, который автоматически запускается при возникновении определенного события. Событием может быть получение данных от оборудования, или Event из расписания сервера.


    Настройки

    Нажмите на вкладку Routine в проекте iRidium Server - окно настройки сценариев:

    Routine setup1.png

    - добавить сценарий
    - удалить сценарий
    - изменить настройки сценария

    Добавить сценарий:

    Routine ready.png
    • Name - название события
    • Description - краткое описание (не обязательно)
    • WHEN - условие, за которым следит сценарий. При его выполнении, последовательно выполнятся команды, заданные в THEN. Условий может быть несколько, к срабатыванию сценария приведет выполнение любого из них (OR). В качестве условия WHEN можно выбрать:
      • Feedback - изменение канала драйвера
      • Event - начало или завершение события в расписании
    • THEN - когда сработало условие WHEN, все команды, настроенные в THEN будут выполнены друг за другом, как последовательность
    • BUT ONLY IF - исключающие условия. Если условия, настроенные в BUT ONLY IF не выполнены, сценарий не сработает. Если уловий несколько, должны выполниться они все (AND)
      • Feedback - выполняется условие по сравнению канала драйвера со значением
      • Event - событие в расписании сейчас происходит или не происходит

    Настройка условий WHEN, THEN, BUT ONLY IF:

    Routine setup when.png
    Routine setup then.png
    Routine setup butonlyif.png


    Сценарии работают на основе событийной логики: условие WHEN считается активным однократно только в тот момент, когда это условие изменило своё состояние с ложного на истинное. В последующих истинных состояниях условие WHEN уже не будет активным. В связи с этим последовательность действий THEN будет выполнено только один раз после активации WHEN.

    Если при запуске iRidium server условие WHEN сразу же приняло истинное значение, то действия THEN не будут выполнены, так как не было зафиксировано предварительное ложное состояние условия WHEN - обязательное условие активации сценария.


    Использование расписания в сценариях

    WHEN. Для запуска сценариев используют статусы событий расписания:

    • Start - событие началось
    • Finish - событие закончилось


    BUT ONLY IF. Как проверочное условие при выполнении сценария используют состояния:

    • In process - событие происходит сейчас
    • Not in process - событие не происходит сейчас


    Модификация данных на сервере

    Модификация - изменение полученных данных перед отправкой по назначению: оборудованию или на панели управления.

    Модификация производится с помощью скриптовой функции модификатора, которая настраивается в параметрах серверного канала или тега (виртуальные переменные модифицируются по тем же принципам):

    • Если функция модифицирует канал сервера: значение, полученное каналом от панели управления будет пересчитано в скрипте, и только потом отправлено драйверу
    • Если функция модифицирует тег сервера: значение, полученное тегом от драйвера будет пересчитано в скрипте, и только потом отправлено на панель управления.


    Пример: графические элементы на панели управления регулируют переменную в диапазоне от 0 до 100. Сервер приводит эти значения к 0...255 с помощью модификаторов, и только потом отправляет драйверу (оборудованию автоматизации):

    ModifyJS.png


    Функцию-модификатор нужно создать в редакторе скриптов и указать в свойствах переменной, строка Script:

    function modify_send (in_Type, in_Name, in_Value)
    {
       in_Value *= 255/100;
       return in_Value;
    }
    function modify_receive (in_Type, in_Name, in_Value)
    {
       in_Value *= 100/255;
       return in_Value;
    }
    ModifyJSinWindow.png

    Канал или тег, вызвавший функцию, передает ей аргументы:

    • in_Type - тип переменной, 0 - канал, 1 - тег обратной связи
    • in_Name - полное имя команды или тега
    • in_Value - значение команды или тега


    Таким образом, мы производим обработку данных при прохождении через сервер в обе стороны (от панели управления к оборудованию и обратно).

    модифицированное значение (in_Value) возвращаем переменной с помощью команды return in_Value;

    возвращать модифицированное значение не обязательно - можно просто выполнить разовое действие. Тогда начальное значение, полученное функцией, не попадет к адресату, а только приведет к выполнению функции.

    В веб-интерфейсе сервера отображаются модифицированные значения тегов и каналов, то есть:

    • значения тегов в веб-интерфейсе получаются в результате работы функции Script Modifier,
    • значения, заданные в веб-интерфейсе командой "Set", отправляются на вход функции Script Modifier перед отправкой в канал на физическое устройство.




    Примеры модификаторов

    Модификация Driver Tokens

    Driver Tokens отображают статус подключения к оборудованию автоматизации - они доступны только на чтение.

    /*
        Токен Online любого драйвера может вернуть только значение 1 = Online и 0 = Offline.
        Заменим 1 на текущее время и фразу " Connection established"; 0 на время и " Connection closed"
        Вернем результат преобразования тому, кто вызвал функцию
    */
    function onlineModify (in_Type, in_Name, in_Value) 
    {
       if (in_Value == 1) 
       {
          in_Value = IR.GetVariable("System.Time.24")+" Connection established";
          return in_Value;
       } else
       {
          in_Value = IR.GetVariable("System.Time.24")+" Connection closed";
          return in_Value;
       }
    }

    Чтобы выбрать, какую переменную будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

    Return Mod Value FromJStoPToken.png

    В переменную Сервера, а из нее на панель управления, приходет только результат модификации, но не реальное значение переменной.

    Модификация Driver Channels & Tags

    Каналы и теги драйверов связаны с переменными сервера, которые можно модифицировать. Привязать модификатор к команде драйвера нельзя - можно привязать его только к связанному с ней каналу сервера.

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

    /*
        В канал приходит значение в диапазоне 0-100
        Приведем это значение к диапазону 0-255, округлим и отправим оборудованию
    */
    function rangeModify (in_Type, in_Name, in_Value) 
    {
          in_Value *= 255/100;
          return in_Value.toFixed(0);
    }

    Чтобы выбрать, какой канал будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

    Return Mod Value FromJStoCmd.png

    Driver Tags

    /*
        Канал принимает значения в диапазоне 0-255
        Приведем значение к диапазону 0-100, округлим и вернем в канал обратной связи
    */
    function rangeModifyBack (in_Type, in_Name, in_Value)
    {
          in_Value *= 100/255;
          return in_Value.toFixed(0);
    }

    Чтобы выбрать, какой тег будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

    Return Mod Value FromJStoFb.png

    Тег будет выдавать только результат модификации, но не исходное значение.


    Модификация Virtual Channels & Tags

    Виртуальные переменные сервера на стороне панели управления выглядят как каналы и теги сервера. В переменную можно отправить значение value, на основе которого вы можете сформировать команду и отправить ее оборудованию автоматизации:

    /*
        команда DVD плейеру имеет вид: "VOLUME XX", ХХ - это громкость от 00 до 100
        Громкость может состоять из двух или трех симовлов, т.е. 00, 01, 02, ... 100 (ASCII)
        Получим значение 0-100 с панели управления (с обычного Level Item), сформируем и отправим команду
    */
    var driver = IR.GetDevice("AV & Custom Systems (TCP)");
    function volume (in_Type, in_Name, in_Value) 
    {
          if (in_Value < 10) 
          {
                in_Value = "0"+in_Value;
                driver.Send(["VOLUME "+in_Value+"\r\n"]);
          } else
          {
                driver.Send(["VOLUME "+in_Value+"\r\n"]);
          }
    }

    Чтобы выбрать, какую переменную обрабатывать, укажите имя функции в настройках переменной:

    Return Mod Value VirtModFromJS.png


    Virtual Tags

    Виртуальные теги сервера на панели управления они выглядят как каналы обратной связи. В них можно записать значение из скрипта, а затем обработать его функцией модификатором. Финальное значение будет доступно для чтения с панели управления.

    /*
        Виртуальный тег не получает значений напрямую от оборудования
        Поэтому мы запишем значение в тег из скрипта, когда это необходимо
    */
    IR.SetVariable("Server.Tags.Virtual 1", 100)
    /*
        обработаем значение с помощью функции модификатора
    */
    function value (in_Type, in_Name, in_Value) 
    {
        in_Value = "brightness: "+in_Value+"%";
        return in_Value; // brightness: 100%
    }


    Чтобы выбрать, какую переменную модифицировать, укажите имя функции в настройках переменной:

    Return Mod Value VirtTagFromJS.png


    Запись и чтение переменных

    Переменные сервера - это Driver Tokens, Channels, Tags, а также Virtual Channels и Virtual Tags. Их состояние можно изменять и запрашивать с панелей управления и из скриптов, размещенных на Сервере.

    Запись и чтение производится с помощью JavaScript команд:

    • IR.GetVariable(name)
    • IR.SetVariable(name, value)


    Для панели управления переменные сервера выглядят как команды и каналы драйвера. Поэтому для них применимы методы API iRidium для драйверов


    Записать значение в переменную

    1. Скопируйте полное имя переменной из вкладки IRIDIUM SERVER
    2. Используйте метод IR.SetVariable, чтобы записать в переменную значение:


    Синтаксис

    IR.SetVariable("Server.Path.Name", value)

    на входе значение описание
    Server.Path.Name Server.Channels.Virtual 1 type: string
    полное имя переменной сервера
    value 100 type: string, number, boolean
    значение для записи в переменную сервера
    на выходе
    успешность true type: boolean
    успешность записи


    Пример

    SetVirtualvarJS.png
    IR.AddListener(IR.EVENT_START, 0, function()
    {
        IR.SetVariable("Server.Channels.Virtual 1", 100);
    });

    метод можно применить к каналам и тегам сервера


    Прочитать значение переменной

    1. Скопируйте полное имя переменной из вкладки IRIDIUM SERVER
    2. Используйте метод IR.GetVariable, чтобы прочитать из переменной значение:


    Синтаксис

    IR.GetVariable("Server.Path.Name")

    на входе значение описание
    Server.Path.Name Server.Channels.Virtual 1 type: string
    полное имя переменной сервера
    на выходе
    value 100 type: string, number, boolean
    значение в переменной сервера


    Пример

    SetVirtualvarJS.png
    IR.AddListener(IR.EVENT_START, 0, function()
    {
        IR.GetVariable("Server.Channels.Virtual 1");
    });

    метод можно применить к каналам и тегам сервера


    Шлюзование данных между виртуальным каналом и тегом

    Виртуальная команда Virtual Channel (Server.Channels.Virtual 1) изначально не связана с виртуальным тегом обратной связи Virtual Tag (Server.Tags.Virtual 1), поэтому вы можете изменить значение виртуальной переменной на сервере, но оно не вернется на панель в виде значения обратной связи.

    Чтобы вернуть в i3 pro значение, отправленное из i3 pro на сервер, вам нужно создать скриптовую функцию (Script Modifier). Эта функция возьмет значение, отправленное из i3 pro и запишет в виртуальный тег обратной связи сервера. Именно это изменение увидит панель управления.


    скачать пример

    ModifyFunc Scheme server.png


    Чтобы настроить передачу данных от виртуальной команды тегу:

    1 Создайте новый проект для iRidium Server

    2 Создайте виртуальный канал (команду) и тег (канал обратной связи) с одинаковыми именами. Например, "Virtual 1"

    3 Откройте редактор скриптов (кнопка JS на панели инструментов), и создайте новый файл скрипта. Добавьте в него функцию модификатор:

    function virtual_to_virtual (in_Type, in_Name, in_Value) 
    {
       var namepart = in_Name.split(".");  
       IR.SetVariable("Server.Tags." + in_Name, in_Value);
       return in_Value;
    }

    4 Вернитесь к виртуальной команде "Virtual 1" (Server.Channels.Virtual 1), выберите в выпадающем списке параметра Script Modifier функцию virtual_to_virtual

    ModifyFunc ImageStudio server.png

    5 Все готово, при записи значения в Server.Channels.Virtual 1, это значение автоматически будет передано в Server.Tags.Virtual 1, и может быть отображено панелью управления как канал обратной связи.



    Шлюзование данных между драйверами

    Задача сквозного шлюзования данных - передача информации между не связанными системами автоматизации. Выполнить шлюзование позволяют функции модификаторы.

    скачать пример


    Пример: при изменении регистра в контроллере Modbus передать его новое значение групповому адресу KNX. значение перед отправкой в можно модифицировать (например, умножить на 100):

    function gate_to_modbus (in_Type, in_Name, in_Value) 
    {
       IR.SetVariable("Server.Channels.Modbus TCP 2.Channel 12", in_Value*100);
       return in_Value;
    }

    Функция address_1 следит за изменением канала обратной связи Modbus драйвера, выберите её в поле Script серверного тега Modbus.


    Если переменные в драйверах, между которыми настроено шлюзование, назвать одинаково, достаточно создать одну функцию модификатор и привязать к каналам драйвера, данные из которого нужно передавать в другой:

    function gate_to_modbus (in_Type, in_Name, in_Value) 
    {
       var namepart = in_Name.split(".");  
       IR.SetVariable("Server.Channels.Modbus TCP 2." + namepart[1], in_Value);
       return in_Value;
    }



    Активация сценария с панели управления

    В качестве основного способа выполнения периодических действий, используйте Расписания и Сценарии. Но, если их функционал недостаточен, можно воспользоваться скриптами.

    Активируем скриптовый сценарий при отправке значения с панели управления в виртуальный канал сервера. Для этого подпишемся на изменения канала в скриптах сервера:

    Пример сценария:

    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value)
    {
       if (name == "Server.Channels.Scenario 1" && value ==1)
       {     
          IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 1", 100); 
          IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 2", 75);
          IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 3", 0);
       } 
    });
    IR.SubscribeTagChange("Server.Channels.Scenario 1");

    Чтобы выполнить такой сценарий, отправьте с панели управления значение 1 в канал сервера "Server.Channels.Scenario 1".

    в проекте можно создать только один глобальный слушатель (IR.SetGlobalListener()). Все операции нужно производить внутри одного слушателя. Количество подписок практически не ограничено.


    Периодические действия

    В качестве основного способа выполнения периодических действий, используйте Расписания и Сценарии. Но, если их функционал недостаточен, можно воспользоваться скриптами.

    Пример 1: самый простой вариант - периодические действия без возможности настройки. Создаем набор таймеров на сервере, их нельзя посмотреть в клиенте или изменить время срабатывания:

    // if your another JS files includes  "IR.SetGlobalListener()"  
    // you have to add the code inside of previous IR.SetGlobalListener() and delete the listener from this file!
    // if you are not sure that you are able to do it yourself please contact to support@iridiummobile.ru
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value)
    {
       if (name == "System.Time.Minutes")
       {
          // SET UP PERIODICAL ACTIONS:
          // start hour, start minute, duration of process (ms), channel full name, start value, stop value 
          // if you don't want to stop process, add "no" instead of stop value 
          check_timer (10, 45, 60000, "Server.Channels.KNX Router (KNXnet/IP).Pump 1", 1, 0);             // timer 1 
          check_timer (14, 30, 480000, "Server.Channels.KNX Router (KNXnet/IP).Pump 2", 1, "no");         // timer 2
                                                                                                          // you can add more
       } 
     
       // do not edit the other part, you need only to add the needed timers in above  
       function check_timer (hours, minutes, duration, channel, start_value, stop_value)
       {
          if (IR.GetVariable("System.Time.Hour") == hours && IR.GetVariable("System.Time.Minutes") == minutes) 
          { 
             function stop () 
             {
                IR.GetServer().Set(channel, stop_value);
                IR.Log("process at "+hours+":"+minutes+" stopped");
             }
             IR.GetServer().Set(channel, start_value);
             IR.Log("process at "+hours+":"+minutes+" started");
             if (stop_value != "no") 
             {
                IR.SetTimeout(duration, stop);
             }
          }
       }
    });
     
    IR.SubscribeTagChange("System.Time.Minutes");

    Пример 2: скрипт на сервере проверяет время каждую минуту. Если время совпало со временем будильника, настроенного на определенный час и минуту в приложении-клиенте, и если будильник активен, то скрипт выполнит набор действий в системе автоматизации (можно включить свет и начать воспроизведение музыки в комнате).

    Для установки времени срабатывания, нужно с панели управления отправить значения в переменные сервера.

    Чтобы все панели управления могли получить информацию о времени, на которое настроен будильник, и его состоянии, нужно записать установки будильника в виртуальные теги сервера.

    скачать: проект для сервера и проект для клиента


    Пример 3: опирается на использование функций IR.SetInterval() и IR.ClearInterval(): показывать напоминание каждые 5 секунд, пока событие не завершится:

    скачать: проект для сервера и проект для клиента

    не воспринимайте эти проекты как готовое решение, они призваны продемонстрировать взаимодействие сервера и приложения-клиента




    Запросы к базе данных

    База данных SQL формируется на iRidium Server при создании серверного проекта.

    Если вы работаете с несколькими проектами и заменяете их на сервере, в каждом проекте создается файл системной базы. Также можно создать свою, пользовательскую базу:

    • Системная база
      • запись в базу производится только через настройки переменных сервера в iRidium Strudio
      • можно читать с помощью специальных SQL запросов
      • нельзя редактировать и удалять
    • Пользовательская база
      • запись в базу производится только через JavaScript
      • можно читать с помощью специальных SQL запросов
      • можно редактировать и удалять с помощью JavaScript


    Где найти системную базу:

    Путь к файлу базы можно найти через web-интерфейс Сервера, вкладка System > Database.


    Как сохранить данные в системную базу:

    Записать в базу можно Driver Channel, Driver Tags, Virtual Channel, Virual Tag - переменные сервера. Поэтому и настройки сохранения есть только у переменных сервера. Если хотите сохранить канал драйвера - выберите его проекцию на переменные сервера - вы увидите настойки сохранения в базу:

    Store In Database
    • Name - имя переменной сервера
    • Full Tag Name - полное имя переменной, можно использовать для обращения из скрипта и определения типа
    • Description - описание переменной для упрощения ее идентификации (не обязательно)
    • Access - доступ к переменной с панелей управления:
      • Public - разрешен,
      • Private - запрещен
    • Script - JavaScript функция-модификатор, обрабатывает переменную перед отправкой на панели управления
    • Persist - вернуть последнее значение переменной в случае перезагрузки сервера
    • Store In DB - формат сохранения переменной в базу данных
      • None - не сохранять
      • Signed 32bit - сохранять как целое число
      • Float 64bit - сохранять как число с плавающей запятой
      • String UTF8 - сохранять как строку
    • DB Save Strategy - событие, при котором создается запись в базу
      • Deadband - минимальное изменение. Запись создается, если переменная изменилась больше, чем на указанное значение
      • Interval - периодическая фиксация. Запись создается с указанным временным интервалом
        • Deadband (Value) - минимальное изменение переменной, требующее записи в базу
        • Interval (sec) - интервал записи в секундах
    • Load On Start - восстановить значение переменной из базы данных в случае перезагрузки сервера (в отличие от параметра Persist = Yes будет восстановлено не самое последнее значение, а последнее значение, сохранённое в базе данных).


    Сохранение можно настроить по двум принципам:

    • с определенной периодичностью по времени
    • при изменении переменной более, чем на указанное значение - целое или дробное.

    Первый способ удобно использовать для переменных, которые изменяются плавно и достаточно инертны, например, температура и влажность воздуха. Второй способ идеален для переменных, которые меняются нечасто, но значительно. Например, можно писать в базу факт включения и выключения света. При этом, запись по изменению сформирует гораздо меньше записей в базе и не позволит пропустить событие.


    Доступ к базам данных Сервера производится с помощью специализированных SQL запросов. Запросы позволяют получать данные по заданным условиям.


    Пользовательская база данных:

    Редактируемую базу данных можно создать с помощью JavaScript. Запись, чтение, редактирование данных в пользовательской базе производится с помощью SQL запросов.


    Доступ к пользовательской базе через JavaScript:

    Руководство предоставляет инструкции по работе с системной и пользовательской базами данных.

    Справочник включает список всех методов для работы с базами.



    Построение графиков

    Для возможности отображения графиков изменения переменных, iRidium сохраняет значения этих переменных в Базу данных SQL , которая хранится на на iRidium Server.

    Когда нужно построить график изменения переменной, приложение i3 pro формирует запрос к базе за определенный период времени, и отображает результат на графике.

    Когда сохранение в базу настроено, вы можете отразить переменную в i3 pro в виде графика.


    Синхронизация панели управления и Сервера

    Интерфейс визуализации лучше всего создавать, когда готов серверный проект: настроена связь с оборудованием автоматизации, сформированы виртуальные теги и скрипты для них на стороне сервера. Импорт серверного проекта позволит быстро получить полный набор управляемых переменных для проекта визуализации. Останется привязать переменные к графическим элементам.

    См. Как создать проект для панели управления



    Загрузка проекта на Сервер

    Загрузка серверного проекта (*.sirpz) на сервер осуществляется аналогично загрузке проекта в клиент i3 pro, т.е. при помощи приложения iRidium Transfer на вашем ПК.


    Transfer находит и отображает в своем интерфейсе все запущенные Серверы в пределах IP подсети. С помощью Transfer вы передаете проект конфигурации и лицензию на iRidium Server.

    См. Как запустить проект на iRidium Server

    Источник — «https://dev.iridi.com/index.php?title=Editor_Server_Tools/ru&oldid=66949»
    Категория:
    • Инструкции
    О нас
    Компания
    Команда
    История
    Философия
    Награды
    Партнерство
    Наши партнеры
    Партнерские программы
    Подать заявку на партнерство
    Продукты
    iRidium pro
    iRidium lite
    iRidium gate
    iRidium server
    Загрузки
    iRidium pro
    iRidium lite
    Другие версии
    Маркетинговые материалы
    Поддержка
    Онлайн курсы/Видео
    Рекомендуемое оборудование
    Другие версии
    iRidium pro
    Документация
    FAQ
    Форум
    iRidium lite
    Документация
    Форум
    Проекты
    Типовые проекты
    Умные здания
    Умные дома
    Специальные решения
    Найти дилера
    Новости
    Youtube
    Twitter
    VK
    Logo
    contact@iridi.com
    +7 (499) 322-73-29

    Политика конфиденциальности