Формат данных для MQTT: различия между версиями
Перейти к навигации
Перейти к поиску
Новая страница: « === Формат Payload === ==== Бинарный формат (например, struct) ==== '''Формат: Фиксированная структура байтов.''' * 2 байта - битовый описатель. 0-2 версия 3-5 - формат данных (00 - binary, 01 - json) для данного пакета 00 6 бит - наличие времени 7-10 бит – int/float/string (null/bool(byte)/float64/(u)int8/(u)int1...» |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
=== Фиксированный заголовок (2 байта) === | |||
Биты: | |||
0-2 - версия | |||
3-5 - формат данных (00 - binary, 01 - json) | |||
6-9 - тип данных | |||
{| class="wikitable" | |||
|+ | |||
!ID | |||
!Тип | |||
!Реализация | |||
|- | |||
|0 | |||
|null | |||
| | |||
|- | |||
|1 | |||
|bool | |||
|byte | |||
|- | |||
|2 | |||
|float64 | |||
| | |||
|- | |||
|3 | |||
|int8 | |||
| | |||
|- | |||
|4 | |||
|uint8 | |||
| | |||
|- | |||
|5 | |||
|int16 | |||
| | |||
|- | |||
|6 | |||
|uint16 | |||
| | |||
|- | |||
|7 | |||
|int32 | |||
| | |||
|- | |||
|8 | |||
|uint32 | |||
| | |||
|- | |||
|9 | |||
|int64 | |||
| | |||
|- | |||
|10 | |||
|uint64 | |||
| | |||
|- | |||
|11 | |||
|string | |||
|utf-8 | |||
|- | |||
|12 | |||
|blob | |||
|binary | |||
|} | |||
10 - массив (не поддерживается для типов данных null и string) | |||
11-12 - тип метрики (00 - счетчик (только растет), 01 - замер (может увеличиваться и уменьшаться)) | |||
13 - наличие метки времени | |||
14-15 - резерв | |||
используется little endian | |||
'''JSON формат''' | '''JSON формат''' | ||
Версия от 07:47, 28 марта 2025
Фиксированный заголовок (2 байта)
Биты:
0-2 - версия
3-5 - формат данных (00 - binary, 01 - json)
6-9 - тип данных
| ID | Тип | Реализация |
|---|---|---|
| 0 | null | |
| 1 | bool | byte |
| 2 | float64 | |
| 3 | int8 | |
| 4 | uint8 | |
| 5 | int16 | |
| 6 | uint16 | |
| 7 | int32 | |
| 8 | uint32 | |
| 9 | int64 | |
| 10 | uint64 | |
| 11 | string | utf-8 |
| 12 | blob | binary |
10 - массив (не поддерживается для типов данных null и string)
11-12 - тип метрики (00 - счетчик (только растет), 01 - замер (может увеличиваться и уменьшаться))
13 - наличие метки времени
14-15 - резерв
используется little endian
JSON формат
- 2 байта - битовый описатель (01 - json)
- данные Формат: {"t":<время>, "v":<значение>, "d":<описатель>}
Пример: {"t":"2025-03-28T05:29:24.413Z", "v":50.5, }
Для сложного значения: {"t":1617234567890, "v":[10,20,30], "d":"disk_iops"}