Wifi термостат своими руками

Термостат на ESP32 с удаленным управлением. Часть 1. Вводная

Начиная с этой статьи я решил взять быка за рога, перестать тянуть резину с всякими там теориями и, таки уже начать рассказывать, как создать готовое устройство на базе ESP32 и ESP-IDF. А необходимые теоретические сведения буду выкладывать параллельно, по мере необходимости.

В итоге соберем и запрограммируем устройство, назовём его условно «Термостат + ОПС», которое обладает следующим функционалом:

  • дистанционный мониторинг температуры в доме, на улице и теплоносителя отопительного котла (список сенсоров этим не ограничивается, вы можете добавить ещё) с контролем допустимых диапазонов и уведомлениями о выходе за их пределы
  • управление отопительным котлом — то есть поддержание заданной температуры в доме на заданном уровне
  • автономная охранно-пожарная сигнализация с оповещением в Telegram и возможностью подключения проводных и беспроводных (433 MHz) датчиков дверей, окон, движения, дыма, протечки воды, утечки газа, угарного газа и т.д.
  • возможность автоматического управления нагрузкой посредством реле — например это может быть управление освещением по датчикам движения или управление краном с электроприводом для перекрытия водопровода при аварии

В начале я предоставлю на GitHub готовый «стартовый» проект с описанной выше логикой, а в дальнейшем вы сможете доработать «прикладную» логику под любые свои сценарии — алгоритмы автоматизации вы можете придумать свои, возможности ESP-IDF позволяют вам создать любые, самые сложные сценарии. Предложенное устройство вы можете рассматривать лишь как стартовый вариант для творчества.

Прошивка не имеет web-интерфейса, все настройки осуществляются через файл конфигурации проекта или в run-time через mqtt. Просто не вижу особого смысла тратить на web-интерфейс время, силы и байты.

В одной статье всё сразу рассказать не получится, поэтому будет сразу серия статей:

  1. В этой я опишу планируемый функционал и возможности, своего рода это можно считать анонсом технических возможностей
  2. В следующей статье будут приведены список необходимых компонентов, схема соединений и печатная плата (устройство мелкосерийное, мной собрано уже несколько экземпляров), но его можно собрать и на макетке для пайки
  3. Затем обсудим, как создать прошивку на основе готового проекта с GitHub, не вникая во внутренности прошивки — просто настроив файл конфигурации под ваши параметры . Для начала это будет только телеметрия — удаленный мониторинг температуры, влажности и чего-нибудь ещё (по желанию).
  4. Установим и настроим для использования с устройством один из клиентов MQTT для Android. Никаких приложений для смартфона самому создавать не придется.
  5. После этого добавим в устройство логику, позволяющий ему работать в качестве термостата для управления отопительным котлом и поддержания температуры.
  6. При желании в устройство можно будет достаточно легко добавить функции охранно-пожарной сигнализации на пять проводных зон и неограниченное количество беспроводных, используя дешевые сенсоры 433 MHz
  7. Обсудим, как задействовать сенсоры ОПС (если вы решите их подключить) для управления освещением или иной домашней автоматизации.
Читайте также:  Wi fi direct specifications

Возможности прошивки «из коробки»

