Этот код реализует веб-интерфейс для управления температурными датчиками DS18B20 через ESP32. Основные функции: сканирование датчиков, установка температурных порогов, мониторинг в реальном времени.
Алгоритм работы:
-
Инициализация системы:
-
Инициализация шины 1-Wire (пин 5) и библиотеки DallasTemperature
-
Сканирование подключенных датчиков (
discoverSensors()
) -
Создание Wi-Fi точки доступа (SSID:
ESP32_TempController
) -
Запуск веб-сервера (порт 80) с обработчиками URL
-
-
Обнаружение датчиков:
-
Двойное сканирование шины (первый проход - подсчет устройств, второй - чтение данных)
-
Чтение из памяти датчиков:
-
Адрес устройства (64-битный уникальный ID)
-
Текущие пороги TH/TL (верхний/нижний)
-
-
Сохранение данных в динамический массив структур
TempSensor
-
Регулярное обновление температур (каждые 5 сек)
-
-
Веб-интерфейс:
-
Главная страница (
/
):-
Отображение списка датчиков в виде карточек
-
Текущая температура и пороги для каждого
-
Форма установки новых порогов для выбранного датчика
-
-
Выбор датчика (
/select
):-
Фиксация выбранного датчика по его адресу
-
-
Установка порогов (
/set
):-
Прием комбинированного значения (0-65535)
-
Разделение на байты TH (старший) и TL (младший)
-
Запись в EEPROM датчика (команды 0x4E, 0x48)
-
-
Статус (
/status
):-
Текстовый отчет со всеми параметрами датчиков
-
-
-
Логика контроля:
-
Регулярная проверка выхода за пороги (
checkTemperature()
) -
Визуальная индикация в веб-интерфейсе:
-
Красный термометр: критические значения
-
Зеленая галочка: успешная настройка
-
Синий девайс: статус устройств
-
-
Ключевые особенности:
-
Динамическое управление датчиками:
-
Массив
sensorList
создается во время выполнения -
Поддержка до 32 устройств (MAX_DEVICES)
-
-
Работа с порогами:
-
Комбинированное 16-битное значение (TH+TL)
-
Пример:
0x1234
→ TH=0x12 (18°C), TL=0x34 (52°C) -
Корректная запись в Scratchpad датчика
-
-
Визуализация:
-
SVG-иконки с анимацией
-
Адаптивный дизайн (CSS Flexbox)
-
Подсветка выбранного датчика
-
-
Обработка ошибок:
-
Проверка валидности адресов (
validAddress()
) -
Контроль выделения памяти
-
Проверка HTTP-методов
-