Присутствие вещи
Для работы с широким набором устройств, которые соединяются с платформой ThingWorx, концепция "подключенных" была изменена: вместо "в настоящее время привязаны с помощью websocket" принята концепция "нормальных подключений", которая называется Присутствие вещи. Присутствие вещи показывает, в каком случае соединение с вещью является "нормальным", т. е. соответствует ожидаемому поведению устройства.
Устройства ThingWorx AlwaysOn (на которых выполняется приложение ThingWorx Edge SDK или микросервер ThingWorx Edge) привязываются через WebSocket. Если они не сконфигурированы для автономной работы в течение определенного периода времени, они всегда доступны для получения сообщений от ThingWorx Platform. Устройства агента Axeda eMessage, с другой стороны, периодически опрашивают платформу (с помощью запросов ping) и могут получать сообщения от платформы, только когда они соединены и привязаны. Присутствие вещи поддерживает оба таких типа основных устройств.
Присутствие вещи доступно для сравнения по категориям устройств и поддерживается всеми интерфейсами ThingWorx. Например, обслуживающей организации может потребоваться создать информационную панель, показывающую все устройства, доступные для вызова сервиса, или все устройства, непредвиденно оказавшиеся в автономном режиме. Присутствие вещи используется расширением ThingWorx SCM, чтобы определить, является ли соединение с устройством "нормальным" (путем проверки свойства isReporting), с целью выбрать и развернуть пакет для устройства.
Важно понимать, что "Присутствие вещи" не является попыткой полной диагностики состояния устройства. "Присутствие вещи" представляется как особое логическое свойство, позволяющее приложению ThingWorx обеспечивать унифицированное взаимодействие в большом числе разнообразных активов, которое оно может обслуживать.
Принцип действия
В самом общем случае любое устройство, определенное как RemoteThing, содержит следующие новые атрибуты:
Тип
Наименование
Описание
Свойство
isReporting
Показывает, действительно ли устройство определено как доступное для "нормального" взаимодействия в соответствии с применяемой стратегией передачи сообщений.
Свойство
reportingLastChange
Показывает, когда значение isReporting было изменено последний раз.
Свойство
reportingLastEvaluation
Показывает, когда производилась последняя оценка isReporting.
Конфигурация
reportingStrategy
Вещь, которая определяет алгоритм, позволяющий установить, передает ли устройство сообщения.
Сервис
EvaluateReporting
Оценивает, передает ли устройство сообщения, и задает соответствующее значение для свойства isReporting.
Сервис
SetReportingStrategy
Задает стратегию, позволяющую оценить, передает ли устройство сообщения.
Сервис
GetReportingStrategy
Содержит используемую в текущий момент стратегию, позволяющую оценить, передает ли устройство сообщения.
Точный алгоритм определения того, передает ли устройство сообщения, зависит от конкретной вещи ReportingStrategy. Однако общий процесс выглядит следующим образом:
1. Сервис EvaluateReporting инициируется некоторым событием
2. После этого EvaluateReporting вызывает сервис ReportingAlgorithm для вещи стратегии
3. ReportingAlgorithm возвращает логическую переменную на основании конкретного алгоритма
4. Свойство isReporting задается в зависимости от результатов выполнения сервиса ReportingAlgorithm.
Сервис EvaluateReporting
Сервис EvaluateReporting получает на вход следующие параметры.
eventName - наименование события, которое привело к повторной оценке состояния отчетности.
eventTime - время возникновения события.
source - наименование вещи, которая сгенерировала событие.
sourceProperty - свойство источника события.
eventData - данные события.
Все параметры EvaluateReporting() передаются непосредственно в ReportingStrategy.ReportingAlgorithm()
При выполнении этого сервиса во время привязки вещи или отмены привязки:
eventName - это BindingEvent.
eventData содержит одну строку с одним значением под ключом isBound, показывающим, была ли вещь только что привязана или отвязана (true для привязки, false для отмены привязки).
Если во время выполнения этого сервиса (в том числе в ReportingAlgorithm) возникает проблема, статус вещи меняется на статус "не передает сообщения", а сообщение добавляется в журнал приложения.
Было ли это полезно?