Формат пакета
ID SEQ FLAGS PAYLOAD[0] PAYLOAD[1] ... PAYLOAD[x]
1B 1B 1B Массив Массив Массив
| Поле | Длина | Значение |
|---|---|---|
| ID | 1 байт | 0x78 |
| SEQ | 1 байт | Номер операции обмена (0–255) |
| FLAGS | 1 байт | Биты состояния устройства |
| PAYLOAD | массив | См. описание ниже |
- Поле
IDиспользуется как фиксированный идентификатор Protocol78. - Поле
SEQ— это счётчик обмена, передаваемый в каждом пакете. - Поле
FLAGSсодержит статусные биты, описывающие текущее состояние устройства.
Дополнительная информация по каждому полю приведена в следующих разделах.
Флаги состояния устройства
FLAGS — 1 байт (8 бит), каждый бит отражает отдельное состояние устройства.
| Бит | Значение флага | OrionMeter LA-IP | OrionMeter TWM | OrionLighting | LWO | SLC |
|---|---|---|---|---|---|---|
| 0 | Зависит от типа устройства | Батарея разряжена | Батарея разряжена | Расписание отсутствует | - | - |
| 1 | Низкая температура | + | + | + | + | + |
| 2 | Высокая температура | + | + | + | + | + |
| 3 | Тампер (магнитное вмешательство) | + | + | ― | + | + |
| 4 | Зависит от типа устройства | ― | Снят | ― | - | Открыта дверь |
| 5 | Требуется обновление времени | + | + | + | + | + |
| 6 | Зависит от типа устройства | ― | Пересвет | ― | ― | ― |
| 7 | Зависит от типа устройства | ― | Обратный поток | ― | Обратный поток | ― |
Поле PAYLOAD
Поле PAYLOAD представляет собой массив данных, передаваемый от устройства на сервер приложений. Каждый элемент массива (PAYLOAD[0], PAYLOAD[1], ..., PAYLOAD[n]) имеет следующую структуру:
| Элемент | FORMAT | DATA |
|---|---|---|
| ДЛИНА | 1 байт | ― |
| ЗНАЧЕНИЕ | См. ниже | Массив |
Поле FORMAT определяет тип передаваемых данных, а поле DATA содержит соответствующее содержимое. Конкретное значение FORMAT описано в следующих разделах.
Значения FORMAT
Поле FORMAT (1 байт) в каждом элементе PAYLOAD определяет тип передаваемых данных. Последующие байты DATA интерпретируются согласно значению FORMAT.
Значения FORMAT
Поле FORMAT (1 байт) определяет тип данных, передаваемых в каждом элементе PAYLOAD.
| FORMAT | Назначение (кратко) | Подробное описание |
|---|---|---|
| 0x00 | Мгновенные данные | Значения счётных входов на момент отправки пакета |
| 0x01 | Архив: день, Counter 1 | Суточный архив почасовых показаний, Counter 1 (устаревший). Timestamp = value + 3600 |
| 0x02 | Архив: день, Counter 1 | Суточный архив почасовых показаний, Counter 1 |
| 0x03 | Архив: день, Counter 2 | Суточный архив почасовых показаний, Counter 2 (устаревший). Timestamp = value + 3600 |
| 0x04 | Архив: день, Counter 2 | Суточный архив почасовых показаний, Counter 2 |
| 0x05 | Архив: день, Counter 3 | Суточный архив почасовых показаний, Counter 3 (устаревший). Timestamp = value + 3600 |
| 0x06 | Архив: день, Counter 3 | Суточный архив почасовых показаний, Counter 3 |
| 0x07 | События вскрытия (TAMPER) | Зафиксированы попытки вмешательства: магнит, вскрытие |
| 0x08 | Сервисные данные | Внутренние данные устройства: версия, состояния, конфигурация |
| 0x09 | Архив датчиков | Архивные значения аналоговых и цифровых датчиков |
| 0x0A | События дискретных входов | Фиксация событий (вкл/выкл) дискретных входов |
| 0x0B | Архив событий дискр. входов | Архив состояний и событий дискретных входов |
| 0x10 | Описание по запросу | Ответ на запрос с описанием структуры данных |
| 0x11 | Данные от электросчётчиков | Принятые данные EM: энергия, мощность и др. |
| 0x12 | Данные от датчиков | Показания расходомеров, термометров, манометров |
| 0x13 | Данные от теплосчётчиков | Принятые данные от HM (теплоэнергия и т.д.) |
| 0x14 | Расширенные данные от HM | Дополнительные параметры теплосчётчиков |
| 0x15 | События счётчиков | Вскрытие, перезапуск, неисправности |
| 0x16 | Тарифные расписания | Данные для расписания тарифов |
| 0x17 | Необработанные данные | Прямой дамп от счётчиков |
| 0x20 | MODBUS | Данные от устройств по протоколу Modbus |
| 0x30 | Расписание SLC | Управление по расписанию (например, освещение) |
Так как поле FORMAT не содержит явного указания длины поля DATA, декодер должен поддерживать все форматы, описанные в данной документации.
Если при обработке данных будет обнаружен неизвестный FORMAT, дальнейшая обработка должна быть остановлена, а оставшаяся часть пакета — проигнорирована.