Skip to content

Pepeunit Framework

Ccылки на репозитории библиотек

INFO

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

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

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

  1. Встроенный MQTT клиент:
    • массовая подписка на топики на основе schema.json
    • отправка данных в топики массово на основе schema.json
  2. Встроенный REST клиент:
    • загрузка архива обновлений
    • загрузка env.json
    • загрузка schema.json
    • установка состояния storage
    • получение состояния storage
    • получение списка Unit при помощи списка UnitNode.uuid
    • получение Input UnitNode при помощи Output UnitNode
  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. Шифрование aes-gcm-256 поддерживающее 16/24/32 байтовый ключ, работает только при ручном использовании
  13. Функционал для работы с главным циклом приложения:
    • Запуск
    • Остановка
    • Динамическое изменение 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"}

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

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