Настройка терморегулятора moes wifi

Обновлено: 06.07.2024

В системе автономного отопления моей квартиры работает выпускаемый серийно беспроводной комнатный термостат. Система, конечно, функционирует и без него: термостат был приобретен для экономии расхода газа и повышения комфорта.

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

Что в результате получилось – читайте дальше. Надеюсь, кроме меня проект будет интересен другим.

Знакомство

Возможности и характеристики:

Термостат состоит из двух устройств. В первом устройстве формируется и передается на второе устройство сигнал управления нагревательным прибором или системой отопления, назовем это устройство анализатором. Второе устройство, принимает сигнал, дешифрирует его и управляет источником тепла – пусть это будет контактор. Связь между анализатором и контактором — беспроводная, на радиочастоте.

Сборка

Для сборки устройства понадобятся компоненты, перечень которых и их ориентировочная стоимость по ценам сайта AliExpress приведена в таблице.

Компонент Цена, $
анализатор
Wi-Fi плата NodeMCU CP2102 ESP8266 2,53
Датчик температуры и влажности DHT22 2,34
Датчик содержания СО2 MH Z-19 18,50
Часы RTC DS3231 1,00
Экран OLED LCD синий 0.96" I2C 128x64 1,95
RF модуль 433MHz, передатчик (цена комплекта: передатчик, приемник) 0,99
4-канальный преобразователь логических уровней 3,3В-5В (Logical Layer Converter) 0,28
Стабилизатор напряжения LM7805 (10 шт.) 0,79
Адаптер AC100-240V 50/60Hz DC12V 2A 10,70
Макетная плата (стеклотекстолит), контакты и др. 2,00
контактор
Модуль Arduino Pro Mini 5V 1,45
RF модуль 433MHz (приемник) -
2-канальный модуль реле 0,98
Адаптер AC-DC HLK-PM01 4,29
Макетная плата (стеклотекстолит), контакты и др. 2,00
Всего (примерно): 50

Если планируется собирать термостат с минимальными габаритами, то нужно заменить 4-канальный преобразователь логических уровней на 2-канальный и 2-канальный модуль реле на 1-канальный.

Оба устройства собраны на стеклотекстолитовых макетных платах. Монтаж – навесной. Модули установлены на панельки, собранные из «гребенок» контактов. Такой подход имеет ряд преимуществ: компоненты легко демонтируются, легко меняется монтаж под новую версию скетча и, наконец, в корпусе самоделки не видно каким способом он выполнен.

Антенны у передатчика и приемника – это провод длиной 17,3 см. Повышенная мощность передатчика и простейшие антенны обеспечивают надежную связь в пределах квартиры.

Анализатор


Мозг анализатора – контроллер ESP8266 на плате модуля NodeMCU CP2102. Он принимает сигналы с датчиков и формирует сигналы управления передатчиком и экраном.


При установке датчика DHT22 на плате, измеренная температура на 1,5…2°С выше реальной (даже без корпуса!). Поэтому следует размещать датчик температуры подальше от элементов с большим тепловыделением LM7805 и NodeMCU CP2102. Кроме того, было бы неплохо установить стабилизатор напряжения LM7805 на радиатор и однозначно необходимо обеспечить хорошую конвекцию воздуха в корпусе для понижения температуры и уменьшения ошибки ее измерений. Другой вариант избавиться от ошибки — вынести датчик DHT22 за объем корпуса – этот вариант проще и я выбрал его.

В Интернете много нареканий на низкую точность измерения влажности датчика DHT22. На сегодня есть альтернатива: более современные датчики температуры и влажности HTU21D, Si7021, SHT21.

На анализатор подается постоянное напряжение 12В от адаптера AC/DC. Далее стабилизатор постоянного напряжения LM7805 формирует напряжение 5В. Напряжение питания передатчика — 12В. При тестировании устройства, когда анализатор и контактор находятся рядом на рабочем столе, питание анализатора можно организовать с USB-порта компьютера, подав напряжение на модуль NodeMCU CP2102 стандартным кабелем USB – microUSB. Напряжение питания NodeMCU CP2102 и MH Z-19 – 5В, питание остальных узлов схемы (3,3В) формирует стабилизатор модуля NodeMCU CP2102.

Датчик температуры и влажности DHT22 подключен к выводу D6 модуля NodeMCU CP2102. Часы DC3231 и дисплей 0.96" подключены к ESP8266 (на модуле NodeMCU CP2102) через двухпроводный интерфейс I2C, а выводы Tx, Rx датчика содержания СО2 MH Z-19 подключены к выводам Rx, Tx ESP8266 соответственно. Сигнал на передатчик поступает с NodeMCU CP2102 через преобразователь логических уровней, который преобразует сигнал с NodeMCU CP2102 с амплитудой около 3,3В в сигнал, амплитуда которого близка к напряжению питания передатчика 12В.

