Автоматический расчет температурной кривой отопления в Node-RED
Эквитермическое или погодозависимое управление — это современный стандарт автоматизации систем индивидуального отопления. Вместо постоянного включения и выключения котла по комнатной температуре, система непрерывно подстраивает температуру воды (теплоносителя) в радиаторах в зависимости от погоды на улице. Когда на улице легкий мороз, радиаторы остаются теплыми, а при сильном похолодании их температура автоматически повышается. Это предотвращает температурные колебания внутри комнат, снижает расход газа или электричества и продлевает ресурс работы самого котла.
Связующим звеном в такой системе выступает сервер Node-RED, который может собирать данные от беспроводных датчиков и передавать вычисленные уставки на котел. В данном руководстве мы подробно разберем, как реализовать математический расчет отопительной кривой программным способом и подружить его с Умным Домом Яндекса для комфортного контроля.
Шаг 1: Теория и выбор параметров отопительной кривой
Отопительная кривая описывает математическую зависимость между температурой наружного воздуха и необходимой температурой теплоносителя на выходе из котла. Главный параметр этой кривой — ее крутизна (коэффициент наклона). Для стандартных радиаторных систем в кирпичных домах коэффициент обычно выбирается в диапазоне от 1.2 до 1.5. Для хорошо утепленных домов с теплыми полами этот коэффициент может быть значительно ниже — от 0.4 до 0.6.
Формула расчета базируется на законе теплопередачи и учитывает три ключевых параметра:
- Целевая комнатная температура — стандартно принимается за
20°Cили22°C. - Текущая уличная температура — получается с физического уличного датчика.
- Коэффициент наклона кривой — подбирается индивидуально для каждого здания опытным путем в течение зимы.
NOTE
Если у вас пока нет физического уличного термометра, вы можете использовать виртуальный датчик. Для этого отлично подойдет подробная интеграция с внешним Weather API в Node-RED, которая позволит запрашивать точные метеорологические данные для вашего географического региона каждые 15–30 минут.
Шаг 2: Подготовка данных и настройка входящих нод
Для построения схемы автоматизации нам потребуются два источника данных в Node-RED: текущая температура на улице и желаемая уставка в доме.
Разместите на рабочей панели ноду отслеживания состояния уличного датчика температуры (например, Zigbee-датчика Aqara, выведенного через yandex2mqtt или Home Assistant). Назовите эту ноду «Уличная температура». При изменении состояния датчик отправляет числовое значение в msg.payload.
Аналогично добавьте ноду для отслеживания целевой температуры в доме. Это может быть виртуальный ползунок из интерфейса Алисы или физический настенный пульт. Значение желаемой температуры воздуха мы будем использовать для динамического смещения отопительной кривой вверх или вниз (так называемый параллельный сдвиг).
Шаг 3: Программный расчет в ноде function
Сердцем нашего сценария является нода function, в которой происходит математический расчет. Добавьте ее на холст и соедините со входами датчиков. Для хранения промежуточных показаний мы будем использовать контекст потока.
Вставьте следующий JavaScript-код в редактор ноды:
// Сохраняем входящие данные в контекст
if (msg.topic === "outdoor") {
flow.set("tOutdoor", parseFloat(msg.payload));
} else if (msg.topic === "target") {
flow.set("tTarget", parseFloat(msg.payload));
}
// Извлекаем переменные с дефолтными значениями
const tOutdoor = flow.get("tOutdoor") ?? 0;
const tTarget = flow.get("tTarget") ?? 22;
const curveSlope = 1.3; // Коэффициент наклона кривой
// Математический расчет эквитермической кривой
let tFlow = tTarget + curveSlope * Math.pow((tTarget - tOutdoor), 0.8);
// Ограничиваем температуру теплоносителя физическими пределами котла
const minFlowTemp = 30; // Минимальный нагрев
const maxFlowTemp = 75; // Максимальный нагрев котла
if (tFlow < minFlowTemp) tFlow = minFlowTemp;
if (tFlow > maxFlowTemp) tFlow = maxFlowTemp;
msg.payload = Math.round(tFlow);
return msg;
IMPORTANT
Обратите внимание на необходимость жесткого ограничения максимальной температуры (maxFlowTemp). Если ваша отопительная система собрана из полипропиленовых или металлопластиковых труб, подача теплоносителя с температурой выше 75°C–80°C под высоким давлением может привести к их деформации, разгерметизации соединений и аварийному затоплению дома горячей водой.
Шаг 4: Отправка команд на котел и интеграция с Алисой
Вычисленное округленное значение температуры теплоносителя необходимо передать на термостат управления котлом. Обычно это делается по протоколу OpenTherm или BusBridge через интерфейсный модуль (например, ZONT или кастомный шлюз на ESP8266/ESP32).
Добавьте ноду отправки команды (например, MQTT out или HTTP request) и подключите ее к выходу ноды расчета. Теперь при каждом изменении уличной температуры котел будет плавно менять режим горения горелки.
Для интеграции с Умным Домом Яндекса создайте виртуальное устройство типа «Термостат» в Алисе. Свяжите его статус с переменной желаемой комнатной температуры. Когда вы говорите: «Алиса, сделай потеплее в гостиной до 23 градусов», Алиса изменит уставку, Node-RED пересчитает формулу с учетом нового целевого значения, и котел незамедлительно поднимет температуру радиаторов.
WARNING
Регулярно проверяйте работоспособность датчиков. Если уличный датчик разрядится и перестанет присылать данные, система может зависнуть на последнем значении или выдать ошибку NaN. Чтобы избежать переохлаждения дома, всегда прописывайте резервное фиксированное значение уличной температуры (например, 0°C) на случай аварии связи.
TIP
В теплое время года (когда температура на улице поднимается выше 18°C несколько дней подряд) настройте автоматический перевод системы в летний режим. Для этого добавьте в код проверку и полностью отключайте циркуляционный насос отопления, чтобы не тратить электроэнергию и не греть помещения.
Инструкция по настройке
Определение параметров отопительного контура
Соберите исходные тепловые характеристики вашего дома и параметры температурного графика радиаторов.
Настройка сбора уличной температуры
Подключите внешние уличные сенсоры или настройте программное получение данных о погоде в Node-RED.
Программный расчет целевой температуры
Напишите JS-код в ноде function для вычисления температуры теплоносителя по формуле кривой.
Передача команд на термостат и интеграция с Алисой
Настройте отправку вычисленной уставки на физический котел через протокол термостата.
Совет эксперта: Управляйте домом с компьютера
Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.