Как я строю адаптивную модель управления отоплением на ESP32

История о том, как 4 дня логов из Telegram превратились в формулу экономии газа


Частный дом с газовым котлом и тёплыми полами. Система работает, но меня не покидало ощущение, что топим мы «на глазок» — то жарко, то прохладно, а счёт за газ стабильно большой.

За 2 месяца работы над проектом я перепробовал кучу ИИ-помощников: ChatGPT, Claude, DeepSeek, Gemini, Copilot. Каждый оказался на своём месте — кто-то помогал с кодом, кто-то вдохновлял, кто-то подбадривал, кто-то водил за нос, а кто-то реально развивал проект. В итоге получилась система управления тёплыми полами: мониторинг температуры, отправка данных в Telegram, сбор погоды через API, watchdog чтобы ESP32 не зависал, и симпатичный веб-интерфейс. Наступил день когда система работала уже стабильно, а с датчиков температуры накопилось 1132 записи. Решил разобраться: что реально влияет на температуру в доме и можно ли управлять отоплением умнее?

Спойлер: можно. И вот как мы к этому пришли.

Что имеем

Оборудование:

  • Газовый котёл с фиксированной температурой подачи 52°C

  • Термостатический клапан на гребёнке ТП (ограничивает подачу в полы до 40°C)

  • 6 контуров тёплого пола: Баня, Ванная, Игровая, Кухня, Предбанник, Спальня

  • Датчики DS18B20 на каждом контуре (измеряют температуру обратки)

  • Комнатный термостат (единственный способ управления котлом, пока не привязан к ESP32)

Данные:

  • 5-минутные показания температур со всех датчиков

  • Погода с Open-Meteo API (29 параметров)

  • Период: 2-6 марта 2026, температура на улице от 0°C до -12°C

Температура обратки по контурам тёплого пола
Температура обратки по контурам тёплого пола

Чёрный пунктир — среднее по всем контурам. Видны циклы работы котла.


Методология анализа

Примечание: Для анализа данных я использовал Claude Opus 4.5 (Anthropic). ИИ помогал с корреляционным анализом, выявлением ложных зависимостей, расчётом лагов и построением регрессионных моделей. Все расчёты выполнялись на Python (pandas, scipy, numpy) с визуализацией через matplotlib.


Заблуждение №1: «Всё влияет на всё»

Первым делом загрузил все 29 погодных параметров и посчитал корреляции Пирсона с температурой в доме. Результат удивил:

Параметр

Корреляция

Осадки

-50%

Давление

+40%

Точка росы

-38%

Температура воздуха

-38%

Осадки влияют сильнее температуры? Давление важнее всего?

Почему это ловушка

Большинство погодных параметров — это просто разные способы измерить одно и то же:

Осадки vs Температура:     +57.5% корреляция
Точка росы vs Температура: +99.3% корреляция (!)
Давление vs Температура:   -34.0% корреляция
Как я строю адаптивную модель управления отоплением на ESP32 - 2

Когда идёт снег — на улице теплее (-3°C в среднем). Когда ясно — холоднее (-8°C). Осадки не влияют на дом напрямую, они просто маркер погоды.

Это классическая проблема мультиколлинеарности — когда независимые переменные сильно коррелируют между собой, и модель «видит» ложные зависимости.

Вывод: из 29 параметров независимых оказалось только три:

  1. Температура воздуха — главный фактор

  2. Солнечная радиация — реально греет дом днём

  3. Облачность ночью — «эффект одеяла»


Заблуждение №2: «Облачность влияет мгновенно»

Для оценки инерции дома рассчитал кросс-корреляции температуры в комнатах с погодными параметрами при разных лагах (0, 60, 120, 180, 240 минут).

Все контуры показали максимальную корреляцию с температурой воздуха при лаге 4 часа. Но облачность показала лаг 0 минут. Как так?

Проверил связь облачности с температурой воздуха:

Условия

Средняя температура

Ясно (<50% облаков)

-11.4°C

Облачно (≥50% облаков)

-5.7°C

«Мгновенная реакция на облачность» — это реакция на температуру, которая коррелирует с облаками. Очередная ложная корреляция.

Но! Ночью облачность работает по-другому:

Эффект одеяла

Эффект одеяла

Ясной ночью земля излучает тепло в космос (инфракрасное излучение). Облака работают как одеяло — отражают тепло обратно. Разница 8.6°C — это существенно!

Ночь

Скорость остывания дома

Ясная

-3.4 °C/час

Облачная

-2.5 °C/час

Это уже физика, а не статистический артефакт.


Что мы узнали о системе

Инерция дома — 4 часа

Все 6 контуров реагируют на изменение погоды с одинаковым лагом:

Контур

Лаг

Корреляция

Спальня

240 мин

-45.6%

