Отправка состояния Unit через MQTT
WARNING
Поддерживаемые топики состояний должны быть отражены в schema_example.json в разделе output_base_topic
.
Unit должен отправлять форматированные данные в топики, которые указаны. Pepeunit обязуется обработать их по единому паттерну, описанному в данном разделе.
Всего в Pepeunit есть один топик отвечающий за отправку состояния:
output_base_topic
-state/pepeunit
output_base_topic - state/pepeunit
Данные отправляемые Unit, преобразуются на стороне Pepeunit в отображение состояния в меню Unit. Также данное состояние можно получить через REST и GQL.
Формат сообщений в топик state/pepeunit
{
"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
Алгоритм отправки
- Каждые
STATE_SEND_INTERVAL
секунд опросить состояние системы - Отформатировать данные для отправки в
json
формате - Отправить данные в топик
state/pepeunit
изoutput_base_topic
, указанный в schema.json