📋 Управление версиями JXCT¶
Дата: Июль 2025 Версия: 3.10.0
Автор: JXCT Development Team
📋 Содержание¶
- Содержание
- Обзор
- Файл версии
- Как изменить версию
- Простой способ
- Автоматическое обновление
- Доступные макросы
- Основные макросы версии
- Информация о сборке
- Константы устройства
- Сравнение версий
- Преимущества
- До (проблемы)
- После (решение)
- Примеры использования
- В коде C
- В MQTT сообщениях
- В веб-интерфейсе
- Процесс релиза
- Важные замечания
- Результат
- Поддержка
- Связь с разработчиками
- Дополнительные ресурсы
- Полезные ссылки
📖 Содержание¶
- 🎯 Обзор
- 📁 Файл версии
- 🔧 Как изменить версию
- 📋 Доступные макросы
- 🔍 Сравнение версий
- 🚀 Преимущества
- 📝 Примеры использования
- 🔄 Процесс релиза
- ⚠️ Важные замечания
- 🎯 Результат
🎯 Обзор¶
Начиная с версии 2.4.5, проект JXCT использует централизованное управление версией. Это означает, что версия определяется в одном месте и автоматически обновляется во всех частях проекта.
📁 Файл версии¶
Файл: include/version.h
Это единственное место, где нужно изменять версию проекта.
🔧 Как изменить версию¶
Простой способ¶
Отредактируйте файл include/version.h
и измените только эти три строки:
#define JXCT_VERSION_MAJOR 2 // Основная версия
#define JXCT_VERSION_MINOR 4 // Минорная версия
#define JXCT_VERSION_PATCH 5 // Патч версия
Пример: Для версии 2.5.0:
Автоматическое обновление¶
После изменения версии в version.h
, она автоматически обновится в:
- ✅ MQTT сообщениях (
sw_version
в Home Assistant) - ✅ Веб-интерфейсе (все страницы)
- ✅ Баннере запуска в Serial Monitor
- ✅ API ответах (
/api/sensor
,/health
) - ✅ Логах системы
- ✅ OTA обновлениях
📋 Доступные макросы¶
Основные макросы версии¶
JXCT_VERSION_MAJOR // 2
JXCT_VERSION_MINOR // 4
JXCT_VERSION_PATCH // 5
JXCT_VERSION_STRING // "2.4.5"
JXCT_VERSION_CODE // 20405 (для сравнения)
Информация о сборке¶
JXCT_BUILD_DATE // "Dec 25 2024"
JXCT_BUILD_TIME // "15:30:45"
JXCT_FULL_VERSION_STRING // "2.4.5 (built Dec 25 2024 15:30:45)"
Константы устройства¶
DEVICE_MANUFACTURER[] // "Eyera"
DEVICE_MODEL[] // "JXCT-7in1"
DEVICE_SW_VERSION[] // "2.4.5" (автоматически)
FIRMWARE_VERSION // "2.4.5" (для совместимости)
🔍 Сравнение версий¶
Для проверки версии в коде:
// Проверка минимальной версии
#if JXCT_VERSION_AT_LEAST(2, 4, 5)
// Код для версии 2.4.5 и выше
#endif
// Проверка точной версии
#if JXCT_VERSION_CODE == 20405 // 2.4.5
// Код только для версии 2.4.5
#endif
🚀 Преимущества¶
✅ До (проблемы):¶
- Версия была разбросана по 4+ файлам
- При обновлении легко забыть какой-то файл
- Версии в MQTT и веб-интерфейсе могли не совпадать
- Ручное обновление каждого места
✅ После (решение):¶
- Одно место для изменения версии
- Автоматическое обновление везде
- Гарантированная согласованность
- Простота сопровождения
📝 Примеры использования¶
В коде C++¶
#include "version.h"
void printVersion() {
Serial.println("Версия: " JXCT_VERSION_STRING);
Serial.println("Полная версия: " JXCT_FULL_VERSION_STRING);
}
В MQTT сообщениях¶
В веб-интерфейсе¶
🔄 Процесс релиза¶
- Измените версию в
include/version.h
- Скомпилируйте проект (
pio run
) - Проверьте что версия обновилась везде
- Создайте коммит с новой версией
- Создайте тег в Git:
git tag v3.10.0
⚠️ Важные замечания¶
- НЕ изменяйте версию в других файлах - она перезапишется
- Всегда компилируйте после изменения версии
- Используйте семантическое версионирование: MAJOR.MINOR.PATCH
- Обновляйте CHANGELOG.md при изменении версии
🎯 Результат¶
Теперь для изменения версии во всем проекте достаточно изменить 3 строки в 1 файле!
// Было: изменения в 4+ файлах
// Стало: изменения в 1 файле
#define JXCT_VERSION_PATCH 6 // Изменили только эту строку
// Версия автоматически обновилась везде! 🎉
📞 Поддержка¶
💬 Связь с разработчиками¶
- Telegram: @Gfermoto
- GitHub Issues: Сообщить о проблеме
- Документация: GitHub Pages
📚 Дополнительные ресурсы¶
- Руководство пользователя
- Техническая документация
- Агрономические рекомендации
- Руководство по компенсации
- API документация
- Управление конфигурацией
- Схема подключения
- Протокол Modbus
🔗 Полезные ссылки¶
- 🌱 GitHub репозиторий - Исходный код проекта
- 📋 План рефакторинга - Планы развития
- 📊 Отчет о техническом долге - Анализ технических проблем
- 🏗️ Архитектура системы - Общая архитектура проекта