Игровая

240 мин

-45.1%

Кухня

240 мин

-44.1%

Баня

240 мин

-39.0%

Ключевой вывод: если через 4 часа ожидается похолодание — нужно начинать греть сейчас.

Скорость остывания контуров

Рассчитана как среднее изменение температуры обратки при выключенном котле:

Контур

°C/час

Предбанник

-3.0

Баня

-3.0

Кухня

-2.1

Спальня

-1.9

Ванная

-0.9

Ванная остывает медленнее всех — там минимальный расход на расходомере.

Проблема: редкие длинные циклы

Циклы котла

Циклы котла

Котёл работает по 2 часа, потом стоит по 3-6 часов. За это время:

  • Подача остывает с 50°C до 25°C

  • Температура в комнатах падает на 7°C

  • Потом котёл включается и тратит газ на разгон

Параметр

Текущее значение

Цикл ВКЛ

113 мин (макс 420)

Цикл ВЫКЛ

162 мин (макс 490)

Колебания температуры

±6°C

Подача падает до

25°C

Статистика по дням

Дата

Котёл работал

Ср. температура

02.03

8.4 ч

-0.3°C

03.03

4.5 ч

-0.9°C

04.03

7.2 ч

-8.7°C

05.03

10.1 ч

-9.2°C

06.03

8.3 ч

-11.8°C

3 марта котёл работал меньше всего — возможно, дом держал тепло после прогрева накануне. При похолодании 5-6 марта время работы выросло вдвое.


Финальная модель

Три независимых фактора

Корреляции

Корреляции

После исключения мультиколлинеарных переменных осталось три фактора:

Фактор

Когда работает

Влияние

Температура воздуха

Всегда

Главный — чем теплее, тем меньше работает котёл

Солнечная радиация

Днём

Солнце греет дом бесплатно

Облачность

Ночью

«Эффект одеяла» — дом медленнее остывает

Что изменится

Сравнение стратегий

Сравнение стратегий

На основе корреляционного анализа разработана самонастраивающаяся модель. Она будет автоматически подбирать коэффициенты, которые позволят:

  • Экономить на отоплении — меньше газа при том же комфорте

  • Повысить комфорт — стабильная температура без скачков ±6°C

  • Адаптироваться к дому — модель учится на реальных данных именно вашей системы

Параметр

Было

Станет

Цикл ВКЛ

113 мин

20-30 мин

Цикл ВЫКЛ

162 мин

15-25 мин

Колебания

±6°C

±2°C

Подача падает до

25°C

45°C

Оценка экономии газа

Источник

Экономия

Меньше разгон котла

5-7%

Выше КПД (короткие циклы)

2-3%

Меньше перетоп

5-8%

Упреждающее управление

3-5%

Итого

15-20%

⚠️ Это теоретическая оценка. Точную цифру можно получить только сравнив расход газа до и после при одинаковой погоде.


Если статья интересна и хотите продолжение — пишите в комментариях! Сделаю второй выпуск с реализацией на ESP32 и результатами. Если интересно видео — тоже дайте знать 🎬


Что интересного осталось за кадром

Дополнительные находки
  1. Температура почвы 0-7см показала корреляцию -58% со временем прогрева системы. Холодный грунт под фундаментом замедляет выход на режим. Но этот параметр меняется очень медленно (дни, недели) и не годится для оперативного управления.

  2. Ванная всегда самая холодная (77% времени) из-за минимального расхода на расходомере. Но при этом самая стабильная — колебания всего 6.8°C против 12.9°C у бани.

  3. Влажность не влияет на теплопотери в нашем случае. Проверял гипотезу о намокании минваты — не подтвердилась. При морозе утеплитель сухой, точка росы слишком низкая для конденсации.

  4. Подвал следует за улицей с корреляцией +66%. Он не отапливается и плохо изолирован — исключили из модели ТП.


Выводы

  1. Данные врут — большинство корреляций ложные. Из 29 погодных параметров полезны только 3.

  2. Инерция — ключ к упреждению. Дом реагирует через 4 часа → используем прогноз погоды.

  3. Короткие циклы лучше длинных. Котёл на 45°C эффективнее, чем разгон с 25°C.

  4. Модель должна адаптироваться. Фиксированные коэффициенты устареют к следующему сезону.

  5. Экономия 15-20% — реалистичная оценка при правильной реализации.


Что дальше

  • [ ] Добавить датчик на общую обратку ТП

  • [ ] Реализовать алгоритм на ESP32

  • [ ] Собрать статистику расхода газа до/после

Данные выложу после обкатки системы.


Спасибо за внимание! Буду рад вопросам и критике в комментариях.

Автор: Khamit

Источник

  • Запись добавлена: 08.03.2026 в 13:50
  • Оставлено в
    Rambler's Top100