SSVC0059_V2 UART API Документация к формату сообщений. Общая структура сообщения. Сообщения передаются в формате JSON в одной строке, заканчивающейся символом \n. Каждое сообщение содержит поле `type`, которое определяет тип сообщения, а также дополнительные поля, которые зависят от типа сообщения. Типы сообщений и их поля Дежурный режим (type: "waiting") Состоит из общей для всех сообщений части "common" Общая часть "common" Сообщение содержит следующие поля: - mmhg: int — Давление в мм рт. ст. - tp1: float — Температура ТД1. - tp2: float — Температура ТД2. - relay: int — Состояние реле (0 или 1). - signal: int — Состояние сигнала (0 или 1). - cfg_chgd: boolean - флаг для запроса настроек GET_SETTINGS. Присутствует только если true. Флаг cfg_chgd необходим для запроса настроек в случае если были внесены изменения на контроллере при помощи кнопок управления. Флаг сбрасывается после запроса GET_SETTINGS. - tts: int — время до сохранения настроек в энергонезависимую память, с. При отсутствии поля "tts" - несохраненных данных нет. Пример: json { "type": "waiting", "common": { "mmhg": 750, "tp1": 30.31, "tp2": 30.81, "relay": 1, "signal": 0, "cfg_chgd": true } } Экраны настроек ректификации (type: "settings") Состоит из общей для всех сообщений части "common" Ожидание достижения температуры 1 (type: "tp1_waiting") Дополнительное поле к общей части: - pid: int - уникальный идентификатор ректификации; - tp1_target: float — Целевая Температура ТД1. Пример: json { "pid": 99, "type": "tp1_waiting", "common": { "mmhg": 750, "tp1": 30.31, "tp2": 30.81, "relay": 1, "signal": 0 }, "tp1_target": 60 } Отсроченный старт (type: "delayed_start") Дополнительное поле к общей части: - pid: int - уникальный идентификатор ректификации; - countdown: string — Обратный отсчет времени в формате "ч:мм:сс". Пример: { "pid": 99, "type": "delayed_start", "common": { "mmhg": 750, "tp1": 30.75, "tp2": 31.44, "relay": 1, "signal": 0 }, "countdown": "0:09:59" } Отбор голов и подголовников (type: "heads" - головы, type: "late_heads" - подголовники в firmware 2.3.*) Дополнительные поля к общей части: - pid: int - уникальный идентификатор ректификации; - countdown: string — Обратный отсчет времени в формате "ч:мм:сс". - release: string — Обратный отсчет времени сброса в формате "ч:мм:сс". Актуально на отборе голов, при наличии опции "Сброс". - time: string — Время в формате "ч:мм:сс". - open: float — Открытие клапана в секундах. - period: int — Период работы клапана в секундах. - tank_mmhg: int — Давление в кубе. - tp1_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД1. - tp2_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД2. - v1: int — Суммарное время открытия клапана 1 в секундах. - v2: int — Суммарное время открытия клапана 2 в секундах. - v3: int — Суммарное время открытия клапана 3 в секундах. - alc: float — Спиртуозность. Пример: { "pid": 99, "type": "heads", "common": { "mmhg": 750, "tp1": 31.19, "tp2": 32.06, "relay": 1, "signal": 1 }, "countdown": "0:14:58", "time": "0:00:02", "open": 30.10, "period": 359, "tank_mmhg": 756, "tp1_sap": 31.53, "tp2_sap": 33.10, "v1": 0, "v2": 0, "v3": 0, "alc": 0.0 } Отбор тела (type: "hearts") Дополнительные поля к общей части: - pid: int - уникальный идентификатор ректификации; - countdown: string — Обратный отсчет времени до фиксации температуры отбора, в формате "ч:мм:сс". - time: string — Время в формате "ч:мм:сс". - tp1_target: float — Температура отбора. - open: float — Открытие клапана в секундах. - period: int — Период работы клапана в секундах. - hysteresis: float — Гистерезис. - decrement: int — Декремент в %, целое число. - tank_mmhg: int — Давление в кубе. - tp1_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД1. - tp2_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД2. - v1: int — Суммарное время открытия клапана 1 в секундах. - v2: int — Суммарное время открытия клапана 2 в секундах. - v3: int — Суммарное время открытия клапана 3 в секундах. - alc: float — Спиртуозность. - stop: int — Признак остановки (0 или 1). - stops: int — Количество остановок. Пример: { "pid": 99, "type": "hearts", "common": { "mmhg": 750, "tp1": 31.38, "tp2": 32.25, "relay": 1, "signal": 1 }, "countdown": "0:06:58", "time": "0:01:04", "tp1_target": 100.00, "open": 2.10, "period": 4, "hysteresis": 0.25, "decrement": 10, "tank_mmhg": 756, "tp1_sap": 31.72, "tp2_sap": 33.29, "v1": 0, "v2": 0, "v3": 0, "alc": 0.0, "stop": 0, "stops": 0 } Отбор хвостов (type: "tails"). Актуально для firmware 2.2.* Дополнительные поля к общей части: - pid: int - уникальный идентификатор ректификации; - time: string — Время в формате "ч:мм:сс". - tp2_target: float — Целевая Температура ТД2. - open: float — Открытие клапана в секундах. - period: int — Период работы клапана в секундах. - tank_mmhg: int — Давление в кубе. - tp1_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД1. - tp2_sap: float — Пересчитанная к нормальному атмосферному давлению температура ТД2. - v1: int — Суммарное время открытия клапана 1 в секундах. - v2: int — Суммарное время открытия клапана 2 в секундах. - v3: int — Суммарное время открытия клапана 3 в секундах. - alc: float — Спиртуозность. Пример: { "pid": 99, "type": "tails", "common": { "mmhg": 748, "tp1": 33.81, "tp2": 35.75, "relay": 1, "signal": 1 }, "time": "0:01:20", "tp2_target": 95.00, "open": 2.00, "period": 4, "tank_mmhg": 748, "tp1_sap": 34.22, "tp2_sap": 36.16, "v1": 0, "v2": 8, "v3": 0, "alc": 0.0 } Сообщения могут содержать поле event, оповещающее о событиях. Поле event присутствует в телеметрии при отсутствии нажатий на кнопки контроллера. Перечень событий и их описание: - heads_finished: завершен этап Головы - hearts_finished: завершен этап Тело (ректификация завершена для firmware 2.3.*) - tails_finished: завершен этап Хвосты (ректификация завершена для firmware 2.2.*) - ds_error: ошибка датчика температуры - ds_error_stop: выключение оборудования (реле) из-за ошибки датчика. Срабатывает через 180 секунд, если ошибка текущего датчика не исчезнет. - stabilization_limit: превышен лимит времени стабилизации - manually_closed: включено ручное управление клапаном текущего этапа, клапан закрыт - manually_opened: включено ручное управление клапаном текущего этапа, клапан открыт Примечания 1. Каждое сообщение передается одной строкой, заканчивающейся символом \n 2. Все температуры (tp1, tp2, tp1_sap, tp2_sap, tp1_target, tp2_target) указываются в градусах Цельсия и могут содержать десятичную часть. 3. Время (time, countdown) указывается в формате "ч:мм:сс". 4. Значения состояния реле (relay) и сигнала (signal) могут быть либо 0 (выключено), либо 1 (включено). 5. Давление (mmhg, tank_mmhg) указывается в мм рт. ст.