Эта страница является
переводом страницы
Shared data. Перевод выполнен на 100%.
Организация совместных данных на сервере
Часто возникает задача - управлять общим оборудованием умного дома или здания с нескольких смартфонов или планшетов. При этом используется сервер, который обеспечивает управление оборудованием умного дома или здания в режиме 24/7, хранение информации в базе данных.
Клиенты (смартфоны и планшеты) могут иметь общий доступ к одним и тем же данным на сервере, каждый клиент может изменять совместные данные (shared data) и изменения должны отражаться на сервере и у всех остальные клиентов. Клиенты могут терять связь с сервером, в этом случае актуальность данных невозможно обеспечить, но при подключении данные в клиенте должны автоматически обновиться (синхронизироваться).
Решение:
В этом случае разрабатывается один проект для сервера и один или несколько проектов для панелей. Проект сервера интегрируется в каждый проект панели.
Описание примера
На панели имеются два поля "Hours" и "Minutes" для ввода времени. При нажатии на ввод данные отправляются в iRidium server в виртуальные каналы, далее по событию запускается скрипт virtual_to_virtual(), который записывает полученные данные в виртуальные тэги. Время отображается на всех панелях, которые подписаны на данные в этих тэгах. Кроме того, виртуальные тэги сохраняются в базе данных сервера.
Таким образом каждый клиент (панель) имеет возможность изменять время, все изменения сохраняются в базе данных и в реальном времени отображаются на экране каждого клиента.
Создание и настройка проекта сервера
1 Создайте проект для сервера.
2 Перейдите на вкладку I/O и создать необходимое количество виртуальных каналов и виртуальных тэгов совместных данных (shared data). У каждого канала должен быть соответствующий тэг. Задайте одинаковые имена для соответствующих пар каналов и тэгов.
3 Создайте скрипт для шлюзования.
function virtual_to_virtual(in_Type, in_Name, in_Value) {
IR.SetVariable("Server.Tags." + in_Name, in_Value);
return in_Value;
}
Подробнее:Шлюзование данных между виртуальным каналом и тэгом.
4 В свойствах виртуальных каналов в параметре Script Modifier укажите функцию шлюзования virtual_to_virtual().
5 Настройте каждый виртуальный тэг в соответствии с требования задачи.
- Store in DB: None / Signed 32bit / Float 64bit / String UTF-8
- DB Save Strategy: Deadband / Interval
Подробнее: Переменные драйвера и сервера.
Вы можете сохранять тэги в базу данных, но для организации совместных данных это не является обязательным.
6 Сохраните проект сервера.
Создание и настройка проектов панелей
1 Создайте проект панели.
2 Добавьте драйвер для связи с iRidium server и затем укажите файл проекта сервера (проект сервера должен открыт в iRidium studio в этот момент).
3 Выделите драйвер сервера, станет доступна кнопка Sync With Server Project для получения списка всех виртуальных тэгов сервера. Нажмите эту кнопку.
Подробнее: Визуализация управления iRidium server
4 Настройте параметр Save Value When Disconnected - желаемое поведение виртуальных тэгов в панели при отключении от сервера:
True - запомнит последнее значение тэга,
False - принудительно сделает значение тэга пустым.
5 Добавьте графические элементы:
- элементы для ввода данных, например, типа Edit Box,
- элементы для вывода данных, например, типа Label (Type: Button, Hit: PassThrough).
6 Путём перетаскивания виртуальных команд драйвера "iRidium Server" на графические элементы для изменения данных свяжите их друг с другом по событию Enter или Release (в зависимости от типа графического элемента).
7 Путём перетаскивания виртуальных фидбеков драйвера "iRidium Server" на графические элементы для отображения данных свяжите их друг с другом с записью в свойства Text или Value (в зависимости от типа графического элемента).
8 Задайте IP-адрес сервера.
9 Сохраните проект.
Вы можете создать несколько проектов панели, и можете использовать один и тот же проект для разных устройств, при этом конфликт не возникнет.
Запуск проектов
1 Запустите проекты на устройствах в любом порядке. Вы можете использовать для этого эмулятор i3 pro и iRidium server для Windows.
2 Вы можете проверить, как ведет отображение данных в случае отключения и повторного подключения клиента к серверу.
3 Вы можете также попробовать остановить сервер (закрыть приложение сервера), затем снова запустить его и убедиться, что совместные данные сохраняются (при условии, что Persist = Yes).
Синхронизация проектов
Рекомендуется сначала закончить разработку виртуальных каналов и тэгов в проекте сервера и затем начать использовать их в проекте панели. Однако в процессе разработки проекта панели можно вносить изменения в проекте сервера, благодаря следующим возможностям.
- Обновление виртуальных каналов и тэгов в проекте панели (синхронизация проектов сервера и панели)
Если в процессе разработки проектов панели и сервера изменился состав виртуальных каналов и тэгов в проекте сервера, то изменения не отразятся в проекте панели автоматически, не смотря на то, что проекты интегрированы. Для обновления списка каналов и тэгов необходимо в проекте панели выбрать драйвер сервера, станет доступна кнопка Sync With Server Project. Нажмите её и список виртуальных каналов и тэгов заново считается из проекта сервера.
- Переименование каналов и тэгов в проекте сервера
Вы можете свободно переименовывать каналы и проекты в проекте сервера. После синхронизации имена просто обновятся, при этом все настроенные ранее связи на стороне панели сохранятся.
- Переименование файла проекта сервера
После переименования файла проекта сервера откройте оба проекта в iRidium studio, затем просто обновите параметр Source Project драйвера сервера в проекте панели.
- Раздельная работа с файлами проектов
Так как синхронизация проектов сервера и панели производится вручную, можно работать с проектами по отдельности, например, два разработчика могут работать с проектами на разных компьютерах. Для запуска проекта панели наличие проекта сервера не требуется.