Этот код реализует веб-интерфейс для управления температурными датчиками DS18B20 через ESP32. Основные функции: сканирование датчиков, установка температурных порогов, мониторинг в реальном времени.

Алгоритм работы:

  1. Инициализация системы:

    • Инициализация шины 1-Wire (пин 5) и библиотеки DallasTemperature

    • Сканирование подключенных датчиков (discoverSensors())

    • Создание Wi-Fi точки доступа (SSID: ESP32_TempController)

    • Запуск веб-сервера (порт 80) с обработчиками URL

  2. Обнаружение датчиков:

    • Двойное сканирование шины (первый проход - подсчет устройств, второй - чтение данных)

    • Чтение из памяти датчиков:

      • Адрес устройства (64-битный уникальный ID)

      • Текущие пороги TH/TL (верхний/нижний)

    • Сохранение данных в динамический массив структур TempSensor

    • Регулярное обновление температур (каждые 5 сек)

  3. Веб-интерфейс:

    • Главная страница (/):

      • Отображение списка датчиков в виде карточек

      • Текущая температура и пороги для каждого

      • Форма установки новых порогов для выбранного датчика

    • Выбор датчика (/select):

      • Фиксация выбранного датчика по его адресу

    • Установка порогов (/set):

      • Прием комбинированного значения (0-65535)

      • Разделение на байты TH (старший) и TL (младший)

      • Запись в EEPROM датчика (команды 0x4E, 0x48)

    • Статус (/status):

      • Текстовый отчет со всеми параметрами датчиков

  4. Логика контроля:

    • Регулярная проверка выхода за пороги (checkTemperature())

    • Визуальная индикация в веб-интерфейсе:

      • Красный термометр: критические значения

      • Зеленая галочка: успешная настройка

      • Синий девайс: статус устройств

Ключевые особенности:

  1. Динамическое управление датчиками:

    • Массив sensorList создается во время выполнения

    • Поддержка до 32 устройств (MAX_DEVICES)

  2. Работа с порогами:

    • Комбинированное 16-битное значение (TH+TL)

    • Пример: 0x1234 → TH=0x12 (18°C), TL=0x34 (52°C)

    • Корректная запись в Scratchpad датчика

  3. Визуализация:

    • SVG-иконки с анимацией

    • Адаптивный дизайн (CSS Flexbox)

    • Подсветка выбранного датчика

  4. Обработка ошибок:

    • Проверка валидности адресов (validAddress())

    • Контроль выделения памяти

    • Проверка HTTP-методов

Смотреть код (верхний и нижний предел)

Смотреть код с добавлением + config (не проверен)