Если в модуле часов вы используете батарейку вместо аккумулятора, то не забудьте разорвать цепь заряда аккумулятора, иначе батарейка вздуется через несколько недель работы под напряжением. С автономным питанием часов точность хода 2 сек/год вам обеспечена.

Скетч анализатора для загрузки в ESP8266 находится под спойлером.

Если хотя бы один из параметров воздуха находится за пределами запрограммированных пороговых значений, то устройство в половине каждого часа отравляет на е-мейл письмо:


С 10 августа 2020г. будет прекращена аренда домена и дискового пространства под этот домен, поэтому попрошу поискать другое место для размещения php-скрипта. Извинения тем, кто уже пользуется моим почтовым сервером.


Контактор


Управление в контакторе осуществляет модуль Arduino Pro Mini. Он принимает сигнал с RF приемника и вырабатывает сигналы превышения пороговых значений параметров воздуха.


Напряжение питания всех узлов контактора 5В поступает с адаптера AC/DC HLK-PM01.

В современных бытовых газовых котлах нормально разомкнутые контакты реле (красный, желтый провода на схеме) подключить вместо съемной перемычки в котле.

Сигналы с выводов контроллера 6 (h >Hmin), 5 (co2 > CO2max), 3 (t > Tmax) можно использовать для организации автоматического увлажнения, принудительной вентиляции или кондиционирования воздуха. Преимущество заключается в том, что отпадает необходимость в прокладке кабеля для передачи сигнала управления с датчика на ту или иную систему – достаточно разместить контактор неподалеку от одного из концов провода питания или управления системой.

Я, например, планирую кроме управления котлом отопления подключить к контактору еще и кухонную вытяжку — котел и вытяжка расположены рядом.

Скетч контактора для загрузки в Arduino Pro Mini — под спойлером.


Запуск термостата в работу

Пришло время включить термостат.

Шаг 1:

Сначала включим анализатор.


Вначале надо набраться терпения и, ничего не предпринимая, выждать 3 минуты. Термостат автоматически перейдет в автономный режим работы – без подключения по Wi-Fi к домашней сети и Интернету. Через 3 минуты на экране анализатора в трех строках начнет мелькать все, что ворочает термостат.


Первые две строки на экране не требуют комментариев. В третьей строке – режим работы термостата (Offline, Online или OffBlynk) и информация о выходе за пределы установленных пороговых значений параметров воздуха. Например, Offline CO2>1000 — термостат работает в автономном режиме, а измеренное содержание СО2 выше заданного порогового значения 1000 ppm.

Часы в автономном режиме будут показывать неправильное время. Они еще не синхронизированы с сервером точного времени, а также не выполнен ввод часового пояса – это в следующем шаге.

В автономном режиме установлена температура термостатирования 21°С на протяжении суток.

Шаг 2:


Нажмем кнопку Configure WiFi (No Scan). Откроется страница с формой настроек термостата:


Эта же форма с незаполненными полями и комментариями:


Укажем в форме имя и пароль своей домашней сети, ключ идентификации BLynk, электронную почту. Изменим заданные по умолчанию часовой пояс, время (часы) и температуру для временных точек, а также пороговые значения температуры, влажности и содержания СО2.

Сутки двумя временными точками разбиты на три временных диапазона — первый: с 00 час 00 мин до точки 1 (Hour 1, Minute 1), второй: с точки 1 (Hour 1, Minute 1) до точки 2 (Hour 2, Minute 2) и третий: с точки 2 (Hour 2, Minute 2) до 00 час 00 мин. Полей для ввода минут на форме нет, минуты для точек 1,2 можно изменить в скетче (переменные MinPoint1, MinPoint2). В каждом из трех временных диапазонов можно задать свою температуру термостатирования — Temperature 0, Temperature 1 и Temperature 2. Если планируется поддерживать постоянной одну и ту же температуру в течение суток, то достаточно задать значение Temperature 0, а поля для точек 1,2 оставить пустыми.

