Формат данных для MQTT
Фиксированный заголовок (1 байта)
Биты:
0-2 - версия
3-5 - формат данных (0 - binary, 1 - json)
6-7 - резерв
Binary формат
Заголовок бинарного формата (1 байт)
0-3 - тип данных
| 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 |
4 - массив (не поддерживается для типов данных null и string)
5-6 - тип метрики (00 - счетчик (только растет), 01 - замер (может увеличиваться и уменьшаться))
7 - наличие метки времени
Метка времени - опционально (8 байт)
В наносекундах
Полезная нагрузка
Используется little endian.
JSON формат
Пример: {"t":"2025-03-28T05:29:24.413Z", "v":50.5, }
Для сложного значения: {"t":1617234567890, "v":[10,20,30], "d":"disk_iops"}