Процесс обработки данных
Процессинг реального времени

Процесс обработки обеспечивают высокую скорость и достоверность. В платформу измерение поступает от EDGE контроллеров (модулей) и от шлюзов (IoT, интеграционные). EDGE и шлюзы обеспечивают доставку измерений от устройств в формате, который ожидает платформа. Пакет измерения обычно содержит:
- controllerid - идентификатор устройства;
- deviceparamid - идентификатор параметра;
- type - тип значения ;
- value - значение параметра
- validity - признак достоверности (на уровне EDGE измерение может быть признано не достоверным);
- timestmp - метка времени в формате unix (миллисекунды).
Основные операции обработки данных
Ниже приведены основные операции, производимые платформой над каждым измерением.
- Производится проверка времени. Если полученное время отстает от текущего более чем на большой срок - обработка измерения прерывается.
- Если параметр заблокирован - обработка прерывается.
- Если задана калибровка, над значением параметра производится калибровка
- К значению применяется округление, если оно установлено.
- Для значения выполняется проверка соблюдения верхнего и нижнего лимита из настроек канала, если заданы лимиты. Если значение вне лимитов - измерение считается не достоверным.
- Для типа значения GEOTAG производится проверка формата координат (LON:LAT или LON:LAT:ALT). Если координаты не соответствуют формату - значение считается недостоверным.
- Определяется, исторические данные (hist=true) или актуальные. Если время пришедшего измерения менее последнего сохраненного, данные считаются историческими (hist=true).
Для исторических данных производится более простая обработка, а именно:
- Измерение сохраняется;
- Время последней посчитанной агрегации устанавливается равным времени измерения (для того чтобы агрегация за весь период после этого была пересчитана)
- В случае если объект размещения параметра участвует в системе иерархий - производится отправка сообщения на сайт иерархии
Для актуальных (не исторических) данных, дополнительно:
Производится обновление статуса контроллера (если он не в онлайне - переводится в онлайн и обновляется метка времени последней проверки онлайна)
Производится обновление статуса устройства, переводится в онлайн статус
У параметра обновляется время предыдущего значения и предыдущее значения в Redis и устанавливаются новые текущее значение и его время. Для строковых значений при этом устанавливается не весь текст значения, а только отрывок длиной не более 255 символов
Выполняется обработка журнала ошибок . В случае если изменилось состояние с валидного на невалидное - добавляется новая запись. В случае если состояние изменилось на с невалидного на валидное - обновляется время восстановление в журнале.
Если задана контрольная процедура - она применяется к параметру. Если изменился статус параметра - выполняется его обновление в Redis и журналирование в DeviceParamStateLog. Если с изменением статуса связано событие, выполняется отправка сообщения по каналам уведомлений.
В случае если значение параметра изменилось (отличается от предыдущего) - отправляется сообщение об изменении значения параметра для фронд приложений. Для сигналов, счетчиков импульсов и текстовых параметров сообщение отправляется всегда (не зависимо от того изменилось или нет).
В случае если параметр участвует в правиле и правило не заблокировано - выполняется Правило.
Если параметр участвует в формуле вычисляемого параметра - выполняется пересчет значения вычисляемого параметра.
В случае если параметр участвует в глобальном правиле и правило не заблокировано - выполняется Глобальное правило.