При выборе пороговых значений параметров воздуха ориентируйтесь на показатели, которые я нашел в Интернете:

  1. Комфортная температура ночью во время сна 19…21°С, днем — 22…23°С.
  2. Оптимальной относительной влажностью в холодное время года считается влажность 30…45%, а в теплое – 30…60%. Предельные максимальные показатели влажности: зимой она не должна превышать 60%, а летом – 65%.
  3. Максимальный уровень содержания углекислого газа в помещениях не должен превышать 1000 ppm. Рекомендованный уровень для спален, детских комнат – не более 600 ppm. Отметка 1400 ppm – предел допустимого содержания СО2 в помещении. Если его больше, то качество воздуха считается низким.

По умолчанию суточная программа термостатирования (днем – высокая температура, ночью – низкая) задана из предположения, что днем кто-то из жильцов находится в помещении, например, работает на дому. Программу легко изменить под свои реалии.

Поле e-mail можно не заполнять. Тогда предоставленная возможность получать письма на электронную почту о выходе параметров воздуха за пороговые значения будет утрачена. Без введенного ключа Blynk’а – невозможно управлять термостатом и получать информацию о параметрах воздуха на удалении. Впрочем, термостат не «растеряется», если останутся незаполненными поля с предельными значениями параметров воздуха, тогда за ним останется только одна функция: термостатирование.

И еще. Все числа вводите, пожалуйста, в формате переменных с плавающей запятой, далее преобразование в нужный формат выполняются в скетче. Исключение: временные точки 1,2 (час) — формат целого числа.

После сохранения настроек в памяти ESP8266 (кнопка Save), анализатор подключится к сети и начнет работу.

Если ошиблись (бывает!) или решили изменить настройки, снова придется дважды загрузить скетч в ESP8266. Первый раз – с раскомментированной в Setup’e строкой factoryReset(); а второй — с закомментированной, затем повторить шаг 2.

Шаг 3:

Теперь можно включить контактор.

При устойчивой радиосвязи между анализатором и контактором – светодиод D13 на плате Arduino мигает с частотой около 1Гц.

Если контактор принял с анализатора команду на включение обогревательного прибора или отопительной системы — замкнутся нормально разомкнутые контакты реле и загорится соответствующий ему светодиод на модуле реле.

Если нет проблем с «холостым ходом» контактора, то подключаем обогревательный прибор или электронику системы отопления. Обогревательный прибор следует подключать проводом определенного сечения. Удельный показатель для расчета сечения медного провода — 5 А/мм 2 .


Шаг 4:

Пришло время запустить на смартфоне приложение Blynk. В Интернете много информации о приложении Blynk – нет смысла ее повторять.

Переменные для Blynk (чтобы не искать их в скетче анализатора): температура — V1, влажность – V2, содержание СО2V3, температура термостатирования – V4, виртуальная кнопка — V10.

На моем смартфоне интерфейс Blynk’a (его можно изменять) имеет вид:


На графике – измеренная температура (белый), температура термостатирования (желтый), интервал времени – сутки. Переменные влажности и содержания СО2 на график не выведены, поскольку две дополнительные шкалы сильно ограничивают поле графика, где можно рассмотреть сами кривые.

Скриншот ниже иллюстрирует процесс обогрева тепловентилятором мощностью 2 кВт/час помещения площадью около 5-ти квадратных метров с начальной температурой 16°С. Здесь — температура (желтый), влажность (синий) и содержание СО2 (красный).


Синхронная с пилой температуры зубчатая кривая влажности на графике — еще одно подтверждение известному факту, что открытый ТЭН сушит воздух, а пики на кривой содержания СО2 – свидетельство моих кратковременных визитов в помещение.


Намерения

В дальнейшем планирую поработать над усовершенствованием термостата (как говорят, совершенству нет предела!)

  • Дополнить термостат датчиком температуры с беспроводной связью для измерения температуры на улице.
  • Заменить пару приемник-передатчик RF другой парой с большей дальностью связи при напряжении питания не более 3В. В идеале – хотелось бы собрать анализатор с питанием от двух батареек АА на протяжении отопительного сезона.
  • Уйти от ручного форматирования памяти ESP8266 перед каждым изменением настроек термостата через повторную загрузку скетча.
  • Расширить программируемый цикл работы термостата с суточного до недельного.
  • Заменить монохромный экран на цветной и с большим разрешением. Это позволит показывать всю информацию о работе термостата одним кадром, а выход параметров воздуха за пределы установленных границ – изменением цвета.
  • Затем заняться печатными платами и презентабельным внешним видом термостата.

Что еще можно улучшить? Принимаются предложения, замечания. Прислушаюсь к конструктивной критике.

