Формат данных для MQTT: различия между версиями

Материал из EWiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
=== Фиксированный заголовок (2 байта) ===
=== Фиксированный заголовок (1 байта) ===
Биты:
Биты:


0-2 - версия
0-2 - версия


3-5 - формат данных (00 - binary, 01 - json)
3-5 - формат данных (0 - binary, 1 - json)


6-9 - тип данных
6-7 - резерв
 
=== '''Binary формат''' ===
 
==== Заголовок бинарного формата (1 байт) ====
0-3 - тип данных
{| class="wikitable"
{| class="wikitable"
|+
|+
Строка 66: Строка 71:
|}
|}


4 - массив (не поддерживается для типов данных null и string)


10 - массив (не поддерживается для типов данных null и string)
5-6 - тип метрики  (0 - не определено, 1 - счетчик (только растет), 2 - замер (может увеличиваться и уменьшаться))
 
11-12 - тип метрики  (00 - счетчик (только растет), 01 - замер (может увеличиваться и уменьшаться))
 
13 - наличие метки времени
 
14-15 - резерв
 
используется little endian


'''JSON формат'''
7 - наличие метки времени


* 2 байта - битовый описатель (01 - json)
==== Метка времени - опционально (8 байт) ====
*
В наносекундах
*
* данные Формат: {"t":<время>, "v":<значение>, "d":<описатель>}


Пример: {"t":"2025-03-28T05:29:24.413Z", "v":50.5, }
==== Полезная нагрузка ====
Используется little endian.


Для сложного значения: {"t":1617234567890, "v":[10,20,30], "d":"disk_iops"}
=== '''JSON формат''' ===
<syntaxhighlight lang="js">
{
"t":"2025-03-28T05:29:11.481Z", // время
"v": 42.13, // значение
"m": 2 // тип метрики (опционально)
}
</syntaxhighlight>

Текущая версия от 08:09, 28 марта 2025

Фиксированный заголовок (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 - тип метрики (0 - не определено, 1 - счетчик (только растет), 2 - замер (может увеличиваться и уменьшаться))

7 - наличие метки времени

Метка времени - опционально (8 байт)

[править | править код]

В наносекундах

Полезная нагрузка

[править | править код]

Используется little endian.

{
 "t":"2025-03-28T05:29:11.481Z", // время
 "v": 42.13, // значение
 "m": 2 // тип метрики (опционально)
}