Предлагаемый вариант прошивки позволяет получить следующий функционал практически без необходимости программирования (вам потребуется только изменить настройки в файле конфигурации проекта ):

  • Подключение к нескольким WiFi-сетям (до пяти) с автоматическим выбором. Прошивка не имеет web-интерфейса для настройки подключения к wifi, всё необходимое настраивается только в конфигурационном файле. Несколько преднастроенных сетей позволяет переносить устройство из одной локации в другую без необходимости изменения прошивки.
  • Автоматическая синхронизация локального времени с серверами SNTP в сети интернет ( вам не потребуется использовать модуль часов, хотя его можно и подключить, при необходимости ).
  • Постоянный контроль доступа в сеть интернет с помощью пинга с сохранением истории.
  • На момент написания статьи доступны драйверы для сенсоров : DHT11-DHT22, MW33, AHT10-AHT21 (возможно и AHT25 будет работать — не проверял), DS18x20, BH1750, BMP180, BME180, BME280, ВМЕ680, CCS811, HDC1080, HTU2x, SHT2x, SHT3x, Si7021, Capacitive Soil Moisture Sensor
  • Подключение сенсоров через две отдельные шины I2C, либо на выделенный GPIO (AM2302, DS18B20)
  • Встроенные фильтры данных для сенсоров: среднее и медиана с настраиваемой длиной буфера (настройку можно выполнять в том числе и после запуска устройства). Фильтры особенно актуальны для линейки DHTxx
  • Возможность настройки корректировки значений для сенсоров, например если вы имеет образцовый высокоточный термометр
  • Фиксация экстремумов (минимумов и максимумов) значений для сенсоров: за сутки, неделю и за всё время работы устройства
  • Автоматический мониторинг устройство заданных диапазонов — например при понижении температуры ниже допустимой (котёл отключился) устройство пришлет тревожное уведомление
  • Контроль состояния сенсоров — сбой, некорректные данные, обрыв кабеля и т.д. с оповещением в Telegram
  • MQTT — это основной канал управления устройством. Но при использовании внешних сервисов типа Telegram->MQTT возможно управление непосредственно из Telegram
  • Поддержка двух MQTT-брокеров — основного и резервного (например локального и облачного ).
  • Публикация данных с сенсоров вместе с временем измерения и со всеми экстремумами в одном топике в JSON-виде. Впрочем, можно легко перенастроить устройство на публикацию данных с сенсоров в простом виде
  • Возможность передачи данных с сенсоров на другие устройства через локальный брокер ( необходимо внесение изменений в код ) или получение данных с других устройств
  • Уведомления в Telegram . Можно привязать до 4 отдельных каналов или чатов: обычный, сервисный, охрана и изменение параметров
  • Отправка данных на ThingSpeak , Народный мониторинг, Open Monitoring (по выбору, можно использовать несколько сервисов одновременно)
Читайте также:  Arduino wifi web interface

Охранно-пожарная сигнализация:

  • Гибкая возможность создания охранных зон с разными реакциями ( необходимо внесение изменений в код прошивки )
  • Переключение режимов охраны через MQTT или с помощью 433 MHz пульта с Ali
  • Пять проводных зон с защитой от помех
  • Встроенный модуль приемника 433 MHz для использования беспроводных сенсоров с Ali
  • Встроенный зуммер для звуковых сигналов
  • Выходы для светозвукового оповещателя (маячка с сиреной) с открытым коллектором
  • Возможность совместного использования сенсоров ОПС для автоматики ( необходимо внесение изменений в код прошивки )
  • Системный светодиод для индикации состояния устройства путем изменения частоты, количества вспышек и их интервала
  • Ночной режим по расписанию, когда все светодиоды и звуковые сигналы отключаются
  • Два встроенных реле для управления какой-либо нагрузкой
  • Два выхода с открытым коллектором до 0,5А, я их использую для подключения светозвукового оповещателя (маячка с сиреной), но их можно использовать для управления нагрузкой — например внешними реле на DIN-рейке ( необходимо внесение изменений в код прошивки )
  • При управлении нагрузкой легко реализуется подсчет времени работы за сутки, неделю, месяц, год.

Удаленная отладка и обновления:

  • OTA (Over The Air) обновление прошивки без необходимости физического подключения к устройству
  • Уведомления в Telegram об изменениях состояния устройства, в том числе с настраиваемой задержкой (это позволяет пропускать кратковременные сбои и отключения различных сервисов)
  • При аварийной перезагрузке устройства в Telegram будет отправлена причина сбоя и стек вызовов, предшествующих сбою, что позволяет оперативно устранять ошибки
  • Публикация на MQTT и OpenMon системной информации, в том числе количество свободной памяти — это позволяет оперативно устранять утечки памяти, если вы что-то сделали «не так»
  • Публикация на MQTT списка задач с дополнительной информацией о стеке, что позволяет подобрать оптимальный размер стека для задач

Данная прошивка — отнюдь не конкурент ESP Easy, WiFi-IoT и прочим, «готовым» прошивкам. Это моя попытка совместить несовместимое — самый «низкоуровневый» для ESP32 framework (для обеспечения максимальной гибкости) и набор сервисов, которые на мой взгляд, должны быть в каждом устройстве «по умолчанию» — WiFi, MQTT, HTTPS и т.д. Если разобраться — все мои библиотеки — это только «обертки» для стандартных библиотек ESP-IDF, облегчающие работу. Поэтому в дальнейшем вы можете использовать весь функционал ESP-IDF без каких-либо ограничений.

Проект создан во VS Code и PlatformIO, в Arduino IDE он работать не будет. В заключение хотелось бы привести несколько скриншотов для понимания, что вы можете получить, используя данный проект.

Читайте также:  Настройка wifi репитера mercusys

Источник

Оцените статью
Adblock
detector