В этой статье я хотел бы описать свой личный опыт по подключению теплого плёночного пола к умному дому под управлением системы Domoticz.
Сам тёплый пол. В моём случае используется корейская плёнка премиум класса HeatPlus 11, заявленная мощность порядка 220 Ватт на квадратный метр. В качестве исполнительных устройств — управляемые реле Sonoff Basic и Sonoff TH16 с прошивкой ESPEasy. Общее управление осуществляет система умного дома Domoticz.

Рассказывать о укладке самого теплого пола много не буду, тут все просто — делаем по инструкции. «Пирог» тёплого пола получился такой:

  • Деревянное перекрытие
  • OSB 12мм для выравнивания пола и придания ему жесткости
  • Фольгированная теплоизоляция Стенофон толщиной 5 мм
  • Маты теплого пола HeatPlus 11
  • Ламинат

Подключение матов теплого пола осуществлялось методом пайки проводов к медным жилам, провод медный, многожильный, сечение 2.5 квадрата.

Дальнейшее описание будет о теплом поле в спальне, в остальных местах все сделано по аналогии. Площадь спальни около 25 квадратных метров, площадь уложенных матов с учетом мебели составила около 10 квадратных метров. Теоретическое потребление электроэнергии должно составить 2.2 кВт/час

Электронная начинка

В качестве исполнительного устройства я использовал умное реле Sonoff TH16 с прошивкой ESPEasy. Датчик температуры пола ds18b20. Температуру в помещении измеряет датчик температуры Xiaomi.
Настройка GPIO выходов на Sonoff TH16 представлена на скриншоте ниже.

После довольно долгих экспериментов получилась такая конфигурация. За что отвечает каждый «task»:

  1. Температура с датчика DS18b20. Датчик установлен под теплым полом, показывает текущую температуру плёночного теплого пола. Нужен для контроля, что бы не перегреть плёнку.
  2. Реле. Отвечает за подачу питания на непосредственно сам теплый пол
  3. Кнопка на корпусе. Ручное управление полом на случай отключения Domoticz
  4. Виртуальная кнопка (нет привязки к GPIO). По этой переменной реле получает сигналы от умного дома на включение/отключение. Эта кнопка отвечает за начало цикла подогрева.

Часть управления логикой работы вынесена из Domoticz непосредственно с сам Sonoff TH16. Это сделано по двум причинам. Первое — ручное управление на случай отключения/поломки ядра умного дома — а именно сервера с работающим на ним ПО Domoticz. Второе безопасность — максимальная температура пола задана в самом Sonoff, при её достижении он самостоятельно отключает питание на теплый пол, не дожидаясь сигнала от умного дома. Это нужно на случай глюков и отключений Domoticz. Код внутренней логики представлен ниже:

on Temp#Temperature<33 do
  if [HeatingStart#Start]=1
  gpio,12,1
  else
  gpio,12,0
  endif
endon

on ButtonHeat#Switch=1 do
   if [HeatingStart#Start]=1
      TaskValueSet 4,1,0
      SendToHTTP *.*.*.*,8080,/json.htm?type=command&amp;param=switchlight&amp;idx=***&amp;switchcmd=Off
   else
      TaskValueSet 4,1,1
      SendToHTTP *.*.*.*,8080,/json.htm?type=command&amp;param=switchlight&amp;idx=***&amp;switchcmd=On
   endif
endon

on Temp#Temperature>35 do
    gpio,12,0
endon

on System#Boot do
    gpio,12,0
endon

Исходя из кода видно что ручное управление меняет статус виртуальной кнопки, которая в свою очередь запускает цикл подогрева в зависимости от температуры. В моем случае получается что при включении пол греется до 35 градусов, потом отключается. Как только температура упадёт ниже 33 градусов он опять включается. И так по кругу, пока не будет достигнута нужная температура в комнате и не поступит команда от Domoticz на отключение (или не произойдет ручное отключение нажатием кнопки на корпусе).

Domoticz и управление теплым полом

В Domoticz’е теплый пол у меня представлен двумя виртуальными кнопками и датчиком температуры. Первая кнопка отвечает за запуск скрипта, вторая за передачу команд на сам теплый пол (хотя это можно было сделать в коде, но так вроде как «изящнее» получается 🙂 ).

Ниже представлен код с подробными комментариями, дополнять думаю что то не нужно. Код написан на языке dzVents.

-- 27.03.2019 by Sl1ng3R
-- Логический термостат для управления теплым полом
return {
	on = {
		devices = {
			'Спальня. Обогрев',
			'Спальня'
		}
	},
	execute = function(domoticz, device)
	local TargetTemp = 22 -- Заданная температура (возможно перевести на setPoint от термостата)
	local HeatButton = domoticz.devices('Спальня. Обогрев') -- Логический выключатель обогрева в комнате
	local BedroomTemp = domoticz.devices('Спальня') -- Температура в комнате
	local HeatStart = domoticz.devices('Спальня. Теплый пол') -- Логический выключатель теплого пола
		if (BedroomTemp.temperature < TargetTemp and HeatButton.state =='On') then -- Если температура в комнате ниже 22 и нажата кнопка обогрева
		    if (HeatStart.state =='Off') then -- Если теплый пол выключен
		        HeatStart.switchOn() -- то включаем его
            elseif (HeatStart.state =='On') then -- если уже был включен, ничего не делаем
	        end
	    elseif (BedroomTemp.temperature > TargetTemp and HeatButton.state =='On') then -- Если температура в комнате выше 22 (либо уже нагрели, либо подогрев вообще не нужен) и нажата кнопка обогрева
	        if (HeatStart.state =='On') then -- Если теплый пол включен
	            HeatStart.switchOff() -- то выключаем его
            elseif (HeatStart.state =='Off') then -- если он уже выключен
                HeatStart.switchOff() -- то на всякий случай повторяем команду, бывали случаи когда из за потери связи команда не проходила
            end
	    elseif (HeatButton.state =='Off') then -- Если кнопка обогрева выключена
	        if (HeatStart.state =='On') then -- а теплый пол включен
	            HeatStart.switchOff() -- то выключаем его
            elseif (HeatStart.state =='Off') then -- если пол уже выключен
                HeatStart.switchOff() -- то на всякий случай повторяем команду, бывали случаи когда из за потери связи команда не проходила
            end
		end
	end
}

Управление реле из Domoticz’а происходит посредством http запросов на sonoff th16. Пример запроса виден на картинке ниже:

По итогу у меня получился следующий «цикл» — если включен обогрев в спальне, умный дом смотрит какая сейчас температура, если она ниже 22 (как в скрипте задано), то он посылает команду sonoff’у на включение, тот в свою очередь в цикле греет пол с 33 до 35 градусов. Когда температура в комнате становится выше 22 градусов — умный дом даёт команду sonoff’у на отключение. Вот в принципе и все. Система у меня работает уже около трех недель, пока полёт нормальный, мелкие глюки были устранены в процессе эксплуатации.

Если кому то интересно понимать на сколько это экономично, ниже скриншот логов включения теплого пола (на лишние off не обращайте внимание, это перестраховка на случай падения wifi в доме и не прохождения команды до sonoff’а).

Получается что за ночь теплый пол включался всего три раза, примерно на 20 минут. Это при условии что на улице было -6 градусов и ветер. Ниже лог температуры в помещении:

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

Поделиться: