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

📋 Управление конфигурацией JXCT 7-в-1

Версия: 3.10.0 Дата: Июль 2025 Автор: JXCT Development Team


📋 Содержание


📖 Содержание

  1. 🎯 Обзор
  2. 🌐 Веб-интерфейс
  3. 📤 Экспорт конфигурации
  4. 📥 Импорт конфигурации
  5. 🏭 Массовое развертывание
  6. 🔧 Технические детали
  7. 🐛 Отладка
  8. 📋 Связанная документация
  9. 🔄 История изменений

🎯 Обзор

Система JXCT поддерживает полноценное управление конфигурацией через веб-интерфейс с возможностью экспорта и импорта настроек в формате JSON.

🌐 Веб-интерфейс

Доступ к управлению конфигурацией

http://IP_УСТРОЙСТВА/config_manager

Основные функции

  • 📤 Экспорт настроек - сохранение текущей конфигурации
  • 📥 Импорт настроек - загрузка конфигурации из файла
  • 🔄 Автоматическая перезагрузка после импорта
  • ⚠️ Безопасность - исключение критических данных из экспорта

📤 Экспорт конфигурации

Что экспортируется

  • MQTT настройки: server, port, user, enabled
  • ThingSpeak настройки: channel_id, enabled
  • Интервалы: sensor_read, mqtt_publish, thingspeak, web_update
  • Дельта-фильтры: temperature, humidity, ph, ec, npk
  • Скользящее среднее: window, force_cycles, algorithm, outlier_filter
  • Флаги: hass_enabled, real_sensor

Что заменяется заглушками (по безопасности)

  • 🔒 MQTT серверYOUR_MQTT_SERVER_HERE
  • 🔒 MQTT пользовательYOUR_MQTT_USER_HERE
  • 🔒 MQTT парольYOUR_MQTT_PASSWORD_HERE
  • 🔒 ThingSpeak каналYOUR_CHANNEL_ID_HERE
  • 🔒 ThingSpeak API ключYOUR_API_KEY_HERE

Что НЕ экспортируется

  • WiFi настройки (ssid, password)
  • MAC-зависимые поля (topic_prefix, device_name)
  • Системная информация (version, exported timestamp)

Пример экспортированного файла

{
  "mqtt": {
    "enabled": true,
    "server": "192.168.2.11",
    "port": 1883,
    "user": "mqtt"
  },
  "thingspeak": {
    "enabled": true,
    "channel_id": "2952280"
  },
  "intervals": {
    "sensor_read": 5000,
    "mqtt_publish": 60000,
    "thingspeak": 900000,
    "web_update": 5000
  },
  "delta_filter": {
    "temperature": 0.10,
    "humidity": 0.50,
    "ph": 0.01,
    "ec": 10.00,
    "npk": 1.00
  },
  "moving_average": {
    "window": 5,
    "force_cycles": 5,
    "algorithm": 0,
    "outlier_filter": 0
  },
  "flags": {
    "hass_enabled": true,
    "real_sensor": true
  }
}

📥 Импорт конфигурации

Поддерживаемые форматы

  • JSON - единственный поддерживаемый формат
  • Одна строка - JSON должен быть в одну строку без форматирования
  • UTF-8 - кодировка файла

Процесс импорта

  1. Выбор файла - через веб-интерфейс
  2. Загрузка - файл передается на устройство
  3. Парсинг - JSON разбирается и проверяется
  4. Применение - настройки записываются в NVS
  5. Перезагрузка - устройство автоматически перезагружается

Обработка ошибок

  • Неверный JSON - сообщение об ошибке парсинга
  • Пустой файл - предупреждение о пустом содержимом
  • Недоступность в AP режиме - импорт отключен в режиме точки доступа

🏭 Массовое развертывание

Шаблон конфигурации

Используйте файл test_safe_config.json как шаблон для массового развертывания.

Заглушки в шаблоне

  • YOUR_MQTT_SERVER_HERE - адрес MQTT сервера
  • YOUR_MQTT_USER_HERE - имя пользователя MQTT
  • YOUR_MQTT_PASSWORD_HERE - пароль MQTT
  • YOUR_CHANNEL_ID_HERE - ID канала ThingSpeak
  • YOUR_API_KEY_HERE - API ключ ThingSpeak

Процесс массового развертывания

  1. Копирование шаблона

    cp test_safe_config.json production_config.json
    

  2. Замена заглушек (в текстовом редакторе)

  3. Найти и заменить все заглушки на реальные значения
  4. Использовать функцию "Найти и заменить" для быстрой замены

  5. Применение на устройствах

  6. Загрузить готовый файл на каждое устройство
  7. Устройства автоматически перезагрузятся с новыми настройками

Пример готового файла для продакшена

{"mqtt":{"enabled":true,"server":"192.168.4.1","port":1883,"user":"sensor_user","password":"secret123"},"thingspeak":{"enabled":true,"channel_id":"1234567","api_key":"ABCD1234EFGH5678"},"intervals":{"sensor_read":5000,"mqtt_publish":60000,"thingspeak":900000,"web_update":5000},"delta_filter":{"temperature":0.10,"humidity":0.50,"ph":0.01,"ec":10.00,"npk":1.00},"moving_average":{"window":5,"force_cycles":5,"algorithm":0,"outlier_filter":0},"flags":{"hass_enabled":true,"real_sensor":true}}

🔧 Технические детали

Парсер JSON

  • Простой парсер - без использования ArduinoJson для экономии памяти
  • Секционный поиск - поиск значений в соответствующих секциях JSON
  • Игнорирование заглушек - заглушки не применяются к конфигурации
  • Отладочные сообщения - детальные логи в Serial Monitor

Безопасность

  • Фильтрация полей - критические данные не экспортируются
  • Проверка режима - импорт недоступен в AP режиме
  • Валидация данных - проверка корректности JSON
  • Уникальные идентификаторы - автоматическая генерация по MAC адресу

Ограничения

  • Размер файла - ограничен доступной памятью ESP32
  • Формат JSON - только одна строка без форматирования
  • Кодировка - только UTF-8
  • Режим работы - импорт недоступен в AP режиме

🐛 Отладка

Логи в Serial Monitor

⚙️ Начало загрузки файла конфигурации: config.json
⚙️ Загрузка завершена, размер: 425 байт
[IMPORT] MQTT enabled: 1, server: 192.168.2.11, port: 1883, user: mqtt
[IMPORT] ThingSpeak enabled: 1, channel: 2952280, interval: 900000
[IMPORT] Intervals - sensor: 5000, mqtt: 60000, ts: 900000, web: 5000
[IMPORT] Flags - hass: 1, real_sensor: 1
✅ JSON конфигурация успешно распарсена
✅ Конфигурация сохранена
✅ Конфигурация импортирована успешно

Типичные ошибки

  • "Пустой файл" - файл не содержит данных
  • "Ошибка парсинга JSON" - неверный формат JSON
  • "Import недоступен в режиме AP" - устройство в режиме точки доступа
  • "Not found: /api/config/import" - устройство не подключено к сети

📋 Связанная документация

🔄 История изменений

v3.10.0

  • ✅ Реализован полноценный импорт/экспорт конфигурации
  • ✅ Добавлен шаблон для массового развертывания
  • ✅ Исправлен парсер JSON для работы с вложенными секциями
  • ✅ Добавлена поддержка заглушек в шаблоне
  • ✅ Улучшена отладка и логирование
  • ✅ Исправлен редирект после импорта

📞 Поддержка

💬 Связь с разработчиками

📚 Дополнительные ресурсы

🔗 Полезные ссылки