Перейти к содержанию

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 ntpUpdateIntervalntpIntvl (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 - Исправления ошибок с обратной совместимостью

Типы изменений

  • 🚀 Новые возможности - Добавлена новая функциональность
  • 🔧 Исправления - Исправлены ошибки
  • 📚 Документация - Изменения в документации
  • 🎯 Основные изменения - Значительные изменения архитектуры
  • ⚠️ Критические изменения - Критические исправления безопасности
  • 🔬 Улучшения - Улучшения существующей функциональности
  • 📊 Технические детали - Технические улучшения и оптимизация