Выводы

  • Благодаря подключению к Интернету, функционал термостата значительно расширился. Кроме основной функции, в нем реализован целый ряд других: от отправки оповещений на е-мейл — до возможности автоматического поддержания качества воздуха в помещении.
  • В термостате появилось новое качество: им можно управлять через Интернет.
  • Радует легкость, с которой программируется термостат: требуется лишь заполнить форму на странице браузера.
  • Появилась возможность сохранять в памяти термостата персональные данные, как это делается, например, в роутерах.

Внимание!
Автор не несет ответственности за возможный негатив при повторении проекта. Вы отвечаете за все, что делаете.

P.S.

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

2. О подходах в решении некоторых из перечисленных выше задач можно познакомиться в других моих статьях на Хабре:

Прямая интеграция в Home Assistant и HomeKit без облаков.


Подключение



Дальше начинается интересное.

Интеграция в умный дом

Если вы захотите интегрировать его в Home Assistant стандартными средствами, то для этого вы сможете воспользоваться встроенной интеграцией Tuya:

После чего термостат сразу же появится среди ваших устройств, но вы получите несколько НО:

С первым случаем разобрались. Также на просторах интернета можно натолкнуться на способ локального управления с помощью кастомного компонента localtuya (подробнее почитать тут), который построен на базе tuyaAPI.

В данном случае меня ждал двойной провал. Суть данного решения в том, что мы должны перехватить credentials для управления термостатом локально и используя библиотеку localtuya управлять им без обращения к облаку.

Первый провал меня ждал тогда, когда я все-таки смог пройти не по очень простой инструкции получения токена и id, и даже получил эти credentials, но сам компонент не захотел запускаться в Home Assistant с указанными параметрами.

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

По итогу вы получаете термостат:

Опишу кратко основные шаги и нюансы:


Дальше поговорим про Home Assistant:


Если вы отправляете свое добро из Home Assistant в Homekit с помощью стандартного компонента, то при перезагрузке у вас появится новое устройство с термостатом, в котором вы сможете полноценно контролировать температуру и даже переключаться между режимами.

После того как я добавил wi-fi термостаты для теплых электрических полов в мой умный дом на Home assistant, выяснил одну неочевидную особенность сторонней прошивки - прошивка термостата не позволяла работать термостату таким образом, чтобы реагировать именно на нагрев пола (за счет получения данных с внешнего датчика в полу), а обогрев и контроль температуры происходил только с помощью встроенного датчика температуры воздуха, расположенного непосредственно на корпусе термостата. В моем случае это также усложнялось тем, что датчик в полу у меня был несовместимый с устройством и я ввел поправочный коэффициент в самой системе умного дома.

Пытался решить эту проблему программно, при этом мое решение все еще достаточно надежно и безопасно. Итак, приступим.

Я решил создать собственный программный термостат в домене climat с помощью интеграции generic_thermostat. Для того чтобы все получилось, мне необходим датчик температуры и переключатель, который будет управлять включением и отключением отопления. С датчиком все просто, я уже показывал его в прошлой статье: создал шаблонный сенсор для вычисления достоверной температуры пола из тех данных, что отдавал мне термостат. Для проекта создал отдельный package, так что отступы будут отличаться от классического распределения интеграций по отдельным файлам или в файле configuration.yaml

Сенсор реальной температуры пола из предыдущей статьи Сенсор реальной температуры пола из предыдущей статьи

Далее переключатель режимов. Для этого я создал два скрипта.

Первый отвечает за включение отопления. Он сначала записывает текущее выставленное значение на термостате Moes в переменную input_number, а затем устанавливает на термостате температуру в 35 градусов и режим нагрева. Напомню, при этом термостат будет пытаться нагреть помещение до 35 градусов, а не пол.

Второй скрипт возвращает назад из переменной значение в физический термостат и на всякий случай возвращает переменную к значению “10”.

Переменные эти объявлены следующим образом:

Далее объединяем эти два скрипта в единый переключатель.

Тут за состояние переключателя отвечает состояние реального физического термостата. Если он греется, выключатель включен и наоборот. Таким образом мы получаем обратную связь в наш программный термостат.


Привет.
Хочу рассказать как я немного автоматизировал управление газовым котлом отопления квартиры используя комнатный wifi термостат с ali. Удаленный контроль для меня был необходим, т.к. квартира зимой пустеет. Так же термостат экономит газ, электроэнергию, и продлевает срок службы котла.

Начну с теории, все новые и почти все старые (лет так 10-15) котлы поддерживают (как минимум примитивное) управление через внешний (комнатный) термостат. Управление может быть двух видов:

