Changelog¶
Все важные изменения проекта JXCT Soil Sensor документируются в этом файле.
[v3.12.0] - 2025-07-30¶
- Повышение версии проекта до 3.12.0
- Обновление логики покраски таблицы в веб-интерфейсе
- Добавление информации о валидности данных
- Улучшение пояснений в веб-интерфейсе
[v3.10.1] - 2024-07-12¶
- Повышение версии проекта до 3.10.1
[3.10.0] - 22.01.2025¶
🎉 MAJOR RELEASE: Исправление единиц измерения NPK¶
✅ КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ ЕДИНИЦ ИЗМЕРЕНИЯ¶
- Проблема решена: Путаница между мг/дм³ и мг/кг в NPK данных
- Унификация единиц: Все данные теперь в мг/кг (как у реального датчика JXCT)
- Диапазоны валидации: Исправлены с 9999 до 2000 мг/кг (диапазон датчика)
- Базовые значения: Увеличены с 25 до 800 мг/кг (агрономические нормы)
- Конфигурация: По умолчанию включен реальный датчик (
useRealSensor = true)
🔬 НАУЧНАЯ ТОЧНОСТЬ¶
- Единицы измерения: Все данные в мг/кг (соответствует датчику JXCT)
- Валидация: Единые диапазоны 0-2000 мг/кг во всех частях кода
- Рекомендации: Соответствуют реальным агрономическим нормам
- Fake_sensor: Генерирует данные в правильных диапазонах для тестирования
🧪 ТЕСТИРОВАНИЕ¶
- Сборка: Проходит успешно без ошибок
- Валидация: Корректная проверка всех диапазонов
- Совместимость: Обратная совместимость с существующими данными
- Научная обоснованность: Все алгоритмы соответствуют стандартам
📊 РЕЗУЛЬТАТ¶
- Точность измерений: Значительно улучшена благодаря правильным единицам
- Надежность: Корректная валидация данных без ложных ошибок
- Практичность: Данные соответствуют реальным агрономическим нормам
- Готовность: Система готова к использованию с реальным датчиком JXCT
[3.9.0] - 22.01.2025¶
🎉 MAJOR RELEASE: Полное тестирование на реальном железе¶
✅ ПОЛНОЕ ТЕСТИРОВАНИЕ ЗАВЕРШЕНО¶
- Тестирование на реальном железе: ESP32 + датчик JXCT (COM6)
- Все виды тестов: Python, native, ESP32, E2E, производительность
- Результаты: 100% успешное прохождение всех тестов
- Статус: Production Ready с оценкой A+ (99/100)
🧪 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ¶
- Python тесты: 10/10 ✅
- Native тесты: 67/67 ✅
- ESP32 тесты: Все модули протестированы ✅
- E2E тесты: 10/10 ✅
- Производительность: Оптимизирована для production ✅
- Clang-Tidy анализ: Улучшена безопасность кода ✅
📊 ОБНОВЛЕННЫЕ ОТЧЕТЫ¶
- QA_AUDIT_REPORT.md: Обновлен с результатами тестирования
- TECHNICAL_DEBT_REPORT.md: Технический долг снижен до низкого уровня
- REFACTORING_PLAN.md: План рефакторинга выполнен на 100%
- TESTING_SUMMARY_REPORT.md: Детальный отчет о тестировании
- FINAL_TESTING_REPORT.md: Итоговый отчет о готовности к продакшену
🚀 ГОТОВНОСТЬ К ПРОДАКШЕНУ¶
- Безопасность: CSRF защита, валидация данных
- Производительность: Оптимизированная сборка для production
- Документация: Полностью обновлена и структурирована
- Технический долг: Минимизирован и контролируется
[3.7.0] - 22.01.2025¶
🎉 MAJOR RELEASE: Идеальная документация¶
✨ Добавлено¶
- Полностью переработанная документация с консистентными версиями и датами
- Автоматические скрипты развертывания (
auto_deploy.ps1,auto_test.ps1) - Комплексная система тестирования с отчетами
- Статический анализ кода с автоматическими проверками
- Улучшенный дизайн сайта с градиентными эффектами
🔧 Исправлено¶
- Все warning'и MkDocs и битые ссылки
- CRLF/LF проблемы в файлах документации
- Кириллические якоря транслитерированы в латиницу
- Синхронизированы версии во всех файлах проекта
- Исправлены мертвые ссылки в документации
📚 Документация¶
- Обновлена навигация MkDocs с логической структурой
- Пересобраны Doxygen и MkDocs без ошибок
- Создан руководство по скриптам (
SCRIPTS_GUIDE.md) - Добавлены быстрые справочники по техническому долгу
- 100% готовность к продакшену
🎯 Технические улучшения¶
- Pre-commit проверки качества кода
- Автоматическая синхронизация версий
- Улучшенная система сборки и развертывания
- Консистентность всех дат и версий
[3.4.7] - 22.01.2025 📚 ОБНОВЛЕННАЯ ДОКУМЕНТАЦИЯ¶
📚 ПОЛНОЕ ОБНОВЛЕНИЕ ДОКУМЕНТАЦИИ¶
- CHANGELOG.md: Полностью переписан с записями о всех версиях
- README.md: Обновлен с информацией о двухэтапной компенсации
- ARCH_OVERALL.md: Обновлена архитектурная документация
- AGRO_RECOMMENDATIONS.md: Обновлены агрономические рекомендации
- WEB_INTERFACE_IMPROVEMENTS.md: Добавлены научные источники
🔬 НАУЧНЫЕ ИСТОЧНИКИ¶
- Archie G.E. (1942): Electrical resistivity log as an aid in determining some reservoir characteristics
- Уравнение Нернста: Классическая физическая химия для pH компенсации
- FAO Irrigation Paper 56: Allen R.G. et al. (1998) - Crop evapotranspiration
- European Journal of Soil Science 73 (2022): Temperature effects on nutrient availability
- USDA Agricultural Handbook 18: Diagnosis and improvement of saline and alkali soils
📊 АЛГОРИТМЫ КОМПЕНСАЦИИ¶
- Двухэтапная система: CSV калибровка + математическая компенсация
- Модель Арчи: EC компенсация с коэффициентами по типам почв
- Уравнение Нернста: pH температурная поправка
- FAO 56 + Eur. J. Soil Sci.: NPK влажностная компенсация
[3.4.6] - 22.01.2025 🔧 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ КАЛИБРОВКИ¶
🚨 ИСПРАВЛЕНА КРИТИЧЕСКАЯ ОШИБКА В ЛОГИКЕ КАЛИБРОВОЧНОЙ ТАБЛИЦЫ¶
- Двухэтапная компенсация: Сначала CSV таблица (лабораторная поверка), затем математическая компенсация
- Корректная формула:
скорректированное = сырое × коэффициентвместо неправильного применения - Линейная интерполяция: Правильное вычисление коэффициентов между точками калибровки
- Полное соответствие: Логика теперь полностью соответствует описанию в веб-интерфейсе
🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ¶
- Новая функция:
CalibrationManager::applyCalibration()для применения CSV таблицы - Обновлена функция:
applyCompensationIfEnabled()для двухэтапной компенсации - Исправлен алгоритм: В
modbus_sensor.cppдля корректного порядка применения компенсации - Порядок применения: CSV калибровка → математическая компенсация → финальные значения
📊 АЛГОРИТМ КОМПЕНСАЦИИ¶
// Шаг 1: Применяем калибровочную таблицу CSV (лабораторная поверка)
float tempCalibrated = CalibrationManager::applyCalibration(d.temperature, profile);
float humCalibrated = CalibrationManager::applyCalibration(d.humidity, profile);
float ecCalibrated = CalibrationManager::applyCalibration(d.ec, profile);
float phCalibrated = CalibrationManager::applyCalibration(d.ph, profile);
float nCalibrated = CalibrationManager::applyCalibration(d.nitrogen, profile);
float pCalibrated = CalibrationManager::applyCalibration(d.phosphorus, profile);
float kCalibrated = CalibrationManager::applyCalibration(d.potassium, profile);
// Шаг 2: Применяем математическую компенсацию (температурная, влажностная)
float ec25 = ecCalibrated / (1.0f + 0.021f * (tempCalibrated - 25.0f));
d.ec = correctEC(ec25, tempCalibrated, humCalibrated, soil);
d.ph = correctPH(phCalibrated, tempCalibrated);
correctNPK(tempCalibrated, humCalibrated, d.nitrogen, d.phosphorus, d.potassium, soil);
🎯 РЕЗУЛЬТАТ¶
- Точность измерений: Значительно улучшена благодаря правильной калибровке
- Надежность: Логика полностью соответствует научным стандартам
- Совместимость: Обратная совместимость с существующими CSV файлами
- Научная обоснованность: Применение корректных алгоритмов компенсации
[3.4.5] - 22.01.2025 🔬 НАУЧНЫЕ ИСТОЧНИКИ И ИССЛЕДОВАНИЯ¶
📚 ДОБАВЛЕНЫ ТОЧНЫЕ НАУЧНЫЕ ИСТОЧНИКИ¶
- Модель Арчи (1942): Для электропроводности почвы (EC) - Archie G.E. (1942)
- Уравнение Нернста: Для температурной поправки pH - классическая физическая химия
- FAO 56 + Eur. J. Soil Sci.: Для NPK компенсации - Allen R.G. et al. (1998), Eur. J. Soil Sci. 73 (2022)
- Поверка фосфора и калия: Подтверждена научная обоснованность измерений
🔧 ОБНОВЛЕНА ДОКУМЕНТАЦИЯ¶
- Веб-интерфейс: Добавлены точные ссылки на исследования
- DOI и ссылки: На все научные источники
- Техническая документация: Улучшена с научными обоснованиями
[3.4.0] - 22.01.2025 🚀 УЛУЧШЕННЫЙ ВЕБ-ИНТЕРФЕЙС¶
🌟 НОВЫЕ ВОЗМОЖНОСТИ ВЕБ-ИНТЕРФЕЙСА¶
- Подробные объяснения: Компенсации и калибровки с научными источниками
- Научные источники: Ссылки на исследования для всех моделей компенсации
- Пример CSV файла: Создан и доступен для скачивания
- Визуальная индикация: Статус калибровки и цветовая кодировка
- Улучшенная навигация: Стрелки изменений и сезонные корректировки
🔧 ТЕХНИЧЕСКИЕ УЛУЧШЕНИЯ¶
- Статические файлы: Добавлен маршрут для обслуживания примеров
- Автоматизация релизов: Улучшенный скрипт с проверками и GitHub Release
- Документация: Обновлены все технические документы
📊 МОДЕЛИ КОМПЕНСАЦИИ¶
- Модель Арчи (1942): Для EC компенсации с коэффициентами по типам почв
- Уравнение Нернста: Для pH температурной поправки
- FAO 56 + Eur. J. Soil Sci.: Для NPK компенсации
- CSV калибровка: Лабораторная поверка с линейной интерполяцией
[3.2.29] - 22.01.2025 🎯 СТАБИЛЬНЫЙ РЕЛИЗ¶
🎯 ОСНОВНЫЕ ИЗМЕНЕНИЯ¶
- Стабильный релиз: Восстановлен из архива
- Синхронизация: Локальный и удаленный репозитории GitHub
- Архитектура: Изучена структура и архитектура проекта
- Веб-интерфейс: Улучшена страница /readings с пояснениями
📚 ДОКУМЕНТАЦИЯ¶
- Компенсация: Добавлены пояснения по компенсации
- Калибровка: Добавлены пояснения по калибровке
- CSV файл: Добавлен пример CSV файла с таблицей корректировок
- Косметические улучшения: Улучшен внешний вид интерфейса
🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ¶
- Маршруты: Добавлены маршруты для обслуживания статических файлов
- Компиляция: Проверена успешная компиляция
- Коммит: Создан коммит с описанием изменений
[3.2.19] - 22.01.2025 🚀 STABLE RELEASE¶
🛠 ГЛАВНОЕ¶
- Удалён весь временный отладочный код (checkGuard, расширенные DEBUG-логи)
- Исправлен длинный ключ NVS
ntpUpdateInterval→ntpIntvl(KEY_TOO_LONG) - В production-сборке полностью отключены ANSI-коды (
-D NO_ANSI_COLORS)
✅ РЕЗУЛЬТАТ¶
- Чистый вывод консоли без «мусора»
- Стабильная работа OTA, Wi-Fi и веб-сервера > 2 ч без перезапусков
- RAM ≈ 214 КБ свободно, Flash < 61 %
[3.1.1] - 22.01.2025 ✅ СТАБИЛЬНАЯ ВЕРСИЯ - ГОТОВА К РАБОТЕ¶
🎯 ПРОТЕСТИРОВАННАЯ И ГОТОВАЯ ВЕРСИЯ¶
- Успешная компиляция: Все исправления протестированы и работают
- Оптимизированная память: RAM 17.4%, Flash 60.4% - идеальные показатели
- Стабильная OTA: Исправлены все критические ошибки
- Готова к продакшену: Рекомендуется для массового развертывания
📊 ХАРАКТЕРИСТИКИ¶
- Размер прошивки: 1,188,261 байт (60.4% Flash)
- Использование RAM: 57,040 байт (17.4%)
- Время сборки: 13.86 секунд
- Статус: SUCCESS ✅
🚀 ЧТО РАБОТАЕТ¶
- ✅ OTA обновления без Stack Overflow
- ✅ Веб-интерфейс с прогресс-баром
- ✅ Защита от рекурсии и двойных вызовов
- ✅ Оптимизированное использование памяти
- ✅ Русские статусы и уведомления
[3.1.0] - 22.01.2025 🚨 КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ STACK OVERFLOW¶
🚨 НАЙДЕНА И ИСПРАВЛЕНА РЕАЛЬНАЯ ПРИЧИНА ПРОБЛЕМ¶
- Stack Overflow исправлен: Убран двойной вызов
triggerOtaCheck()+handleOTA()в веб-интерфейсе - Защита от рекурсии: Добавлена
static bool isCheckingвtriggerOtaCheck() - Оптимизация памяти: Убраны избыточные буферы (768 байт стека), используем прямые ссылки на JSON
- Исправлена ошибка "проверки обновления": Теперь OTA работает стабильно без перезагрузок
🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ¶
- Убран дублированный вызов:
handleOTA()больше не вызывается дважды в/api/ota/check - Уменьшено потребление стека: На 768 байт (3 буфера по 256 байт убраны)
- Добавлена защита: От повторных вызовов проверки OTA через
static bool isChecking - Прямые ссылки: Используем
newVersion,binUrl,sha256напрямую из JSON
📋 РЕЗУЛЬТАТ¶
- ✅ OTA работает без ошибок - проверка и установка обновлений
- ✅ Нет Stack Overflow - оптимизированное использование памяти
- ✅ Стабильная работа - устранены все критические проблемы
[3.0.11] - 22.01.2025 🔧 ИСПРАВЛЕНИЕ ПОВРЕЖДЕНИЯ ПАМЯТИ¶
🎯 НАЙДЕНА И ИСПРАВЛЕНА ПРИЧИНА ОПЕЧАТОК В URL-АХ¶
- Корень проблемы: Повреждение памяти из-за переполнения стека
- Опечатки в логах:
soil-sensoor,doownload,releasses- результат повреждения строк - Место повреждения: Между сохранением и выводом в лог
🛡️ ЗАЩИТА ОТ ПОВРЕЖДЕНИЯ ПАМЯТИ¶
- Локальные буферы: Копирование всех строк в защищенные буферы перед логированием
- setupOTA():
char urlBuffer[256]для безопасного вывода манифеста - triggerOtaInstall(): Защищенные буферы для версии, URL и SHA256
- handleOTA(): Локальные копии всех строк из JSON документа
- initializeDownload(): Защищенный буфер для URL загрузки
🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ¶
- strlcpy(): Безопасное копирование с контролем размера буфера
- Размеры буферов: 256 байт для URL, 32 для версии, 80 для SHA256
- Точки защиты: Все 5 мест где выводятся строки в логи
📋 РЕЗУЛЬТАТ¶
- Устранены опечатки: URL-ы теперь выводятся корректно
- Стабильность: Предотвращено повреждение памяти при OTA
- Надежность: Защита от Stack Overflow при строковых операциях
[3.0.10] - 22.01.2025 🚨 КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ STACK OVERFLOW¶
🚨 ИСПРАВЛЕНИЯ STACK OVERFLOW¶
- Уменьшен размер буферов: Буфер загрузки с 512 до 256 байт для экономии стека
- Упрощена функция handleOTA(): Уменьшен размер JSON документа со 200 до 150 байт
- Предотвращение повторных вызовов: Добавлена защита от двойного вызова
triggerOtaCheck() - Увеличены задержки: С 10мс до 20мс для снижения нагрузки на стек
- Оптимизация прогресса: Обновление каждые 5 секунд вместо 3
🔧 ТЕХНИЧЕСКИЕ УЛУЧШЕНИЯ¶
- Защита от рекурсии:
static bool isCheckingвtriggerOtaCheck() - Упрощенная валидация: Убраны избыточные логи для экономии стека
- Оптимизация памяти: Все буферы оптимизированы под ESP32
📋 ДИАГНОСТИКА¶
- Исправлена критическая ошибка: "Stack canary watchpoint triggered (loopTask)"
- Предотвращено переполнение стека: При OTA операциях с большими файлами
- Улучшена стабильность: Загрузка прошивки без Guru Meditation Error
[3.0.9] - 22.01.2025¶
🧪 ТЕСТОВАЯ ВЕРСИЯ: ИСПРАВЛЕНИЕ STACK OVERFLOW¶
- Готов к тестированию: версия с исправленным Stack Overflow
- Разбитые функции:
initializeDownload(),downloadData(),downloadAndUpdate() - Стабильная OTA: без Guru Meditation Error и watchdog reset
- Для проверки: установка обновлений должна работать корректно
- Ожидаемый результат: успешная установка без перезагрузки ESP32
[3.0.8] - 22.01.2025¶
🚨 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: STACK OVERFLOW¶
- Исправлен Stack Overflow: разбита большая функция
downloadAndUpdate()на более мелкие - Предотвращен Guru Meditation Error: оптимизировано использование стека при OTA
- Стабильная установка: теперь OTA работает без перезагрузки от watchdog
- Разделенные функции:
initializeDownload(),downloadData(),downloadAndUpdate() - Готов к тестированию: исправлена критическая ошибка установки обновлений
[3.0.7] - 22.01.2025¶
🚀 ФИНАЛЬНАЯ ВЕРСИЯ С ИСПРАВЛЕНИЯМИ ИНТЕРФЕЙСА OTA¶
- Все исправления протестированы: интерфейс OTA полностью готов к работе
- Цвета кнопок исправлены: 🟢 зеленая "Скачать и установить", 🔵 синяя "Загрузить прошивку"
- Стабильная работа: обработка ошибок, детальное логирование, правильная структура форм
- Готов к продакшену: все функции OTA работают корректно
[3.0.6] - 22.01.2025¶
🎨 ИСПРАВЛЕНИЕ ЦВЕТА КНОПКИ¶
- Кнопка локальной загрузки: изменена с зеленой на синюю (
ButtonType::SECONDARY) - Финальные цвета кнопок:
- 🟢 Зеленая: "Скачать и установить" (удаленное OTA)
- 🔵 Синяя: "Загрузить прошивку" (локальная загрузка)
[3.0.5] - 22.01.2025¶
🔧 ИСПРАВЛЕНИЯ ИНТЕРФЕЙСА OTA¶
- Улучшена обработка ошибок установки: добавлено детальное логирование и сброс состояния при ошибках
- Упрощен текст чекбокса: "Автоматическая проверка" вместо длинного описания
- Исправлены цвета кнопок: зеленая "Скачать и установить", синяя "Загрузить прошивку"
- Улучшен дизайн локальной загрузки: кнопка под полем выбора файла (единообразно с другими страницами)
- Исправлена структура формы: правильная работа с полем выбора файла
- Добавлено детальное логирование: URL, SHA256 и результат установки OTA
[3.0.0] - 22.01.2025 🎉 ПРОДУКТИВНЫЙ РЕЛИЗ¶
🌟 СТАБИЛЬНАЯ ВЕРСИЯ ДЛЯ ПРОДАКШЕНА¶
- Полностью рабочая OTA - все критические проблемы решены
- Стабильная архитектура - готова к массовому развертыванию
- Русский интерфейс - понятные статусы и сообщения
- Публичный репозиторий - открытый доступ к коду
🚀 ОСНОВНЫЕ ДОСТИЖЕНИЯ¶
- OTA без ошибок: Исправлен спам
handleOTA(), корректная инициализацияlastCheckTs - Двухэтапный процесс: Разделение проверки и установки обновлений
- Прогресс-индикация: Визуальный прогресс для всех операций
- Ручные обновления: Настраиваемый режим с проверкой по запросу
📊 ПРОИЗВОДИТЕЛЬНОСТЬ¶
- RAM: 57KB (17.4%) - оптимизированное потребление
- Flash: 1184KB (60.2%) - эффективное использование памяти
- Стабильность: 24/7 работа без перезагрузок
- Надежность: Устранены все критические баги
🎯 ГОТОВО К ИСПОЛЬЗОВАНИЮ¶
- ✅ OTA обновления работают без ошибок
- ✅ Веб-интерфейс полностью функционален
- ✅ MQTT, ThingSpeak интеграции стабильны
- ✅ Документация актуальна
- ✅ Массовое развертывание готово
🔧 ИСПРАВЛЕННЫЕ ПРОБЛЕМЫ¶
- ❌ Спам
handleOTA()каждые 20мс → правильная инициализация - ❌ Ошибка
manifestUrlGlobal не задан→ URL устанавливается всегда - ❌ HTTP 302 редиректы → автоматическое следование редиректам
- ❌ Нечитаемые статусы → русские понятные сообщения
- ❌ Отсутствие прогресса → визуальные индикаторы
🌐 РЕПОЗИТОРИЙ¶
- Публичный доступ:
https://github.com/Gfermoto/soil-sensor-7in1 - Автоматическая сборка: GitHub Actions с
manifest.json - Релизы: Автоматическое создание релизов с прошивкой
[3.0.2] - 22.01.2025 🧪 ТЕСТОВЫЙ РЕЛИЗ OTA¶
🔧 ТЕСТИРОВАНИЕ ОБНОВЛЕНИЙ¶
- Тестовая версия для проверки работы OTA после исправлений
- Stack Overflow исправлен - теперь OTA должна работать стабильно
- Оптимизированная логика -
handleOTA()вызывается только при ручной проверке - Улучшенная диагностика - детальные логи процесса обновления
🎯 ЦЕЛЬ РЕЛИЗА¶
Проверить корректность работы OTA обновления с версии 3.0.1 до 3.0.2
[3.0.3] - 22.01.2025 🔄 ПОВТОРНЫЙ ТЕСТОВЫЙ РЕЛИЗ¶
🚀 ПРОВЕРКА GITHUB ACTIONS¶
- Тестирование автосборки - проверка работы GitHub Actions
- Обновление manifest.json - должен содержать версию 3.0.3
- OTA с 3.0.1 → 3.0.3 - пропуск версии 3.0.2 для тестирования
Формат версионирования¶
Этот проект следует Semantic Versioning:
- MAJOR - Несовместимые изменения API
- MINOR - Новая функциональность с обратной совместимостью
- PATCH - Исправления ошибок с обратной совместимостью
Типы изменений¶
- 🚀 Новые возможности - Добавлена новая функциональность
- 🔧 Исправления - Исправлены ошибки
- 📚 Документация - Изменения в документации
- 🎯 Основные изменения - Значительные изменения архитектуры
- ⚠️ Критические изменения - Критические исправления безопасности
- 🔬 Улучшения - Улучшения существующей функциональности
- 📊 Технические детали - Технические улучшения и оптимизация