Форматы данных - GerasimGerasimov/event-logger-service GitHub Wiki

Триггеры

JSON-Файлы описания триггеров всех устройств находятся в папке events.

Общая структура файла триггеров

В общих словах, это массив events, элементами которого являются объекты описывающие триггеры. У триггеров нет имён, чтобы исключить проблему придумывания названий.

{
  "events":[
    {... 1-й триггер}, 
    {... 2-й триггер},
    и т.п.
  ]
}

Объект Триггер

Комментарии в JSON не допускаются, но прокомментирую строки:

      "tags":{
        "input":"RAM/PWR" //тег, который будет читаться из устройства, но может быть и константой
      },
      "eventType":"alarm",// Тип события, из подмножества: alarm - авария, info - информация, warning - предупреждение
      "trigger":{ //описание триггера:
        "type":"FRONT", //Тип триггера из подмножества: FRONT, REAR, TOUGLE
        "setCondition":"1", //Условие УСТАНОВКА
        "resetCondition":"0", //Условие СБРОС
        "tolerance": "0" //TODO Для аналоговых сигналов % отклонения 
      },
      "description":{//Человекопонятное описание
        "comment":{//Комментарий описывает какое событие произошло на понятном языке.
          "ru":"включение преобразователя" //Через параметры "ru" "en" - будет производится локализация текстового описания
        },
        "detail":{
          "ru":""
        }
      }

Возможности триггера

В tags можно перечислить аргументы, как теги которые будут запрашиваться у устройств, так и константы, а потом использовать их в функциях setCondition и resetCondition. Обязательным параметром является "input", остальные аргументы могут быть заменены константами, что особенно актуально для битовых параметров.

Триггер FRONT с константами в setCondition и resetConditio (наиболее частый случай)

      "tags":{
        "input":"RAM/PWR"
      },
      "trigger":{
        "type":"FRONT",
        "setCondition":"1", //Условие УСТАНОВКА - константа 1
        "resetCondition":"0", //Условие СБРОС - константа 0

В этом случае, значение бита PWR (циклически читаемое из устройства через сервис Tagger) будет сравниваться с константами "1" и "0". Если PWR был "0", но стал "1", то однократно сработает событие. Сброс триггера (и подготовка к следующему срабатыванию) произойдёт, когда PWR станет равным "0"

Триггер FRONT для аналогового сигнала (на примере контроля напряжения статора)

Триггер будет срабатывать при условии что величина напряжения статора Ustat (в секции RAM) будет выше или равна уставки UstLmax (в секции FLASH), а сброс триггера (и подготовка его к следующему срабатыванию) произойдёт, когда напряжение Ustat станет меньше уставки UstNom.

      "tags":{
        "input":"RAM/RINSL",
        "arg1": "FLASH/UstLmax",
        "arg2": "FLASH/UstNom"
      },
      "trigger":{
        "type":"FRONT",
        "setCondition":"arg1",
        "resetCondition":"arg2",

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