Skip to content

Отправка состояния Unit через MQTT

WARNING

Поддерживаемые топики состояний должны быть отражены в schema_example.json в разделе output_base_topic.

Unit должен отправлять форматированные данные в топики, которые указаны. Pepeunit обязуется обработать их по единому паттерну, описанному в данном разделе.

Всего в Pepeunit есть один топик отвечающий за отправку состояния:

  1. output_base_topic - state/pepeunit

output_base_topic - state/pepeunit

Когда Unit отправляет данные в этот топик?

  1. Каждые STATE_SEND_INTERVAL секунд указанные в env.json.

Данные отправляемые Unit, преобразуются на стороне Pepeunit в отображение состояния в меню Unit. Также данное состояние можно получить через REST и GQL.

Формат сообщений в топик state/pepeunit

json
{
    "ifconfig": ["192.168.0.3", "255.255.255.0", "192.168.0.1", "192.168.0.1"],
    "millis": 595925249.0,
    "mem_free": 12368.0,
    "mem_alloc": 25648.0,
    "freq": 80000000.0,
    "statvfs": [4096, 4096, 763, 716, 716, 0, 0, 0, 0, 255],
    "commit_version": "7f1b6564c4885432a17e5892e3c98f3a2ad33658"}

Разберём каждый ключ:

  • ifconfig - данные о подключении к сети в формате [ip, subnet, gateway, dns]
  • millis - время в миллисекундах с момента старта программы или время unix также в миллисекундах
  • mem_free - свободная RAM память в Байтах
  • mem_alloc - используемая RAM память в Байтах
  • freq - частота работы кристала в Гц
  • statvfs - состояние файловой системы flash памяти, позволяет вычислить сколько flash памяти используется и осталось:
    python
    [
        f_bsize,  # file system block size
        f_frsize,  # fragment size
        f_blocks,  # size of fs in f_frsize units
        f_bfree,  # number of free blocks
        f_bavail,  # number of free blocks for unprivileged users
        f_files,  # number of inodes
        f_ffree,  # number of free inodes
        f_favail,  # number of free inodes for unprivileged users
        f_flag,  # mount flags
        f_namemax,  # maximum filename length
    ]
  • commit_version - ключ COMMIT_VERSION из env.json файла Unit. Данный ключ используется в системе обновлений Pepeunit, для отслеживания текущей версии Unit.

DANGER

Для корректной работы статусов обновлений у Unit, требуется отправлять commit_version

WARNING

Размер передаваемого Unit состояния ограничен количеством символов указанных в переменной окружения MQTT_MAX_PAYLOAD_SIZE из Backend ENV. По умолчанию это значение составляет 50000 символов.

INFO

Pepeunit не обязывает отправлять все ключи указанные в примере, можно отправить например только два ключа millis и commit_version

Алгоритм отправки

  1. Каждые STATE_SEND_INTERVAL секунд опросить состояние системы
  2. Отформатировать данные для отправки в json формате
  3. Отправить данные в топик state/pepeunit из output_base_topic, указанный в schema.json