Skip to content

Pepeunit Framework

INFO

Каждая из библиотек является Framework`ом для работы с Pepeunit

Цель Framework - облегчить разработку новых Unit, обеспечив работу базового функционала для интеграции с Pepeunit и предоставить инструменты управления программой

Набор возможностей

  1. Встроенный MQTT клиент:
    • массовая подписка на топики на основе schema.json
    • отправка данных в топики массово на основе schema.json
  2. Встроенный REST клиент:
    • загрузка архива обновлений
    • загрузка env.json
    • загрузка schema.json
    • установка состояния storage
    • получение состояния storage
  3. Приём и корректная обработка cтандартных MQTT команды Pepeunit
  4. Отправки и генерации состояния Unit
  5. Функционал для работы с schema.json:
    • Динамическое обновление
    • Поиск по всем 4 типам топиков
    • Поиск топиков по UnitNode.uuid или по полному названию конкретных топиков
  6. Функционал для работы с env.json:
    • Динамическое обновление
    • Получение Unit.uuid из токена
    • Получение любой перменной, как атрибута класса
  7. Функционал для работы с логами:
    • Поддержка 5 типов логов: debug, info, warning, error, critical
    • Поддержка отправки логов по MQTT
    • Поддержка сохранения логов в файл log.json
    • Возможность обнуления логов
  8. Установка кастомного handler для обновления Unit
  9. Установка handler для Input сообщений MQTT
  10. Установка handler для Output сообщений MQTT
  11. Возможность выбрать несколько типов обновлений
  12. Функционал для работы с главным циклом приложения:
    • Запуск
    • Остановка
    • Динамическое изменение handler

log.json

INFO

Чёрный ящик Unit - позволяет хранить последние N логов не зависимо от состояния сети.

Логи хранятся в нём в формате ndjson, где каждая новая строка отделённая \n - это новый словарь:

ndjson
{"create_datetime":"2025-11-12T19:43:53Z","level":"Info","text":"MQTT connected successfully"}
{"create_datetime":"2025-11-12T19:44:37Z","level":"Info","text":"MQTT client connected successfully"}
{"create_datetime":"2025-11-12T22:00:10Z","level":"Info","text":"Get base MQTT command: update/pepeunit"}
{"create_datetime":"2025-11-12T22:00:10Z","level":"Warning","text":"COMPILED_FIRMWARE_LINK is missing in update payload"}
{"create_datetime":"2025-11-12T23:00:10Z","level":"Info","text":"Get base MQTT command: update/pepeunit"}
{"create_datetime":"2025-11-12T23:00:10Z","level":"Warning","text":"COMPILED_FIRMWARE_LINK is missing in update payload"}
{"create_datetime":"2025-11-12T23:08:50Z","level":"Info","text":"Get base MQTT command: update/pepeunit"}
{"create_datetime":"2025-11-12T23:08:50Z","level":"Warning","text":"COMPILED_FIRMWARE_LINK is missing in update payload"}
{"create_datetime":"2025-11-12T23:25:41Z","level":"Info","text":"MQTT client connected successfully"}
{"create_datetime":"2025-11-12T23:25:41Z","level":"Info","text":"Connected to MQTT Broker"}
{"create_datetime":"2025-11-12T23:25:42Z","level":"Info","text":"Success subscribed to 4 topics"}

Ёмкость данного буфера зависит от переменной окружения MAX_LOG_LENGTH, все новые записи попадают в конец файла, а все старые записи, если их порядковый номер от конца больше MAX_LOG_LENGTH удаляются.

Доступ к даному файлу возможен либо физически через порты устройств или через команду log_sync