1.Примитивное, тупо вкл\выкл (замыканием сухого контакта (dry contacts)), а вот сам термостат может быть как примитивный (механический на основе биметаллического контакта, такой же принцип у бытового электро чайника) так и умный, с программным управлением (на основе микроконтроллера), с или без wifi, bluetooth, zigbee, с сенсорным цветным экраном или механическими кнопками, со встроенным реле в одном корпусе (подавляющее большинство) или реле отдельным блоком (позволяет установить термостат подальше от котла, на другом этаже\в другом помещении, реле может быть беспроводным), в любом случае, он управляет котлом только включением\выключением через реле и все.

2. Цифровое (opentherm) Это самый крутой способ управление, он позволяет передать управление котлом полностью комнатному термостату (конечно же, комнатный термостат должен тоже поддерживать opentherm и уметь управлять этим котлом). В этом случае opentherm термостат сам дает команды котлу включать горелку (с нужным уровнем модуляции, если котел поддерживает), насос, устанавливать температуру и т.п, и все сигналы передаются путем изменения уровней тока\напряжения (а не тупо замыканием контактов как в первом варианте). Это лучше вариант для энтузиастов, реализующих "
умный дом".

Установка термостата второго вида (opentherm) не получила распространение в народе в РФ, такие термостаты стоят дорого (почти ценой в котел), они не рекламируются открыто, не все котлы, мало какие бюджетные котлы поддерживают этот протокол (хотя в последнее время начинают поддерживать, и это хорошо). То есть, это вариант для энтузиастов или тех, кто готов заплатить интегратору. Для элитных смарт-котлов такие термостаты могут идти как доп. аксессуар. Так же оба вида термостата можно собрать своими руками, в инете очень много готовых проектов (требуется знания электронной техники). В конце статьи я оставлю ссылку на зарубежные термостаты второго типа

Далее речь пойдет про первый тип.
Как работает термостат:
Термостат включается взамен перемычки (в разрыв цепи)
На термостате вы выставляете желаемую температуру в квартире, термостат сравнивает текущую температуру помещения (в нем встроен терморезистор), и если текущая температура ниже установленной вами на 1C (Эта разница называется гистерезисом, часто она равна 0.5 или 1 градусам, и часто его можно изменять), то термостат замыкает контакты, и котёл начинает работать так, как обычно (как без термостата), на той же установленной температуре теплоносителя, с тем же выбегом насоса и т.п. Если температура помещения сравняется с установленной температурой — термостат разомкнет контакт и котел выключится. И будет стоять выключенным до тех пор, пока температура не упадет ниже 1 градусов (гистерезис).
Поэтому, если зимой выставлена слишком слабая температура в котле то помещение может вообще не нагреться до установленной, и термостат никогда не отключит котел сам, и по факту термостат бесполезен.
Т.е температуру в котле нужно ставить выше, (определить опытным путём, нагреть квартиту на 70с теплоносителя резко — экономнее, чем на 40С целый день).

Погодозависимая автоматизация.
Некоторые котлы поддерживают такой функционал. Суть его в том, что вы на улице устанавливаете датчик уличной температуры (термистор), подключаете к котлу и включаете его в настройках на требуемый номер кривой. Номер кривой разная для каждого региона (зависит от минимальной уличной температуры зимой, от тепло потерь), таблица с этой кривой есть в документации к котлу, но она приблеженная, придется подбирать методом тыка.
Как этот датчик меняет логику котла?
Допустим, в котле без термостата вы сами постоянно меняете температуру теплоносителя, жарко — убавили, холодно — прибавили, и так каждый день. С термодатчиком возможность управлять температурой котла отключается. Котел сам ставит температуру теплоносителя в зависимости от уличной температуры (стало холоднее — повышает, стало тепло — понижает, а вот на сколько повышать \ понижать вы как раз задаете номером кривой методом научного тыка).

Этот датчик офф. производителя стоит неоправданно дорого (1000 — 2000 руб), можно сделать самому на 100 руб (столько стоит термистор ntc в магазинах электронных компонентов, на али вообще 40руб\10 шт.). В основном используется термодатчик — термистор с параметром ntc 10K 1% 3950.
Я сделал своими руками, получилось так:


Нужен ли уличный термодатчик при установке термостата? Не обязательно, если есть термостат то он никакую экономию не принесет, но комфорт может принести (например, в теплую погоду радиаторы не будут греться до высоких температур, снизится инерционность котла, вам не нужно будет подстраивать осенью\зимой\весной разные температуры.). Но если есть возможность — ставьте.

Что поставил я:
У меня котёл baxi eco nova, он поддерживает оба вида термостата. Я поставил первый тип.
Купил на али вот такой вариант

Читайте также: