Организация совместных данных на сервере
Часто возникает задача - управлять общим оборудованием умного дома или здания с нескольких смартфонов или планшетов. При этом используется сервер, который обеспечивает управление оборудованием умного дома или здания в режиме 24/7, хранение информации в базе данных.
Клиенты (смартфоны и планшеты) могут иметь общий доступ к одним и тем же данным на сервере, каждый клиент может изменять совместные данные (shared data) и изменения должны отражаться на сервере и у всех остальные клиентов. Клиенты могут терять связь с сервером, в этом случае актуальность данных невозможно обеспечить, но при подключении данные в клиенте должны автоматически обновиться (синхронизироваться).
Решение: В этом случае разрабатывается один проект для сервера и один или несколько проектов для панелей. Проект сервера интегрируется в каждый проект панели.
Описание примера
На панели имеются два поля "Hours" и "Minutes" для ввода времени. При нажатии на ввод данные отправляются в iRidium server в виртуальные каналы, далее по событию запускается скрипт virtual_to_virtual(), который записывает полученные данные в виртуальные тэги. Время отображается на всех панелях, которые подписаны на данные в этих тэгах. Кроме того, виртуальные тэги сохраняются в базе данных сервера.
-b0967105923078021414830ad6b0f8b8.png)
Таким образом каждый клиент (панель) имеет возможность изменять время, все изменения сохраняются в базе данных и в реальном времени отображаются на экране каждого клиента.
Создание и настройка проекта сервера
-
Создайте проект для сервера.
-
Перейдите на вкладку I/O и создайте необходимое количество виртуальных каналов и виртуальных тэгов совместных данных (shared data). У каждого канала должен быть соответствующий тэг. Задайте одинаковые имена для соответствующих пар каналов и тэгов.
- Создайте скрипт для шлюзования.
function virtual_to_virtual(in_Type, in_Name, in_Value) {
IR.SetVariable("Server.Tags." + in_Name, in_Value);
return in_Value;
}
Подробнее:Шлюзование данных между виртуальным каналом и тэгом.
- В свойствах виртуальных каналов в параметре Script Modifier укажите функцию шлюзования virtual_to_virtual().
- Настройте каждый виртуальный тэг в соответствии с требования задачи.
-
Access: Public
-
Persist: Yes
-
Store in DB: None / Signed 32bit / Float 64bit / String UTF-8
-
DB Save Strategy: Deadband / Interval
Подробнее: Переменные драйвера и сервера.
Вы можете сохранять тэги в базу данных, но для организации совместных данных это не является обязательным.
- Сохраните проект сервера.
Создание и настройка проектов панелей
-
Создайте проект панели.
-
Добавьте драйвер для связи с iRidium server и затем укажите файл проекта сервера (проект сервера должен открыт в iRidium studio в этот момент).

- Выделите драйвер сервера, станет доступна кнопка Sync With Server Project для получения списка всех виртуальных тэгов сервера. Нажмите эту кнопку.
Подробнее: Визуализация управления iRidium server
- Настройте параметр Save Value When Disconnected - желаемое поведение виртуальных тэгов в панели при отключении от сервера: True - запомнит последнее значение тэга, False - принудительно сделает значение тэга пустым.
- Добавьте графические элементы:
-
элементы для ввода данных, например, типа Edit Box,
-
элементы для вывода данных, например, типа Label (Type: Button, Hit: PassThrough).
-a90d6715fe50f82b3de26ff0a14cdb85.png)
-
Путём перетаскивания виртуальных каналов драйвера "iRidium Server" на графические элементы для изменения данных свяжите их друг с другом по событию Enter или Release (в зависимости от типа графического элемента).
-
Путём перетаскивания виртуальных фидбеков драйвера "iRidium Server" на графические элементы для отображения данных свяжите их друг с другом с записью в свойства Text или Value (в зависимости от типа графического элемента).
-
Задайте IP-адрес сервера.

- Сохраните проект.
;;;note Вы можете создать несколько проектов панели, и можете использовать один и тот же проект для разных устройств, при этом конфликт не возникнет. :::
Запуск проектов
-
Запустите проекты на устройствах в любом порядке. Вы можете использовать для этого эмулятор i3 pro и iRidium server для Windows.
-
Вы можете проверить, как ведет отображение данных в случае отключения и повторного подключения клиента к серверу.
-
Вы можете также попробовать остановить сервер (закрыть приложение сервера), затем снова запустить его и убедиться, что совместные данные сохраняются (при условии, что Persist = Yes).
Синхронизация проектов
Рекомендуется сначала закончить разработку виртуальных каналов и тэгов в проекте сервера и затем начать использовать их в проекте панели. Однако в процессе разработки проекта панели можно вносить изменения в проекте сервера, благодаря следующим возможностям.
- Обновление виртуальных каналов и тэгов в проекте панели (синхронизация проектов сервера и панели)
Если в процессе разработки проектов панели и сервера изменился состав виртуальных каналов и тэгов в проекте сервера, то изменения не отразятся в проекте панели автоматически, не смотря на то, что проекты интегрированы. Для обновления списка каналов и тэгов необходимо в проекте панели выбрать драйвер сервера, станет доступна кнопка Sync With Server Project . Нажмите её и список виртуальных каналов и тэгов заново считается из проекта сервера.
- Переименование каналов и тэгов в проекте сервера
Вы можете свободно переименовывать виртуальные каналы и тэги в проекте сервера. После синхронизации имена просто обновятся, при этом все настроенные ранее связи на стороне панели сохранятся.
- Переименование файла проекта сервера
После переименования файла проекта сервера откройте оба проекта в iRidium studio, затем просто обновите параметр Source Project драйвера сервера в проекте панели.
- Раздельная работа с файлами проектов
Так как синхронизация проектов сервера и панели производится вручную, можно работать с проектами по отдельности, например, два разработчика могут работать с проектами на разных компьютерах. Для запуска проекта панели наличие проекта сервера не требуется.